diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1aea80f40d6c89aa2190919d7e13bc593d6186aa..ba4f1fe3d720f65d4bf4152b0efa2fc7d4e6e761 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,2242 +1,11 @@ variables: # note: GitLab cannot reference variables defined by users in the include ref:, we need to use a YAML anchor for this # see https://docs.gitlab.com/ci/yaml/includes/#use-variables-with-include for more information - IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF main + IVAS_CODEC_CI_REF: &IVAS_CODEC_CI_REF kiene/basop-ci-merge-test-unified-config include: - local: .gitlab-ci/variables.yml - local: .gitlab-ci/rules-basis.yml - project: ivas-codec-pc/ivas-codec-ci ref: *IVAS_CODEC_CI_REF - file: main.yml - -default: - interruptible: true # Make all jobs by default interruptible - -workflow: - name: '$IVAS_PIPELINE_NAME' - 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 == 'long-term-logs' - variables: - IVAS_PIPELINE_NAME: 'Aggregate long term logs: $CI_COMMIT_BRANCH' - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == 'backup-long-term-logs' - variables: - IVAS_PIPELINE_NAME: 'Backup long term logs: $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-long-fx-fx' - variables: - IVAS_PIPELINE_NAME: 'Run comparison tools against float ref FX-FX (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 == 'renderer-framesize-be' - variables: - IVAS_PIPELINE_NAME: 'Renderer framesize 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' - -# --------------------------------------------------------------- -# Generic script anchors -# --------------------------------------------------------------- - -# These can be used later on to do common tasks - -# Prints useful information for every job and should be used at the beginning of each job -.print-common-info-windows: &print-common-info-windows - - | - echo "Printing common information for build job." - echo "Current job is run on commit $CI_COMMIT_SHA" - echo "Commit time was $CI_COMMIT_TIMESTAMP" - ("echo 'System time is'", "Get-Date -Format 'dddd dd/MM/yyyy HH:mm K'") | Invoke-Expression - -.activate-Werror-linux: &activate-Werror-linux - - sed -i.bak "s/^# \(CFLAGS += -Werror\)/\1/" Makefile - -.activate-WX-windows: &activate-WX-windows - - (Get-Content -Path "CMakeLists.txt") -replace '# \(add_compile_options\("\/WX"\)\)', '$1' | Set-Content -Path "CMakeLists.txt" - - Get-ChildItem -Path "Workspace_msvc" -Filter "*.vcxproj" | ForEach-Object { (Get-Content -Path $_.FullName) -replace 'false', 'true' | Set-Content -Path $_.FullName } - -.rules-merge-request: - rules: - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - - when: never - -.rules-pytest-to-ref-short: - rules: - - if: $PYTEST_MLD_SHORT # Set by scheduled pipeline - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "pytest-compare" - - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - -.rules-pytest-to-input-short: - rules: - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "pytest-compare-to-input" - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - - if: $CI_PIPELINE_SOURCE == 'schedule' - when: never - -.rules-pytest-to-ref-enc-sort-dmx: - rules: - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "pytest-compare-enc-dmx" - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - - if: $CI_PIPELINE_SOURCE == 'schedule' - when: never - -.rules-pytest-to-main-short: - rules: - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" # only have MR pipelines for MRs to main - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - -.rules-pytest-long: - rules: - - if: $PYTEST_MLD_LONG # Set by scheduled pipeline - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "pytest-compare-long" - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - when: never - -.rules-pytest-long-fx-fx: - rules: - - if: $PYTEST_MLD_LONG_FX_FX # Set by scheduled pipeline - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "pytest-compare-long-fx-fx" - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - when: never - -.rules-coverage: - rules: - - if: $COVERAGE_TEST # Set by scheduled pipeline - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "coverage" - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - when: never - -.rules-pytest-saturation-smoke-test: - rules: - - if: $PYTEST_SMOKE_TEST # Set by scheduled pipeline - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "pytest-saturation-smoke-test" - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - when: never - -# --------------------------------------------------------------- -# Job templates -# --------------------------------------------------------------- - -# override for centrally defined job to make use of the basop runners -.job-linux: - tags: - - ivas-basop-linux - -# custom variant of this template, we need to update the scripts repo before every build -.test-job-linux: - extends: - - .job-linux - before_script: - - !reference [.job-linux, before_script] - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - -.print-results-banner: &print-results-banner - - set +x - - echo "" - - echo -e "==================================================================================================================\n================================================== TEST RESULTS ==================================================\n==================================================================================================================\n" - -# template for test jobs on linux that need the TESTV_DIR -.test-job-linux-needs-testv-dir: - extends: .test-job-linux - before_script: - - !reference [ .job-linux, before_script ] - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - if [ ! -d "$TESTV_DIR" ]; then mkdir -p $TESTV_DIR; fi - - cp -r scripts/testv/* $TESTV_DIR/ - -.ivas-pytest-anchor: &ivas-pytest-anchor - stage: test - needs: ["build-codec-linux-make"] - timeout: "15 hours" - variables: - # keep "mld" in artifact name for backwards compatibility reasons - CSV_ARTIFACT_NAME: "mld--$CI_JOB_NAME-$CI_JOB_ID--sha-$CI_COMMIT_SHORT_SHA.csv" - CSV_ARTIFACT_SPLIT: "mld--split--$CI_JOB_NAME-$CI_JOB_ID--sha-$CI_COMMIT_SHORT_SHA.csv" - MERGED_CSV_ARTIFACT_NAME: "$CI_JOB_NAME--merged_csv--$CI_JOB_ID.csv" - PAGES_HTML_ARTIFACT_NAME: "$CI_JOB_NAME-index.html" - SUMMARY_HTML_ARTIFACT_NAME: "summary_$CI_JOB_NAME.html" - SUMMARY_HTML_ARTIFACT_SPLIT: "summary_split_$CI_JOB_NAME.html" - IMAGES_ARTIFACT_NAME: "images_$CI_JOB_NAME" - IMAGES_ARTIFACT_SPLIT: "images_split_$CI_JOB_NAME" - script: - - !reference [ .job-linux, before_script ] - - - set -euxo pipefail - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - if [ $USE_LTV -eq 1 ]; then - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh - - testcase_timeout=$TESTCASE_TIMEOUT_LTV - - else - - testcase_timeout=$TESTCASE_TIMEOUT_STV - - fi - - - python3 ci/remove_unsupported_testcases.py $PRM_FILES - - if [ $LEVEL_SCALING != "1.0" ]; then - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/apply-testv-scaling.sh - - fi - - - if [ "$COMPARE_DMX" = "true" ] || [ "$ENCODER_TEST" = "true" ]; then - - BUILD_WITH_DEBUG_MODE_INFO="true" - - fi - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-and-create-float-ref-outputs.sh - - - INV_LEVEL_SCALING=$(awk "BEGIN {print 1.0 / $LEVEL_SCALING}") - - comp_args="--mld --ssnr --odg --scalefac $INV_LEVEL_SCALING" - - summary_args="MLD DIFF SSNR ODG" - - REPORT_ARG="" - - if [ "$ENCODER_TEST" = "true" ]; then comp_args="${comp_args} --enc_stats"; fi - - if [ "$DELTA_ODG" = "true" ]; then comp_args="${comp_args} --odg_bin"; MEASURES_FOR_REPORT="$MEASURES_FOR_REPORT DELTA_ODG"; fi - - if [ "$SPLIT_COMPARISON" = "true" ]; then comp_args="${comp_args} --split-comparison"; fi - - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-and-create-float-ref-outputs.sh - - # DMX comparison only in manual job with no other metrics - - if [ "$COMPARE_DMX" = "true" ]; then - - comp_args="--compare_enc_dmx" - - fi - - - echo "$comp_args" - - ### run pytest - - exit_code=0 - - python3 -m pytest --tb=no $TEST_SUITE -v --create_cut --html=report.html --self-contained-html --junit-xml=report-junit.xml $comp_args -n auto --testcase_timeout $testcase_timeout --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH || exit_code=$? - - zero_errors=$(cat report-junit.xml | grep -c 'errors="0"') || true - - ### create histograms - - if [ "$SPLIT_COMPARISON" = "true" ]; then - - python3 scripts/parse_xml_report.py report-junit.xml $CSV_ARTIFACT_NAME --split-csv-file $CSV_ARTIFACT_SPLIT - - else - - python3 scripts/parse_xml_report.py report-junit.xml $CSV_ARTIFACT_NAME - - fi - - # first for "whole" files comparison - - python3 scripts/create_histograms.py $CSV_ARTIFACT_NAME $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT --write-out-histograms - - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT - - - if [ "$SPLIT_COMPARISON" = "true" ]; then - - python3 scripts/create_histograms.py $CSV_ARTIFACT_SPLIT $IMAGES_ARTIFACT_SPLIT --measures $MEASURES_FOR_REPORT --write-out-histograms - - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_SPLIT $CI_JOB_ID $CI_JOB_NAME $IMAGES_ARTIFACT_SPLIT --measures $MEASURES_FOR_REPORT - - else - # touch files to suppress warning for missing artifacts - - touch $CSV_ARTIFACT_SPLIT $IMAGES_ARTIFACT_SPLIT - - fi - - - if [ $USE_LTV -eq 1 ] && [ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]; then - - id_previous=$(python3 ci/get_id_of_last_job_occurence.py $CI_DEFAULT_BRANCH $CI_JOB_NAME $CI_PROJECT_ID) - - echo "Job ID from variables - $CI_JOB_ID, Job ID from script - $id_previous" - - curl --request GET "$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/$id_previous/artifacts" --output artifacts.zip - - unzip artifacts.zip -d previous_artifacts - # This wildcard thingy relies on only one csv file being present per job - - file_previous="previous_artifacts/mld--$CI_JOB_NAME-$id_previous--sha-*.csv" - - python3 ci/basop-pages/create_report_pages.py $PAGES_HTML_ARTIFACT_NAME $MERGED_CSV_ARTIFACT_NAME $CSV_ARTIFACT_NAME $file_previous $CI_JOB_ID $id_previous $CI_JOB_NAME - - else - # create empty file for artifacts to avoid errors - - touch $PAGES_HTML_ARTIFACT_NAME - - touch $MERGED_CSV_ARTIFACT_NAME - - fi - - - if [ $zero_errors != 1 ]; then - - echo "Run errors encountered!" - # TODO: temporary only to not fail MR pipelines on crashes - - if [ $CI_PIPELINE_SOURCE == 'merge_request_event' ]; then - - exit $EXIT_CODE_NON_BE - - else - - exit $EXIT_CODE_FAIL - - fi - - fi - - if [ $exit_code -eq 1 ]; then echo "Differences encountered"; exit $EXIT_CODE_NON_BE; fi - - exit 0 - - allow_failure: - exit_codes: - - 123 - artifacts: - name: "$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA--results" - expire_in: 1 week - when: always - paths: - - report-junit.xml - - report.html - - $PAGES_HTML_ARTIFACT_NAME - - $CSV_ARTIFACT_NAME - - $CSV_ARTIFACT_SPLIT - - $MERGED_CSV_ARTIFACT_NAME - - $SUMMARY_HTML_ARTIFACT_NAME - - $SUMMARY_HTML_ARTIFACT_SPLIT - - $IMAGES_ARTIFACT_NAME - - $IMAGES_ARTIFACT_SPLIT - expose_as: "pytest compare results" - reports: - junit: - - report-junit.xml - -.check-up-to-date-in-comparison-jobs: &check-up-to-date-in-comparison-jobs - - | - commits_behind_count="$(bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/get-commits-behind-count.sh)" - if [ $commits_behind_count -ne 0 ]; then - set +x - echo -e "Your branch is $commits_behind_count commits behind the target branch, possibly main changed during your pipeline run. Checking bitexactness or testing for regressions now can result in meaningless results. Run\n\t git pull origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME\nto update." - exit 1 - fi - -.check-be-job: - extends: - - .test-job-linux - - .rules-pytest-to-main-short - before_script: - - !reference [ .test-job-linux, before_script ] - - rm -rf tests/dut tests/ref - variables: - USE_LTV: 0 - -.check-be-to-target-job: - extends: - - .check-be-job - stage: check-be - needs: ["build-codec-linux-make"] - timeout: "300 minutes" - variables: - XML_REPORT: "report--$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA.xml" - HTML_REPORT: "report--$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA.html" - PYTEST_LOG_TARGET_BRANCH: "pytest-log-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME.txt" - script: - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - - set -euxo pipefail - - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - python3 tests/create_short_testvectors.py - - - if [ $USE_LTV -eq 1 ]; then - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh - - testcase_timeout=$TESTCASE_TIMEOUT_LTV - - else - - testcase_timeout=$TESTCASE_TIMEOUT_STV - - fi - - - python3 ci/remove_unsupported_testcases.py $PRM_FILES - - python3 scripts/prepare_combined_format_inputs.py - - - if [ $LEVEL_SCALING != "1.0" ];then - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/apply-testv-scaling.sh - - fi - - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-binaries.sh float-ref - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-binaries.sh merge-target - - make clean - - make -j >> /dev/null - - *check-up-to-date-in-comparison-jobs - - - exit_code_target=0 - - python3 -m pytest $TEST_SUITE -v --update_ref 1 --create_ref -n auto --ref_encoder_path $MERGE_TARGET_ENCODER_PATH --ref_decoder_path $MERGE_TARGET_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH > $PYTEST_LOG_TARGET_BRANCH || exit_code_target=$? - - - exit_code=0 - - rm -rf .pytest_cache || true - - python3 -m pytest --tb=no -q $TEST_SUITE -v --keep_files --create_cut --html=$HTML_REPORT --self-contained-html --junit-xml=$XML_REPORT --ref_encoder_path $MERGE_TARGET_ENCODER_PATH --ref_decoder_path $MERGE_TARGET_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH -n auto --testcase_timeout $testcase_timeout > pytest_log.txt || exit_code=$? - - - if [ $exit_code -ne 0 ]; then - - exit_code=$EXIT_CODE_NON_BE - - zip -r $PYTEST_CACHE_ARTIFACT .pytest_cache - - - grep "^FAILED" pytest_log.txt | sed "s/^FAILED /'/" | sed "s/] - .*/]'/" | tr "\n" " " > $FAILED_TESTCASES_LIST || true - - grep "^FAILED" pytest_log.txt | sed "s/^FAILED //" | sed "s/] - .*/]/" > failed_testcases_for_printing.txt || true - - num_failures=$(wc -l < failed_testcases_for_printing.txt) - - - grep "^ERROR" pytest_log.txt | sed "s/^ERROR /'/" | sed "s/] - .*/]'/" | tr "\n" " " > $ERRORS_TESTCASES_LIST || true - - grep "^ERROR" pytest_log.txt | sed "s/^ERROR //" | sed "s/] - .*/]/" > errors_testcases_for_printing.txt || true - - num_errors=$(wc -l < errors_testcases_for_printing.txt) - - - *print-results-banner - - echo "Found these $num_failures non-bitexact testcases:" - - cat failed_testcases_for_printing.txt - - - echo "Reproduce locally with:" - - echo -e "1. Create references with target branch $CI_MERGE_REQUEST_TARGET_BRANCH_NAME:\n\t- git checkout $(cat $FLOAT_REF_COMMIT_FILE)\n\t- make clean\n\t- make -j\n\t- mv IVAS_cod IVAS_cod_ref\n\t- mv IVAS_dec IVAS_dec_ref\n\t- python3 -m pytest $(cat $FAILED_TESTCASES_LIST) --update_ref 1 --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH" - - echo -e "2. Run test with source branch $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:\n\t- git checkout $(cat $CUT_COMMIT_FILE)\n\t- make clean\n\t- make -j\n\t- python3 -m pytest $(cat $FAILED_TESTCASES_LIST) --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH" - - echo "The individual command lines can be found in the html report in the job artifacts." - - if [ $num_errors -ne 0 ]; then - - exit_code=1 - - echo "There were errors present in the following testcases:" - - cat errors_testcases_for_printing.txt - - fi - - - exit $exit_code - - else - # create empty files to not have errors at artifact stage - - touch $FAILED_TESTCASES_LIST - - touch $ERRORS_TESTCASES_LIST - - touch $PYTEST_CACHE_ARTIFACT - - *print-results-banner - - echo "All testcases are bitexact." - - fi - - exit $exit_code - - allow_failure: - exit_codes: - - 123 - artifacts: - name: "$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA--results" - expire_in: 1 week - when: always - paths: - - $XML_REPORT - - $HTML_REPORT - - $FAILED_TESTCASES_LIST - - $ERRORS_TESTCASES_LIST - - pytest_log.txt - - $PYTEST_CACHE_ARTIFACT - - $FLOAT_REF_COMMIT_FILE - - $CUT_COMMIT_FILE - - $MERGE_TARGET_COMMIT_FILE - - $PYTEST_LOG_TARGET_BRANCH - expose_as: "pytest compare results" - reports: - junit: - - $XML_REPORT - - $XML_REPORT - -.overwrite-pytest-cache-with-artifact: &overwrite-pytest-cache-with-artifact - - if [ -f $PYTEST_CACHE_ARTIFACT ]; then - - rm -rf .pytest_cache || true - - unzip $PYTEST_CACHE_ARTIFACT - - fi - -.check-regressions-pytest-job: - extends: - - .check-be-job - stage: test - timeout: "300 minutes" - variables: - XML_REPORT_BRANCH: "report-junit-branch-$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA.xml" - XML_REPORT_MAIN: "report-junit-main-$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA.xml" - HTML_REPORT_BRANCH: "report-junit-branch-$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA.html" - HTML_REPORT_MAIN: "report-junit-main-$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA.html" - CSV_BRANCH: "scores-branch-$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA.csv" - CSV_MAIN: "scores-main-$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA.csv" - IMAGES_ARTIFACT_NAME: "images_$CI_JOB_NAME" - SUMMARY_HTML_ARTIFACT_NAME: "summary_$CI_JOB_NAME.html" - script: - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - # create empty files for all artifacts to suppress warnings in case of no regressions found or all is BE - - touch $XML_REPORT_BRANCH $XML_REPORT_MAIN $HTML_REPORT_BRANCH $HTML_REPORT_MAIN $CSV_BRANCH $CSV_MAIN $SUMMARY_HTML_ARTIFACT_NAME $FLOAT_REF_COMMIT_FILE $CUT_COMMIT_FILE $MERGE_TARGET_COMMIT_FILE regressions_crashes.csv regressions_MLD.csv regressions_MAX_ABS_DIFF.csv regressions_MIN_SSNR.csv regressions_MIN_ODG.csv improvements_crashes.csv improvements_MLD.csv improvements_MAX_ABS_DIFF.csv improvements_MIN_SSNR.csv improvements_MIN_ODG.csv - - mkdir $IMAGES_ARTIFACT_NAME - - - set -euxo pipefail - - - if [ -s $FAILED_TESTCASES_LIST ]; then - - *overwrite-pytest-cache-with-artifact - - export PYTEST_ADDOPTS=--last-failed - - else - # turn off echoing back of commands for result printout - - *print-results-banner - - echo -e "All tested cases were bit-exact between $CI_MERGE_REQUEST_TARGET_BRANCH_NAME and $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME.\nNo need to check for regressions. All is fine." - - exit 0 - - fi - - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - - if [ $USE_LTV -eq 1 ]; then - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh - - testcase_timeout=$TESTCASE_TIMEOUT_LTV - - else - - testcase_timeout=$TESTCASE_TIMEOUT_STV - - fi - - - python3 ci/remove_unsupported_testcases.py $PRM_FILES - - if [ $LEVEL_SCALING != "1.0" ];then - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/apply-testv-scaling.sh - - fi - - # check MR title for flag that allows regressions to be mergable - - echo $CI_MERGE_REQUEST_TITLE > tmp.txt - - allow_regressions_flag=$(grep -c --ignore-case "\[allow[ -]*regression\]" tmp.txt) || true - - - INV_LEVEL_SCALING=$(awk "BEGIN {print 1.0 / $LEVEL_SCALING}") - - comp_args="--mld --ssnr --odg --scalefac $INV_LEVEL_SCALING" - - ### run branch first - # this per default builds the branch and the reference and creates the reference outputs - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-and-create-float-ref-outputs.sh - - *check-up-to-date-in-comparison-jobs - # need to restore cache again - - *overwrite-pytest-cache-with-artifact - - python3 -m pytest --tb=no -q $TEST_SUITE -v --keep_files --create_cut --html=$HTML_REPORT_BRANCH --self-contained-html --junit-xml=$XML_REPORT_BRANCH $comp_args --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH -n auto --testcase_timeout $testcase_timeout || true - - zero_errors_branch=$(cat $XML_REPORT_BRANCH | grep -c 'errors="0"') || true - - python3 scripts/parse_xml_report.py $XML_REPORT_BRANCH $CSV_BRANCH - - # Store branch outputs for comparison - - mv tests/dut tests/dut_branch - - # create the summary based on the branch only - - python3 scripts/create_histograms.py $CSV_BRANCH $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT - - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT - - ### run main now - - git checkout $CI_MERGE_REQUEST_TARGET_BRANCH_NAME - - git pull origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME - - make clean - - make -j >> /dev/null - # need to restore cache again - - *overwrite-pytest-cache-with-artifact - - python3 -m pytest --tb=no -q $TEST_SUITE -v --keep_files --create_cut --html=$HTML_REPORT_MAIN --self-contained-html --junit-xml=$XML_REPORT_MAIN $comp_args --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH -n auto --testcase_timeout $testcase_timeout || true - - python3 scripts/parse_xml_report.py $XML_REPORT_MAIN $CSV_MAIN - - ### compare the two csv files for regressions - - regressions_found=0 - - python3 scripts/basop_check_for_changes_in_testcases.py --show_improvements --xml_report $XML_REPORT_BRANCH $CSV_BRANCH $CSV_MAIN > regression_log.txt || regressions_found=$? - - - exit_code=0 - - *print-results-banner - - if [ $zero_errors_branch != 1 ]; then - - echo "Run errors encountered!" - - exit_code=$EXIT_CODE_FAIL - - echo "Reproduce locally with:" - - echo -e "1. Create references with target branch $CI_MERGE_REQUEST_TARGET_BRANCH_NAME:\n\t- git checkout $(cat $FLOAT_REF_COMMIT_FILE)\n\t- make clean\n\t- make -j\n\t- mv IVAS_cod IVAS_cod_ref\n\t- mv IVAS_dec IVAS_dec_ref\n\t- python3 -m pytest $(cat $ERRORS_TESTCASES_LIST) --update_ref 1 --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH" - - echo -e "2. Run test with source branch $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:\n\t- git checkout $(cat $CUT_COMMIT_FILE)\n\t- make clean\n\t- make -j\n\t- python3 -m pytest $(cat $ERRORS_TESTCASES_LIST) --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH" - - echo "The individual command lines can be found in the regressions_crashes.csv files in the job artifacts." - - elif [ $regressions_found != 0 ] && [ "$SKIP_REGRESSION_CHECK" != "true" ]; then - - cat regression_log.txt - - if [ $allow_regressions_flag == 0 ]; then - - echo "Detected regression wrt to $CI_MERGE_REQUEST_TARGET_BRANCH_NAME, [allow regression] not set!" - - exit_code=$EXIT_CODE_FAIL; - - else - - echo "Detected regression wrt to $CI_MERGE_REQUEST_TARGET_BRANCH_NAME, [allow regression] set." - - exit_code=$EXIT_CODE_NON_BE; - - fi - - echo "Reproduce locally with:" - - echo -e "1. Create references with target branch $CI_MERGE_REQUEST_TARGET_BRANCH_NAME:\n\t- git checkout $(cat $FLOAT_REF_COMMIT_FILE)\n\t- make clean\n\t- make -j\n\t- mv IVAS_cod IVAS_cod_ref\n\t- mv IVAS_dec IVAS_dec_ref\n\t- python3 -m pytest $(cat $FAILED_TESTCASES_LIST) --update_ref 1 --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $REF_DECODER_PATH" - - echo -e "2. Run test with source branch $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:\n\t- git checkout $(cat $CUT_COMMIT_FILE)\n\t- make clean\n\t- make -j\n\t- python3 -m pytest $(cat $FAILED_TESTCASES_LIST) --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH" - - echo "The individual command lines can be found in the regressions_*.csv files in the job artifacts." - - fi - - - exit $exit_code - after_script: - - rm -rf tests/dut tests/ref - allow_failure: - exit_codes: - - 123 - artifacts: - name: "$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA--results" - expire_in: 1 week - when: always - paths: - - $XML_REPORT_BRANCH - - $XML_REPORT_MAIN - - $HTML_REPORT_BRANCH - - $HTML_REPORT_MAIN - - $CSV_BRANCH - - $CSV_MAIN - - $SUMMARY_HTML_ARTIFACT_NAME - - $IMAGES_ARTIFACT_NAME - - $FLOAT_REF_COMMIT_FILE - - $CUT_COMMIT_FILE - - $MERGE_TARGET_COMMIT_FILE - - regressions_crashes.csv - - regressions_MLD.csv - - regressions_MAX_ABS_DIFF.csv - - regressions_MIN_SSNR.csv - - regressions_MIN_ODG.csv - - improvements_crashes.csv - - improvements_MLD.csv - - improvements_MAX_ABS_DIFF.csv - - improvements_MIN_SSNR.csv - - improvements_MIN_ODG.csv - expose_as: "pytest compare results" - reports: - junit: - - $XML_REPORT_BRANCH - - $XML_REPORT_MAIN - - -.ivas-pytest-sanitizers-anchor: &ivas-pytest-sanitizers-anchor - extends: - - .job-linux - stage: test - needs: ["build-codec-linux-make"] - timeout: "600 minutes" - rules: - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - when: never - - if: $CI_PIPELINE_SOURCE == 'schedule' && $IVAS_PYTEST_MSAN - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "sanitizer" - script: - - !reference [ .job-linux, before_script ] - - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh - - python3 ci/remove_unsupported_testcases.py $PRM_FILES - - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-binaries.sh float-ref - - set -euxo pipefail - - make_args="CLANG=$CLANG_NUM" - - if [[ $CLANG_NUM == 3 ]]; then - - export UBSAN_OPTIONS="suppressions=scripts/ubsan_basop.supp,report_error_type=1,print_stacktrace=1" - - python3 scripts/basop_create_ignorelist_for_ubsan.py - - make_args="$make_args IGNORELIST=1" - - fi - - make clean - - make -j $make_args >> /dev/null - - testcase_timeout_arg="--testcase_timeout $TESTCASE_TIMEOUT_LTV_SANITIZERS" - # disable per-testcase timeout for msan to evaluate what is going on that it takes so long - - if [[ $CLANG_NUM = 1 ]]; then - - testcase_timeout_arg="" - - fi - - python3 -m pytest $TEST_SUITE -v --tb=no --update_ref 1 --html=report.html --self-contained-html --junit-xml=report-junit.xml $testcase_timeout_arg --ref_encoder_path $DUT_ENCODER_PATH --ref_decoder_path $DUT_DECODER_PATH - artifacts: - name: "$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA--results" - when: always - expire_in: "2 weeks" - paths: - - report-junit.xml - - report.html - reports: - junit: - - report-junit.xml - -.ivas-pytest-compare-to-input-anchor: &ivas-pytest-compare-to-input-anchor - stage: test - needs: ["build-codec-linux-make"] - timeout: "360 minutes" - variables: - SUMMARY_HTML_ARTIFACT_NAME: "summary_$CI_JOB_NAME.html" - IMAGES_ARTIFACT_NAME: "images_$CI_JOB_NAME" - script: - - !reference [ .job-linux, before_script ] - - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - if [ $USE_LTV -eq 1 ]; then - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh - - testcase_timeout=$TESTCASE_TIMEOUT_LTV - - else - - testcase_timeout=$TESTCASE_TIMEOUT_STV - - fi - - - python3 ci/remove_unsupported_testcases.py $PRM_FILES - - if [ $LEVEL_SCALING != "1.0" ];then - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/apply-testv-scaling.sh - - fi - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-float-ref-and-dut-binaries.sh - - - INV_LEVEL_SCALING=$(awk "BEGIN {print 1.0 / $LEVEL_SCALING}") - - comp_args="--mld --ssnr --odg --scalefac $INV_LEVEL_SCALING" - - ### run pytest - - exit_code=0 - - python3 -m pytest --tb=no $TEST_SUITE -v --create_cut --html=report-ref.html --self-contained-html --junit-xml=report-junit-ref.xml $comp_args -n auto --testcase_timeout $testcase_timeout --dut_encoder_path $REF_ENCODER_PATH --dut_decoder_path $REF_DECODER_PATH --compare_to_input || exit_code=$? - - python3 -m pytest --tb=no $TEST_SUITE -v --create_cut --html=report-dut.html --self-contained-html --junit-xml=report-junit-dut.xml $comp_args -n auto --testcase_timeout $testcase_timeout --dut_encoder_path $DUT_ENCODER_PATH --dut_decoder_path $DUT_DECODER_PATH --compare_to_input || exit_code=$? - - zero_errors_ref=$(cat report-junit-ref.xml | grep -c 'errors="0"') || true - - zero_errors_dut=$(cat report-junit-dut.xml | grep -c 'errors="0"') || true - - python3 scripts/parse_xml_report.py report-junit-ref.xml report-ref.csv - - python3 scripts/parse_xml_report.py report-junit-dut.xml report-dut.csv - - python3 scripts/diff_report.py report-ref.csv report-dut.csv report-diff.csv - - # create summary - - mkdir $IMAGES_ARTIFACT_NAME - - python3 scripts/create_histograms.py report-diff.csv $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT --write-out-histograms --no-bins - - python3 ci/basop-pages/create_summary_page.py $SUMMARY_HTML_ARTIFACT_NAME $CI_JOB_ID $CI_JOB_NAME $IMAGES_ARTIFACT_NAME --measures $MEASURES_FOR_REPORT - - - exit 0 - - allow_failure: - exit_codes: - - 123 - artifacts: - name: "$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA--results" - expire_in: 1 week - when: always - paths: - - report-junit-ref.xml - - report-ref.html - - report-ref.csv - - report-junit-dut.xml - - report-dut.html - - report-dut.csv - - report-diff.csv - - $IMAGES_ARTIFACT_NAME - - $SUMMARY_HTML_ARTIFACT_NAME - expose_as: "pytest compare to input results" - reports: - junit: - - report-junit-ref.xml - - report-junit-dut.xml - -# --------------------------------------------------------------- -# .pre jobs for setting up things -# --------------------------------------------------------------- - -# See: https://gitlab.com/gitlab-org/gitlab/-/issues/194023 -# Solution to make main branch pipelines uninterruptible while all other -# pipelines can be interrupted by default. This works because all jobs -# after uninterruptible jobs will be uninterruptible. Resource group -# setting avoids rare case where two fast merges could still interrupt -# pipeline. This should be revisited if there are updates to Gitlab. -uninterruptible: - stage: .pre - interruptible: false - resource_group: uninterruptible - script: - - echo "$CI_COMMIT_BRANCH is uninterruptible" - rules: - - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - when: always - tags: - - ivas-basop-linux - -# --------------------------------------------------------------- -# verification jobs -# --------------------------------------------------------------- - -branch-is-up-to-date-with-target-pre: - extends: - - .job-linux - - .rules-merge-request - stage: prevalidate - needs: [] - tags: - - ivas-basop-linux - script: - - | - commits_behind_count="$(bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/get-commits-behind-count.sh)" - if [ $commits_behind_count -ne 0 ]; then - echo -e "Your branch is $commits_behind_count commits behind the target branch, run\n\tgit pull origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME\nto update." - exit 1 - fi - -branch-is-up-to-date-with-target-post: - extends: - - .job-linux - - .rules-merge-request - stage: postvalidate - tags: - - ivas-basop-linux - script: - - | - commits_behind_count="$(bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/get-commits-behind-count.sh)" - if [ $commits_behind_count -ne 0 ]; then - echo -e "Your branch is $commits_behind_count commits behind the target branch, possibly main changed during your pipeline run, run\n\tgit pull origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME\nto update." - exit 1 - fi - -clang-format-check: - extends: - - .test-job-linux - rules: - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" # only have MR pipelines for MRs to main - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - - if: $CI_PIPELINE_SOURCE == 'schedule' - when: never - variables: - ARTIFACT_BASE_NAME: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--formatting-fix" - stage: prevalidate - needs: [] - timeout: "5 minutes" - script: - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - # Set up variables. This can't be done in the "variables" section because variables are not expanded properly there - - PATCH_FILE_NAME="$ARTIFACT_BASE_NAME".patch - - > - INSTRUCTIONS_GITLAB="To fix formatting issues:\n - - download the diff patch available as artifact of this job\n - - unzip the artifact and place the patch file in the root directory of your local IVAS repo\n - - run: git apply $PATCH_FILE_NAME\n - - commit new changes" - - > - INSTRUCTIONS_README="To fix formatting issues:\n - - place the patch file in the root directory of your local IVAS repo\n - - run: git apply $PATCH_FILE_NAME\n - - commit new changes" - - - format_problems=0 - - scripts/check-format.sh -afD -p 8 || format_problems=$? - - if [ $format_problems == 0 ] ; then exit 0; fi - - - mkdir tmp-formatting-fix - - git diff > "tmp-formatting-fix/$PATCH_FILE_NAME" - - # Print instructions to job output - - echo -e "$INSTRUCTIONS_GITLAB" - - # Include readme in the artifact, in case someone misses the job printout (e.g. getting the artifact via MR interface) - - echo -e "$INSTRUCTIONS_README" > "tmp-formatting-fix/readme.txt" - - - exit $format_problems - artifacts: - expire_in: 1 day - paths: - - tmp-formatting-fix/ - when: on_failure - name: "$ARTIFACT_BASE_NAME" - expose_as: "formatting patch" - -# --------------------------------------------------------------- -# Build jobs -# --------------------------------------------------------------- - -# ensure that codec builds on linux -build-codec-linux-make: - rules: - - if: $MANUAL_PIPELINE_TYPE == 'long-term-logs' || $MANUAL_PIPELINE_TYPE == 'backup-long-term-logs' || $UPDATE_PAGES - when: never - - if: $CI_PIPELINE_SOURCE == 'web' - - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' # trigger build job for all MRs - - if: $CI_PIPELINE_SOURCE == 'schedule' - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - extends: - - .build-job-linux - timeout: "100 minutes" - script: - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - *activate-Werror-linux - - make -j - -# ensure that codec builds on linux with instrumentation active -build-codec-linux-instrumented-make: - rules: - - if: $MANUAL_PIPELINE_TYPE == 'long-term-logs' || $MANUAL_PIPELINE_TYPE == 'backup-long-term-logs' || $UPDATE_PAGES - when: never - - if: $CI_PIPELINE_SOURCE == 'web' - - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" # only have MR pipelines for MRs to main - - if: $CI_PIPELINE_SOURCE == 'schedule' - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - extends: - - .build-job-linux - timeout: "100 minutes" - script: - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - bash scripts/prepare_instrumentation.sh -m MEM_ONLY - - make -j -C $INSTR_DIR - -build-codec-linux-debugging-make: - rules: - - if: $MANUAL_PIPELINE_TYPE == 'long-term-logs' || $MANUAL_PIPELINE_TYPE == 'backup-long-term-logs' || $UPDATE_PAGES - when: never - - if: $CI_PIPELINE_SOURCE == 'web' - - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" # only have MR pipelines for MRs to main - - if: $CI_PIPELINE_SOURCE == 'schedule' - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - extends: - - .build-job-linux - timeout: "100 minutes" - variables: - BUILD_WITH_DEBUG_MODE_INFO: "true" - script: - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/activate-debug-mode-info-if-set.sh - - make -j - -build-codec-windows-msbuild: - rules: - - if: $MANUAL_PIPELINE_TYPE == 'long-term-logs' || $MANUAL_PIPELINE_TYPE == 'backup-long-term-logs' || $UPDATE_PAGES - when: never - - if: $CI_PIPELINE_SOURCE == 'web' - - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' # trigger build job for all MRs - - if: $CI_PIPELINE_SOURCE == 'schedule' - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - extends: - - .build-job-windows - timeout: "10 minutes" - tags: - - ivas-windows - script: - - *print-common-info-windows - - *activate-WX-windows - - MSBuild.exe -maxcpucount .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Debug - -# --------------------------------------------------------------- -# Short test jobs that run in merge request pipelines -# --------------------------------------------------------------- - -### jobs that check for bitexactness of fx encoder and decoder -check-be-to-target-short-enc-0db: - extends: - - .check-be-to-target-job - variables: - TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" - # -/-0dB - LEVEL_SCALING: "1.0" - # overwrite decoder with float reference one - DUT_DECODER_PATH: "$REF_DECODER_PATH" - MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" - -check-be-to-target-short-enc-+10db: - extends: - - .check-be-to-target-job - variables: - TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" - # +10dB - LEVEL_SCALING: "3.162" - # overwrite decoder with float reference one - DUT_DECODER_PATH: "$REF_DECODER_PATH" - MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" - -check-be-to-target-short-enc--10db: - extends: - - .check-be-to-target-job - variables: - TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" - # -10dB - LEVEL_SCALING: "0.3162" - # overwrite decoder with float reference one - DUT_DECODER_PATH: "$REF_DECODER_PATH" - MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" - -check-be-to-target-short-dec-0db: - extends: - - .check-be-to-target-job - variables: - TEST_SUITE: "$SHORT_TEST_SUITE" - # +/-0dB - LEVEL_SCALING: "1.0" - # overwrite encoder with float reference one - DUT_ENCODER_PATH: "$REF_ENCODER_PATH" - MERGE_TARGET_ENCODER_PATH: "$REF_ENCODER_PATH" - -check-be-to-target-short-dec-+10db: - extends: - - .check-be-to-target-job - variables: - TEST_SUITE: "$SHORT_TEST_SUITE" - # +10dB - LEVEL_SCALING: "3.162" - # overwrite encoder with float reference one - DUT_ENCODER_PATH: "$REF_ENCODER_PATH" - MERGE_TARGET_ENCODER_PATH: "$REF_ENCODER_PATH" - -check-be-to-target-short-dec--10db: - extends: - - .check-be-to-target-job - variables: - TEST_SUITE: "$SHORT_TEST_SUITE" - # -10dB - LEVEL_SCALING: "0.3162" - # overwrite encoder with float reference one - DUT_ENCODER_PATH: "$REF_ENCODER_PATH" - MERGE_TARGET_ENCODER_PATH: "$REF_ENCODER_PATH" - -### jobs that check for regressions on non-BE testcases -check-regressions-short-enc-0db: - extends: - - .check-regressions-pytest-job - needs: - - job: "check-be-to-target-short-enc-0db" - artifacts: true - variables: - TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" - # +/-0dB - LEVEL_SCALING: "1.0" - # overwrite decoder with float reference one - DUT_DECODER_PATH: "$REF_DECODER_PATH" - MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" - -check-regressions-short-enc-+10db: - extends: - - .check-regressions-pytest-job - needs: - - job: "check-be-to-target-short-enc-+10db" - artifacts: true - variables: - TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" - # +10dB - LEVEL_SCALING: "3.162" - # overwrite decoder with float reference one - DUT_DECODER_PATH: "$REF_DECODER_PATH" - MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" - -check-regressions-short-enc--10db: - extends: - - .check-regressions-pytest-job - needs: - - job: "check-be-to-target-short-enc--10db" - artifacts: true - variables: - TEST_SUITE: "$SHORT_TEST_SUITE_ENCODER" - # -10dB - LEVEL_SCALING: "0.3162" - # overwrite decoder with float reference one - DUT_DECODER_PATH: "$REF_DECODER_PATH" - MERGE_TARGET_DECODER_PATH: "$REF_DECODER_PATH" - -check-regressions-short-dec-0db: - extends: - - .check-regressions-pytest-job - needs: - - job: "check-be-to-target-short-dec-0db" - artifacts: true - variables: - TEST_SUITE: "$SHORT_TEST_SUITE" - # +/-0dB - LEVEL_SCALING: "1" - # overwrite encoder with float reference one - DUT_ENCODER_PATH: "$REF_ENCODER_PATH" - MERGE_TARGET_ENCODER_PATH: "$REF_ENCODER_PATH" - -check-regressions-short-dec-+10db: - extends: - - .check-regressions-pytest-job - needs: - - job: "check-be-to-target-short-dec-+10db" - artifacts: true - variables: - TEST_SUITE: "$SHORT_TEST_SUITE" - # +10dB - LEVEL_SCALING: "3.162" - # overwrite encoder with float reference one - DUT_ENCODER_PATH: "$REF_ENCODER_PATH" - MERGE_TARGET_ENCODER_PATH: "$REF_ENCODER_PATH" - -check-regressions-short-dec--10db: - extends: - - .check-regressions-pytest-job - needs: - - job: "check-be-to-target-short-dec--10db" - artifacts: true - variables: - TEST_SUITE: "$SHORT_TEST_SUITE" - # -10dB - LEVEL_SCALING: "0.3162" - # overwrite encoder with float reference one - DUT_ENCODER_PATH: "$REF_ENCODER_PATH" - MERGE_TARGET_ENCODER_PATH: "$REF_ENCODER_PATH" - -check-be-between-renderer-framesizes: - extends: - - .test-job-linux - # - .rules-pytest-to-main-short - rules: - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "renderer-framesize-be" - stage: test - needs: ["build-codec-linux-make"] - script: - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/disable-limiter.sh - - make clean - - make -j - - echo "$SHORT_TEST_SUITE" - - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-float-ref-and-dut-binaries.sh - - python3 ci/remove_unsupported_testcases.py $PRM_FILES - - - exit_code=0 - - python3 -m pytest tests/codec_be_on_mr_nonselection --tb=no -v --ref_encoder_path ./IVAS_cod_ref --ref_decoder_path ./IVAS_dec --update_ref 1 --html=report-20ms.html --self-contained-html --junit-xml=report-junit-20ms.xml || exit_code=$? - - - exit_code5=0 - - exit_code10=0 - - python3 -m pytest tests/codec_be_on_mr_nonselection --tb=no -v --ref_encoder_path ./IVAS_cod_ref --ref_decoder_path ./IVAS_dec --html=report-5ms.html --self-contained-html --junit-xml=report-junit-5ms.xml --dut_fr 5 --decoder_only || exit_code5=$? - - python3 -m pytest tests/codec_be_on_mr_nonselection --tb=no -v --ref_encoder_path ./IVAS_cod_ref --ref_decoder_path ./IVAS_dec --html=report-10ms.html --self-contained-html --junit-xml=report-junit-10ms.xml --dut_fr 10 --decoder_only || exit_code10=$? - - - zero_errors5=$(cat report-junit-5ms.xml | grep -c 'errors="0"') || true - - zero_errors10=$(cat report-junit-10ms.xml | grep -c 'errors="0"') || true - - zero_errors=1 - - - *print-results-banner - - echo "!! Encoder command lines are in the 20ms log files only !!!" - - if [ $exit_code -ne 0 ]; then echo "20 ms framesize run already failed with errors."; zero_errors=0; fi - - if [ $zero_errors5 != 1 ]; then echo "run error with 5ms rendering encountered"; zero_errors=0 ; fi - - if [ $zero_errors10 != 1 ]; then echo "run error with 10ms rendering encountered"; zero_errors=0 ; fi - - if [ $zero_errors != 1 ]; then exit $EXIT_CODE_FAIL; fi - - if [ $exit_code5 -ne 0 ]; then echo "Non-bitexact cases encountered with 5ms rendering!"; exit_code=1; fi - - if [ $exit_code10 -ne 0 ]; then echo "Non-bitexact cases encountered with 10ms rendering!"; exit_code=1; fi - - if [ $exit_code -ne 0 ]; then exit $EXIT_CODE_FAIL; fi - artifacts: - name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" - expire_in: 1 week - when: always - expose_as: "pytest 5ms and 10ms vs 20ms results" - paths: - - report-junit-5ms.xml - - report-5ms.html - - report-junit-10ms.xml - - report-10ms.html - - report-junit-20ms.xml - - report-20ms.html - reports: - junit: - - report-junit-5ms.xml - - report-junit-10ms.xml - - report-junit-20ms.xml - - -# --------------------------------------------------------------- -# Short test jobs for running from web interface or schedule -# --------------------------------------------------------------- - -### jobs that test fx encoder -> flt decoder -ivas-pytest-compare_to_ref-short-enc: - extends: - - .rules-pytest-to-ref-short - - .test-job-linux - before_script: - - USE_LTV=0 - - ENCODER_TEST="true" - - DUT_DECODER_PATH=./$REF_DECODER_PATH - - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - - LEVEL_SCALING=1.0 - <<: *ivas-pytest-anchor - -ivas-pytest-compare_to_ref-short-enc-lev-10: - extends: - - .rules-pytest-to-ref-short - - .test-job-linux - before_script: - - USE_LTV=0 - - ENCODER_TEST="true" - - DUT_DECODER_PATH=./$REF_DECODER_PATH - - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - - LEVEL_SCALING=0.3162 - <<: *ivas-pytest-anchor - -ivas-pytest-compare_to_ref-short-enc-lev+10: - extends: - - .rules-pytest-to-ref-short - - .test-job-linux - before_script: - - USE_LTV=0 - - ENCODER_TEST="true" - - DUT_DECODER_PATH=./$REF_DECODER_PATH - - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - - LEVEL_SCALING=3.162 - <<: *ivas-pytest-anchor - -# encoder dmx comparison jobs -ivas-pytest-compare_to_ref-dmx-short-enc: - extends: - - .rules-pytest-to-ref-enc-sort-dmx - - .test-job-linux - before_script: - - USE_LTV=0 - - ENCODER_TEST="true" - - COMPARE_DMX="true" - - DUT_DECODER_PATH=./$REF_DECODER_PATH - - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - - LEVEL_SCALING=1.0 - <<: *ivas-pytest-anchor - -ivas-pytest-compare_to_ref-dmx-short-enc-lev-10: - extends: - - .rules-pytest-to-ref-enc-sort-dmx - - .test-job-linux - before_script: - - USE_LTV=0 - - ENCODER_TEST="true" - - COMPARE_DMX="true" - - DUT_DECODER_PATH=./$REF_DECODER_PATH - - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - - LEVEL_SCALING=0.3162 - <<: *ivas-pytest-anchor - -ivas-pytest-compare_to_ref-dmx-short-enc-lev+10: - extends: - - .rules-pytest-to-ref-enc-sort-dmx - - .test-job-linux - before_script: - - USE_LTV=0 - - ENCODER_TEST="true" - - COMPARE_DMX="true" - - DUT_DECODER_PATH=./$REF_DECODER_PATH - - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - - LEVEL_SCALING=3.162 - <<: *ivas-pytest-anchor - -ivas-pytest-enc-msan: - extends: - - .test-job-linux - tags: - - ivas-basop-linux-fast - before_script: - - CLANG_NUM=1 - - DUT_DECODER_PATH=./$REF_DECODER_PATH - - TEST_SUITE=$LONG_TEST_SUITE_ENCODER - <<: *ivas-pytest-sanitizers-anchor - -ivas-pytest-enc-asan: - extends: - - .test-job-linux - tags: - - ivas-basop-linux-fast - before_script: - - CLANG_NUM=2 - - DUT_DECODER_PATH=./$REF_DECODER_PATH - - TEST_SUITE=$LONG_TEST_SUITE_ENCODER - <<: *ivas-pytest-sanitizers-anchor - -ivas-pytest-enc-usan: - extends: - - .test-job-linux - tags: - - ivas-basop-linux-fast - before_script: - - CLANG_NUM=3 - - DUT_DECODER_PATH=./$REF_DECODER_PATH - - TEST_SUITE=$LONG_TEST_SUITE_ENCODER - <<: *ivas-pytest-sanitizers-anchor - -### jobs that test flt encoder -> fx decoder -ivas-pytest-compare_to_ref-short-dec: - extends: - - .rules-pytest-to-ref-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_ENCODER_PATH=./$REF_ENCODER_PATH - - TEST_SUITE="$SHORT_TEST_SUITE" - - LEVEL_SCALING=1.0 - <<: *ivas-pytest-anchor - -ivas-pytest-compare_to_ref-short-dec-lev-10: - extends: - - .rules-pytest-to-ref-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_ENCODER_PATH=./$REF_ENCODER_PATH - - TEST_SUITE="$SHORT_TEST_SUITE" - - LEVEL_SCALING=0.3162 - <<: *ivas-pytest-anchor - -ivas-pytest-compare_to_ref-short-dec-lev+10: - extends: - - .rules-pytest-to-ref-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_ENCODER_PATH=./$REF_ENCODER_PATH - - TEST_SUITE="$SHORT_TEST_SUITE" - - LEVEL_SCALING=3.162 - <<: *ivas-pytest-anchor - -### jobs that compare the output synthesis to the input files directly -ivas-pytest-compare-to-input-short-dec: - extends: - - .rules-pytest-to-input-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_ENCODER_PATH=./$REF_ENCODER_PATH - - TEST_SUITE="$SHORT_TEST_SUITE" - - LEVEL_SCALING=1.0 - <<: *ivas-pytest-compare-to-input-anchor - -ivas-pytest-compare-to-input-short-enc: - extends: - - .rules-pytest-to-input-short - - .test-job-linux - before_script: - - USE_LTV=0 - - DUT_DECODER_PATH=./$REF_DECODER_PATH - - TEST_SUITE="$SHORT_TEST_SUITE_ENCODER" - - LEVEL_SCALING=1.0 - <<: *ivas-pytest-compare-to-input-anchor - -ivas-pytest-dec-msan: - extends: - - .test-job-linux - tags: - - ivas-basop-linux-fast - before_script: - - CLANG_NUM=1 - - DUT_ENCODER_PATH=./$REF_ENCODER_PATH - - TEST_SUITE=$LONG_TEST_SUITE_NO_RENDERER - <<: *ivas-pytest-sanitizers-anchor - -ivas-pytest-dec-asan: - extends: - - .test-job-linux - tags: - - ivas-basop-linux-fast - before_script: - - CLANG_NUM=2 - - DUT_ENCODER_PATH=./$REF_ENCODER_PATH - - TEST_SUITE=$LONG_TEST_SUITE_NO_RENDERER - <<: *ivas-pytest-sanitizers-anchor - -ivas-pytest-dec-usan: - extends: - - .test-job-linux - tags: - - ivas-basop-linux-fast - before_script: - - CLANG_NUM=3 - - DUT_ENCODER_PATH=./$REF_ENCODER_PATH - - TEST_SUITE=$LONG_TEST_SUITE_NO_RENDERER - <<: *ivas-pytest-sanitizers-anchor - -# --------------------------------------------------------------- -# Long test jobs -# --------------------------------------------------------------- - -ivas-pytest-compare_ref-long-enc: - extends: - - .rules-pytest-long - - .test-job-linux - before_script: - - USE_LTV=1 - - DUT_DECODER_PATH=./$REF_DECODER_PATH - - TEST_SUITE="$LONG_TEST_SUITE_ENCODER" - - LEVEL_SCALING=1.0 - - SPLIT_COMPARISON="true" - <<: *ivas-pytest-anchor - -ivas-pytest-compare_ref-long-dec: - extends: - - .rules-pytest-long - - .test-job-linux - tags: - - ivas-basop-linux - - high-memory-capacity - before_script: - - USE_LTV=1 - - DUT_ENCODER_PATH=./$REF_ENCODER_PATH - - TEST_SUITE="$LONG_TEST_SUITE" - - LEVEL_SCALING=1.0 - - SPLIT_COMPARISON="true" - <<: *ivas-pytest-anchor - -ivas-pytest-compare_ref-long-enc-lev-10: - extends: - - .rules-pytest-long - - .test-job-linux - before_script: - - USE_LTV=1 - - DUT_DECODER_PATH=./$REF_DECODER_PATH - - TEST_SUITE="$LONG_TEST_SUITE_ENCODER" - - LEVEL_SCALING=0.3162 - - SPLIT_COMPARISON="true" - <<: *ivas-pytest-anchor - -ivas-pytest-compare_ref-long-dec-lev-10: - extends: - - .rules-pytest-long - - .test-job-linux - tags: - - ivas-basop-linux - - high-memory-capacity - before_script: - - USE_LTV=1 - - DUT_ENCODER_PATH=./$REF_ENCODER_PATH - - TEST_SUITE="$LONG_TEST_SUITE" - - LEVEL_SCALING=0.3162 - - SPLIT_COMPARISON="true" - <<: *ivas-pytest-anchor - -ivas-pytest-compare_ref-long-enc-lev+10: - extends: - - .rules-pytest-long - - .test-job-linux - before_script: - - USE_LTV=1 - - DUT_DECODER_PATH=./$REF_DECODER_PATH - - TEST_SUITE="$LONG_TEST_SUITE_ENCODER" - - LEVEL_SCALING=3.162 - - SPLIT_COMPARISON="true" - <<: *ivas-pytest-anchor - -ivas-pytest-compare_ref-long-dec-lev+10: - extends: - - .rules-pytest-long - - .test-job-linux - tags: - - ivas-basop-linux - - high-memory-capacity - before_script: - - USE_LTV=1 - - DUT_ENCODER_PATH=./$REF_ENCODER_PATH - - TEST_SUITE="$LONG_TEST_SUITE" - - LEVEL_SCALING=3.162 - - SPLIT_COMPARISON="true" - <<: *ivas-pytest-anchor - -ivas-pytest-compare_ref-long-fx-fx: - extends: - - .rules-pytest-long-fx-fx - - .test-job-linux - tags: - - ivas-linux - before_script: - - USE_LTV=1 - - REF_ENCODER_PATH=./$DUT_ENCODER_PATH - - TEST_SUITE="$LONG_TEST_SUITE_NO_RENDERER" - - LEVEL_SCALING=1.0 - - SPLIT_COMPARISON="true" - <<: *ivas-pytest-anchor - -ivas-pytest-compare_ref-long-fx-fx-lev-10: - extends: - - .rules-pytest-long-fx-fx - - .test-job-linux - tags: - - ivas-linux - before_script: - - USE_LTV=1 - - REF_ENCODER_PATH=./$DUT_ENCODER_PATH - - TEST_SUITE="$LONG_TEST_SUITE_NO_RENDERER" - - LEVEL_SCALING=0.3162 - - SPLIT_COMPARISON="true" - <<: *ivas-pytest-anchor - -ivas-pytest-compare_ref-long-fx-fx-lev+10: - extends: - - .rules-pytest-long-fx-fx - - .test-job-linux - tags: - - ivas-linux - before_script: - - USE_LTV=1 - - REF_ENCODER_PATH=./$DUT_ENCODER_PATH - - TEST_SUITE="$LONG_TEST_SUITE_NO_RENDERER" - - LEVEL_SCALING=3.162 - - SPLIT_COMPARISON="true" - <<: *ivas-pytest-anchor - - -ivas-smoke-test-saturation: - extends: - - .rules-pytest-saturation-smoke-test - - .test-job-linux-needs-testv-dir - script: - - USE_LTV=1 - - LEVEL_SCALING=32768 - - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - if [ $USE_LTV -eq 1 ]; then - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh - - fi - - if [ $LEVEL_SCALING != "1.0" ];then - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/apply-testv-scaling.sh - - fi - - cp -r scripts/testv/* $TESTV_DIR/ - - # skip prepare_mem_dryrun.py script in smoke_test.sh - - sed -i 's/python3 .\/scripts\/prepare_mem_dryrun.py/#python3 .\/scripts\/prepare_mem_dryrun.py/g' ci/smoke_test.sh - - - bash ci/smoke_test.sh - ### analyze for failures - - if ! [ -s smoke_test_output.txt ] || ! [ -s smoke_test_output_plc.txt ] || ! [ -s smoke_test_output_jbm_noEXT.txt ] || ! [ -s smoke_test_output_hrtf.txt ]; then echo "Error in smoke test"; exit 1; fi - - ret_val=0 - - if cat smoke_test_output.txt | grep -c "failed" ; then echo "Smoke test without PLC failed"; ret_val=1; fi - - if cat smoke_test_output_plc.txt | grep -c "failed"; then echo "Smoke test with PLC failed"; ret_val=1; fi - - if cat smoke_test_output_jbm_noEXT.txt | grep -c "failed"; then echo "Smoke test JBM part failed"; ret_val=1; fi - - if cat smoke_test_output_hrtf.txt | grep -c "failed"; then echo "Smoke test with external hrtf files failed"; ret_val=1; fi - - exit $ret_val - artifacts: - name: "$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA--results" - expire_in: 1 week - when: always - paths: - - smoke_test_output.txt - - smoke_test_output_plc.txt - - smoke_test_output_jbm_noEXT.txt - - smoke_test_output_hrtf.txt - expose_as: "saturation smoke test results" - - -# GCOV/LCOV coverage analysis of self_test suite -coverage-test-on-main-scheduled: - extends: - - .test-job-linux - - .rules-coverage - stage: test - timeout: 3 hours - script: - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-binaries.sh float-ref - # Build DuT binaries with GCOV - - make clean >> /dev/null - - make GCOV=1 -j - - cp IVAS_rend IVAS_rend_ref # Copy to ensure instrumented renderer is run in the first pytest call - - - testcase_timeout=$TESTCASE_TIMEOUT_LTV - - exit_code_dec=0 - - exit_code_enc=0 - - python3 -m pytest --tb=no tests/codec_be_on_mr_nonselection tests/renderer --update_ref 1 -v --create_ref --html=report-dec.html --self-contained-html --junit-xml=report-junit-dec.xml -n auto --testcase_timeout $testcase_timeout --ref_encoder_path $REF_ENCODER_PATH --ref_decoder_path $DUT_DECODER_PATH || exit_code_dec=$? - - lcov -c -d obj -o coverage_dec_rend.info # extract coverage of decoder/renderer - - - python3 -m pytest --tb=no tests/codec_be_on_mr_nonselection --encoder_only -v --html=report-enc.html --self-contained-html --junit-xml=report-junit-enc.xml -n auto --testcase_timeout $testcase_timeout --dut_encoder_path $DUT_ENCODER_PATH || exit_code_enc=$? - - lcov -c -d obj -o coverage_enc_dec_rend.info # extract coverage of encoder/decoder/renderer - - # remove apps and lib_util files from coverage - - lcov -r coverage_dec_rend.info "*apps*" -o coverage_dec_rend.info - - lcov -r coverage_dec_rend.info "*lib_util*" -o coverage_dec_rend.info - - lcov -r coverage_enc_dec_rend.info "*apps*" -o coverage_enc_dec_rend.info - - lcov -r coverage_enc_dec_rend.info "*lib_util*" -o coverage_enc_dec_rend.info - - - commit_sha=$(git rev-parse HEAD) - - genhtml coverage_enc_dec_rend.info -o coverage_enc_dec_rend -t "Coverage on main enc/dec/rend @ $commit_sha" - - genhtml coverage_dec_rend.info -o coverage_dec_rend -t "Coverage on main -- dec/rend @ $commit_sha" - artifacts: - name: "main-coverage-sha-$CI_COMMIT_SHORT_SHA" - when: always - expire_in: 1 week - paths: - - coverage_enc_dec_rend.info - - coverage_dec_rend.info - - coverage_enc_dec_rend - - coverage_dec_rend - - report-dec.html - - report-enc.html - expose_as: "Coverage result" - reports: - junit: - - report-junit-dec.xml - - report-junit-enc.xml - -# --------------------------------------------------------------- -# EVS 26.444 test job -# --------------------------------------------------------------- - -# check bitexactness to EVS -be-2-evs-26444: - extends: - - .test-job-linux - rules: - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "evs-26444" - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" - tags: - - be-2-evs-basop - stage: test - timeout: "120 minutes" # To be revisited - script: - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - sed -i".bak" "s/\(#define EVS_FLOAT\)/\/\/\1/" lib_com/options.h - - make -j >> /dev/null - - # copy over to never change the testvector dir - - cp -r $EVS_BE_TEST_DIR_BASOP ./evs_be_test - - mkdir -p ./evs_be_test/output/decoded ./evs_be_test/output/bitstreams - - - exit_code=0 - - python3 -m pytest tests/test_26444.py -v --html=report.html --self-contained-html --junit-xml=report-junit.xml -n auto || exit_code=$? - - if [ $exit_code -eq 1 ]; then echo "Differences encountered"; exit $EXIT_CODE_FAIL; fi - - exit 0 - - artifacts: - name: "$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA--results" - expire_in: 1 week - when: always - paths: - - report-junit.xml - - report.html - expose_as: "EVS 26444 result" - reports: - junit: - - report-junit.xml - -ivas-pytest-renderer: - extends: - - .test-job-linux - rules: - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "pytest-renderer" - before_script: - - USE_LTV=0 - - TEST_SUITE="tests/renderer" - - LEVEL_SCALING=1.0 - <<: *ivas-pytest-anchor - -peaq-enc-passthrough: - extends: - - .test-job-linux - rules: - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "peaq-enc-passthrough" - before_script: - - USE_LTV=0 - - DUT_DECODER_PATH=./$REF_DECODER_PATH - - TEST_SUITE="tests/test_enc_passthrough.py" - - DELTA_ODG="true" - - LEVEL_SCALING=1.0 - <<: *ivas-pytest-anchor - -# --------------------------------------------------------------- -# Various other tests -# --------------------------------------------------------------- - -# TODO: actually run on MR once main problems are fixed -voip-be-on-merge-request: - extends: - - .test-job-linux-needs-testv-dir - rules: - # - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" # only have MR pipelines for MRs to main - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "voip-be-test" - stage: test - needs: ["build-codec-linux-make"] - timeout: "10 minutes" - script: - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - make clean - - make -j >> /dev/null - - python3 -m pytest tests/test_be_for_jbm_neutral_dly_profile.py - -# To inject backup copy in manual trigger: -# - Store logs backup in accessible folder, e.g. /usr/local/backup -# - Set MANUAL_PIPELINE_TRIGGER to long-term-logs -# - Set RUNNER_TAG to specific runner with this folder prepared, e.g. test-ericsson-linux-runner-5 -# - Set LOGS_BACKUP_SOURCE_DIR to source folder, e.g. /usr/local/backup -ivas-long-term-job-logs: - rules: - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "long-term-logs" - - if: $CI_PIPELINE_SOURCE == 'schedule' && $MANUAL_PIPELINE_TYPE == "long-term-logs" - tags: - - $RUNNER_TAG - stage: maintenance - timeout: "25 minutes" - script: - - !reference [ .job-linux, before_script ] - - set -euxo pipefail - - echo "Running on RUNNER_TAG = $RUNNER_TAG" - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - # Clean up logs - - if [ -d "logs" ]; then rm -rf "logs"; fi - # Inject logs from backup copy if LOGS_BACKUP_SOURCE_DIR is set - - if [ "$LOGS_BACKUP_SOURCE_DIR" != "" ]; then - - cp_ret=0 - - cp -r $LOGS_BACKUP_SOURCE_DIR/logs ./ || cp_ret=$? - - if [ "$cp_ret" != 0 ]; then - - echo "Error -- Copying to $LOGS_BACKUP_SOURCE_DIR failed!" - - exit 1 - - fi - - fi - - - id_previous=$(python3 ci/get_id_of_last_job_occurence.py $CI_DEFAULT_BRANCH "$CI_JOB_NAME" $CI_PROJECT_ID) - - echo "Job name from variables - "$CI_JOB_NAME", Job ID from script - $id_previous" - - - if [ "$id_previous" != "-1" ]; then - # Unzip artifacts to recover past logs dir - - curl --request GET "$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/$id_previous/artifacts" --output artifacts.zip - # If there is overlap between injected log and new log, use the new logs. - - unzip -o artifacts.zip - - else - # create logs dir if it doesn't exist (should only happen in first run) - - echo "Could not find previous job, creating empty logs folder. If this is not the first run, an error likely happened!" - - mkdir logs - - fi - - # create folder for today's results - - TODAY=$(date +'%Y-%m-%d') - - mkdir -p logs/$TODAY - - # Aggregate job logs - - job_names="ivas-pytest-compare_ref-long-enc ivas-pytest-compare_ref-long-enc-lev+10 ivas-pytest-compare_ref-long-enc-lev-10 ivas-pytest-compare_ref-long-dec ivas-pytest-compare_ref-long-dec-lev+10 ivas-pytest-compare_ref-long-dec-lev-10 ivas-pytest-compare_ref-long-fx-fx ivas-pytest-compare_ref-long-fx-fx-lev+10 ivas-pytest-compare_ref-long-fx-fx-lev-10" - - for job_name in $job_names; do - - echo "Getting job logs for $job_name" - - id_previous=$(python3 ci/get_id_of_last_job_occurence.py $CI_DEFAULT_BRANCH "$job_name" $CI_PROJECT_ID) - - echo "Job ID from variables - "$job_name", Job ID from script - $id_previous" - - curl --request GET "$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/$id_previous/artifacts" --output artifacts.zip - - unzip artifacts.zip -d previous_artifacts - - mv previous_artifacts/mld--"$job_name"-$id_previous--sha-*.csv logs/$TODAY - - rm artifacts.zip - - rm -r previous_artifacts - - done - - ls logs - - exit 0 - - artifacts: - name: "$CI_JOB_NAME--sha-$CI_COMMIT_SHORT_SHA--results" - expire_in: 4 weeks - when: always - paths: - - logs - expose_as: "ivas long term job logs results" - -# To store backup copy: -# - Prepare accessible folder for backup, e.g. /usr/local/backup -# - Set MANUAL_PIPELINE_TRIGGER to backup-long-term-logs -# - Set RUNNER_TAG to specific runner with this folder prepared, e.g. test-ericsson-linux-runner-5 -# - Set LOGS_BACKUP_TARGET_DIR to source folder, e.g. /usr/local/backup -backup-long-term-job-logs: - rules: - - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "backup-long-term-logs" - - if: $CI_PIPELINE_SOURCE == 'schedule' && $MANUAL_PIPELINE_TYPE == "backup-long-term-logs" - tags: - - $RUNNER_TAG - stage: maintenance - timeout: "25 minutes" - script: - - !reference [ .job-linux, before_script ] - - set -euxo pipefail - - echo "Running on RUNNER_TAG = $RUNNER_TAG" - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - # Find ID of last run of ivas-long-term-job-logs - - id_previous=$(python3 ci/get_id_of_last_job_occurence.py $CI_DEFAULT_BRANCH ivas-long-term-job-logs $CI_PROJECT_ID) - - - if [ "$id_previous" != "-1" ]; then - # Unzip artifacts to recover past logs dir - - curl --request GET "$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/$id_previous/artifacts" --output artifacts.zip - - unzip artifacts.zip - - else - # create logs dir if it doesn't exist - - mkdir logs - - fi - - # Store logs as backup copy if LOGS_BACKUP_TARGET_DIR is set - - if [ -d "$LOGS_BACKUP_TARGET_DIR" ]; then - - cp -r logs $LOGS_BACKUP_TARGET_DIR - - exit 0 - - else - - echo "Error - LOGS_BACKUP_TARGET_DIR not set for backup job!" - - exit 1 - - fi - - -# --------------------------------------------------------------- -# Complexity measurement jobs -# --------------------------------------------------------------- - -.complexity-measurements-setup: - &complexity-measurements-setup # create necessary environment - ### 1. part: mainly same as in float repo - this is boilerplate code to make the gitlab pages presentation work - - mkdir -p wmops/logs - - - job_id=$(python3 ci/get_id_of_last_job_occurence.py $CI_COMMIT_REF_NAME $CI_JOB_NAME $CI_PROJECT_ID) - - echo $job_id - # this is a testing/maintenance mechanism to force getting the log history from a specific job id - # see below in the concrete complexity jobs - - if [ "$JOB_ID_INJECT" != "" ]; then job_id=$JOB_ID_INJECT; fi - - curl --silent --show-error --request GET "$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/$job_id/artifacts" --output artifacts.zip - - unzip -qq artifacts.zip || true # this may fail on first run, when there are no artifacts there and the zip file is actually just "404"-html - - public_dir="$CI_JOB_NAME-public" - - # if is needed to catch case when no artifact is there (first run), similarly as above - # 1. check for public_dir being there as this might not be the case when artifact download failed - # 2. check for public dir not being empty - handle job failures in prev job that happen after the dir is created. In that case, the empty dir is in the artifacts - - if [ -d $public_dir ] && [ ! -z "$( ls -A $public_dir )" ]; then - - mv $public_dir/* wmops/ - # check here if we have the split-by-levels files present - if not, fake them up with the existing global one - # this is needed for the first run with split graphs on a branch where the global version did run previously - # NOTE: checking only for level_1 file here as this should already be sufficient - # NOTE2: also not chechking for RAM for same reason - - wmops_all_global="wmops/log_wmops_all.txt" - - ram_all_global="wmops/log_ram_all.txt" - - if [ -f "${wmops_all_global}" ] && [ ! -f "wmops/log_wmops_all_level_1.txt" ]; then - - declare -a suffixes=("level_1" "level_2" "level_3" "rate_sw") - - for suffix in "${suffixes[@]}"; do - - cp ${wmops_all_global} wmops/log_wmops_all_${suffix}.txt - - cp ${ram_all_global} wmops/log_ram_all_${suffix}.txt - - done - - fi - - fi - - - rm artifacts.zip - - rm -rf $public_dir - - ### 1.5.part: get the corresponding measurement from ivas-float-update - - job_id=$(python3 ci/get_id_of_last_job_occurence.py ivas-float-update $CI_JOB_NAME $CI_PROJECT_ID) - - echo $job_id - - curl --silent --show-error --request GET "$CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/$job_id/artifacts" --output artifacts_ref.zip - - unzip -qq -j artifacts_ref.zip "*latest_WMOPS.csv" || true - # add file to arguments only if the artifact could be retrieved to prevent error later. - - if [ -f latest_WMOPS.csv ]; then GET_WMOPS_ARGS="$GET_WMOPS_ARGS latest_WMOPS.csv"; fi - -.complexity-measurements-prepare-artifacts: - &complexity-measurements-prepare-artifacts # prepare artifacts -> move to public directory - - public_dir="$CI_JOB_NAME-public" - - mkdir $public_dir - - mv -f wmops/log_*_all*.txt ./*.js ${public_dir}/ - # move logfiles for links - - mkdir $public_dir/logs - # first move logs - - log_files=$(cat $public_dir/graphs*.js | grep logFile | sed "s/.*\(wmops_newsletter_.*\.csv\).*/\1/g") - - for f in $log_files; do [ -f wmops/logs/$f ] && mv wmops/logs/$f $public_dir/logs/$f; done - # copy index page blueprint - - cp ci/complexity_measurements/index_complexity.html ${public_dir}/index.html - # patch the format in the title - - sed -i "s/IVAS FORMAT/IVAS $in_format to $out_format/g" ${public_dir}/index.html - # do separately here to avoid overwrite complaints by mv - - mv -f ci/complexity_measurements/style.css ${public_dir}/ - -.complexity-measurements-report-summary: &complexity-measurements-report-summary - - *print-results-banner - - if [ $ret_val -eq 0 ]; then - - echo -e "No crashes occured.\nNo changes in complexity or memory usage (>1%) detected." - - elif [ $ret_val -eq 123 ]; then - - echo -e "Changes in complexity or memory usage (>1%) detected!!!\nNo crashes occured." - - else - - echo -e "Something went wrong in running the codec. Likely some modes were crashing." - - fi - -.complexity-template: - extends: - - .test-job-linux - stage: test - variables: - ret_val: 0 - GET_WMOPS_ARGS: "mem_only" - timeout: 3 hours 30 minutes - before_script: - - !reference [ .test-job-linux, before_script ] - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-float-ref-and-dut-binaries.sh - - *complexity-measurements-setup - # delete previous jobs logfiles if present (-f flag ensures return calue of 0 even in first run where this folder is not present) - - rm -rf COMPLEXITY/logs - allow_failure: - exit_codes: - - 123 - artifacts: - name: "$CI_JOB_NAME--$CI_COMMIT_REF_NAME--sha-$CI_COMMIT_SHA" - when: always - expire_in: 2 week - paths: - - $CI_JOB_NAME-public - - COMPLEXITY/logs - -complexity-stereo-in-stereo-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - variables: - JOB_ID_INJECT: "" - script: - - in_format=stereo - - out_format=stereo - - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -complexity-ism-in-binaural-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 1 hour - variables: - JOB_ID_INJECT: "" - script: - - in_format=ISM - - out_format=BINAURAL - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "ISM+1 ISM+2 ISM+3 ISM+4" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -complexity-ism-in-binaural_room_ir-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 2 hours - variables: - JOB_ID_INJECT: "" - script: - - in_format=ISM - - out_format=BINAURAL_ROOM_IR - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "ISM+1 ISM+2 ISM+3 ISM+4" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -complexity-ism-in-ext-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 3 hours 30 minutes - variables: - JOB_ID_INJECT: "" - script: - - in_format=ISM - - out_format=EXT - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "ISM+1 ISM+2 ISM+3 ISM+4" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -complexity-sba-hoa3-in-hoa3-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 4 hours 30 minutes - variables: - JOB_ID_INJECT: "" - script: - - in_format=HOA3 - - out_format=HOA3 - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -complexity-sba-hoa3-in-binaural-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 5 hours 30 minutes - variables: - JOB_ID_INJECT: "" - script: - - in_format=HOA3 - - out_format=BINAURAL - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -complexity-sba-hoa3-in-binaural_room_ir-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 6 hours 30 minutes - variables: - JOB_ID_INJECT: "" - script: - - in_format=HOA3 - - out_format=BINAURAL_ROOM_IR - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -complexity-mc-in-7_1_4-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 7 hours 30 minutes - variables: - JOB_ID_INJECT: "" - script: - - in_format=MC - - out_format=7_1_4 - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -complexity-mc-in-binaural-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 10 hours - variables: - JOB_ID_INJECT: "" - script: - - in_format=MC - - out_format=BINAURAL - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -complexity-mc-in-binaural_room_ir-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 12 hours 30 minutes - variables: - JOB_ID_INJECT: "" - script: - - in_format=MC - - out_format=BINAURAL_ROOM_IR - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -complexity-masa-in-ext-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 15 hours - variables: - JOB_ID_INJECT: "" - script: - - in_format=MASA - - out_format=EXT - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -complexity-masa-in-binaural-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 16 hours - variables: - JOB_ID_INJECT: "" - script: - - in_format=MASA - - out_format=BINAURAL - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -complexity-masa-in-hoa3-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 17 hours - variables: - JOB_ID_INJECT: "" - script: - - in_format=MASA - - out_format=HOA3 - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -# complexity-omasa-in-ext-out: -# extends: -# - .complexity-template -# rules: -# - if: $MEASURE_COMPLEXITY_LINUX -# when: delayed -# start_in: 13 hours - # variables: - # JOB_ID_INJECT: "" -# script: -# - in_format=OMASA -# - out_format=EXT -# - ret_val=0 -# - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? -# - *complexity-measurements-prepare-artifacts -# - *complexity-measurements-report-summary -# - exit $ret_val - -complexity-omasa-in-binaural-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 18 hours - variables: - JOB_ID_INJECT: "" - script: - - in_format=OMASA - - out_format=BINAURAL - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -complexity-omasa-in-hoa3-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 20 hours - variables: - JOB_ID_INJECT: "" - script: - - in_format=OMASA - - out_format=HOA3 - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -complexity-StereoDmxEVS-stereo-in-mono-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 22 hours - variables: - JOB_ID_INJECT: "" - script: - - in_format=StereoDmxEVS - - out_format=mono - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -# complexity-osba-in-ext-out: -# extends: -# - .complexity-template -# rules: -# - if: $MEASURE_COMPLEXITY_LINUX -# when: delayed -# start_in: 17 hours -# script: -# - in_format=OSBA -# - out_format=EXT -# - ret_val=0 -# - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? -# - *complexity-measurements-prepare-artifacts -# - *complexity-measurements-report-summary -# - exit $ret_val - -complexity-osba-in-binaural-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 22 hours 30 minutes - variables: - JOB_ID_INJECT: "" - script: - - in_format=OSBA - - out_format=BINAURAL - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -complexity-osba-in-binaural_room_ir-out: - extends: - - .complexity-template - rules: - - if: $MEASURE_COMPLEXITY_LINUX - when: delayed - start_in: 25 hours - variables: - JOB_ID_INJECT: "" - script: - - in_format=OSBA - - out_format=BINAURAL_ROOM_IR - - ret_val=0 - - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" $GET_WMOPS_ARGS || ret_val=$? - - *complexity-measurements-prepare-artifacts - - *complexity-measurements-report-summary - - exit $ret_val - -# job that sets up gitlab pages website -pages: - stage: deploy - tags: - - ivas-basop-linux - rules: - - if: $UPDATE_PAGES - script: - - !reference [ .job-linux, before_script ] - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - python3 ci/setup_pages.py - - ls - - ls -lh public - artifacts: - paths: - - public - expire_in: 1 day + file: main-basop.yml diff --git a/.gitlab-ci/variables.yml b/.gitlab-ci/variables.yml index 96ef1f5076cfa2fd17dd770b210f1d75d79f323b..ddbfe614afb87f46bd13d477c56f796cd7bf01f6 100644 --- a/.gitlab-ci/variables.yml +++ b/.gitlab-ci/variables.yml @@ -1,7 +1,14 @@ variables: + TESTV_DIR: "/usr/local/testv" + LTV_DIR: "/usr/local/ltv" EVS_BE_TEST_DIR_BASOP: "/usr/local/be_2_evs_basop" + # TODO: cleanup and use global var defined in ivas-codec-ci FLOAT_REF_BRANCH: "ivas-float-update" + FLOAT_REF_BRANCH_MERGE_SOURCE: "" + BUILD_OUTPUT: "build_output.txt" SCRIPTS_DIR: "/usr/local/scripts" + EXIT_CODE_NON_BE: 123 + EXIT_CODE_FAIL: 1 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" @@ -10,20 +17,43 @@ variables: 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" + DUT_ENCODER_PATH: "./IVAS_cod_dut" + DUT_DECODER_PATH: "./IVAS_dec_dut" + DUT_RENDERER_PATH: "./IVAS_rend_dut" + DUT_POST_RENDERER_PATH: "./ISAR_post_rend_dut" REF_ENCODER_PATH: "./IVAS_cod_ref" REF_DECODER_PATH: "./IVAS_dec_ref" + REF_RENDERER_PATH: "./IVAS_rend_ref" + REF_POST_RENDERER_PATH: "./ISAR_post_rend_ref" MERGE_TARGET_ENCODER_PATH: "./IVAS_cod_merge_target" MERGE_TARGET_DECODER_PATH: "./IVAS_dec_merge_target" + MERGE_TARGET_RENDERER_PATH: "./IVAS_rend_merge_target" + MERGE_TARGET_POST_RENDERER_PATH: "./ISAR_post_rend_merge_target" + MERGE_SOURCE_FLOAT_REF_ENCODER_PATH: "./IVAS_cod_merge_source_float_ref" + MERGE_SOURCE_FLOAT_REF_DECODER_PATH: "./IVAS_dec_merge_source_float_ref" + MERGE_SOURCE_FLOAT_REF_RENDERER_PATH: "./IVAS_rend_merge_source_float_ref" + MERGE_SOURCE_FLOAT_REF_POST_RENDERER_PATH: "./ISAR_post_rend_merge_source_float_ref" # These path variables are used for building the binaries # They should never be overwritten! + DUT_ENCODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_cod_dut" + DUT_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_dut" + DUT_RENDERER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_rend_dut" + DUT_POST_RENDERER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./ISAR_post_rend_dut" REF_ENCODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_cod_ref" REF_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_ref" + REF_RENDERER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_rend_ref" + REF_POST_RENDERER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./ISAR_post_rend_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" + MERGE_TARGET_RENDERER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_rend_merge_target" + MERGE_TARGET_POST_RENDERER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./ISAR_post_rend_merge_target" + MERGE_SOURCE_FLOAT_REF_ENCODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_cod_merge_source_float_ref" + MERGE_SOURCE_FLOAT_REF_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_merge_source_float_ref" + MERGE_SOURCE_FLOAT_REF_RENDERER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_rend_merge_source_float_ref" + MERGE_SOURCE_FLOAT_REF_POST_RENDERER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./ISAR_post_rend_merge_source_float_ref" LEVEL_SCALING: "1.0" - BASOP_CI_BRANCH_PC_REPO: "basop-ci-branch" + IVAS_PIPELINE_NAME: '' + BASOP_CI_BRANCH_PC_REPO: "basop-ci-branch-pc" PRM_FILES: "scripts/config/self_test.prm scripts/config/self_test_ltv.prm" TESTCASE_TIMEOUT_STV: 900 TESTCASE_TIMEOUT_LTV: 2400 @@ -32,7 +62,9 @@ variables: CI_REGRESSION_THRESH_MAX_ABS_DIFF: "50" CI_REGRESSION_THRESH_SSNR: "-1" CI_REGRESSION_THRESH_ODG: "-0.05" + GIT_CLEAN_FLAGS: -ffdxq INSTR_DIR: "scripts/c-code_instrument" + TESTS_DIR_CODEC_BE_ON_MR: "tests/codec_be_on_mr_nonselection" BUILD_WITH_DEBUG_MODE_INFO: "" ENCODER_TEST: "" DELTA_ODG: "" @@ -46,6 +78,7 @@ variables: 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" + MERGE_SOURCE_FLOAT_REF_COMMIT_FILE: "merge-source-float-ref-git-sha.txt" RUNNER_TAG: "ivas-basop-linux" LOGS_BACKUP_SOURCE_DIR: "" LOGS_BACKUP_TARGET_DIR: "" diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..ecd8f11c5a38519a46fbc71a558563dac45b782f --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,221 @@ +# CMake file for IVAS +# +# Usage with Unix Makefiles (Linux, OS/X): +# # create build directory +# mkdir build ; cd build +# # call CMake to generate build system, e.g. one of the following: +# cmake -D CMAKE_BUILD_TYPE=Debug ../ +# cmake -D CMAKE_BUILD_TYPE=Release ../ +# cmake -D CMAKE_BUILD_TYPE=Debug -D TARGET_PLATFORM=x86_64 ../ +# # build project +# make -j8 +# +# Usage with Visual Studio +# 1) download CMake from https://cmake.org/download/, don't use the Cygwin version! +# 2.1) build project using IDE +# In CMake GUI select the source dir (root of stereo-evs) and a new binary directory +# and press "Configure" and "Generate". Then open the Visual Studio solution file generated +# in the build directory. +# 2.2) build project using command line +# # create build directory +# mkdir build ; cd build +# # call CMake to generate build system, e.g. one of the following: +# cmake ../ +# cmake -G "Visual Studio 12 2013" ../ +# cmake -G "Visual Studio 12 2013 Win64" ../ +# # open the Visual Studio solution file generated in the build directory +# # or build on command line, e.g.: +# cmake --build . --config Debug +# cmake --build . --config Release + + +cmake_minimum_required(VERSION 3.10) + +set(CMAKE_C_STANDARD 99) + +# configuration options for UNIX +if(UNIX) + set(TARGET_PLATFORM "" CACHE STRING "i686 / x86_64") + set(CLANG "" CACHE STRING "1=msan / 2=asan / 3=usan") + set(GCOV OFF CACHE BOOL "enable GCOV") + set(STRIP OFF CACHE BOOL "enable STRIP") + + if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "") + endif() + # TARGET_PLATFORM + if("${TARGET_PLATFORM}" MATCHES "i386" OR + "${TARGET_PLATFORM}" MATCHES "i586" OR + "${TARGET_PLATFORM}" MATCHES "i686" + ) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32") + elseif("${TARGET_PLATFORM}" MATCHES "x86_64") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m64") + endif() + # C compiler flags + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffp-contract=off") # disable floating point operation contraction + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic -Wcast-qual -Wall -W -Wextra -Wno-long-long") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-parameter -Wno-implicit-fallthrough") + # to be uncommented in CI + # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") + + # CLANG + if(CLANG) + find_program(clangBin NAMES /home/amm-archiv/soft/Linux/clang/current/bin/clang clang REQUIRED) + set(CMAKE_C_COMPILER "${clangBin}" CACHE STRING "") + if("${CLANG}" MATCHES "1" OR "${CLANG}" MATCHES "msan") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=memory") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=memory") + elseif("${CLANG}" MATCHES "2" OR "${CLANG}" MATCHES "asan") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") + elseif("${CLANG}" MATCHES "3" OR "${CLANG}" MATCHES "usan") + # NOTE: keep in sync with list in Makefile + set(USAN_CHECKS_ENABLE + undefined # Default checks + # Extra checks + float-divide-by-zero + implicit-conversion + local-bounds + ) + list(JOIN USAN_CHECKS_ENABLE "," USAN_CHECKS_ENABLE) + + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=${USAN_CHECKS_ENABLE} -fsanitize-recover=${USAN_CHECKS_ENABLE}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=${USAN_CHECKS_ENABLE} -fsanitize-recover=${USAN_CHECKS_ENABLE}") + else() + message(FATAL_ERROR "Unknown CLANG setting: ${CLANG}") + endif() + endif() + # GCOV + if(GCOV) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage -fprofile-update=atomic") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage -fprofile-update=atomic") + endif() + # STRIP + if(STRIP) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdata-sections -ffunction-sections") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-gc-sections -static") + endif() + + message("CMAKE_C_FLAGS: ${CMAKE_C_FLAGS}") + message("CMAKE_EXE_LINKER_FLAGS: ${CMAKE_EXE_LINKER_FLAGS}") + # write settings in CMake cache + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}" CACHE STRING "") + set(CMAKE_C_FLAGS_DEBUG "-O0 -g3" CACHE STRING "") + set(CMAKE_C_FLAGS_RELEASE "-O2 -DRELEASE" CACHE STRING "") # TODO should contain -DNDEBUG to disable assert() +elseif(WIN32) + # MSVC compiler flags + add_definitions( + -D_CRT_SECURE_NO_WARNINGS + /MP + ) +endif() + +# configuration options for all platforms +set(WMOPS OFF CACHE BOOL "enable WMOPS") +if(WMOPS) + add_definitions("-DWMOPS=1") +endif() + +project(stereo-evs LANGUAGES C) +set_property(GLOBAL PROPERTY USE_FOLDERS ON) # make Visual Studio projects look nicer +include(CTest) + +file(GLOB libComSrcs "lib_com/*.c") +file(GLOB libComHeaders "lib_com/*.h") +add_library(lib_com ${libComSrcs} ${libComHeaders}) +if(UNIX) + target_link_libraries(lib_com PRIVATE m) +endif() +target_include_directories(lib_com PUBLIC lib_com PRIVATE lib_enc lib_dec lib_rend lib_debug lib_isar) +target_include_directories(lib_com PRIVATE lib_lc3plus) + +file(GLOB libDebugSrcs "lib_debug/*.c") +file(GLOB libDebugHeaders "lib_debug/*.h") +add_library(lib_debug ${libDebugSrcs} ${libDebugHeaders}) +target_link_libraries(lib_debug lib_com) +target_include_directories(lib_debug PUBLIC lib_debug PRIVATE lib_enc lib_dec lib_rend lib_isar) + +file(GLOB libEncSrcs "lib_enc/*.c") +file(GLOB libEncHeaders "lib_enc/*.h") +add_library(lib_enc ${libEncSrcs} ${libEncHeaders}) +target_link_libraries(lib_enc lib_com lib_debug) +target_include_directories(lib_enc PUBLIC lib_enc PRIVATE lib_dec lib_rend lib_isar) +target_include_directories(lib_enc PRIVATE lib_lc3plus) + +file(GLOB libLC3plusSrcs "lib_lc3plus/*.c") +file(GLOB libLC3plusHeaders "lib_lc3plus/*.h") +add_library(lib_lc3plus ${libLC3plusSrcs} ${libLC3plusHeaders}) +target_include_directories(lib_lc3plus PUBLIC lib_lc3plus PRIVATE lib_com lib_debug) + +file(GLOB libRendSrcs "lib_rend/*.c") +file(GLOB libRendHeaders "lib_rend/*.h") + +add_library(lib_rend ${libRendSrcs} ${libRendHeaders}) +target_link_libraries(lib_rend lib_dec lib_com lib_debug) # Todo refactor: This dependency on lib_dec should be removed. +target_link_libraries(lib_rend lib_lc3plus lib_isar) +target_include_directories(lib_rend PUBLIC lib_rend PRIVATE lib_enc lib_isar) + + +file(GLOB libDecSrcs "lib_dec/*.c") +file(GLOB libDecHeaders "lib_dec/*.h") +add_library(lib_dec ${libDecSrcs} ${libDecHeaders}) +target_link_libraries(lib_dec lib_com lib_rend lib_debug lib_isar) +target_include_directories(lib_dec PUBLIC lib_dec lib_rend PRIVATE lib_enc lib_isar) + +file(GLOB libUtilSrcs "lib_util/*.c") +file(GLOB libUtilHeaders "lib_util/*.h") +add_library(lib_util ${libUtilSrcs} ${libUtilHeaders}) +target_include_directories(lib_util PUBLIC lib_util PRIVATE lib_com lib_enc lib_dec lib_rend lib_debug) +target_include_directories(lib_util PRIVATE lib_lc3plus lib_isar) + +if(NOT WMOPS) + add_executable(ivas_lc3plus_unit_test ${CMAKE_SOURCE_DIR}/scripts/split_rendering/lc3plus_basop/ivas_lc3plus_unit_test.c) + target_link_libraries(ivas_lc3plus_unit_test lib_rend lib_dec lib_util lib_com lib_debug lib_isar) +endif() + +file(GLOB libISARSrcs "lib_isar/*.c") +file(GLOB libISARHeaders "lib_isar/*.h") + +add_library(lib_isar ${libISARSrcs} ${libISARHeaders}) +target_link_libraries(lib_isar lib_com lib_debug lib_lc3plus) # Todo refactor: This dependency on lib_dec should be removed. +target_include_directories(lib_isar PUBLIC lib_isar PRIVATE lib_enc lib_dec lib_rend) + + +add_executable(IVAS_cod apps/encoder.c) +target_link_libraries(IVAS_cod lib_enc lib_util) +if(WIN32) + target_link_libraries(IVAS_cod Ws2_32) +endif() + +add_executable(IVAS_dec apps/decoder.c) +target_link_libraries(IVAS_dec lib_dec lib_util) +if(WIN32) + target_link_libraries(IVAS_dec Ws2_32) +endif() + +add_executable(IVAS_rend apps/renderer.c) +target_link_libraries(IVAS_rend lib_rend lib_util lib_isar) +target_include_directories(IVAS_rend PRIVATE lib_enc) + +add_executable(ISAR_post_rend apps/isar_post_rend.c) +target_link_libraries(ISAR_post_rend lib_isar lib_util) +target_include_directories(ISAR_post_rend PRIVATE lib_isar) + +if(COPY_EXECUTABLES_FROM_BUILD_DIR) + # Optionally copy executables to the same place where Make puts them (useful for tests that expect executables in specific places) + add_custom_command(TARGET IVAS_cod POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$" "${CMAKE_CURRENT_SOURCE_DIR}/") + add_custom_command(TARGET IVAS_dec POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$" "${CMAKE_CURRENT_SOURCE_DIR}/") + add_custom_command(TARGET IVAS_rend POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$" "${CMAKE_CURRENT_SOURCE_DIR}/") + add_custom_command(TARGET ISAR_post_rend POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$" "${CMAKE_CURRENT_SOURCE_DIR}/") + if (NOT WMOPS) + add_custom_command(TARGET ivas_lc3plus_unit_test POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$" "${CMAKE_CURRENT_SOURCE_DIR}/scripts/split_rendering/lc3plus_basop") + endif() +endif() + +# Allow creating packages for CMake install +install(TARGETS lib_enc lib_dec lib_rend lib_com lib_util ARCHIVE DESTINATION lib) diff --git a/Makefile b/Makefile index 9d18cbde3d47ff872b918dc70675543fc18cfba9..62306b6749442b18f2a15e583a3702028876336a 100644 --- a/Makefile +++ b/Makefile @@ -7,23 +7,31 @@ SRC_LIBDEBUG = lib_debug SRC_LIBDEC = lib_dec SRC_LIBENC = lib_enc SRC_LIBREND = lib_rend +SRC_LIBISAR = lib_isar +SRC_LC3PLUS = lib_lc3plus lib_lc3plus/fft SRC_LIBUTIL = lib_util SRC_APP = apps BUILD = build OBJDIR = obj -SRC_DIRS = $(sort -u $(SRC_LIBCOM) $(SRC_LIBDEBUG) $(SRC_LIBDEC) $(SRC_LIBENC) $(SRC_LIBREND) $(SRC_LIBUTIL) $(SRC_APP)) +INCLUDE_SPLIT = 1 + +SRC_DIRS = $(sort -u $(SRC_LIBCOM) $(SRC_LIBDEBUG) $(SRC_LIBDEC) $(SRC_LIBENC) $(SRC_LIBREND) $(SRC_LIBISAR) $(SRC_LC3PLUS) $(SRC_LIBUTIL) $(SRC_APP)) # Name of CLI binaries -CLI_APIDEC ?= IVAS_dec -CLI_APIENC ?= IVAS_cod -CLI_APIREND ?= IVAS_rend -LIB_LIBCOM ?= libivascom.a -LIB_LIBDEBUG ?= libivasdebug.a -LIB_LIBDEC ?= libivasdec.a -LIB_LIBENC ?= libivasenc.a -LIB_LIBREND ?= libivasrend.a -LIB_LIBUTIL ?= libivasutil.a +CLI_APIDEC ?= IVAS_dec +CLI_APIENC ?= IVAS_cod +CLI_APIREND ?= IVAS_rend +CLI_APIPOSTREND ?= ISAR_post_rend +LIB_LIBCOM ?= libivascom.a +LIB_LIBDEBUG ?= libivasdebug.a +LIB_LIBDEC ?= libivasdec.a +LIB_LIBENC ?= libivasenc.a +LIB_LIBREND ?= libivasrend.a +LIB_LIBISAR ?= libisar.a +LIB_LC3PLUS ?= liblc3plus.a +LIB_LIBUTIL ?= libivasutil.a + # Default tool settings CC ?= gcc @@ -129,8 +137,14 @@ CFLAGS += $(foreach DIR,$(SRC_DIRS),-I$(DIR)) # Source file search paths VPATH = $(SRC_DIRS) -# Filter out files that are not part of the build -EXCLUDED_FILES = +# Split rendering files +SRCS_SPLIT_REND = ivas_CQMFDecoder.c ivas_CQMFEncoder.c ivas_PerceptualModel.c ivas_PredDecoder.c \ + ivas_PredEncoder.c ivas_RMSEnvGrouping.c ivas_MSPred.c ivas_NoiseGen.c \ + ivas_splitRend_lcld_dec.c ivas_splitRend_lcld_enc.c \ + ivas_splitRendererPLC.c ivas_splitRendererPost.c ivas_splitRendererPre.c \ + ivas_splitRenderer_utils.c split_rend_bfi_file_reader.c split_render_file_read_write.c \ + ivas_lcld_tables.c + ############################################################################### @@ -140,27 +154,36 @@ SRCS_LIBDEC = $(foreach DIR,$(SRC_LIBDEC),$(patsubst $(DIR)/%,%,$(wildcard $(D SRCS_LIBENC = $(foreach DIR,$(SRC_LIBENC),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) SRCS_LIBREND = $(foreach DIR,$(SRC_LIBREND),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) SRCS_LIBUTIL = $(foreach DIR,$(SRC_LIBUTIL),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) - -SRCS_LIBENC := $(filter-out $(EXCLUDED_FILES),$(SRCS_LIBENC)) +SRCS_LIBISAR = $(foreach DIR,$(SRC_LIBISAR),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) +ifeq "$(INCLUDE_SPLIT)" "1" +SRCS_LC3PLUS = $(foreach DIR,$(SRC_LC3PLUS),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) +else +# SRCS_LIBREND := $(filter-out $(SRCS_SPLIT_REND),$(SRCS_LIBREND)) +# SRCS_LIBUTIL := $(filter-out $(SRCS_SPLIT_REND),$(SRCS_LIBUTIL)) +endif OBJS_LIBCOM = $(addprefix $(OBJDIR)/,$(SRCS_LIBCOM:.c=.o)) OBJS_LIBDEBUG = $(addprefix $(OBJDIR)/,$(SRCS_LIBDEBUG:.c=.o)) OBJS_LIBDEC = $(addprefix $(OBJDIR)/,$(SRCS_LIBDEC:.c=.o)) OBJS_LIBENC = $(addprefix $(OBJDIR)/,$(SRCS_LIBENC:.c=.o)) OBJS_LIBREND = $(addprefix $(OBJDIR)/,$(SRCS_LIBREND:.c=.o)) +OBJS_LIBISAR = $(addprefix $(OBJDIR)/,$(SRCS_LIBISAR:.c=.o)) +OBJS_LC3PLUS = $(addprefix $(OBJDIR)/,$(SRCS_LC3PLUS:.c=.o)) OBJS_LIBUTIL = $(addprefix $(OBJDIR)/,$(SRCS_LIBUTIL:.c=.o)) OBJS_CLI_APIDEC = $(OBJDIR)/decoder.o OBJS_CLI_APIENC = $(OBJDIR)/encoder.o OBJS_CLI_APPREND = $(OBJDIR)/renderer.o +OBJS_CLI_APPPOSTREND = $(OBJDIR)/isar_post_rend.o DEPS = $(addprefix $(OBJDIR)/,$(SRCS_LIBCOM:.c=.P) $(SRCS_LIBDEBUG:.c=.P) $(SRCS_LIBDEC:.c=.P) \ - $(SRCS_LIBENC:.c=.P) $(SRCS_LIBUTIL:.c=.P) $(SRCS_LIBREND:.c=.P)) + $(SRCS_LIBENC:.c=.P) $(SRCS_LIBUTIL:.c=.P) $(SRCS_LIBREND:.c=.P) $(SRCS_LIBISAR:.c=.P) \ + $(SRCS_LC3PLUS:.c=.P)) ############################################################################### .PHONY: all clean -all: $(CLI_APIENC) $(CLI_APIDEC) $(CLI_APIREND) +all: $(CLI_APIENC) $(CLI_APIDEC) $(CLI_APIREND) $(CLI_APIPOSTREND) $(OBJDIR): $(QUIET)mkdir -p $(OBJDIR) @@ -168,37 +191,60 @@ $(OBJDIR): $(LIB_LIBCOM): $(OBJS_LIBCOM) $(QUIET_AR)$(AR) rcs $@ $^ -$(LIB_LIBDEC): $(OBJS_LIBDEC) $(OBJS_LIBREND) +$(LIB_LIBDEC): $(OBJS_LIBDEC) $(OBJS_LIBREND) $(OBJS_LIBISAR) $(QUIET_AR)$(AR) rcs $@ $^ $(LIB_LIBDEBUG): $(OBJS_LIBDEBUG) $(QUIET_AR)$(AR) rcs $@ $^ +$(LIB_LIBISAR): $(OBJS_LIBISAR) + $(QUIET_AR)$(AR) rcs $@ $^ + $(LIB_LIBENC): $(OBJS_LIBENC) $(QUIET_AR)$(AR) rcs $@ $^ -$(LIB_LIBREND): $(OBJS_LIBREND) +$(LIB_LIBREND): $(OBJS_LIBREND) $(OBJS_LIBISAR) + $(QUIET_AR)$(AR) rcs $@ $^ + +$(LIB_LC3PLUS): $(OBJS_LC3PLUS) +ifeq "$(INCLUDE_SPLIT)" "1" $(QUIET_AR)$(AR) rcs $@ $^ +else + +endif # Dependency on OBJS_LIBCOM added temporarily for unit-test to work $(LIB_LIBUTIL): $(OBJS_LIBUTIL) $(OBJS_LIBCOM) $(QUIET_AR)$(AR) rcs $@ $^ -$(CLI_APIENC): $(OBJS_CLI_APIENC) $(LIB_LIBENC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) +$(CLI_APIENC): $(OBJS_CLI_APIENC) $(LIB_LIBENC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LC3PLUS) $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APIENC) -L. -livasenc -livascom -livasutil -livasdebug $(LDLIBS) -o $(CLI_APIENC) -$(CLI_APIDEC): $(OBJS_CLI_APIDEC) $(LIB_LIBDEC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) +$(CLI_APIDEC): $(OBJS_CLI_APIDEC) $(LIB_LIBDEC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LC3PLUS) $(LIB_LIBISAR) +ifeq "$(INCLUDE_SPLIT)" "1" + $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APIDEC) -L. -livasdec -livascom -livasutil -livasdebug -llc3plus $(LDLIBS) -o $(CLI_APIDEC) +else $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APIDEC) -L. -livasdec -livascom -livasutil -livasdebug $(LDLIBS) -o $(CLI_APIDEC) +endif -$(CLI_APIREND): $(OBJS_CLI_APPREND) $(LIB_LIBREND) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LIBDEC) +$(CLI_APIREND): $(OBJS_CLI_APPREND) $(LIB_LIBREND) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LIBDEC) $(LIB_LC3PLUS) $(LIB_LIBISAR) +ifeq "$(INCLUDE_SPLIT)" "1" + $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APPREND) -L. -livasrend -lisar -livasdec -livasutil -livasdebug -livascom -llc3plus $(LDLIBS) -o $(CLI_APIREND) +else $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APPREND) -L. -livasrend -livasdec -livasutil -livasdebug -livascom $(LDLIBS) -o $(CLI_APIREND) +endif + +$(CLI_APIPOSTREND): $(OBJS_CLI_APPPOSTREND) $(LIB_LIBISAR) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LC3PLUS) +ifeq "$(INCLUDE_SPLIT)" "1" + $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APPPOSTREND) -L. -lisar -livasutil -livasdebug -livascom -llc3plus $(LDLIBS) -o $(CLI_APIPOSTREND) +endif -libs: $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBREND) $(LIB_LIBUTIL) +libs: $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBREND) $(LIB_LIBISAR) $(LIB_LC3PLUS) $(LIB_LIBUTIL) clean: $(QUIET)$(RM) $(OBJS_LIBENC) $(OBJS_LIBDEC) $(DEPS) $(QUIET)$(RM) $(DEPS:.P=.d) $(QUIET)test ! -d $(OBJDIR) || rm -rf $(OBJDIR) - $(QUIET)$(RM) $(CLI_APIENC) $(CLI_APIDEC) $(CLI_APIREND) $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBUTIL) $(LIB_LIBREND) + $(QUIET)$(RM) $(CLI_APIENC) $(CLI_APIDEC) $(CLI_APIREND) $(CLI_APIPOSTREND) $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBUTIL) $(LIB_LIBREND) $(LIB_LIBISAR) $(LIB_LC3PLUS) $(OBJDIR)/%.o : %.c | $(OBJDIR) $(QUIET_CC)$(CC) $(CFLAGS) -c -MD -o $@ $< diff --git a/Workspace_msvc/Workspace_msvc.sln b/Workspace_msvc/Workspace_msvc.sln index a0783ddbf435ddeb6f09907e51620302fac68237..ac2e76b52f0224eefb2fb6c56cbd2a41be66812c 100644 --- a/Workspace_msvc/Workspace_msvc.sln +++ b/Workspace_msvc/Workspace_msvc.sln @@ -20,11 +20,17 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "encoder", "encoder.vcxproj" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "renderer", "renderer.vcxproj", "{12B4C8A5-1E06-4E30-B443-D1F916F52B47}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_lc3plus", "lib_lc3plus.vcxproj", "{95030B82-70CD-4C6B-84D4-61096035BEA2}" +EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{51160D4C-55C9-4C16-A792-D94507225746}" ProjectSection(SolutionItems) = preProject ..\.clang-format = ..\.clang-format EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib_isar", "lib_isar.vcxproj", "{869A305E-D99E-4C3A-BDB3-AA57ABCCE619}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "isar_post_rend", "isar_post_rend.vcxproj", "{12374ADC-0E5C-4FDD-B903-71D572413831}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -93,6 +99,18 @@ Global {95030B82-70CD-4C6B-84D4-61096035BEA2}.Release|Win32.ActiveCfg = Release|Win32 {95030B82-70CD-4C6B-84D4-61096035BEA2}.Release|Win32.Build.0 = Release|Win32 {95030B82-70CD-4C6B-84D4-61096035BEA2}.Release|x64.ActiveCfg = Release|Win32 + {869A305E-D99E-4C3A-BDB3-AA57ABCCE619}.Debug|Win32.ActiveCfg = Debug|Win32 + {869A305E-D99E-4C3A-BDB3-AA57ABCCE619}.Debug|Win32.Build.0 = Debug|Win32 + {869A305E-D99E-4C3A-BDB3-AA57ABCCE619}.Debug|x64.ActiveCfg = Debug|Win32 + {869A305E-D99E-4C3A-BDB3-AA57ABCCE619}.Release|Win32.ActiveCfg = Release|Win32 + {869A305E-D99E-4C3A-BDB3-AA57ABCCE619}.Release|Win32.Build.0 = Release|Win32 + {869A305E-D99E-4C3A-BDB3-AA57ABCCE619}.Release|x64.ActiveCfg = Release|Win32 + {12374ADC-0E5C-4FDD-B903-71D572413831}.Debug|Win32.ActiveCfg = Debug|Win32 + {12374ADC-0E5C-4FDD-B903-71D572413831}.Debug|Win32.Build.0 = Debug|Win32 + {12374ADC-0E5C-4FDD-B903-71D572413831}.Debug|x64.ActiveCfg = Debug|Win32 + {12374ADC-0E5C-4FDD-B903-71D572413831}.Release|Win32.ActiveCfg = Release|Win32 + {12374ADC-0E5C-4FDD-B903-71D572413831}.Release|Win32.Build.0 = Release|Win32 + {12374ADC-0E5C-4FDD-B903-71D572413831}.Release|x64.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Workspace_msvc/decoder.vcxproj b/Workspace_msvc/decoder.vcxproj index ca0d96f44247a24937132bda883936e7f5a3dde1..3ab058c291b49c84e5424a0ba5371318187dfd3a 100644 --- a/Workspace_msvc/decoder.vcxproj +++ b/Workspace_msvc/decoder.vcxproj @@ -68,7 +68,7 @@ Disabled - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;..\lib_isar;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) EnableFastChecks @@ -112,7 +112,7 @@ Neither false false - ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;%(AdditionalIncludeDirectories) + ..\lib_dec;..\lib_com;..\lib_util;..\lib_debug;..\lib_isar;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) true @@ -157,6 +157,9 @@ {e822ddaf-0f5f-4cd0-a694-38ae69de74d3} false + + {869a305e-d99e-4c3a-bdb3-aa57abcce619} + {2fa8f384-0775-f3b7-f8c3-85209222fc70} false diff --git a/Workspace_msvc/isar_post_rend.vcxproj b/Workspace_msvc/isar_post_rend.vcxproj new file mode 100644 index 0000000000000000000000000000000000000000..19cb1aff7bc1584679d57f085677019b478a016d --- /dev/null +++ b/Workspace_msvc/isar_post_rend.vcxproj @@ -0,0 +1,179 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + isar_post_rend + {12374ADC-0E5C-4FDD-B903-71D572413831} + isar_post_rend + 10.0.17763.0 + + + + Application + v141 + false + MultiByte + + + Application + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + ..\ + .\Debug_$(ProjectName)\ + false + false + ISAR_post_rend + + + ..\ + .\Release_$(ProjectName)\ + false + false + ISAR_post_rend + + + + $(IntDir)$(ProjectName).tlb + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_util;..\lib_isar;..\lib_lc3plus;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) + + EnableFastChecks + MultiThreadedDebug + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + + $(OutDir)$(TargetName).exe + true + + true + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + + + + + $(IntDir)$(ProjectName).tlb + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_util;..\lib_isar;..\lib_lc3plus;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + Precise + false + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + false + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + $(OutDir)$(TargetName).exe + true + + false + $(IntDir)$(ProjectName).pdb + Console + false + + MachineX86 + libcmtd.lib + + + + + + + + + + {54509728-928B-44D9-A118-A6F92F08B34F} + false + + + {869a305e-d99e-4c3a-bdb3-aa57abcce619} + + + {2FA8F384-0775-F3B7-F8C3-85209222FC70} + false + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj index 91401ee2eee0f92a849121f0e223522948614061..8c91d39725f7c84c7f2efbffe0dc98408424b586 100644 --- a/Workspace_msvc/lib_com.vcxproj +++ b/Workspace_msvc/lib_com.vcxproj @@ -59,8 +59,8 @@ Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + ..\lib_isar;..\lib_lc3plus;..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions); EnableFastChecks MultiThreadedDebug @@ -94,7 +94,7 @@ Neither false false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + ..\lib_isar;..\lib_lc3plus;..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) true @@ -217,6 +217,7 @@ + @@ -224,6 +225,7 @@ + @@ -298,20 +300,30 @@ + + + + + + + + + + @@ -320,6 +332,7 @@ + diff --git a/Workspace_msvc/lib_com.vcxproj.filters b/Workspace_msvc/lib_com.vcxproj.filters index 3b781aa40a612fac63d7840abe2371ba83d72a7b..8860ccd56555b76348f97d185429a3ed4e3f2adf 100644 --- a/Workspace_msvc/lib_com.vcxproj.filters +++ b/Workspace_msvc/lib_com.vcxproj.filters @@ -508,6 +508,12 @@ common_all_c + + common_ivas_c + + + common_ivas_c + @@ -588,6 +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 1ae8c4d9313f4bb22ebde33891db01a72ddcdf78..e5998e672c249fb5f71b255d7a62af567e98fe35 100644 --- a/Workspace_msvc/lib_dec.vcxproj +++ b/Workspace_msvc/lib_dec.vcxproj @@ -68,7 +68,7 @@ Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_isar;..\lib_rend;..\lib_lc3plus;.%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) EnableFastChecks @@ -108,7 +108,7 @@ Neither false false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_isar;..\lib_rend;..\lib_lc3plus;.%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) true diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj index af16efedf05580910fc85d674935bdf647c43421..1237541427184d6fe8470e1a0c0ab6fa04eccf03 100644 --- a/Workspace_msvc/lib_enc.vcxproj +++ b/Workspace_msvc/lib_enc.vcxproj @@ -68,7 +68,7 @@ Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_isar;..\lib_rend;..\lib_lc3plus;.%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) EnableFastChecks @@ -111,7 +111,7 @@ Neither false false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;.%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_isar;..\lib_rend;..\lib_lc3plus;.%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) true diff --git a/Workspace_msvc/lib_isar.vcxproj b/Workspace_msvc/lib_isar.vcxproj new file mode 100644 index 0000000000000000000000000000000000000000..23d80373082b8ba025da607bbc610c069d45ca54 --- /dev/null +++ b/Workspace_msvc/lib_isar.vcxproj @@ -0,0 +1,184 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + lib_isar + {869A305E-D99E-4C3A-BDB3-AA57ABCCE619} + isar + 10.0.17763.0 + + + + StaticLibrary + v141 + false + MultiByte + + + StaticLibrary + v141 + false + MultiByte + + + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27428.2015 + + + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + libisar + + + .\Release_$(ProjectName)\ + .\Release_$(ProjectName)\ + libisar + + + + + + + Disabled + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_isar;..\lib_lc3plus;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions); + + EnableFastChecks + MultiThreadedDebug + + + $(IntDir)$(ProjectName).pdb + Level4 + true + OldStyle + Default + %(DisableSpecificWarnings) + + + _DEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + MaxSpeed + AnySuitable + false + Neither + false + false + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_isar;..\lib_lc3plus;.%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) + true + + Default + MultiThreaded + true + + + $(IntDir)$(ProjectName).pdb + Level4 + true + + Default + %(DisableSpecificWarnings) + + + NDEBUG;%(PreprocessorDefinitions) + 0x0c0c + + + WS2_32.lib; %(AdditionalDependencies) + $(OutDir)$(TargetName).lib + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {39ec200d-7795-4ff8-b214-b24eda5526ae} + false + + + {54509728-928b-44d9-a118-a6f92f08b34f} + false + + + {95030B82-70CD-4C6B-84D4-61096035BEA2} + false + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_lc3plus.vcxproj b/Workspace_msvc/lib_lc3plus.vcxproj new file mode 100644 index 0000000000000000000000000000000000000000..22b5cddd3c55c39f43af6dfa39ec652305880ff2 --- /dev/null +++ b/Workspace_msvc/lib_lc3plus.vcxproj @@ -0,0 +1,195 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {95030B82-70CD-4C6B-84D4-61096035BEA2} + Win32Proj + LC3_FL + 10.0.17763.0 + + + + StaticLibrary + true + v141 + Unicode + + + StaticLibrary + false + v141 + true + Unicode + + + + + + + + + + + + + + + liblc3plus + .\Debug_$(ProjectName)\ + .\Debug_$(ProjectName)\ + + + LC3plus + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\Obj\ + + + + + + Level3 + ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) + Disabled + MultiThreadedDebug + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4305;4244;4996 + OldStyle + false + false + + + Console + true + + + + + Level3 + + + ..\lib_com;..\lib_debug;%(AdditionalIncludeDirectories) + MaxSpeed + MultiThreaded + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;4305;4996 + false + + + Console + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj index 0a00f9331a9fe92ff4a71bfea4a4798059aa2b9b..f93b5f26d1673c005e7dca6083f5e794f4612ccf 100644 --- a/Workspace_msvc/lib_rend.vcxproj +++ b/Workspace_msvc/lib_rend.vcxproj @@ -68,7 +68,7 @@ Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_isar;..\lib_rend;..\lib_lc3plus;.%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) EnableFastChecks @@ -108,7 +108,7 @@ Neither false false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;.%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_isar;..\lib_rend;..\lib_lc3plus;.%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) true @@ -147,7 +147,6 @@ - @@ -195,6 +194,10 @@ {54509728-928b-44d9-a118-a6f92f08b34f} false + + {95030B82-70CD-4C6B-84D4-61096035BEA2} + false + @@ -204,4 +207,4 @@ - \ No newline at end of file + diff --git a/Workspace_msvc/lib_util.vcxproj b/Workspace_msvc/lib_util.vcxproj index 86730b859969d9aae777bb89e42da970c1ce1f02..ceb342b2157dff283b4c00bde8d5070b8ee0a340 100644 --- a/Workspace_msvc/lib_util.vcxproj +++ b/Workspace_msvc/lib_util.vcxproj @@ -55,7 +55,7 @@ Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + ..\lib_isar;..\lib_lc3plus;..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) false @@ -78,7 +78,7 @@ AnySuitable false false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) + ..\lib_isar;..\lib_lc3plus;..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;.%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) true @@ -120,6 +120,8 @@ + + @@ -145,6 +147,8 @@ + + diff --git a/Workspace_msvc/renderer.vcxproj b/Workspace_msvc/renderer.vcxproj index 70a130e3141e9e71ae9166e941d99f839a9bc7dd..1bc5b5568ccdf19549678c5ebd9f777af41b8fa0 100644 --- a/Workspace_msvc/renderer.vcxproj +++ b/Workspace_msvc/renderer.vcxproj @@ -65,7 +65,7 @@ Disabled - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_util;..\lib_isar;..\lib_rend;..\lib_lc3plus;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) EnableFastChecks @@ -109,7 +109,7 @@ Neither false false - ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;.%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_util;..\lib_isar;..\lib_rend;..\lib_lc3plus;.%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) true @@ -156,6 +156,9 @@ {E822DDAF-0F5F-4CD0-A694-38AE69DE74D3} false + + {869a305e-d99e-4c3a-bdb3-aa57abcce619} + {2FA8F384-0775-F3B7-F8C3-85209222FC70} false diff --git a/apps/decoder.c b/apps/decoder.c index 2cc639e6aaf7bac9e7e60af9a00cbdfa893c195e..0da70053d045c74ebd9a7a9f694adf8a5c7ac360 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -43,6 +43,7 @@ #include "masa_file_writer.h" #include "render_config_reader.h" #include "rotation_file_reader.h" +#include "split_render_file_read_write.h" #include "vector3_pair_file_reader.h" #include "wmc_auto.h" #include "options.h" @@ -114,6 +115,7 @@ typedef struct Word16 non_diegetic_pan_gain_fx; /* Q15 */ bool renderConfigEnabled; char *renderConfigFilename; + char *outputMdFilename; IVAS_DEC_COMPLEXITY_LEVEL complexityLevel; bool tsmEnabled; IVAS_RENDER_FRAMESIZE renderFramesize; @@ -130,7 +132,7 @@ typedef struct static bool parseCmdlIVAS_dec( int16_t argc, char **argv, DecArguments *arg ); static void usage_dec( void ); -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 ); +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 ); static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, IVAS_DEC_HANDLE hIvasDec ); @@ -147,6 +149,8 @@ int main( bool mainFailed = true; /* Assume main failed until cleanup is reached without errors */ DecArguments arg; ivas_error error = IVAS_ERR_UNKNOWN; + ISAR_SPLIT_REND_BITS_DATA splitRendBits; + uint8_t splitRendBitsBuf[ISAR_MAX_SPLIT_REND_BITS_BUFFER_SIZE_IN_BYTES]; /* Any handles that require cleanup must be declared here and initialized to NULL */ IVAS_DEC_HANDLE hIvasDec = NULL; @@ -160,12 +164,17 @@ 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; + IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics = NULL; #ifdef WMOPS reset_wmops(); reset_mem( USE_BYTES ); #endif + splitRendBits.bits_buf = splitRendBitsBuf; + /*------------------------------------------------------------------------------------------* * Parse command-line arguments *------------------------------------------------------------------------------------------*/ @@ -212,6 +221,16 @@ int main( } } + if ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) + { + fprintf( stdout, "Output metadata file: %s\n", arg.outputWavFilename ); + } + else if ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + fprintf( stdout, "Output synthesis file: %s\n", arg.outputWavFilename ); + fprintf( stdout, "Output metadata file: %s\n", arg.outputMdFilename ); + } + else { fprintf( stdout, "Output synthesis file: %s\n", arg.outputWavFilename ); } @@ -245,7 +264,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 ) + 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; @@ -345,7 +364,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 ) + 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; @@ -385,6 +405,23 @@ int main( * Configure Split rendering *------------------------------------------------------------------------------------------*/ + asked_frame_size = arg.renderFramesize; + if ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + if ( ( error = IVAS_DEC_EnableSplitRendering( hIvasDec ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + + if ( ( error = IVAS_DEC_GetRenderFramesize( hIvasDec, &arg.renderFramesize ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + + arg.enableHeadRotation = true; + } /*------------------------------------------------------------------------------------------* * Configure VoIP mode @@ -410,9 +447,11 @@ int main( IVAS_RENDER_CONFIG_DATA renderConfig; /* 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 ) + 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, "\nExternal Renderer Config is supported only for binaural output configurations. Exiting. \n\n" ); + 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; } @@ -422,7 +461,6 @@ int main( goto cleanup; } - if ( RenderConfigReader_read( renderConfigReader, arg.renderConfigFilename, &renderConfig ) != IVAS_ERR_OK ) { fprintf( stderr, "Failed to read renderer configuration from file %s\n\n", arg.renderConfigFilename ); @@ -441,6 +479,32 @@ int main( renderConfig.directivity_fx[i * 3 + 2] = (Word16) ( renderConfig.directivity[i * 3 + 2] * ( ( 1u << 15 ) - 1 ) ); } + if ( ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || + arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + if ( asked_frame_size != IVAS_RENDER_FRAMESIZE_20MS && + ( renderConfig.split_rend_config.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE || + renderConfig.split_rend_config.dof == 0 ) ) + { + arg.renderFramesize = asked_frame_size; + } + else + { + arg.renderFramesize = IVAS_RENDER_FRAMESIZE_20MS; + } + + if ( ( error = IVAS_DEC_SetRenderFramesize( hIvasDec, arg.renderFramesize ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_PrintConfig failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + + if ( arg.renderFramesize != asked_frame_size ) + { + fprintf( stderr, "\nChanged render framesize, only 20ms are allowed for non-0dof split rendering!\n" ); + } + } + if ( arg.outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { if ( ( error = RenderConfigReader_getAcousticEnvironment( renderConfigReader, arg.acousticEnvironmentId, &renderConfig.roomAcoustics ) ) == IVAS_ERR_OK ) @@ -458,6 +522,9 @@ int main( } renderConfig.roomAcoustics.override = true; } + /* 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; if ( ( error = IVAS_DEC_FeedRenderConfig( hIvasDec, renderConfig ) ) != IVAS_ERR_OK ) { @@ -498,58 +565,100 @@ 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 ) + { + fprintf( stderr, "\nError in loading HRTF binary file %s \n\n", arg.hrtfFileName ); + goto cleanup; + } + else + { + destroy_td_hrtf( hHrtfTD ); + } } - IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL; 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; + 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 ); + } } - 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 ); + } + } + 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 ); + } + } } /*------------------------------------------------------------------------------------------* @@ -568,13 +677,14 @@ int main( /*-----------------------------------------------------------------* * Decoding *-----------------------------------------------------------------*/ + if ( arg.voipMode ) { error = decodeVoIP( arg, hBsReader, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, hIvasDec ); } else { - error = decodeG192( arg, hBsReader, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, hIvasDec, pcmBuf ); + error = decodeG192( arg, hBsReader, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, &splitRendBits, hIvasDec, pcmBuf ); } if ( error == IVAS_ERR_OK || error == IVAS_ERR_END_OF_FILE ) @@ -607,12 +717,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 ); @@ -708,6 +822,14 @@ static IVAS_AUDIO_CONFIG cmdline2config( { output_config = IVAS_AUDIO_CONFIG_BINAURAL; } + else if ( strcmp( argv_to_upper, "BINAURAL_SPLIT_CODED" ) == 0 ) + { + output_config = IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED; + } + else if ( strcmp( argv_to_upper, "BINAURAL_SPLIT_PCM" ) == 0 ) + { + output_config = IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM; + } else if ( strcmp( argv_to_upper, "BINAURAL_ROOM_IR" ) == 0 ) { output_config = IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR; @@ -775,6 +897,7 @@ static bool parseCmdlIVAS_dec( arg->renderConfigFilename = NULL; arg->Opt_dpid_on = 0; + arg->outputMdFilename = NULL; arg->inputFormat = IVAS_DEC_INPUT_FORMAT_G192; arg->Opt_non_diegetic_pan = 0; @@ -1022,6 +1145,17 @@ static bool parseCmdlIVAS_dec( } i += 2; } + else if ( strcmp( argv_to_upper, "-OM" ) == 0 ) + { + arg->outputMdFilename = argv[i + 1]; + if ( arg->outputMdFilename[0] == '\0' ) + { + fprintf( stderr, "Error: output metadata file path not specified\n\n" ); + usage_dec(); + return false; + } + i += 2; + } else if ( strcmp( argv_to_upper, "-NON_DIEGETIC_PAN" ) == 0 ) { i++; @@ -1157,7 +1291,23 @@ static bool parseCmdlIVAS_dec( * Mandatory input arguments *-----------------------------------------------------------------*/ - if ( i < argc - 3 ) + if ( i < argc - 4 ) + { + for ( i = 1; i < argc; i++ ) + { + if ( argv[i][0] == '-' ) + { + fprintf( stderr, "Error: Wrong order of command-line arguments (optional arguments are first)\n\n" ); + usage_dec(); + return false; + } + } + + fprintf( stderr, "Error: Too many mandatory command-line arguments\n\n" ); + usage_dec(); + return false; + } + else if ( i < argc - 3 ) { arg->outputConfig = cmdline2config( argv[i] ); if ( arg->outputConfig == IVAS_AUDIO_CONFIG_LS_CUSTOM ) @@ -1172,6 +1322,12 @@ static bool parseCmdlIVAS_dec( usage_dec(); return false; } + 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; + } } else { @@ -1249,7 +1405,7 @@ static void usage_dec( void ) fprintf( stdout, "Mandatory parameters:\n" ); fprintf( stdout, "---------------------\n" ); 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" ); + fprintf( stdout, " HOA2, HOA3, BINAURAL, BINAURAL_ROOM_IR, BINAURAL_ROOM_REVERB, BINAURAL_SPLIT_CODED, BINAURAL_SPLIT_PCM, EXT\n" ); 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" ); @@ -1289,6 +1445,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" ); + fprintf( stdout, "-om File : Metadata output File for BINAURAL_SPLIT_PCM OutputConf (only for Fs = 48 kHz)\n" ); 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" ); @@ -1318,7 +1475,8 @@ static ivas_error initOnFirstGoodFrame( IVAS_DEC_HANDLE hIvasDec, /* i/o: */ const DecArguments arg, /* i : */ const int16_t numInitialBadFrames, /* i : */ - const uint16_t numOutSamples, /* 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 : */ @@ -1327,8 +1485,8 @@ static ivas_error initOnFirstGoodFrame( MasaFileWriter **ppMasaWriter, /* o : */ IsmFileWriter *ismWriters[IVAS_MAX_NUM_OBJECTS], /* o : */ int16_t *pNumOutChannels, /* o : */ - uint16_t *pNumObj /* o : */ -) + uint16_t *pNumObj, /* o : */ + SplitFileReadWrite **splitRendWriter ) { ivas_error error = IVAS_ERR_UNKNOWN; @@ -1339,6 +1497,10 @@ static ivas_error initOnFirstGoodFrame( return error; } + if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) ) + { + pFullDelayNumSamples[0] = 0; + } if ( !arg.delayCompensationEnabled ) { @@ -1360,11 +1522,84 @@ static ivas_error initOnFirstGoodFrame( return error; } - /* 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 ) + if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) ) { - fprintf( stderr, "\nUnable to open output file %s\n", arg.outputWavFilename ); - return error; + /* Open split rendering metadata writer */ + int16_t delayNumSamples_temp[3]; + int32_t delayTimeScale_temp; + ISAR_SPLIT_REND_CODEC splitRendCodec; + int16_t splitRendCodecFrameSizeMs; + ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection; + int16_t splitRendIsarFrameSizeMs; + int16_t lc3plusHighRes; + + if ( ( error = IVAS_DEC_GetDelay( hIvasDec, delayNumSamples_temp, &delayTimeScale_temp ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nUnable to get delay of decoder: %s\n", ivas_error_to_string( error ) ); + return error; + } + + if ( ( error = IVAS_DEC_GetSplitRendBitstreamHeader( hIvasDec, + &splitRendCodec, + &poseCorrection, + &splitRendIsarFrameSizeMs, + &splitRendCodecFrameSizeMs, + &lc3plusHighRes ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nUnable to get split renderer bitstream header: %s\n", ivas_error_to_string( error ) ); + return error; + } + + if ( IVAS_DEC_is_split_rendering_coded_out( hIvasDec ) ) + { + if ( ( error = split_rend_writer_open( splitRendWriter, + arg.outputWavFilename, + delayNumSamples_temp[0], + delayTimeScale_temp, + splitRendCodec, + poseCorrection, + splitRendCodecFrameSizeMs, + splitRendIsarFrameSizeMs, + arg.output_Fs, + lc3plusHighRes ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nUnable to open output split rendering metadata file %s\n", arg.outputWavFilename ); + return error; + } + } + else + { + if ( arg.outputMdFilename == NULL ) + { + fprintf( stderr, "\nOutput split rendering metadata file not specified\n" ); + return IVAS_ERR_INVALID_SPLIT_REND_CONFIG; + } + + if ( ( error = split_rend_writer_open( splitRendWriter, + arg.outputMdFilename, + delayNumSamples_temp[0], + delayTimeScale_temp, + splitRendCodec, + poseCorrection, + splitRendCodecFrameSizeMs, + splitRendIsarFrameSizeMs, + arg.output_Fs, + lc3plusHighRes ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nUnable to open output split rendering metadata file %s\n", arg.outputWavFilename ); + return error; + } + } + } + + if ( IVAS_DEC_is_split_rendering_coded_out( hIvasDec ) == 0 ) + { + /* 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; + } } int16_t *zeroBuf = malloc( pcmFrameSize * sizeof( int16_t ) ); @@ -1372,19 +1607,40 @@ static ivas_error initOnFirstGoodFrame( for ( int16_t i = 0; i < numInitialBadFrames; ++i ) { - - if ( *pRemainingDelayNumSamples < numOutSamples ) + if ( *splitRendWriter != NULL ) { - if ( ( error = AudioFileWriter_write( *ppAfWriter, zeroBuf, numOutSamples * *pNumOutChannels - ( *pRemainingDelayNumSamples * *pNumOutChannels ) ) ) != IVAS_ERR_OK ) + ISAR_SPLIT_REND_BITS_DATA splitRendBitsZero; + splitRendBitsZero.bits_buf = NULL; + splitRendBitsZero.bits_read = 0; + splitRendBitsZero.bits_written = 0; + splitRendBitsZero.buf_len = 0; + splitRendBitsZero.codec = ISAR_SPLIT_REND_CODEC_DEFAULT; + splitRendBitsZero.pose_correction = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE; + splitRendBitsZero.codec_frame_size_ms = 0; + splitRendBitsZero.isar_frame_size_ms = 20; + + if ( split_rend_write_bitstream_to_file( *splitRendWriter, splitRendBitsZero.bits_buf, &splitRendBitsZero.bits_read, &splitRendBitsZero.bits_written ) != IVAS_ERR_OK ) { - fprintf( stderr, "\nOutput audio file writer error\n" ); + fprintf( stderr, "\nUnable to write to bitstream file!\n" ); return error; } - *pRemainingDelayNumSamples = 0; } else { - *pRemainingDelayNumSamples -= numOutSamples; + + if ( *pRemainingDelayNumSamples < *numOutSamples ) + { + if ( ( error = AudioFileWriter_write( *ppAfWriter, zeroBuf, *numOutSamples * *pNumOutChannels - ( *pRemainingDelayNumSamples * *pNumOutChannels ) ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nOutput audio file writer error\n" ); + return error; + } + *pRemainingDelayNumSamples = 0; + } + else + { + *pRemainingDelayNumSamples -= *numOutSamples; + } } } @@ -1452,6 +1708,7 @@ static ivas_error initOnFirstGoodFrame( { /* Duplicate good first frame metadata to fill the beginning of stream. */ IVAS_MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta = NULL; + if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); @@ -1470,6 +1727,25 @@ static ivas_error initOnFirstGoodFrame( } } + if ( *splitRendWriter != NULL ) + { + if ( numOutSamples == NULL || vec_pos_len == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + /* real setting of the 5ms mode for split rendering is only known after the decoded first good frame, reset the variables needed in the main decoding loop accordingly here*/ + if ( ( error = IVAS_DEC_GetRenderFramesizeSamples( hIvasDec, numOutSamples ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError getting render frame size in samples\n" ); + return error; + } + if ( ( error = IVAS_DEC_GetReferencesUpdateFrequency( hIvasDec, vec_pos_len ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError getting render frame size in samples\n" ); + return error; + } + } return IVAS_ERR_OK; } @@ -1488,6 +1764,7 @@ static ivas_error decodeG192( RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, + ISAR_SPLIT_REND_BITS_DATA *splitRendBits, IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ) @@ -1514,7 +1791,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; - + SplitFileReadWrite *splitRendWriter = NULL; for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; ++i ) { @@ -1612,18 +1889,36 @@ static ivas_error decodeG192( { IVAS_QUATERNION Quaternions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; - for ( i = 0; i < num_subframes; i++ ) + if ( headRotReader == NULL ) { - if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK ) + for ( i = 0; i < num_subframes; i++ ) { - fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( headRotReader ) ); - goto cleanup; + Quaternions[i].w_fx = -12582912; + Quaternions[i].x_fx = 0; + Quaternions[i].y_fx = 0; + Quaternions[i].z_fx = 0; + Quaternions[i].q_fact = 22; + Pos[i].x_fx = 0; + Pos[i].y_fx = 0; + Pos[i].z_fx = 0; + Pos[i].q_fact = 25; + } + } + else + { + for ( i = 0; i < num_subframes; i++ ) + { + if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( headRotReader ) ); + goto cleanup; + } } } for ( i = 0; i < num_subframes; i++ ) { - if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions[i], Pos[i], i ) ) != 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; @@ -1681,14 +1976,28 @@ static ivas_error decodeG192( goto cleanup; } } - if ( ( error = IVAS_DEC_GetSamples( hIvasDec, nSamplesToRender, ( pcmBuf + nOutChannels * nSamplesRendered ), &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK ) + if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) ) { - fprintf( stderr, "\nError in IVAS_DEC_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); - goto cleanup; + if ( ( error = IVAS_DEC_GetSplitBinauralBitstream( hIvasDec, (Word16 *) ( pcmBuf + nOutChannels * nSamplesRendered ), splitRendBits, &nSamplesRendered_loop, &needNewFrame ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_DEC_GetSplitBinauralBitstream: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + + nSamplesRendered += nSamplesRendered_loop; + nSamplesToRender -= nSamplesRendered_loop; + } + else + { + 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 ) ); + goto cleanup; + } + nSamplesRendered += nSamplesRendered_loop; + nSamplesToRender -= nSamplesRendered_loop; } - nSamplesRendered += nSamplesRendered_loop; - nSamplesToRender -= nSamplesRendered_loop; if ( needNewFrame ) { @@ -1719,7 +2028,7 @@ static ivas_error decodeG192( /* Once good frame decoded, catch up */ if ( decodedGoodFrame ) { - if ( ( error = initOnFirstGoodFrame( hIvasDec, arg, numInitialBadFrames, nOutSamples, delayNumSamples_orig, &delayNumSamples, &delayTimeScale, &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj ) ) != IVAS_ERR_OK ) + if ( ( error = initOnFirstGoodFrame( hIvasDec, arg, numInitialBadFrames, &nOutSamples, &vec_pos_len, delayNumSamples_orig, &delayNumSamples, &delayTimeScale, &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj, &splitRendWriter ) ) != IVAS_ERR_OK ) { goto cleanup; } @@ -1733,18 +2042,30 @@ static ivas_error decodeG192( /* Write current frame */ if ( decodedGoodFrame ) { - if ( delayNumSamples < nOutSamples ) + if ( IVAS_DEC_is_split_rendering_enabled( hIvasDec ) ) { - if ( ( error = AudioFileWriter_write( afWriter, &pcmBuf[delayNumSamples * nOutChannels], nOutSamples * nOutChannels - ( delayNumSamples * nOutChannels ) ) ) != IVAS_ERR_OK ) + if ( split_rend_write_bitstream_to_file( splitRendWriter, splitRendBits->bits_buf, &splitRendBits->bits_read, &splitRendBits->bits_written ) != IVAS_ERR_OK ) { - fprintf( stderr, "\nOutput audio file writer error\n" ); + fprintf( stderr, "\nUnable to write to bitstream file!\n" ); goto cleanup; } - delayNumSamples = 0; } - else + + if ( IVAS_DEC_is_split_rendering_coded_out( hIvasDec ) == 0 ) { - delayNumSamples -= nOutSamples; + if ( delayNumSamples < nOutSamples ) + { + if ( ( error = AudioFileWriter_write( afWriter, &pcmBuf[delayNumSamples * nOutChannels], nOutSamples * nOutChannels - ( delayNumSamples * nOutChannels ) ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nOutput audio file writer error\n" ); + goto cleanup; + } + delayNumSamples = 0; + } + else + { + delayNumSamples -= nOutSamples; + } } } @@ -1859,7 +2180,7 @@ static ivas_error decodeG192( goto cleanup; } - if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternion, Pos[0], 0 ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternion, Pos[0], 0, DEFAULT_AXIS ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; @@ -1979,10 +2300,13 @@ static ivas_error decodeG192( *------------------------------------------------------------------------------------------*/ memset( pcmBuf, 0, delayNumSamples_orig[0] * nOutChannels * sizeof( int16_t ) ); - if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, delayNumSamples_orig[0] * nOutChannels ) ) != IVAS_ERR_OK ) + if ( afWriter != NULL ) { - fprintf( stderr, "\nError writing output file: %s\n", ivas_error_to_string( error ) ); - goto cleanup; + 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; + } } /*------------------------------------------------------------------------------------------* @@ -1993,6 +2317,7 @@ static ivas_error decodeG192( cleanup: + split_rend_reader_writer_close( &splitRendWriter ); AudioFileWriter_close( &afWriter ); MasaFileWriter_close( &masaWriter ); for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; i++ ) @@ -2239,19 +2564,38 @@ static ivas_error decodeVoIP( { IVAS_QUATERNION Quaternions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; - for ( i = 0; i < num_subframes; i++ ) + if ( headRotReader == NULL ) { - if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK ) + for ( i = 0; i < num_subframes; i++ ) { - fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), - RotationFileReader_getFilePath( headRotReader ) ); - goto cleanup; + Quaternions[i].w_fx = -12582912; + Quaternions[i].x_fx = 0; + Quaternions[i].y_fx = 0; + Quaternions[i].z_fx = 0; + Quaternions[i].q_fact = 22; + Pos[i].x = 0.0f; + Pos[i].y = 0.0f; + Pos[i].z = 0.0f; + Pos[i].q_fact = 25; + } + } + else + { + for ( i = 0; i < num_subframes; i++ ) + { + if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), + RotationFileReader_getFilePath( headRotReader ) ); + goto cleanup; + } } } for ( i = 0; i < num_subframes; i++ ) { - if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions[i], Pos[i], i ) ) != 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; @@ -2338,7 +2682,6 @@ static ivas_error decodeVoIP( /* decode and get samples */ - #ifdef SUPPORT_JBM_TRACEFILE if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, pcmBuf, systemTime_ms, writeJbmTraceFileFrameWrapper, jbmTraceWriter ) ) != IVAS_ERR_OK ) #else @@ -2379,8 +2722,10 @@ static ivas_error decodeVoIP( /* Once good frame decoded, catch up */ if ( decodedGoodFrame ) { - if ( ( error = initOnFirstGoodFrame( hIvasDec, arg, numInitialBadFrames, nOutSamples, delayNumSamples_orig, &delayNumSamples, &delayTimeScale, - &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj ) ) != IVAS_ERR_OK ) + 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 ) { goto cleanup; } @@ -2482,11 +2827,7 @@ static ivas_error decodeVoIP( int16_t nSamplesFlushed = 0; /* decode and get samples */ -#ifdef SPLIT_REND_WITH_HEAD_ROT - if ( ( error = IVAS_DEC_Flush( hIvasDec, nOutSamples, IVAS_DEC_PCM_INT16, (void *) pcmBuf, &nSamplesFlushed ) ) != IVAS_ERR_OK ) -#else if ( ( error = IVAS_DEC_Flush( hIvasDec, nOutSamples, pcmBuf, &nSamplesFlushed ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "\nError in IVAS_DEC_VoIP_Flush: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; diff --git a/apps/encoder.c b/apps/encoder.c index af9554589d813007f8b04ec2df6f4f6a0369fe4c..1f871381b9229ddde7e54d57a7005145e3aebddd 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; } diff --git a/apps/isar_post_rend.c b/apps/isar_post_rend.c new file mode 100644 index 0000000000000000000000000000000000000000..b4ff098ba1bffe58873a9ff0ebdf456f8acd29fe --- /dev/null +++ b/apps/isar_post_rend.c @@ -0,0 +1,1237 @@ +/****************************************************************************************************** + + (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 "lib_isar_post_rend.h" +//#undef IVAS_FLOAT_FIXED + + +#include +#include +#include +#include "audio_file_reader.h" +#include "audio_file_writer.h" +#include "cmdl_tools.h" +#include "cmdln_parser.h" +#include "render_config_reader.h" +#include "rotation_file_reader.h" +#include "split_render_file_read_write.h" +#include "split_rend_bfi_file_reader.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "stl.h" +#include "wmc_auto.h" + + +#define WMC_TOOL_SKIP + +/*------------------------------------------------------------------------------------------* + * Local constants + *------------------------------------------------------------------------------------------*/ + +#define POST_REND_MAX_CLI_ARG_LENGTH ( FILENAME_MAX ) + +#define ISAR_MAX16B_FLT 32767.0f +#define ISAR_MIN16B_FLT ( -32768.0f ) +#define ISAR_MAX16B_FX 32767 +#define ISAR_MIN16B_FX ( -32768 ) + +#if !defined( DEBUGGING ) && !defined( WMOPS ) +static +#endif + int32_t frame = 0; + +#ifdef _WIN32 +#define SEP_FOLDER '\\' +#else +#define SEP_FOLDER '/' +#endif + +/*------------------------------------------------------------------------------------------* + * Local structures + *------------------------------------------------------------------------------------------*/ + +typedef struct +{ + IVAS_AUDIO_CONFIG audioConfig; + int32_t inputChannelIndex; + float gain_dB; +} RendererInput; + +typedef struct +{ + RendererInput binBuses[RENDERER_MAX_BIN_INPUTS]; + uint16_t numBinBuses; +} InputConfig; + +typedef struct +{ + IVAS_AUDIO_CONFIG audioConfig; +} OutputConfig; + +typedef struct +{ + char executableName[POST_REND_MAX_CLI_ARG_LENGTH]; + char inputFilePath[POST_REND_MAX_CLI_ARG_LENGTH]; + char outputFilePath[POST_REND_MAX_CLI_ARG_LENGTH]; + int32_t sampleRate; + InputConfig inConfig; + OutputConfig outConfig; + char inMetadataFilePaths[RENDERER_MAX_ISAR_MD_INPUTS][POST_REND_MAX_CLI_ARG_LENGTH]; + int16_t numInMetadataFiles; + char headRotationFilePath[POST_REND_MAX_CLI_ARG_LENGTH]; + char splitRendBFIFilePath[POST_REND_MAX_CLI_ARG_LENGTH]; + ISAR_POST_REND_COMPLEXITY_LEVEL complexityLevel; + bool delayCompensationEnabled; + bool quietModeEnabled; + bool sceneDescriptionInput; + IVAS_RENDER_FRAMESIZE render_framesize; +} CmdlnArgs; + +typedef enum +{ + CmdLnOptionId_inputFile = 1, + CmdLnOptionId_inputFormat, + CmdLnOptionId_outputFile, + CmdLnOptionId_sampleRate, + CmdLnOptionId_trajFile, + CmdLnOptionId_orientationTracking, + CmdLnOptionId_complexityLevel, + CmdLnOptionId_noDelayCmp, + CmdLnOptionId_quietModeEnabled, + CmdLnOptionId_inputMetadata, + CmdLnOptionId_listFormats, + CmdLnOptionId_SplitRendBFIFile, + CmdLnOptionId_framing, +} CmdLnOptionId; + +static const CmdLnParser_Option cliOptions[] = { + { + .id = CmdLnOptionId_inputFile, + .match = "input_file", + .matchShort = "i", + .description = "Path to the input file (WAV, raw PCM or scene description file)", + }, + { + .id = CmdLnOptionId_inputFormat, + .match = "input_format", + .matchShort = "if", + .description = "Audio format of input file (e.g. BINAURAL_SPLIT_PCM, use -l for a list)", + }, + { + .id = CmdLnOptionId_inputMetadata, + .match = "input_metadata", + .matchShort = "im", + .description = "Space-separated list of path to metadata files for BINAURAL_SPLIT_PCM input mode", + }, + { + .id = CmdLnOptionId_outputFile, + .match = "output_file", + .matchShort = "o", + .description = "Path to the output file", + }, + { + .id = CmdLnOptionId_sampleRate, + .match = "sample_rate", + .matchShort = "fs", + .description = "Input sampling rate in kHz (16, 32, 48) - required only with raw PCM inputs", + }, + { + .id = CmdLnOptionId_trajFile, + .match = "trajectory_file", + .matchShort = "T", + .description = "Head rotation trajectory file for simulation of head tracking", + }, + { + .id = CmdLnOptionId_SplitRendBFIFile, + .match = "post_rend_bfi_file", + .matchShort = "prbfi", + .description = "Split rendering option: bfi file", + }, + { + .id = CmdLnOptionId_noDelayCmp, + .match = "no_delay_compensation", + .matchShort = "no_delay_cmp", + .description = "[flag] Turn off delay compensation", + }, + { + .id = CmdLnOptionId_complexityLevel, + .match = "complexity_level", + .matchShort = "level", + .description = "Complexity level, level = (1, 2, 3), will be defined after characterisation.", + }, + { + .id = CmdLnOptionId_quietModeEnabled, + .match = "quiet", + .matchShort = "q", + .description = "[flag] Limit printouts to terminal", + }, + { + .id = CmdLnOptionId_listFormats, + .match = "list", + .matchShort = "l", + .description = "List supported audio formats", + }, + { + .id = CmdLnOptionId_framing, + .match = "framing", + .matchShort = "fr", + .description = "Set Render audio framing.", + }, +}; + + +/*------------------------------------------------------------------------------------------* + * Local function prototypes + *------------------------------------------------------------------------------------------*/ + +static const int32_t numCliOptions = sizeof( cliOptions ) / sizeof( CmdLnParser_Option ); + +static void printSupportedAudioConfigs( void ); + +static IVAS_AUDIO_CONFIG parseAudioConfig( const char *configString ); + +static void convertOutputBuffer( const Word32 *fixedBuffer, Word16 q, const int16_t numSamplesPerChannel, const int16_t numChannels, int16_t *intBuffer ); + +/*------------------------------------------------------------------------------------------* + * Local functions + *------------------------------------------------------------------------------------------*/ + +static ISAR_POST_REND_ReadOnlyAudioBuffer getReadOnlySubBuffer( + IVAS_REND_AudioBuffer buffer, + const int16_t chBeginIdx, + const int16_t numChannels ) +{ + ISAR_POST_REND_ReadOnlyAudioBuffer subBuffer; + + subBuffer.config = buffer.config; + subBuffer.config.numChannels = numChannels; + subBuffer.data_fx = buffer.data_fx + subBuffer.config.numSamplesPerChannel * chBeginIdx; + + return subBuffer; +} + + +static int16_t getTotalNumInChannels( + ISAR_POST_REND_HANDLE hIsarPostRend, + ISAR_POST_REND_InputId splitBinIds[RENDERER_MAX_BIN_INPUTS] ) +{ + int16_t totalNumInChannels = 0; + int16_t i, numInputChannels; + ivas_error error; + + for ( i = 0; i < RENDERER_MAX_BIN_INPUTS; ++i ) + { + if ( splitBinIds[i] == 0 ) + { + /* Skip inactive inputs */ + continue; + } + + if ( ( error = ISAR_POST_REND_GetInputNumChannels( hIsarPostRend, splitBinIds[i], &numInputChannels ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } + totalNumInChannels += numInputChannels; + } + + return totalNumInChannels; +} + +/*------------------------------------------------------------------------------------------* + * Local functions + *------------------------------------------------------------------------------------------*/ + +static const CmdLnParser_Option *findOptionById( + const int32_t id ) +{ + for ( int32_t i = 0; i < numCliOptions; ++i ) + { + if ( cliOptions[i].id == id ) + { + return &cliOptions[i]; + } + } + + return NULL; +} + +static bool parseInConfig( + const char *inFormatStr, + InputConfig *inConfig, + bool *sceneDescriptionInput ) +{ + char charBuf[FILENAME_MAX]; + + /* Initialize input config struct */ + inConfig->numBinBuses = 0; + + /* First check if input is being set to scene description file - this is not covered by parseAudioConfig(). */ + strncpy( charBuf, inFormatStr, sizeof( charBuf ) - 1 ); + charBuf[sizeof( charBuf ) - 1] = '\0'; + to_upper( charBuf ); + if ( strcmp( charBuf, "META" ) == 0 ) + { + *sceneDescriptionInput = true; + /* Parsing the file will be done later. At this point the actual file path + * may not be known as command line parameters are still being parsed. */ + return true; + } + + /* Check for single-format inputs. The given string should map to a member of AUDIO_CONFIG enum. */ + IVAS_AUDIO_CONFIG audioConfig = parseAudioConfig( inFormatStr ); + switch ( audioConfig ) + { + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: + inConfig->numBinBuses = 1; + inConfig->binBuses[0].audioConfig = audioConfig; + inConfig->binBuses[0].inputChannelIndex = 0; + inConfig->binBuses[0].gain_dB = 0.0f; + break; + default: + { + /* Default case covers formats that are defined in the AUDIO_CONFIG enum, + * but cannot be used at input, e.g. BINAURAL */ + const CmdLnParser_Option *listOption = findOptionById( CmdLnOptionId_listFormats ); + fprintf( stderr, "Unsupported input format: %s. To list valid formats, use option --%s.\n", inFormatStr, listOption->match ); + return false; + } + } + + return true; +} + + +static bool parseRenderFramesize( + char *value, + IVAS_RENDER_FRAMESIZE *render_framesize ) +{ + int32_t tmp; + + *render_framesize = IVAS_RENDER_FRAMESIZE_UNKNOWN; + if ( !is_digits_only( value ) ) + { + return false; + } + tmp = (int32_t) strtol( value, NULL, 0 ); + switch ( (int16_t) tmp ) + { + case 5: + *render_framesize = IVAS_RENDER_FRAMESIZE_5MS; + break; + case 10: + *render_framesize = IVAS_RENDER_FRAMESIZE_10MS; + break; + case 20: + *render_framesize = IVAS_RENDER_FRAMESIZE_20MS; + break; + default: + return false; + } + + return true; +} + + +static IVAS_AUDIO_CONFIG parseAudioConfig( + const char *configString ) +{ + char charBuf[25]; + charBuf[24] = '\0'; + + strncpy( charBuf, configString, sizeof( charBuf ) - 1 ); + charBuf[sizeof( charBuf ) - 1] = '\0'; + to_upper( charBuf ); + + if ( strcmp( charBuf, "BINAURAL" ) == 0 ) + { + return IVAS_AUDIO_CONFIG_BINAURAL; + } + if ( strcmp( charBuf, "BINAURAL_SPLIT_PCM" ) == 0 ) + { + return IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM; + } + if ( strcmp( charBuf, "BINAURAL_SPLIT_CODED" ) == 0 ) + { + return IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED; + } + return IVAS_AUDIO_CONFIG_INVALID; +} + + +static bool checkRequiredArgs( + CmdlnArgs args ) +{ + const CmdLnParser_Option *tmpOption; + + /* Check required arguments */ + bool missingRequiredArg = false; + if ( isEmptyString( args.inputFilePath ) ) + { + tmpOption = findOptionById( CmdLnOptionId_inputFile ); + fprintf( stderr, "Missing required argument: %s (%s)\n", tmpOption->match, tmpOption->matchShort ); + missingRequiredArg = true; + } + + const bool singleInputSpecified = ( args.inConfig.numBinBuses != 0 ); + + if ( !args.sceneDescriptionInput && !singleInputSpecified ) + { + /* Neither scene description input nor single-type input was specified on command line */ + tmpOption = findOptionById( CmdLnOptionId_inputFormat ); + fprintf( stderr, "Missing required argument: %s (%s)\n", tmpOption->match, tmpOption->matchShort ); + missingRequiredArg = true; + } + if ( isEmptyString( args.outputFilePath ) ) + { + tmpOption = findOptionById( CmdLnOptionId_outputFile ); + fprintf( stderr, "Missing required argument: %s (%s)\n", tmpOption->match, tmpOption->matchShort ); + missingRequiredArg = true; + } + if ( args.sampleRate == 0 ) + { + tmpOption = findOptionById( CmdLnOptionId_sampleRate ); + fprintf( stderr, "Missing required argument: %s (%s)\n", tmpOption->match, tmpOption->matchShort ); + missingRequiredArg = true; + } + if ( missingRequiredArg ) + { + CmdLnParser_printUsage( args.executableName, cliOptions, numCliOptions ); + } + + return !missingRequiredArg; +} + +static CmdlnArgs defaultArgs( + const char *executableName ) +{ + CmdlnArgs args; + + strncpy( args.executableName, executableName, POST_REND_MAX_CLI_ARG_LENGTH ); + clearString( args.inputFilePath ); + clearString( args.outputFilePath ); + args.sampleRate = 0; + + args.outConfig.audioConfig = IVAS_AUDIO_CONFIG_INVALID; + + for ( int32_t i = 0; i < RENDERER_MAX_ISAR_MD_INPUTS; ++i ) + { + clearString( args.inMetadataFilePaths[i] ); + } + args.numInMetadataFiles = 0; + + clearString( args.headRotationFilePath ); + clearString( args.splitRendBFIFilePath ); + + args.delayCompensationEnabled = true; + args.quietModeEnabled = false; + args.sceneDescriptionInput = false; + + args.render_framesize = IVAS_RENDER_FRAMESIZE_20MS; + + return args; +} + +static void parseOption( + const int32_t optionId, + char **optionValues, + const int16_t numOptionValues, + void *pOutputStruct ) +{ + CmdlnArgs *args = pOutputStruct; + + switch ( optionId ) + { + case CmdLnOptionId_listFormats: + assert( numOptionValues == 0 ); + printSupportedAudioConfigs(); + exit( 0 ); + case CmdLnOptionId_inputFile: + assert( numOptionValues == 1 ); + strncpy( args->inputFilePath, optionValues[0], POST_REND_MAX_CLI_ARG_LENGTH - 1 ); + break; + case CmdLnOptionId_inputFormat: + assert( numOptionValues == 1 ); + if ( !parseInConfig( optionValues[0], &args->inConfig, &args->sceneDescriptionInput ) ) + { + exit( -1 ); /* Error printout handled by failing function */ + } + break; + case CmdLnOptionId_inputMetadata: + assert( numOptionValues <= RENDERER_MAX_ISAR_MD_INPUTS ); + for ( int16_t i = 0; i < numOptionValues; ++i ) + { + strncpy( args->inMetadataFilePaths[i], optionValues[i], POST_REND_MAX_CLI_ARG_LENGTH - 1 ); + } + args->numInMetadataFiles = numOptionValues; + break; + case CmdLnOptionId_outputFile: + assert( numOptionValues == 1 ); + strncpy( args->outputFilePath, optionValues[0], POST_REND_MAX_CLI_ARG_LENGTH - 1 ); + break; + case CmdLnOptionId_sampleRate: + assert( numOptionValues == 1 ); + args->sampleRate = (int32_t) ( strtol( optionValues[0], NULL, 10 ) * 1000 ); + if ( args->sampleRate == 0 ) + { + fprintf( stderr, "Invalid sampling rate specified\n" ); + exit( -1 ); + } + break; + case CmdLnOptionId_trajFile: + assert( numOptionValues == 1 ); + strncpy( args->headRotationFilePath, optionValues[0], POST_REND_MAX_CLI_ARG_LENGTH - 1 ); + break; + case CmdLnOptionId_SplitRendBFIFile: + assert( numOptionValues == 1 ); + strncpy( args->splitRendBFIFilePath, optionValues[0], POST_REND_MAX_CLI_ARG_LENGTH - 1 ); + break; + case CmdLnOptionId_complexityLevel: + assert( numOptionValues == 1 ); + args->complexityLevel = (int32_t) ( strtol( optionValues[0], NULL, 10 ) ); + if ( args->complexityLevel < ISAR_POST_REND_COMPLEXITY_LEVEL_ONE || args->complexityLevel > ISAR_POST_REND_COMPLEXITY_LEVEL_THREE ) + { + fprintf( stdout, "Invalid complexity level specified.\n" ); + exit( -1 ); + } + else if ( args->complexityLevel == ISAR_POST_REND_COMPLEXITY_LEVEL_ONE || args->complexityLevel == ISAR_POST_REND_COMPLEXITY_LEVEL_TWO ) + { + fprintf( stdout, "Complexity levels 1 and 2 will be defined after characterisation - default to level 3 (full functionality).\n" ); + } + break; + case CmdLnOptionId_noDelayCmp: + assert( numOptionValues == 0 ); + args->delayCompensationEnabled = false; + break; + case CmdLnOptionId_quietModeEnabled: + assert( numOptionValues == 0 ); + args->quietModeEnabled = true; + break; + case CmdLnOptionId_framing: + assert( numOptionValues == 1 ); + if ( !parseRenderFramesize( optionValues[0], &args->render_framesize ) ) + { + fprintf( stderr, "Unknown or invalid option for frame size: %s\n", optionValues[0] ); + exit( -1 ); + } + + break; + default: + assert( 0 && "This should be unreachable - all command line options should be explicitly handled." ); + break; + } + + return; +} + +static CmdlnArgs parseCmdlnArgs( + const int argc, + char **argv ) +{ + CmdlnArgs args = defaultArgs( argv[0] ); + + if ( CmdLnParser_parseArgs( argc, argv, cliOptions, numCliOptions, &args, parseOption ) != 0 ) + { + exit( -1 ); /* Error printout handled by failing function */ + } + + if ( !checkRequiredArgs( args ) ) + { + exit( -1 ); /* Error printout handled by failing function */ + } + + return args; +} + + +static void printSupportedAudioConfigs( void ) +{ + uint16_t i; + const char *supportedFormats[] = { + "BINAURAL (output only)", + "BINAURAL_SPLIT_PCM", + "BINAURAL_SPLIT_CODED", + }; + + fprintf( stdout, "Supported audio formats:\n" ); + for ( i = 0; i < sizeof( supportedFormats ) / sizeof( *supportedFormats ); i++ ) + { + fprintf( stdout, "%s\n", supportedFormats[i] ); + } + + return; +} + +/*--------------------------------------------------------------------------* + * convertInputBuffer() + * + * Convert input buffer from WAV/PCM file (int16_t, interleaved) to a format + * accepted by the renderer (float, packed) + *--------------------------------------------------------------------------*/ + +static void convertInputBuffer( + const int16_t *intBuffer, + const int16_t numIntSamplesPerChannel, + const int16_t numFloatSamplesPerChannel, + const int16_t numChannels, + Word32 *fixedBuffer ) +{ + int16_t chnl, smpl, i; + + i = 0; + + FOR( smpl = 0; smpl < numFloatSamplesPerChannel; ++smpl ) + { + FOR( chnl = 0; chnl < numChannels; ++chnl ) + { + IF( i < numIntSamplesPerChannel ) + { + fixedBuffer[chnl * numFloatSamplesPerChannel + smpl] = (Word32) intBuffer[i]; + } + ELSE + { + fixedBuffer[chnl * numFloatSamplesPerChannel + smpl] = 0; + } + + ++i; + } + } + + return; +} + +/*--------------------------------------------------------------------------* + * convertOutputBuffer() + * + * Convert output buffer from the renderer (float, packed) to a format ready + * for writing to a WAV/PCM file (int16_t, interleaved) + *--------------------------------------------------------------------------*/ + +static void convertOutputBuffer( + const Word32 *fixedBuffer, + Word16 q, + const int16_t numSamplesPerChannel, + const int16_t numChannels, + int16_t *intBuffer ) +{ + int16_t chnl, smpl, i; + Word32 temp; + + i = 0; + + for ( smpl = 0; smpl < numSamplesPerChannel; ++smpl ) + { + for ( chnl = 0; chnl < numChannels; ++chnl ) + { + temp = L_shr_r( fixedBuffer[chnl * numSamplesPerChannel + smpl], q ); + IF( GT_32( temp, ISAR_MAX16B_FX ) ) + { + temp = ISAR_MAX16B_FX; + } + ELSE IF( LT_32( temp, ISAR_MIN16B_FX ) ) + { + temp = ISAR_MIN16B_FX; + } + intBuffer[i] = (int16_t) temp; + + ++i; + } + } + + return; +} + +/*------------------------------------------------------------------------------------------* + * main() + * + * Main ISAR post renderer function for command-line interface + *------------------------------------------------------------------------------------------*/ + +int main( + int argc, + char **argv ) +{ + bool mainFailed = true; /* Assume main failed until cleanup is reached without errors */ + ISAR_POST_REND_HANDLE hIsarPostRend = NULL; + RotFileReader *headRotReader = NULL; + RotFileReader *externalOrientationFileReader = NULL; + SplitRendBFIFileReader *splitRendBFIReader = NULL; + AudioFileReader *audioReader = NULL; + AudioFileWriter *audioWriter = NULL; + int32_t inBufferSize; + int32_t outBufferSize; + int32_t bitsBufferSize; + int16_t *inpInt16Buffer = NULL; + Word32 *inFloatBuffer_fx = NULL; + int16_t *outInt16Buffer = NULL; + Word32 *outFloatBuffer_fx = NULL; + uint8_t *bitsBufferData = NULL; + IVAS_REND_AudioBuffer inBuffer; + IVAS_REND_AudioBuffer outBuffer; + ISAR_POST_REND_BitstreamBuffer bitsBuffer; + SplitFileReadWrite *hSplitRendFileReadWrite; + char audioFilePath[FILENAME_MAX]; + int16_t numSamplesRead; + int16_t delayNumSamples = -1; + int16_t delayNumSamples_orig = 0; + int16_t zeroPad = 0; + int16_t zeroPadToWrite = 0; + int32_t delayTimeScale = 0; + int16_t i, numChannels; + ivas_error error = IVAS_ERR_OK; + bool splitBinNeedsNewFrame = true; + +#ifdef WMOPS + reset_wmops(); + reset_mem( USE_BYTES ); +#endif + + inBuffer.pq_fact = NULL; + outBuffer.pq_fact = NULL; + + hSplitRendFileReadWrite = NULL; + bitsBuffer.bits = NULL; + bitsBuffer.config.bitsRead = 0; + bitsBuffer.config.bitsWritten = 0; + bitsBuffer.config.bufLenInBytes = 0; + bitsBuffer.config.codec = ISAR_SPLIT_REND_CODEC_DEFAULT; + bitsBuffer.config.poseCorrection = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE; + bitsBuffer.config.codec_frame_size_ms = 5; + bitsBuffer.config.isar_frame_size_ms = 20; + bitsBuffer.config.lc3plusHighRes = 0; + + CmdlnArgs args = parseCmdlnArgs( argc, argv ); + + convert_backslash( args.inputFilePath ); + convert_backslash( args.outputFilePath ); + convert_backslash( args.headRotationFilePath ); + + if ( !isEmptyString( args.headRotationFilePath ) ) + { + if ( RotationFileReader_open( args.headRotationFilePath, &headRotReader ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError opening file: %s\n", args.headRotationFilePath ); + goto cleanup; + } + } + + if ( !isEmptyString( args.splitRendBFIFilePath ) ) + { + convert_backslash( args.splitRendBFIFilePath ); + SplitRendBFIFileReader_open( args.splitRendBFIFilePath, &splitRendBFIReader ); + } + + int32_t inFileSampleRate = 0; + 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 ) ) + { + error = split_rend_reader_open( &hSplitRendFileReadWrite, + args.inMetadataFilePaths[0], + &bitsBuffer.config.codec, + &bitsBuffer.config.poseCorrection, + &bitsBuffer.config.codec_frame_size_ms, + &bitsBuffer.config.isar_frame_size_ms, + &inFileSampleRate, + &bitsBuffer.config.lc3plusHighRes ); + if ( error != IVAS_ERR_OK ) + { + fprintf( stderr, "\nCould not open split rend metadata file %s\n", args.inMetadataFilePaths[0] ); + goto cleanup; + } + + if ( AudioFileReader_open( &audioReader, audioFilePath ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError opening file: %s\n", audioFilePath ); + goto cleanup; + } + } + + /*if split renderer is running in post renderer mode*/ + if ( ( args.inConfig.numBinBuses > 0 ) && ( args.inConfig.binBuses[0].audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) + { + error = split_rend_reader_open( &hSplitRendFileReadWrite, + args.inputFilePath, + &bitsBuffer.config.codec, + &bitsBuffer.config.poseCorrection, + &bitsBuffer.config.codec_frame_size_ms, + &bitsBuffer.config.isar_frame_size_ms, + &inFileSampleRate, + &bitsBuffer.config.lc3plusHighRes ); + if ( error != IVAS_ERR_OK ) + { + fprintf( stderr, "\nCould not open split rend metadata file %s\n", args.inputFilePath ); + goto cleanup; + } + audioReader = NULL; + } + + if ( audioReader != NULL ) + { + error = AudioFileReader_getSamplingRate( audioReader, &inFileSampleRate ); + } + else if ( hSplitRendFileReadWrite == NULL ) + { + inFileSampleRate = args.sampleRate; + } + + switch ( error ) + { + case IVAS_ERR_OK: + /* If sampling rate not given on command line, use the one from SR file */ + if ( args.sampleRate == 0 ) + { + args.sampleRate = inFileSampleRate; + } + /* else if sampling rate given on command line, compare with wav file */ + else if ( inFileSampleRate != args.sampleRate ) + { + fprintf( stderr, "\nSampling rate mismatch: %d Hz requested, but %d Hz found in file %s\n", args.sampleRate, inFileSampleRate, args.inputFilePath ); + goto cleanup; + } + break; + case IVAS_ERR_SAMPLING_RATE_UNKNOWN: /* Returned when input is raw PCM */ + if ( args.sampleRate == 0 ) + { + fprintf( stderr, "\nSampling rate must be specified on command line when using raw PCM input\n" ); + goto cleanup; + } + break; + default: + fprintf( stderr, "\nError: %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + + int16_t inFileNumChannels = 0; + if ( audioReader != NULL ) + { + error = AudioFileReader_getNumChannels( audioReader, &inFileNumChannels ); + if ( error != IVAS_ERR_OK && error != IVAS_ERR_NUM_CHANNELS_UNKNOWN ) + { + fprintf( stderr, "\nAudioFileReader_getNumChannels failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + } + + const int16_t frameSize_smpls = (int16_t) ( ( args.render_framesize ) * args.sampleRate * 5 / ( 1000 ) ); + args.outConfig.audioConfig = IVAS_AUDIO_CONFIG_BINAURAL; + if ( ( error = ISAR_POST_REND_open( &hIsarPostRend, args.sampleRate, args.outConfig.audioConfig, true, 0, 0, (int16_t) args.render_framesize ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError opening renderer handle: %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + + /* === Configure === */ + if ( ( error = ISAR_POST_REND_InitConfig( hIsarPostRend, args.outConfig.audioConfig ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in Renderer Config Init: %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + + if ( args.inConfig.numBinBuses > 0 ) + { + if ( ( error = ISAR_REND_SetSplitRendBitstreamHeader( hIsarPostRend, + bitsBuffer.config.codec, + bitsBuffer.config.poseCorrection, + bitsBuffer.config.codec_frame_size_ms, + bitsBuffer.config.isar_frame_size_ms, + bitsBuffer.config.lc3plusHighRes ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in getting split renderer bitstream header: %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + } + + + ISAR_POST_REND_InputId splitBinIds[RENDERER_MAX_BIN_INPUTS]; + + for ( i = 0; i < RENDERER_MAX_BIN_INPUTS; i++ ) + { + splitBinIds[i] = 0u; + } + + for ( i = 0; i < args.inConfig.numBinBuses; ++i ) + { + if ( ( error = ISAR_POST_REND_AddInput( hIsarPostRend, args.inConfig.binBuses[i].audioConfig, &splitBinIds[i] ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nISAR_POST_REND_AddInput failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + } + + const int16_t totalNumInChannels = getTotalNumInChannels( hIsarPostRend, splitBinIds ); + + if ( inFileNumChannels != 0 /* inFileNumChannels is 0 with raw PCM input */ && totalNumInChannels != inFileNumChannels ) + { + fprintf( stderr, "\nNumber of channels in input file does not match selected configuration\n" ); + goto cleanup; + } + + int16_t numOutChannels = 2; + + if ( AudioFileWriter_open( &audioWriter, args.outputFilePath, args.sampleRate, numOutChannels ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nFailed to open file: %s\n", args.outputFilePath ); + goto cleanup; + } + + inBufferSize = frameSize_smpls * totalNumInChannels; + outBufferSize = frameSize_smpls * numOutChannels; + inpInt16Buffer = malloc( inBufferSize * sizeof( int16_t ) ); + memset( inpInt16Buffer, 0, inBufferSize * sizeof( int16_t ) ); + + inFloatBuffer_fx = malloc( inBufferSize * sizeof( Word32 ) ); + inBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls; + outFloatBuffer_fx = malloc( outBufferSize * sizeof( Word32 ) ); + outBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls; + + outInt16Buffer = malloc( outBufferSize * sizeof( int16_t ) ); + + inBuffer.config.is_cldfb = 0; + inBuffer.config.numChannels = (int16_t) totalNumInChannels; + inBuffer.data_fx = inFloatBuffer_fx; + inBuffer.pq_fact = malloc( sizeof( Word16 ) ); + + outBuffer.config.is_cldfb = 0; + outBuffer.config.numChannels = (int16_t) numOutChannels; + outBuffer.data_fx = outFloatBuffer_fx; + outBuffer.pq_fact = malloc( sizeof( Word16 ) ); + + memset( outBuffer.data_fx, 0, outBuffer.config.numSamplesPerChannel * outBuffer.config.numChannels * sizeof( Word32 ) ); + + bitsBufferSize = SPLIT_REND_BITS_BUFF_SIZE; + + if ( bitsBufferSize > 0 ) + { + bitsBufferData = malloc( bitsBufferSize * sizeof( uint8_t ) ); + } + else + { + bitsBufferData = NULL; + } + + bitsBuffer.bits = bitsBufferData; + bitsBuffer.config.bitsRead = 0; + bitsBuffer.config.bitsWritten = 0; + bitsBuffer.config.bufLenInBytes = bitsBufferSize; + +#ifdef WMOPS + reset_stack(); + reset_wmops(); +#endif + + if ( !args.quietModeEnabled ) + { + fprintf( stdout, "\n------ Running the ISAR post renderer ------\n\n" ); + fprintf( stdout, "Frames processed: " ); + } + else + { + fprintf( stdout, "\n\n-- Start the ISAR post renderer (quiet mode) --\n\n" ); + } + + while ( 1 ) + { + int16_t num_in_channels; + num_in_channels = inBuffer.config.numChannels; + + numSamplesRead = 0; + if ( ( hSplitRendFileReadWrite != NULL ) && splitBinNeedsNewFrame ) + { + ivas_error error_tmp; + numSamplesRead = (int16_t) inBufferSize; + error_tmp = split_rend_read_bits_from_file( hSplitRendFileReadWrite, bitsBuffer.bits, &bitsBuffer.config.bitsRead, &bitsBuffer.config.bitsWritten ); + if ( error_tmp != IVAS_ERR_OK ) + { + if ( error_tmp == IVAS_ERR_END_OF_FILE ) + { + numSamplesRead = 0; + } + else + { + fprintf( stderr, "\nUnable to read from bitstream file!\n" ); + goto cleanup; + } + } + } + + if ( audioReader != NULL ) + { + /* Read the input data */ + if ( ( error = AudioFileReader_read( audioReader, inpInt16Buffer, (int16_t) inBufferSize, &numSamplesRead ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError reading from file %s\n", audioFilePath ); + goto cleanup; + } + } + + if ( numSamplesRead == 0 && splitBinNeedsNewFrame ) + { + /* end of input data */ + break; + } + + /* Convert from int to float and from interleaved to packed */ + convertInputBuffer( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inFloatBuffer_fx ); + *inBuffer.pq_fact = 0; + int16_t num_subframes, sf_idx; + num_subframes = (int16_t) args.render_framesize; + + /* Read from head rotation trajectory file if specified */ + if ( headRotReader != NULL ) + { + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + IVAS_QUATERNION headRot; + IVAS_VECTOR3 Pos; + + IF( ( error = HeadRotationFileReading( headRotReader, &headRot, &Pos ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in Head Rotation File Reading: %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + + if ( ( error = ISAR_POST_REND_SetHeadRotation( hIsarPostRend, headRot, Pos, DEFAULT_AXIS, sf_idx ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError setting Head Rotation: %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + } + } + else + { + fprintf( stderr, "\nHead Rotation should be enabled in post renderer\n" ); + goto cleanup; + } + + /* Read from split renderer bfi file if specified */ + if ( splitRendBFIReader != NULL && splitBinNeedsNewFrame ) + { + int16_t bfi; + if ( ( error = SplitRendBFIFileReading( splitRendBFIReader, &bfi ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in SplitRendBFIFileReading(): %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + + if ( ( error = ISAR_POST_REND_SetSplitRendBFI( hIsarPostRend, bfi ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in ISAR_POST_REND_SetSplitRendBFI(): %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + } + + for ( i = 0; i < args.inConfig.numBinBuses; ++i ) + { + if ( numSamplesRead > 0 ) + { + if ( ( error = ISAR_POST_REND_GetInputNumChannels( hIsarPostRend, splitBinIds[i], &numChannels ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError: %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + + ISAR_POST_REND_ReadOnlyAudioBuffer tmpBuffer = getReadOnlySubBuffer( inBuffer, (int16_t) args.inConfig.binBuses[i].inputChannelIndex, numChannels ); + + if ( ( error = ISAR_POST_REND_FeedInputAudio( hIsarPostRend, splitBinIds[i], tmpBuffer ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nISAR_POST_REND_FeedInputAudio failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + } + if ( splitBinNeedsNewFrame ) + { + if ( ( error = ISAR_POST_REND_FeedSplitBinauralBitstream( hIsarPostRend, splitBinIds[i], &bitsBuffer ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nISAR_POST_REND_FeedSplitBinauralBitstream failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + } + } + + if ( ( error = ISAR_POST_REND_GetSplitBinauralSamples( hIsarPostRend, outBuffer, &splitBinNeedsNewFrame ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nISAR_POST_REND_GetSplitBinauralSamples failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + + 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 */ + convertOutputBuffer( outFloatBuffer_fx, *outBuffer.pq_fact, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer ); + + if ( delayNumSamples == -1 ) + { + if ( args.delayCompensationEnabled ) + { + if ( ISAR_POST_REND_GetDelay( hIsarPostRend, &delayNumSamples, &delayTimeScale ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nUnable to get delay of renderer!\n" ); + goto cleanup; + } + + if ( hSplitRendFileReadWrite != NULL ) + { + uint32_t pre_rend_delay_ns; + split_rend_read_pre_rend_delay_ns( hSplitRendFileReadWrite, &pre_rend_delay_ns ); + delayNumSamples += (Word16) ( ( ( (Word64) pre_rend_delay_ns * delayTimeScale ) + 500000000 ) / 1000000000 ); + } + + delayNumSamples_orig = delayNumSamples; + } + else + { + delayNumSamples = 0; + } + zeroPad = delayNumSamples; + } + + if ( audioWriter != NULL ) + { + if ( delayNumSamples * num_out_channels < outBufferSize ) + { + if ( AudioFileWriter_write( audioWriter, &outInt16Buffer[delayNumSamples * num_out_channels], outBufferSize - ( delayNumSamples * num_out_channels ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError writing audio file %s\n", args.outputFilePath ); + goto cleanup; + } + delayNumSamples = 0; + } + else + { + delayNumSamples -= (int16_t) ( outBufferSize / num_out_channels ); + } + } + + bitsBuffer.config.bitsRead = 0; + bitsBuffer.config.bitsWritten = 0; + + frame++; + if ( !args.quietModeEnabled ) + { + fprintf( stdout, "%-8d\b\b\b\b\b\b\b\b", frame ); + } + +#ifdef WMOPS + update_mem(); + update_wmops(); +#endif + } + + /* add zeros at the end to have equal length of synthesized signals */ + if ( audioWriter != NULL ) + { + for ( zeroPadToWrite = zeroPad; zeroPadToWrite > frameSize_smpls; zeroPadToWrite -= frameSize_smpls ) + { + memset( outInt16Buffer, 0, outBufferSize * sizeof( int16_t ) ); + if ( ( error = AudioFileWriter_write( audioWriter, outInt16Buffer, outBufferSize ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nOutput audio file writer error\n" ); + goto cleanup; + } + } + + memset( outInt16Buffer, 0, zeroPadToWrite * outBuffer.config.numChannels * sizeof( int16_t ) ); + if ( ( error = AudioFileWriter_write( audioWriter, outInt16Buffer, zeroPadToWrite * outBuffer.config.numChannels ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nOutput audio file writer error\n" ); + goto cleanup; + } + zeroPadToWrite = 0; + } + + if ( !args.quietModeEnabled && args.delayCompensationEnabled ) + { + fprintf( stdout, "\nRenderer delay: %-5u [samples] - Timescale: %5u\n", delayNumSamples_orig, delayTimeScale ); + } + + fprintf( stdout, "\n\nRendering of %d frames finished\n\n", frame ); + +#ifdef DEBUGGING + int32_t cnt_frames_limited, noClipping; + if ( ( cnt_frames_limited = ISAR_POST_REND_GetCntFramesLimited( hIsarPostRend ) ) > 0 ) + { + fprintf( stdout, "Limiter applied in %d frames.\n\n", cnt_frames_limited ); + } + if ( ( noClipping = ISAR_POST_REND_GetNoCLipping( hIsarPostRend ) ) > 0 ) + { + fprintf( stdout, "Clipping (saturation) detected: %d samples clipped!!!\n\n", noClipping ); + } +#endif + + /*------------------------------------------------------------------------------------------* + * Close files and deallocate resources + *------------------------------------------------------------------------------------------*/ + + mainFailed = false; /* This will stay set to true if cleanup is reached via a goto due to an error */ + +cleanup: + + free( inpInt16Buffer ); + free( inFloatBuffer_fx ); + free( inBuffer.pq_fact ); + free( outInt16Buffer ); + free( outFloatBuffer_fx ); + free( outBuffer.pq_fact ); + + if ( bitsBufferData != NULL ) + { + free( bitsBufferData ); + } + + split_rend_reader_writer_close( &hSplitRendFileReadWrite ); + SplitRendBFIFileReader_close( &splitRendBFIReader ); + + AudioFileReader_close( &audioReader ); + AudioFileWriter_close( &audioWriter ); + RotationFileReader_close( &headRotReader ); + RotationFileReader_close( &externalOrientationFileReader ); + + ISAR_POST_REND_Close( &hIsarPostRend ); + +#ifdef DEBUGGING + dbgclose(); +#endif +#ifdef WMOPS + print_wmops(); + print_mem( NULL ); +#endif + + return mainFailed ? -1 : 0; +} + + +#undef WMC_TOOL_SKIP diff --git a/apps/renderer.c b/apps/renderer.c index 317713c055bb9bbb60e751e956ed7e86b7e8ac32..13d68cdef50278ec7f59b00bceedb49a05d072a4 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -45,6 +45,8 @@ #include "masa_file_writer.h" #include "render_config_reader.h" #include "rotation_file_reader.h" +#include "split_render_file_read_write.h" +#include "split_rend_bfi_file_reader.h" #include "vector3_pair_file_reader.h" #include "wmc_auto.h" @@ -151,7 +153,9 @@ typedef struct OutputConfig outConfig; char inMetadataFilePaths[RENDERER_MAX_ISM_INPUTS + RENDERER_MAX_MASA_INPUTS][RENDERER_MAX_CLI_ARG_LENGTH]; int16_t numInMetadataFiles; + char outMetadataFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; char headRotationFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; + char splitRendBFIFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; char referenceVectorFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; char referenceRotationFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; char externalOrientationFilePath[RENDERER_MAX_CLI_ARG_LENGTH]; @@ -198,6 +202,8 @@ typedef enum CmdLnOptionId_inputMetadata, CmdLnOptionId_listFormats, CmdLnOptionId_inputGain, + CmdLnOptionId_outputMetadata, + CmdLnOptionId_SplitRendBFIFile, CmdLnOptionId_referenceVectorFile, CmdLnOptionId_exteriorOrientationFile, CmdLnOptionId_framing, @@ -223,7 +229,7 @@ static const CmdLnParser_Option cliOptions[] = { .id = CmdLnOptionId_inputMetadata, .match = "input_metadata", .matchShort = "im", - .description = "Space-separated list of path to metadata files for ISM/MASA/OMASA/\nOSBA inputs. \nFor OMASA, ISM files must be specified first.", + .description = "Space-separated list of path to metadata files for ISM/MASA/OMASA/\nOSBA/BINAURAL_SPLIT_PCM inputs. \nFor OMASA, ISM files must be specified first.", }, { .id = CmdLnOptionId_outputFile, @@ -249,6 +255,18 @@ static const CmdLnParser_Option cliOptions[] = { .matchShort = "T", .description = "Head rotation trajectory file for simulation of head tracking\n(only for binaural outputs)", }, + { + .id = CmdLnOptionId_outputMetadata, + .match = "output_metadata", + .matchShort = "om", + .description = "coded metadata file for BINAURAL_SPLIT_PCM output mode", + }, + { + .id = CmdLnOptionId_SplitRendBFIFile, + .match = "post_rend_bfi_file", + .matchShort = "prbfi", + .description = "Split rendering option: bfi file", + }, { .id = CmdLnOptionId_refRotFile, .match = "reference_rotation_file", @@ -410,11 +428,24 @@ static void printSupportedAudioConfigs( void ); static IVAS_AUDIO_CONFIG parseAudioConfig( const char *configString ); -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 ); +static void convertOutputBuffer_fx( + const Word32 *Word32Buffer, + const Word16 numSamplesPerChannel, + const Word16 numChannels, + Word16 *intBuffer, + const Word16 cldfb_in_flag, + IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn, + Word16 out_q ); +static void convertInputBuffer_fx( + const Word16 *intBuffer, + const Word16 numIntSamplesPerChannel, + const Word16 numFloatSamplesPerChannel, + const Word16 numChannels, + Word32 *Word32Buffer, + Word16 in_q_factor, + const int16_t cldfb_in_flag, + IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna, + Word16 *out_q_factor ); /*------------------------------------------------------------------------------------------* @@ -643,6 +674,42 @@ static float dBToLin( } +static int16_t get_cldfb_in_flag( + const IVAS_AUDIO_CONFIG audioConfig, + const IVAS_RENDER_CONFIG_DATA *renderConfig ) +{ + int16_t cldfb_in_flag; + + cldfb_in_flag = 0; + if ( renderConfig->split_rend_config.rendererSelection == ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) + { +#ifdef DEBUGGING + cldfb_in_flag = 1; +#endif + if ( audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) + { + cldfb_in_flag = 1; + } + } + + return cldfb_in_flag; +} + +static int16_t is_split_pre_rend_mode( + CmdlnArgs *args ) +{ + int16_t flag; + + flag = 0; + if ( args->outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || args->outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + flag = 1; + } + + return flag; +} + + /*------------------------------------------------------------------------------------------* * main() * @@ -653,13 +720,23 @@ int main( int argc, char **argv ) { - IVAS_REND_HANDLE hIvasRend; + bool mainFailed = true; /* Assume main failed until cleanup is reached without errors */ + IVAS_REND_HANDLE hIvasRend = NULL; RotFileReader *headRotReader = NULL; RotFileReader *externalOrientationFileReader = NULL; RotFileReader *referenceRotReader = NULL; + 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; Vector3PairFileReader *referenceVectorReader = NULL; hrtfFileReader *hrtfFileReader = NULL; - IsmPositionProvider *positionProvider; + 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; + IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics = NULL; + IsmPositionProvider *positionProvider = NULL; LfeRoutingConfig *lfeRoutingConfigs[RENDERER_MAX_MC_INPUTS]; RenderConfigReader *renderConfigReader = NULL; MasaFileReader *masaReaders[RENDERER_MAX_MASA_INPUTS]; @@ -667,18 +744,24 @@ int main( IVAS_MASA_METADATA_HANDLE hMasaMetadata[RENDERER_MAX_MASA_INPUTS]; char audioFilePath[FILENAME_MAX]; AudioFileReader *audioReader = NULL; - AudioFileWriter *audioWriter; + AudioFileWriter *audioWriter = NULL; int32_t inBufferSize; int32_t outBufferSize; - int16_t *inpInt16Buffer; - float *inFloatBuffer; - int16_t *outInt16Buffer; - Word32 *outInt32Buffer; - Word32 *inInt32Buffer; + int32_t bitsBufferSize; + int16_t *inpInt16Buffer = NULL; + float *inFloatBuffer = NULL; + int16_t *outInt16Buffer = NULL; + Word32 *outInt32Buffer = NULL; + Word32 *inInt32Buffer = NULL; Word32 gain_fx; - float *outFloatBuffer; + float *outFloatBuffer = NULL; + uint8_t *bitsBufferData = NULL; IVAS_REND_AudioBuffer inBuffer; IVAS_REND_AudioBuffer outBuffer; + IVAS_REND_BitstreamBuffer bitsBuffer; + SplitFileReadWrite *hSplitRendFileReadWrite; + int16_t delayNumSamples_temp; + int32_t delayTimeScale_temp; int16_t numSamplesRead; int16_t delayNumSamples = -1; int16_t delayNumSamples_orig = 0; @@ -687,7 +770,6 @@ int main( int32_t delayTimeScale = 0; int16_t i, numChannels; ivas_error error = IVAS_ERR_OK; - bool splitBinNeedsNewFrame = true; #ifdef WMOPS reset_wmops(); @@ -700,6 +782,18 @@ int main( hMasaMetadata[i] = NULL; } + hSplitRendFileReadWrite = NULL; + CLDFBframeSize_smpls = 0; + cldfb_in_flag = 0; + bitsBuffer.bits = NULL; + bitsBuffer.config.bitsRead = 0; + bitsBuffer.config.bitsWritten = 0; + bitsBuffer.config.bufLenInBytes = 0; + bitsBuffer.config.codec = ISAR_SPLIT_REND_CODEC_DEFAULT; + bitsBuffer.config.poseCorrection = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE; + bitsBuffer.config.codec_frame_size_ms = 5; + bitsBuffer.config.isar_frame_size_ms = 20; + bitsBuffer.config.lc3plus_highres = 0; for ( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i ) { lfeRoutingConfigs[i] = NULL; @@ -713,13 +807,13 @@ int main( ( args.inConfig.numAudioObjects > 0 && args.inConfig.audioObjects[0].audioConfig == IVAS_AUDIO_CONFIG_OBA && args.inConfig.numAudioObjects == 1 ) ) ) { fprintf( stderr, "\ninvalid configuration - non-diegetic panning requires mono or ISM1 input\n" ); - exit( -1 ); + goto cleanup; } if ( args.nonDiegeticPan && args.outConfig.audioConfig != IVAS_AUDIO_CONFIG_STEREO ) { fprintf( stderr, "\ninvalid configuration - non-diegetic panning requires stereo output\n" ); - exit( -1 ); + goto cleanup; } positionProvider = IsmPositionProvider_open(); @@ -736,8 +830,8 @@ int main( { if ( RotationFileReader_open( args.headRotationFilePath, &headRotReader ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error opening file: %s\n", args.headRotationFilePath ); - exit( -1 ); + fprintf( stderr, "\nError opening file: %s\n", args.headRotationFilePath ); + goto cleanup; } } @@ -745,43 +839,40 @@ int main( { if ( RotationFileReader_open( args.referenceRotationFilePath, &referenceRotReader ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error opening file: %s\n", args.referenceRotationFilePath ); - exit( -1 ); + fprintf( stderr, "\nError opening file: %s\n", args.referenceRotationFilePath ); + goto cleanup; } } if ( !isEmptyString( args.referenceVectorFilePath ) ) { if ( Vector3PairFileReader_open( args.referenceVectorFilePath, &referenceVectorReader ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error opening file: %s\n", args.referenceVectorFilePath ); - exit( -1 ); + fprintf( stderr, "\nError opening file: %s\n", args.referenceVectorFilePath ); + goto cleanup; } } + if ( !isEmptyString( args.splitRendBFIFilePath ) ) + { + convert_backslash( args.splitRendBFIFilePath ); + SplitRendBFIFileReader_open( args.splitRendBFIFilePath, &splitRendBFIReader ); + } if ( !isEmptyString( args.externalOrientationFilePath ) ) { if ( RotationFileReader_open( args.externalOrientationFilePath, &externalOrientationFileReader ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error opening file: %s\n", args.externalOrientationFilePath ); - exit( -1 ); + fprintf( stderr, "\nError opening file: %s\n", args.externalOrientationFilePath ); + goto cleanup; } } - 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 ) ) { if ( RenderConfigReader_open( args.renderConfigFilePath, &renderConfigReader ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error opening file: %s\n", args.renderConfigFilePath ); - exit( -1 ); + fprintf( stderr, "\nError opening file: %s\n", args.renderConfigFilePath ); + goto cleanup; } } @@ -804,21 +895,21 @@ int main( { fprintf( stderr, "\nInvalid configuration - Merging to MASA output requires MASA input and at least one another input to be present\n" ); fprintf( stderr, "\nMASA input is missing\n" ); - exit( -1 ); + goto cleanup; } if ( args.inConfig.numAudioObjects == 0 && args.inConfig.numMultiChannelBuses == 0 && args.inConfig.numAmbisonicsBuses == 0 ) { fprintf( stderr, "\nInvalid configuration - Merging to MASA output requires MASA input and at least one another input to be present\n" ); fprintf( stderr, "\nNo object, multi-channel, or Ambisonic input present.\n" ); - exit( -1 ); + goto cleanup; } } if ( AudioFileReader_open( &audioReader, audioFilePath ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error opening file: %s\n", audioFilePath ); - exit( -1 ); + fprintf( stderr, "\nError opening file: %s\n", audioFilePath ); + goto cleanup; } int32_t inFileSampleRate = 0; @@ -835,37 +926,149 @@ int main( /* else if sampling rate given on command line, compare with wav file */ else if ( inFileSampleRate != args.sampleRate ) { - fprintf( stderr, "Sampling rate mismatch: %d Hz requested, but %d Hz found in file %s\n", args.sampleRate, inFileSampleRate, args.inputFilePath ); - exit( -1 ); + fprintf( stderr, "\nSampling rate mismatch: %d Hz requested, but %d Hz found in file %s\n", args.sampleRate, inFileSampleRate, args.inputFilePath ); + goto cleanup; } break; case IVAS_ERR_SAMPLING_RATE_UNKNOWN: /* Returned when input is raw PCM */ if ( args.sampleRate == 0 ) { - fprintf( stderr, "Sampling rate must be specified on command line when using raw PCM input\n" ); - exit( -1 ); + fprintf( stderr, "\nSampling rate must be specified on command line when using raw PCM input\n" ); + goto cleanup; } break; default: - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError: %s\n", ivas_error_to_string( error ) ); + goto cleanup; + ; } int16_t inFileNumChannels = 0; error = AudioFileReader_getNumChannels( audioReader, &inFileNumChannels ); if ( error != IVAS_ERR_OK && error != IVAS_ERR_NUM_CHANNELS_UNKNOWN ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nAudioFileReader_getNumChannels failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } + const int16_t frameSize_smpls = (int16_t) ( ( args.render_framesize ) * args.sampleRate * 5 / ( 1000 ) ); 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 ); + fprintf( stderr, "\nError opening renderer handle: %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + + if ( !isEmptyString( args.customHrtfFilePath ) ) + { + if ( hrtfFileReader_open( args.customHrtfFilePath, &hrtfFileReader ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError opening file: %s\n", args.customHrtfFilePath ); + goto cleanup; + } + + 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 ) + { + 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 ); + } + } + + + 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 ) + { + 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 ); + } + } + + 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 ); + } + } + } + + + 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 ); + } + } + + hrtfFileReader_close( &hrtfFileReader ); } fprintf( stdout, "Input audio file: %s\n", args.inputFilePath ); @@ -906,15 +1109,14 @@ int main( if ( ( error = IVAS_REND_PrintConfig( hIvasRend ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\n IVAS_REND_PrintConfig failed: %s\n\n", ivas_error_to_string( error ) ); - // goto cleanup; - exit( -1 ); + goto cleanup; } /* === Configure === */ if ( ( error = IVAS_REND_InitConfig( hIvasRend, args.outConfig.audioConfig ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in Renderer Config Init\n" ); - exit( -1 ); + fprintf( stderr, "\nError in Renderer Config Init: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } @@ -923,23 +1125,23 @@ int main( IVAS_RENDER_CONFIG_DATA renderConfig; /* sanity check */ - 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 ) ) + 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 only supported for binaural output configurations. Exiting. \n" ); - exit( -1 ); + 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" ); + goto cleanup; } if ( ( error = IVAS_REND_GetRenderConfig( hIvasRend, &renderConfig ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "\nIVAS_DEC_GetRenderConfig failed\n" ); - exit( -1 ); + fprintf( stderr, "\nIVAS_DEC_GetRenderConfig failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } if ( RenderConfigReader_read( renderConfigReader, args.renderConfigFilePath, &renderConfig ) != IVAS_ERR_OK ) { - fprintf( stderr, "Failed to read renderer configuration from file %s\n", args.renderConfigFilePath ); - exit( -1 ); + fprintf( stderr, "\nFailed to read renderer configuration from file %s\n", args.renderConfigFilePath ); + goto cleanup; } if ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) @@ -948,29 +1150,36 @@ int main( { if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK ) { - fprintf( stderr, "Invalid room acoustics configuration parameters\n\n" ); - exit( -1 ); + fprintf( stderr, "\nInvalid room acoustics configuration parameters\n\n" ); + goto cleanup; } } else { - fprintf( stderr, "Failed to get acoustic environment with ID: %d\n\n", args.acousticEnvironmentId ); - exit( -1 ); + fprintf( stderr, "\nFailed to get acoustic environment with ID: %d\n\n", args.acousticEnvironmentId ); + goto cleanup; } renderConfig.roomAcoustics.override = 1; } + /* 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; + if ( ( error = IVAS_REND_FeedRenderConfig( hIvasRend, renderConfig ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "\nIVAS_DEC_FeedRenderConfig failed\n" ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_FeedRenderConfig failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } + + CLDFBframeSize_smpls = frameSize_smpls * 2; + cldfb_in_flag = get_cldfb_in_flag( args.outConfig.audioConfig, &renderConfig ); } if ( ( error = IVAS_REND_SetOrientationTrackingMode( hIvasRend, args.orientation_tracking ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in IVAS_REND_SetOrientationTrackingMode(): %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError in IVAS_REND_SetOrientationTrackingMode(): %s\n", ivas_error_to_string( error ) ); + goto cleanup; } /* Set up output custom layout configuration */ @@ -980,8 +1189,8 @@ int main( floatToFixed_arrL_app( args.outConfig.outSetupCustom.elevation, args.outConfig.outSetupCustom.elevation_fx, Q22, IVAS_MAX_OUTPUT_CHANNELS ); if ( ( error = IVAS_REND_ConfigureCustomOutputLoudspeakerLayout( hIvasRend, args.outConfig.outSetupCustom ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in IVAS_REND_ConfigureCustomOutputLoudspeakerLayout(): %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError in IVAS_REND_ConfigureCustomOutputLoudspeakerLayout(): %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } @@ -991,8 +1200,8 @@ int main( MasaFileWriter_open( args.outputFilePath, true, &masaWriter ); /* No delay for audio in renderer, so calling metadata writer in delayCompensated mode, i.e., no delay applied to meta */ if ( masaWriter == NULL ) { - fprintf( stderr, "Could not open MASA metadata file %s\n", args.outputFilePath ); - exit( -1 ); + fprintf( stderr, "\nCould not open MASA metadata file %s\n", args.outputFilePath ); + goto cleanup; } } @@ -1001,14 +1210,14 @@ int main( { if ( ( error = IVAS_REND_SetTotalNumberOfObjects( hIvasRend, args.inConfig.numAudioObjects ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in IVAS_REND_SetTotalNumberOfObjects(): %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError in IVAS_REND_SetTotalNumberOfObjects(): %s\n", ivas_error_to_string( error ) ); + goto cleanup; } Word32 var1 = (Word32) ( args.syncMdDelay ); IF( ( error = IVAS_REND_SetIsmMetadataDelay( hIvasRend, var1 ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in IVAS_REND_SetIsmMetadataDelay(): %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError in IVAS_REND_SetIsmMetadataDelay(): %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } @@ -1019,8 +1228,8 @@ int main( { if ( ( error = parseLfePanMtxFile( args.inLfePanningMatrixFile, &lfePanMatrix ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } @@ -1050,16 +1259,16 @@ int main( { IF( ( error = IVAS_REND_AddInput_fx( hIvasRend, args.inConfig.multiChannelBuses[i].audioConfig, &mcIds[i] ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_AddInput failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } gain_fx = (Word32) ( ( args.inputGainGlobal * dBToLin( args.inConfig.multiChannelBuses[i].gain_dB ) ) * ( 1u << 30 ) ); IF( ( error = IVAS_REND_SetInputGain_fx( hIvasRend, mcIds[i], gain_fx ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_SetInputGain failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } if ( args.inConfig.multiChannelBuses[i].audioConfig == IVAS_AUDIO_CONFIG_LS_CUSTOM ) @@ -1068,8 +1277,8 @@ int main( floatToFixed_arrL_app( args.inConfig.inSetupCustom.elevation, args.inConfig.inSetupCustom.elevation_fx, Q22, IVAS_MAX_OUTPUT_CHANNELS ); if ( ( error = IVAS_REND_ConfigureCustomInputLoudspeakerLayout( hIvasRend, mcIds[i], args.inConfig.inSetupCustom ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in IVAS_REND_ConfigureCustomInputLoudspeakerLayout(): %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError in IVAS_REND_ConfigureCustomInputLoudspeakerLayout(): %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } @@ -1078,7 +1287,7 @@ int main( { if ( args.lfePanningEnabled ) { - fprintf( stderr, "Warning: LFE position specified as well as panning matrix! Ignoring position and using gains from panning matrix\n" ); + fprintf( stderr, "\nWarning: LFE position specified as well as panning matrix! Ignoring position and using gains from panning matrix\n" ); args.lfePanningEnabled = false; } @@ -1089,8 +1298,8 @@ int main( IF( ( error = IVAS_REND_SetInputLfeMtx_fx( hIvasRend, mcIds[i], (const IVAS_REND_LfePanMtx_fx *) &lfePanMatrix_fx ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_SetInputLfeMtx failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } /* set panning gains for input LFE */ @@ -1099,8 +1308,8 @@ int main( Word32 inputGain = (Word32) ( args.lfeConfigGain * ( 1u << 31 ) ); IF( ( error = IVAS_REND_SetInputLfePos_fx( hIvasRend, mcIds[i], inputGain, (Word16) args.lfeConfigAzimuth, (Word16) args.lfeConfigElevation ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_SetInputLfePos failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } else @@ -1113,8 +1322,8 @@ int main( { if ( ( error = parseLfePanMtxFile( lfeRoutingConfigs[i]->lfe_routing_mtx, &lfePanMatrix ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nparseLfePanMtxFile failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } FOR( Word16 k = 0; k < IVAS_MAX_OUTPUT_CHANNELS; k++ ) @@ -1124,8 +1333,8 @@ int main( if ( ( error = IVAS_REND_SetInputLfeMtx_fx( hIvasRend, mcIds[i], (const IVAS_REND_LfePanMtx_fx *) &lfePanMatrix_fx ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_SetInputLfeMtx failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } /* set position based gains */ @@ -1134,8 +1343,8 @@ int main( Word32 inputGain = (Word32) ( lfeRoutingConfigs[i]->lfe_gain_dB * ( 1u << 31 ) ); IF( ( error = IVAS_REND_SetInputLfePos_fx( hIvasRend, mcIds[i], inputGain, (Word16) lfeRoutingConfigs[i]->lfe_azi, (Word16) lfeRoutingConfigs[i]->lfe_ele ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_SetInputLfePos failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } } @@ -1146,15 +1355,15 @@ int main( { IF( ( error = IVAS_REND_AddInput_fx( hIvasRend, IVAS_AUDIO_CONFIG_OBA, &ismIds[i] ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_AddInput: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } gain_fx = (Word32) ( args.inputGainGlobal * dBToLin( args.inConfig.audioObjects[i].gain_dB ) * ( 1u << 30 ) ); IF( ( error = IVAS_REND_SetInputGain_fx( hIvasRend, ismIds[i], gain_fx ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_SetInputGain failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } /* With MASA output, all objects are handled at once, so add only one input having all objects in it */ @@ -1168,15 +1377,15 @@ int main( { IF( ( error = IVAS_REND_AddInput_fx( hIvasRend, args.inConfig.ambisonicsBuses[i].audioConfig, &sbaIds[i] ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_AddInput failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } gain_fx = (Word32) ( args.inputGainGlobal * dBToLin( args.inConfig.ambisonicsBuses[i].gain_dB ) * ( 1u << 30 ) ); IF( ( error = IVAS_REND_SetInputGain_fx( hIvasRend, sbaIds[i], gain_fx ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_SetInputGain failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } @@ -1184,15 +1393,15 @@ int main( { IF( ( error = IVAS_REND_AddInput_fx( hIvasRend, args.inConfig.masaBuses[i].audioConfig, &masaIds[i] ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_AddInput failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } gain_fx = (Word32) ( ( args.inputGainGlobal * dBToLin( args.inConfig.masaBuses[i].gain_dB ) ) * ( 1u << 30 ) ); IF( ( error = IVAS_REND_SetInputGain_fx( hIvasRend, masaIds[i], gain_fx ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_SetInputGain failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } @@ -1200,8 +1409,8 @@ int main( if ( inFileNumChannels != 0 /* inFileNumChannels is 0 with raw PCM input */ && totalNumInChannels != inFileNumChannels ) { - fprintf( stderr, "Number of channels in input file does not match selected configuration\n" ); - exit( -1 ); + fprintf( stderr, "\nNumber of channels in input file does not match selected configuration\n" ); + goto cleanup; } for ( i = 0; i < args.inConfig.numMasaBuses; ++i ) @@ -1212,37 +1421,159 @@ int main( } } - int16_t numOutChannels; + Word16 numOutChannels; if ( ( error = IVAS_REND_NumOutChannels( hIvasRend, &numOutChannels ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in IVAS_REND_NumOutChannels(): %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError in IVAS_REND_NumOutChannels(): %s\n", ivas_error_to_string( error ) ); + goto cleanup; } + if ( cldfb_in_flag ) + { + if ( ( error = IVAS_REND_openCldfb( cldfbAna, cldfbSyn, totalNumInChannels, numOutChannels, args.sampleRate ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_REND_openCldfb(): %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + } - if ( AudioFileWriter_open( &audioWriter, args.outputFilePath, args.sampleRate, numOutChannels ) != IVAS_ERR_OK ) + if ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) { - fprintf( stderr, "Failed to open file: %s\n", args.outputFilePath ); - exit( -1 ); + + IVAS_REND_GetSplitRendBitstreamHeader( hIvasRend, + &bitsBuffer.config.codec, + &bitsBuffer.config.poseCorrection, + &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 ) + { + fprintf( stderr, "\nUnable to get delay of renderer!\n" ); + goto cleanup; + } + + if ( ( error = split_rend_writer_open( &hSplitRendFileReadWrite, + args.outputFilePath, + delayNumSamples_temp, + delayTimeScale_temp, + bitsBuffer.config.codec, + bitsBuffer.config.poseCorrection, + bitsBuffer.config.codec_frame_size_ms, + bitsBuffer.config.isar_frame_size_ms, + args.sampleRate, + bitsBuffer.config.lc3plus_highres ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nCould not open split rend metadata file %s\n", args.outputFilePath ); + goto cleanup; + } + audioWriter = NULL; + } + else + { + if ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + + IVAS_REND_GetSplitRendBitstreamHeader( hIvasRend, + &bitsBuffer.config.codec, + &bitsBuffer.config.poseCorrection, + &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 ) + { + fprintf( stderr, "\nUnable to get delay of renderer!\n" ); + goto cleanup; + } + + if ( ( error = split_rend_writer_open( &hSplitRendFileReadWrite, + args.outMetadataFilePath, + delayNumSamples_temp, + delayTimeScale_temp, + bitsBuffer.config.codec, + bitsBuffer.config.poseCorrection, + bitsBuffer.config.codec_frame_size_ms, + bitsBuffer.config.isar_frame_size_ms, + args.sampleRate, + bitsBuffer.config.lc3plus_highres ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nCould not open split rend metadata file %s\n", args.outMetadataFilePath ); + goto cleanup; + } + } + + if ( AudioFileWriter_open( &audioWriter, args.outputFilePath, args.sampleRate, numOutChannels ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nFailed to open file: %s\n", args.outputFilePath ); + goto cleanup; + } } inBufferSize = frameSize_smpls * totalNumInChannels; outBufferSize = frameSize_smpls * numOutChannels; inpInt16Buffer = malloc( inBufferSize * sizeof( int16_t ) ); - 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 ) ); + if ( cldfb_in_flag == 0 ) + { + 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; + } + else + { + inFloatBuffer = malloc( CLDFBframeSize_smpls * totalNumInChannels * sizeof( float ) ); + outInt16Buffer = malloc( outBufferSize * sizeof( int16_t ) ); + outInt32Buffer = malloc( CLDFBframeSize_smpls * totalNumInChannels * sizeof( Word32 ) ); + inInt32Buffer = malloc( CLDFBframeSize_smpls * totalNumInChannels * sizeof( Word32 ) ); + outFloatBuffer = malloc( CLDFBframeSize_smpls * totalNumInChannels * sizeof( float ) ); + + inBuffer.config.numSamplesPerChannel = (int16_t) CLDFBframeSize_smpls; + inBuffer.config.numChannels = (int16_t) totalNumInChannels; + + outBuffer.config.numSamplesPerChannel = (int16_t) CLDFBframeSize_smpls; + outBuffer.config.numChannels = (int16_t) numOutChannels; + outBuffer.data_fx = outInt32Buffer; + inBuffer.data_fx = inInt32Buffer; + } + + inBuffer.config.is_cldfb = cldfb_in_flag; + outBuffer.config.is_cldfb = cldfb_in_flag; + - inBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls; - inBuffer.config.numChannels = (int16_t) totalNumInChannels; + memset( outBuffer.data_fx, 0, outBuffer.config.numSamplesPerChannel * outBuffer.config.numChannels * sizeof( Word32 ) ); + + if ( is_split_pre_rend_mode( &args ) ) + { + bitsBufferSize = SPLIT_REND_BITS_BUFF_SIZE; + } + else + { + bitsBufferSize = 0; + } + + if ( bitsBufferSize > 0 ) + { + bitsBufferData = malloc( bitsBufferSize * sizeof( uint8_t ) ); + } + else + { + bitsBufferData = NULL; + } + + bitsBuffer.bits = bitsBufferData; + bitsBuffer.config.bitsRead = 0; + bitsBuffer.config.bitsWritten = 0; + bitsBuffer.config.bufLenInBytes = bitsBufferSize; - outBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls; - outBuffer.config.numChannels = (int16_t) numOutChannels; - outBuffer.data_fx = outInt32Buffer; - inBuffer.data_fx = inInt32Buffer; #ifdef WMOPS reset_stack(); reset_wmops(); @@ -1268,23 +1599,27 @@ int main( num_in_channels = inBuffer.config.numChannels; const bool isCurrentFrameMultipleOf20ms = frame % ( 4 / args.render_framesize ) == 0; + numSamplesRead = 0; + /* Read the input data */ if ( ( error = AudioFileReader_read( audioReader, inpInt16Buffer, (int16_t) inBufferSize, &numSamplesRead ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError reading from file %s\n", audioFilePath ); - exit( -1 ); + goto cleanup; } - if ( numSamplesRead == 0 && splitBinNeedsNewFrame ) + if ( numSamplesRead == 0 ) { /* end of input data */ break; } /* Convert from int to float and from interleaved to packed */ - convertInputBuffer( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inFloatBuffer ); + Word16 Q_out; *outBuffer.pq_fact = 16 - ( gd_bits ); - convertInputBuffer_fx( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inInt32Buffer, *outBuffer.pq_fact ); + 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; + int16_t num_subframes, sf_idx; num_subframes = (int16_t) args.render_framesize; @@ -1297,13 +1632,13 @@ int main( IVAS_VECTOR3 listenerPos, refPos; if ( ( error = Vector3PairFileReader_read( referenceVectorReader, &listenerPos, &refPos ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nVector3PairFileReader_read failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } if ( ( error = IVAS_REND_SetReferenceVector( hIvasRend, listenerPos, refPos ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_SetReferenceVector failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } /* Read from reference rotation trajectory file if specified */ @@ -1314,14 +1649,14 @@ int main( IVAS_QUATERNION quaternions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; if ( ( error = HeadRotationFileReading( referenceRotReader, &quaternions[sf_idx], NULL ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in Head Rotation File Reading: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError in Head Rotation File Reading: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } if ( ( error = IVAS_REND_SetReferenceRotation( hIvasRend, quaternions[sf_idx] ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error setting Reference Rotation: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError setting Reference Rotation: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } } @@ -1337,14 +1672,14 @@ int main( if ( ( error = HeadRotationFileReading( headRotReader, &headRot, &Pos ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in Head Rotation File Reading: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError in Head Rotation File Reading: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } - if ( ( error = IVAS_REND_SetHeadRotation( hIvasRend, headRot, Pos, sf_idx ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_REND_SetHeadRotation( hIvasRend, headRot, Pos, DEFAULT_AXIS, sf_idx ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error setting Head Rotation: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError setting Head Rotation: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } } @@ -1352,12 +1687,11 @@ int main( { if ( ( error = IVAS_REND_DisableHeadRotation( hIvasRend ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error disabling head rotation: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError disabling head rotation: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } - /* Read from external orientation file if specified */ if ( externalOrientationFileReader != NULL ) { @@ -1370,16 +1704,16 @@ int main( { if ( ( error = ExternalOrientationFileReading( externalOrientationFileReader, &quatBuffer[i], &enableHeadRotation[i], &enableExternalOrientation[i], &enableRotationInterpolation[i], &numFramesToTargetOrientation[i] ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in External Orientation File Reading: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError in External Orientation File Reading: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) { if ( ( error = IVAS_REND_SetExternalOrientation( hIvasRend, &quatBuffer[sf_idx], enableHeadRotation[sf_idx], enableExternalOrientation[sf_idx], enableRotationInterpolation[sf_idx], numFramesToTargetOrientation[sf_idx], sf_idx ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error setting External Orientation: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError setting External Orientation: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } } @@ -1388,22 +1722,23 @@ int main( if ( ( error = IVAS_REND_CombineHeadAndExternalOrientation( hIvasRend ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error combining external and head orientations: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError combining external and head orientations: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } for ( i = 0; i < args.inConfig.numMultiChannelBuses; ++i ) { if ( ( error = IVAS_REND_GetInputNumChannels( hIvasRend, mcIds[i], &numChannels ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_GetInputNumChannels failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } + IVAS_REND_ReadOnlyAudioBuffer tmpBuffer = getReadOnlySubBuffer( inBuffer, (int16_t) args.inConfig.multiChannelBuses[i].inputChannelIndex, numChannels ); if ( ( error = IVAS_REND_FeedInputAudio_fx( hIvasRend, mcIds[i], tmpBuffer ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_FeedInputAudio failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } @@ -1416,15 +1751,15 @@ int main( IVAS_REND_ReadOnlyAudioBuffer tmpBuffer = getReadOnlySubBuffer( inBuffer, (int16_t) args.inConfig.audioObjects[i].inputChannelIndex, args.inConfig.numAudioObjects ); if ( ( error = IVAS_REND_FeedInputAudio_fx( hIvasRend, ismIds[i], tmpBuffer ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_FeedInputAudio failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } if ( ( error = IVAS_REND_FeedInputObjectMetadataToOMasa( hIvasRend, i, mtdBuffer.positions[i] ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_FeedInputObjectMetadataToOMasa failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } else @@ -1432,14 +1767,14 @@ int main( IVAS_REND_ReadOnlyAudioBuffer tmpBuffer = getReadOnlySubBuffer( inBuffer, (int16_t) args.inConfig.audioObjects[i].inputChannelIndex, 1 ); if ( ( error = IVAS_REND_FeedInputAudio_fx( hIvasRend, ismIds[i], tmpBuffer ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_FeedInputAudio failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } if ( ( error = IVAS_REND_FeedInputObjectMetadata( hIvasRend, ismIds[i], mtdBuffer.positions[i] ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_FeedInputObjectMetadata failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } } @@ -1448,14 +1783,15 @@ int main( { if ( ( error = IVAS_REND_GetInputNumChannels( hIvasRend, sbaIds[i], &numChannels ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_GetInputNumChannels failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } + IVAS_REND_ReadOnlyAudioBuffer tmpBuffer = getReadOnlySubBuffer( inBuffer, (int16_t) args.inConfig.ambisonicsBuses[i].inputChannelIndex, numChannels ); if ( ( error = IVAS_REND_FeedInputAudio_fx( hIvasRend, sbaIds[i], tmpBuffer ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_FeedInputAudio failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } @@ -1463,15 +1799,16 @@ int main( { if ( ( error = IVAS_REND_GetInputNumChannels( hIvasRend, masaIds[i], &numChannels ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_GetInputNumChannels failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } + IVAS_REND_ReadOnlyAudioBuffer tmpBuffer = getReadOnlySubBuffer( inBuffer, (int16_t) args.inConfig.masaBuses[i].inputChannelIndex, numChannels ); IF( ( error = IVAS_REND_FeedInputAudio_fx( hIvasRend, masaIds[i], tmpBuffer ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_FeedInputAudio failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } if ( isCurrentFrameMultipleOf20ms ) @@ -1481,37 +1818,43 @@ int main( /* This will update data in hMasaMetadata[i] */ if ( ( error = MasaFileReader_readNextFrame( masaReaders[i] ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in MASA Metadata File Reading: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError in MASA Metadata File Reading: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } if ( ( error = IVAS_REND_FeedInputMasaMetadata( hIvasRend, masaIds[i], hMasaMetadata[i] ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nIVAS_REND_FeedInputMasaMetadata failed: %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } } } - if ( ( error = IVAS_REND_GetSamples( hIvasRend, outBuffer ) ) != IVAS_ERR_OK ) + if ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { - fprintf( stderr, "Error in getting samples\n" ); - exit( -1 ); + if ( ( error = IVAS_REND_GetSplitBinauralBitstream( hIvasRend, outBuffer, &bitsBuffer ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_REND_GetSplitBinauralBitstream(): %s\n", ivas_error_to_string( error ) ); + goto cleanup; + } + } + else + { + if ( ( error = IVAS_REND_GetSamples( hIvasRend, outBuffer ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_REND_GetSamples()%s\n", ivas_error_to_string( error ) ); + goto cleanup; + } } 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 */ - if ( *outBuffer.pq_fact == 0 ) - { - convertOutputBuffer( outFloatBuffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer ); - } - else - { - convertOutputBuffer_fx( outInt32Buffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer, *outBuffer.pq_fact ); - } + convertOutputBuffer_fx( outInt32Buffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer, cldfb_in_flag, cldfbSyn, *outBuffer.pq_fact ); + if ( delayNumSamples == -1 ) { if ( args.delayCompensationEnabled ) @@ -1519,10 +1862,9 @@ int main( IF( IVAS_REND_GetDelay_fx( hIvasRend, &delayNumSamples, &delayTimeScale ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to get delay of renderer!\n" ); - exit( -1 ); + goto cleanup; } - delayNumSamples_orig = delayNumSamples; } else @@ -1532,27 +1874,43 @@ int main( zeroPad = delayNumSamples; } - if ( delayNumSamples * num_out_channels < outBufferSize ) + if ( is_split_pre_rend_mode( &args ) ) { - if ( AudioFileWriter_write( audioWriter, &outInt16Buffer[delayNumSamples * num_out_channels], outBufferSize - ( delayNumSamples * num_out_channels ) ) != IVAS_ERR_OK ) + if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, bitsBuffer.bits, &bitsBuffer.config.bitsRead, + &bitsBuffer.config.bitsWritten ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error writing audio file %s\n", args.outputFilePath ); - exit( -1 ); + fprintf( stderr, "\nUnable to write to bitstream file!\n" ); + goto cleanup; } - delayNumSamples = 0; } - else + + if ( audioWriter != NULL ) { - delayNumSamples -= (int16_t) ( outBufferSize / num_out_channels ); + if ( delayNumSamples * num_out_channels < outBufferSize ) + { + if ( AudioFileWriter_write( audioWriter, &outInt16Buffer[delayNumSamples * num_out_channels], outBufferSize - ( delayNumSamples * num_out_channels ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError writing audio file %s\n", args.outputFilePath ); + goto cleanup; + } + delayNumSamples = 0; + } + else + { + delayNumSamples -= (Word16) ( outBufferSize / num_out_channels ); + } } + bitsBuffer.config.bitsRead = 0; + bitsBuffer.config.bitsWritten = 0; + /* Write MASA metadata for MASA outputs */ if ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_MASA1 || args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_MASA2 ) { IVAS_REND_AudioConfigType inputType1; IVAS_REND_AudioConfigType inputType2; IVAS_MASA_DECODER_EXT_OUT_META_HANDLE hMetaOutput; - int16_t numInputFormats; + Word16 numInputFormats; inputType1 = IVAS_REND_AUDIO_CONFIG_TYPE_UNKNOWN; inputType2 = IVAS_REND_AUDIO_CONFIG_TYPE_UNKNOWN; @@ -1593,8 +1951,8 @@ int main( { if ( ( error = IVAS_REND_GetMasaMetadata( hIvasRend, &hMetaOutput, inputType1 ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in IVAS_REND_GetMasaMetadata(): %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError in IVAS_REND_GetMasaMetadata(): %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } else @@ -1604,8 +1962,8 @@ int main( inputType2 = IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED; if ( ( error = IVAS_REND_MergeMasaMetadata( hIvasRend, &hMetaOutput, inputType1, inputType2 ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in IVAS_REND_MergeMasaMetadata(): %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError in IVAS_REND_MergeMasaMetadata(): %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } @@ -1614,8 +1972,8 @@ int main( inputType2 = IVAS_REND_AUDIO_CONFIG_TYPE_MASA; if ( ( error = IVAS_REND_MergeMasaMetadata( hIvasRend, &hMetaOutput, inputType1, inputType2 ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in IVAS_REND_MergeMasaMetadata(): %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError in IVAS_REND_MergeMasaMetadata(): %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } @@ -1624,8 +1982,8 @@ int main( inputType2 = IVAS_REND_AUDIO_CONFIG_TYPE_OBJECT_BASED; if ( ( error = IVAS_REND_MergeMasaMetadata( hIvasRend, &hMetaOutput, inputType1, inputType2 ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error in IVAS_REND_MergeMasaMetadata(): %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + fprintf( stderr, "\nError in IVAS_REND_MergeMasaMetadata(): %s\n", ivas_error_to_string( error ) ); + goto cleanup; } } } @@ -1649,23 +2007,26 @@ int main( } /* add zeros at the end to have equal length of synthesized signals */ - for ( zeroPadToWrite = zeroPad; zeroPadToWrite > frameSize_smpls; zeroPadToWrite -= frameSize_smpls ) + if ( audioWriter != NULL ) { - memset( outInt16Buffer, 0, outBufferSize * sizeof( int16_t ) ); - if ( ( error = AudioFileWriter_write( audioWriter, outInt16Buffer, outBufferSize ) ) != IVAS_ERR_OK ) + for ( zeroPadToWrite = zeroPad; zeroPadToWrite > frameSize_smpls; zeroPadToWrite -= frameSize_smpls ) { - fprintf( stderr, "\nOutput audio file writer error\n" ); - exit( -1 ); + memset( outInt16Buffer, 0, outBufferSize * sizeof( int16_t ) ); + if ( ( error = AudioFileWriter_write( audioWriter, outInt16Buffer, outBufferSize ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nOutput audio file writer error\n" ); + goto cleanup; + } } - } - memset( outInt16Buffer, 0, zeroPadToWrite * outBuffer.config.numChannels * sizeof( int16_t ) ); - if ( ( error = AudioFileWriter_write( audioWriter, outInt16Buffer, zeroPadToWrite * outBuffer.config.numChannels ) ) != IVAS_ERR_OK ) - { - fprintf( stderr, "\nOutput audio file writer error\n" ); - exit( -1 ); + memset( outInt16Buffer, 0, zeroPadToWrite * outBuffer.config.numChannels * sizeof( int16_t ) ); + if ( ( error = AudioFileWriter_write( audioWriter, outInt16Buffer, zeroPadToWrite * outBuffer.config.numChannels ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nOutput audio file writer error\n" ); + goto cleanup; + } + zeroPadToWrite = 0; } - zeroPadToWrite = 0; if ( args.inConfig.numAudioObjects != 0 && ( args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL || args.outConfig.audioConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) @@ -1680,6 +2041,13 @@ int main( fprintf( stdout, "\n\nRendering of %d frames finished\n\n", frame ); + /*------------------------------------------------------------------------------------------* + * Close files and deallocate resources + *------------------------------------------------------------------------------------------*/ + + mainFailed = false; /* This will stay set to true if cleanup is reached via a goto due to an error */ + +cleanup: /* === Close === */ free( inpInt16Buffer ); @@ -1688,11 +2056,23 @@ int main( free( outFloatBuffer ); free( outInt32Buffer ); free( inInt32Buffer ); + + if ( bitsBufferData != NULL ) + { + free( bitsBufferData ); + } for ( i = 0; i < RENDERER_MAX_MASA_INPUTS; ++i ) { MasaFileReader_close( &masaReaders[i] ); } + if ( cldfb_in_flag ) + { + IVAS_REND_closeCldfb( cldfbAna, cldfbSyn ); + } + + split_rend_reader_writer_close( &hSplitRendFileReadWrite ); + SplitRendBFIFileReader_close( &splitRendBFIReader ); for ( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i ) { @@ -1705,7 +2085,15 @@ 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 ); + } + destroy_hrtf_statistics( hHrtfStatistics ); IVAS_REND_Close( &hIvasRend ); IsmPositionProvider_close( positionProvider ); RenderConfigReader_close( &renderConfigReader ); @@ -1715,7 +2103,7 @@ int main( print_mem( NULL ); #endif - return 0; + return mainFailed ? -1 : 0; } @@ -1998,8 +2386,8 @@ static bool parseOrientationTracking( static IVAS_AUDIO_CONFIG parseAudioConfig( const char *configString ) { - char charBuf[21]; - charBuf[20] = '\0'; + char charBuf[25]; + charBuf[24] = '\0'; strncpy( charBuf, configString, sizeof( charBuf ) - 1 ); charBuf[sizeof( charBuf ) - 1] = '\0'; @@ -2074,6 +2462,14 @@ static IVAS_AUDIO_CONFIG parseAudioConfig( { return IVAS_AUDIO_CONFIG_BINAURAL; } + if ( strcmp( charBuf, "BINAURAL_SPLIT_PCM" ) == 0 ) + { + return IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM; + } + if ( strcmp( charBuf, "BINAURAL_SPLIT_CODED" ) == 0 ) + { + return IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED; + } if ( strcmp( charBuf, "BINAURAL_ROOM_IR" ) == 0 ) { return IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR; @@ -2206,6 +2602,8 @@ static CmdlnArgs defaultArgs( args.numInMetadataFiles = 0; clearString( args.headRotationFilePath ); + clearString( args.outMetadataFilePath ); + clearString( args.splitRendBFIFilePath ); clearString( args.referenceVectorFilePath ); clearString( args.referenceRotationFilePath ); clearString( args.customHrtfFilePath ); @@ -2298,6 +2696,14 @@ static void parseOption( assert( numOptionValues == 1 ); strncpy( args->headRotationFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 ); break; + case CmdLnOptionId_outputMetadata: + assert( numOptionValues == 1 ); + strncpy( args->outMetadataFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 ); + break; + case CmdLnOptionId_SplitRendBFIFile: + assert( numOptionValues == 1 ); + strncpy( args->splitRendBFIFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 ); + break; case CmdLnOptionId_referenceVectorFile: assert( numOptionValues == 1 ); strncpy( args->referenceVectorFilePath, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 ); @@ -3353,6 +3759,8 @@ static void printSupportedAudioConfigs( void ) "ISMxMASAy (OMASA, input only)", "MASAx", "BINAURAL (output only)", + "BINAURAL_SPLIT_PCM", + "BINAURAL_SPLIT_CODED", "BINAURAL_ROOM_IR (output only)", "BINAURAL_ROOM_REVERB (output only)", "META (Scene description, input only)", @@ -3438,44 +3846,6 @@ static ivas_error parseLfePanMtxFile( return IVAS_ERR_OK; } -/*--------------------------------------------------------------------------* - * convertInputBuffer() - * - * Convert input buffer from WAV/PCM file (int16_t, interleaved) to a format - * accepted by the renderer (float, packed) - *--------------------------------------------------------------------------*/ - -static void convertInputBuffer( - const int16_t *intBuffer, - const int16_t numIntSamplesPerChannel, - const int16_t numFloatSamplesPerChannel, - const int16_t numChannels, - float *floatBuffer ) -{ - int16_t chnl, smpl, i; - - i = 0; - - for ( smpl = 0; smpl < numFloatSamplesPerChannel; ++smpl ) - { - for ( chnl = 0; chnl < numChannels; ++chnl ) - { - if ( i < numIntSamplesPerChannel ) - { - floatBuffer[chnl * numFloatSamplesPerChannel + smpl] = (float) intBuffer[i]; - } - else - { - floatBuffer[chnl * numFloatSamplesPerChannel + smpl] = 0.f; - } - - ++i; - } - } - - return; -} - /*--------------------------------------------------------------------------* * convertInputBuffer() * @@ -3489,42 +3859,92 @@ static void convertInputBuffer_fx( const Word16 numFloatSamplesPerChannel, const Word16 numChannels, Word32 *Word32Buffer, - Word16 in_q_factor ) + Word16 in_q_factor, + const int16_t cldfb_in_flag, + IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna, + Word16 *out_q_factor ) { Word16 chnl, smpl, i; i = 0; - FOR( smpl = 0; smpl < numFloatSamplesPerChannel; ++smpl ) + IF( cldfb_in_flag ) { - FOR( chnl = 0; chnl < numChannels; ++chnl ) + Word16 slotIdx, numCldfbBands, numFloatPcmSamples; + Word32 fIn[IVAS_MAX_OUTPUT_CHANNELS][IVAS_MAX_FRAME_SIZE]; + + numFloatPcmSamples = numFloatSamplesPerChannel >> 1; + numCldfbBands = numFloatPcmSamples / IVAS_CLDFB_NO_COL_MAX; + + /* CLDFB Analysis*/ + assert( numIntSamplesPerChannel <= IVAS_MAX_OUTPUT_CHANNELS * IVAS_MAX_FRAME_SIZE ); + FOR( smpl = 0; smpl < numFloatPcmSamples; ++smpl ) { - IF( i < numIntSamplesPerChannel ) + FOR( chnl = 0; chnl < numChannels; ++chnl ) { - Word32Buffer[chnl * numFloatSamplesPerChannel + smpl] = L_shl( (Word32) intBuffer[i], in_q_factor ); + IF( i < numIntSamplesPerChannel ) + { + fIn[chnl][smpl] = L_shl( (Word32) intBuffer[i], Q11 ); + } + ELSE + { + fIn[chnl][smpl] = 0; + } + + ++i; } - ELSE + } + + FOR( chnl = 0; chnl < numChannels; ++chnl ) + { + FOR( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) { - Word32Buffer[chnl * numFloatSamplesPerChannel + smpl] = 0; + IVAS_REND_cldfbAnalysis_ts_wrapper( &fIn[chnl][numCldfbBands * slotIdx], + &Word32Buffer[( chnl * numFloatSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands )], + &Word32Buffer[numCldfbBands + ( chnl * numFloatSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands )], + numCldfbBands, cldfbAna[chnl], Q11, out_q_factor ); } + } + } + ELSE + { + FOR( smpl = 0; smpl < numFloatSamplesPerChannel; ++smpl ) + { + FOR( chnl = 0; chnl < numChannels; ++chnl ) + { + IF( i < numIntSamplesPerChannel ) + { + Word32Buffer[chnl * numFloatSamplesPerChannel + smpl] = L_shl( (Word32) intBuffer[i], in_q_factor ); + } + ELSE + { + Word32Buffer[chnl * numFloatSamplesPerChannel + smpl] = 0; + } - ++i; + ++i; + } } + *out_q_factor = in_q_factor; } return; } + + /*--------------------------------------------------------------------------* - * convertOutputBuffer() + * convertOutputBuffer_fx() * - * Convert output buffer from the renderer (Word32, packed) to a format ready - * for writing to a WAV/PCM file (Word16, interleaved) + * Convert output buffer from the renderer (float, packed) to a format ready + * for writing to a WAV/PCM file (int16_t, interleaved) *--------------------------------------------------------------------------*/ + static void convertOutputBuffer_fx( const Word32 *Word32Buffer, const Word16 numSamplesPerChannel, const Word16 numChannels, Word16 *intBuffer, + const Word16 cldfb_in_flag, + IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn, Word16 out_q ) { Word16 chnl, smpl, i; @@ -3532,62 +3952,88 @@ static void convertOutputBuffer_fx( Word32 temp_fx1; i = 0; - FOR( smpl = 0; smpl < numSamplesPerChannel; ++smpl ) + IF( cldfb_in_flag ) { + Word16 slotIdx, numCldfbBands, numPcmSamples, b, temp_out_q = 0; + Word32 fIn[IVAS_MAX_OUTPUT_CHANNELS][IVAS_MAX_FRAME_SIZE]; + Word32 re[IVAS_MAX_OUTPUT_CHANNELS][IVAS_CLDFB_NO_COL_MAX][IVAS_CLDFB_NO_CHANNELS_MAX]; + Word32 im[IVAS_MAX_OUTPUT_CHANNELS][IVAS_CLDFB_NO_COL_MAX][IVAS_CLDFB_NO_CHANNELS_MAX]; + + numPcmSamples = numSamplesPerChannel >> 1; + numCldfbBands = numPcmSamples / IVAS_CLDFB_NO_COL_MAX; + + /* CLDFB Synthesis*/ FOR( chnl = 0; chnl < numChannels; ++chnl ) { - temp_fx = L_add( Word32Buffer[chnl * numSamplesPerChannel + smpl], lshl( 1, ( out_q - 1 ) ) ); - temp_fx1 = L_shr( temp_fx, out_q ); - IF( GT_32( temp_fx1, IVAS_MAX16B_FX ) ) + FOR( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) { - temp_fx1 = IVAS_MAX16B_FX; + FOR( b = 0; b < numCldfbBands; b++ ) + { + re[chnl][slotIdx][b] = Word32Buffer[( chnl * numSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands ) + b]; + im[chnl][slotIdx][b] = Word32Buffer[numCldfbBands + ( chnl * numSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands ) + b]; + move32(); + move32(); + } } - ELSE IF( LT_32( temp_fx1, IVAS_MIN16B_FX ) ) + } + + /* Implement CLDFB synthesis */ + FOR( chnl = 0; chnl < numChannels; ++chnl ) + { + Word32 *RealBuffer[IVAS_CLDFB_NO_COL_MAX]; + Word32 *ImagBuffer[IVAS_CLDFB_NO_COL_MAX]; + + FOR( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) { - temp_fx1 = IVAS_MIN16B_FX; + RealBuffer[slotIdx] = re[chnl][slotIdx]; + ImagBuffer[slotIdx] = im[chnl][slotIdx]; + move32(); + move32(); } - intBuffer[i] = (Word16) temp_fx1; - ++i; + IVAS_REND_cldfbSynthesis_wrapper( RealBuffer, ImagBuffer, &( fIn[chnl][0] ), numCldfbBands * IVAS_CLDFB_NO_COL_MAX, cldfbSyn[chnl], out_q, &temp_out_q ); } - } - return; -} -/*--------------------------------------------------------------------------* - * convertOutputBuffer() - * - * Convert output buffer from the renderer (float, packed) to a format ready - * for writing to a WAV/PCM file (int16_t, interleaved) - *--------------------------------------------------------------------------*/ -static void convertOutputBuffer( - const float *floatBuffer, - const int16_t numSamplesPerChannel, - const int16_t numChannels, - int16_t *intBuffer ) -{ - int16_t chnl, smpl, i; - float temp; - - i = 0; - - for ( smpl = 0; smpl < numSamplesPerChannel; ++smpl ) - { - for ( chnl = 0; chnl < numChannels; ++chnl ) + FOR( smpl = 0; smpl < numPcmSamples; ++smpl ) { - temp = floatBuffer[chnl * numSamplesPerChannel + smpl]; - temp = (float) floor( temp + 0.5f ); - if ( temp > IVAS_MAX16B_FLT ) + FOR( chnl = 0; chnl < numChannels; ++chnl ) { - temp = IVAS_MAX16B_FLT; + temp_fx = L_add( fIn[chnl][smpl], lshl( 1, ( temp_out_q - 1 ) ) ); + temp_fx1 = L_shr( temp_fx, temp_out_q ); + IF( GT_32( temp_fx1, IVAS_MAX16B_FX ) ) + { + temp_fx1 = IVAS_MAX16B_FX; + } + ELSE IF( LT_32( temp_fx1, IVAS_MIN16B_FX ) ) + { + temp_fx1 = IVAS_MIN16B_FX; + } + intBuffer[i] = (Word16) temp_fx1; + ++i; } - else if ( temp < IVAS_MIN16B_FLT ) + } + } + ELSE + { + + FOR( smpl = 0; smpl < numSamplesPerChannel; ++smpl ) + { + FOR( chnl = 0; chnl < numChannels; ++chnl ) { - temp = IVAS_MIN16B_FLT; - } - intBuffer[i] = (int16_t) temp; + temp_fx = L_add( Word32Buffer[chnl * numSamplesPerChannel + smpl], lshl( 1, ( out_q - 1 ) ) ); + temp_fx1 = L_shr( temp_fx, out_q ); + IF( GT_32( temp_fx1, IVAS_MAX16B_FX ) ) + { + temp_fx1 = IVAS_MAX16B_FX; + } + ELSE IF( LT_32( temp_fx1, IVAS_MIN16B_FX ) ) + { + temp_fx1 = IVAS_MIN16B_FX; + } + intBuffer[i] = (Word16) temp_fx1; - ++i; + ++i; + } } } diff --git a/lib_com/cnst.h b/lib_com/cnst.h index 8faa2cb57dc76b84910430a3fda9a179e638c49c..a8eeb1d890485698eb34c8d6fe0a8c97dd9e836b 100644 --- a/lib_com/cnst.h +++ b/lib_com/cnst.h @@ -176,6 +176,7 @@ #define MIN16B_FLT_FX_IN_Q15 -1073741824//Q15 #define PCM16_TO_FLT_FAC 32768.0f #define PCM16_TO_FLT_FAC_FX 32768 //Q0 +#define PCM16_TO_FLT_FAC_FX_Q15 1073741824L //16Q15 #define MDFT_NORM_SCALING ( 1.0f / PCM16_TO_FLT_FAC ) #define MDFT_NORM_SCALING_FX 65536 //Q31 #define LOG2_MDFT_NORM_SCALING_FX -503316448 //Q25 @@ -593,6 +594,7 @@ enum #define FRAMES_PER_SEC 50 #define MAX_PARAM_SPATIAL_SUB_FRAMES_PER_SEC 200 //(FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES) +#define ONE_BY_SUBFRAME_LEN_MS_Q31 (429496730) #define ONE_BY_FRAMES_PER_SEC_Q31 ( 42949673 ) #define FRAMES_PER_SEC_BY_2 (FRAMES_PER_SEC >> 1) #define INV_FRAME_PER_SEC_Q15 656 @@ -792,6 +794,7 @@ enum #define CLDFB_NO_CHANNELS_MAX_FX 30720 /*Q9*/ #define CLDFB_NO_COL_MAX 16 /* CLDFB resampling - max number of CLDFB col., == IVAS_CLDFB_NO_COL_MAX */ #define CLDFB_NO_COL_MAX_LOG2 4 /* To be used for shift operation instead of division */ +#define ONE_BY_CLDFB_NO_COL_MAX_Q31 134217728 #define CLDFB_NO_COL_MAX_SWITCH 6 /* CLDFB resampling - max number of CLDFB col. for switching */ #define CLDFB_NO_COL_MAX_SWITCH_BFI 10 /* CLDFB resampling - max number of CLDFB col. for switching, BFI */ #define CLDFB_OVRLP_MIN_SLOTS 3 /* CLDFB resampling - minimize processing to minimum required for transition frame ACELP->TCX/HQ */ @@ -3059,6 +3062,8 @@ enum #define EVS_2PI_FX_Q27 843314856 /* 2 * pi in Q28 */ #define EVS_PI_BY_2_FX (Word16)(0x3244) // Q13 //#define EVS_PI_FX (Word16)(0x6488) +#define EVS_PI_FX16 (Word16)(0x6488) +#define PI2_FX 1686629713 //Q28 #define LG10 24660 /* 10*log10(2) in Q13 */ @@ -3072,8 +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 */ -#define DEGREE_180 (Word32)(180.0 *ONE_IN_Q23) -#define DEGREE_360 (Word32)(360.0 *ONE_IN_Q23) +#define DEGREE_180 (Word32)(180.0 *ONE_IN_Q22) +#define DEGREE_360 (Word32)(360.0 *ONE_IN_Q22) extern const Word16 Idx2Freq_Tbl[]; #define chk_fs(fs) diff --git a/lib_com/common_api_types.h b/lib_com/common_api_types.h index bc6fd4f1af6f28146c62d4a3d163a421a83fb1e4..33013360eb62747e4ffb9b3ced06e34862bb2caa 100644 --- a/lib_com/common_api_types.h +++ b/lib_com/common_api_types.h @@ -59,6 +59,12 @@ #define IVAS_MAX_PARAM_SPATIAL_SUBFRAMES 4 #define IVAS_ROOM_ABS_COEFF 6 +/* Maximum buffer length (per channel) in samples */ +#define MAX_BUFFER_LENGTH_PER_CHANNEL ( L_FRAME48k ) + +/* Frame size required when rendering to binaural */ +#define BINAURAL_RENDERING_FRAME_SIZE_MS 5 + /*----------------------------------------------------------------------------------* * Common API enum for output audio configurations *----------------------------------------------------------------------------------*/ @@ -136,7 +142,7 @@ typedef struct _IVAS_ISM_METADATA typedef struct { - float w, x, y, z; + // float w, x, y, z; Word32 w_fx, x_fx, y_fx, z_fx; Word16 q_fact; @@ -176,6 +182,7 @@ 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; +typedef struct ivas_hrtfs_statistics_struct *IVAS_DEC_HRTF_STATISTICS_HANDLE; typedef struct cldfb_filter_bank_struct *IVAS_CLDFB_FILTER_BANK_HANDLE; typedef struct ivas_LS_setup_custom *IVAS_LSSETUP_CUSTOM_HANDLE; @@ -210,10 +217,101 @@ typedef struct _IVAS_JBM_TRACE_DATA } IVAS_JBM_TRACE_DATA; +/*----------------------------------------------------------------------------------* + * Split rendering API constants, structures, and enums + *----------------------------------------------------------------------------------*/ + +#define ISAR_MAX_SPLIT_REND_BITRATE 768000 +#define ISAR_MAX_SPLIT_REND_BITS_BUFFER_SIZE_IN_BYTES ( ( ( (int32_t) ISAR_MAX_SPLIT_REND_BITRATE / IVAS_NUM_FRAMES_PER_SEC ) + 7 ) >> 3 ) +#define ISAR_SPLIT_REND_ADDITIONAL_BYTES_TO_READ 1 +#define SPLIT_REND_BITS_BUFF_SIZE ( ISAR_MAX_SPLIT_REND_BITS_BUFFER_SIZE_IN_BYTES + ISAR_SPLIT_REND_ADDITIONAL_BYTES_TO_READ ) + +typedef enum +{ + DEFAULT_AXIS, + YAW, + PITCH, + ROLL, + YAW_PITCH, + YAW_ROLL, + PITCH_ROLL + +} ISAR_SPLIT_REND_ROT_AXIS; + +typedef enum +{ + ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE, + ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB, + +} ISAR_SPLIT_REND_POSE_CORRECTION_MODE; + +typedef enum +{ + ISAR_SPLIT_REND_CODEC_LCLD, + ISAR_SPLIT_REND_CODEC_LC3PLUS, + ISAR_SPLIT_REND_CODEC_DEFAULT, /* Will use LCLD for CLDFB rendering paths and LC3plus for TD rendering paths */ + ISAR_SPLIT_REND_CODEC_NONE + +} ISAR_SPLIT_REND_CODEC; + +typedef enum +{ + ISAR_SPLIT_REND_RENDERER_SELECTION_CREND, + ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV, + ISAR_SPLIT_REND_RENDERER_SELECTION_PARAMBIN, + ISAR_SPLIT_REND_RENDERER_SELECTION_TDREND, + ISAR_SPLIT_REND_RENDERER_SELECTION_DEFAULT, + +} ISAR_SPLIT_REND_RENDERER_SELECTION; + +typedef struct _ISAR_SPLIT_REND_BITS_DATA +{ + uint8_t *bits_buf; + int32_t buf_len; /*size of bits_buf in bytes. This field should be set by allocator of bits_buf*/ + int32_t bits_written; + int32_t bits_read; + int16_t codec_frame_size_ms; + ISAR_SPLIT_REND_CODEC codec; + ISAR_SPLIT_REND_POSE_CORRECTION_MODE pose_correction; + int16_t isar_frame_size_ms; + int16_t lc3plus_highres; + +} 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*/ + 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; + int16_t lc3plus_highres; + +} ISAR_SPLIT_REND_CONFIG_DATA, *ISAR_SPLIT_REND_CONFIG_HANDLE; + /*----------------------------------------------------------------------------------* * Renderer API structures and enums *----------------------------------------------------------------------------------*/ +#ifdef DEBUGGING +typedef enum +{ + IVAS_RENDER_TYPE_OVERRIDE_NONE, + IVAS_RENDER_TYPE_OVERRIDE_CREND, + IVAS_RENDER_TYPE_OVERRIDE_FASTCONV + +} IVAS_RENDER_TYPE_OVERRIDE; +#endif typedef struct _IVAS_ROOM_ACOUSTICS_CONFIG { @@ -242,10 +340,29 @@ typedef struct _IVAS_ROOM_ACOUSTICS_CONFIG typedef struct _IVAS_RENDER_CONFIG { +#ifdef DEBUGGING + IVAS_RENDER_TYPE_OVERRIDE renderer_type_override; +#endif IVAS_ROOM_ACOUSTICS_CONFIG_DATA roomAcoustics; + ISAR_SPLIT_REND_CONFIG_DATA split_rend_config; 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; +typedef struct +{ + int16_t numSamplesPerChannel; + int16_t numChannels; + int16_t is_cldfb; +} IVAS_REND_AudioBufferConfig; + +typedef struct +{ + IVAS_REND_AudioBufferConfig config; + Word16 q_factor; + Word16 *pq_fact; + Word32 *data_fx; + // Word16 Q_data; +} IVAS_REND_AudioBuffer; #endif /* COMMON_API_TYPES_H */ diff --git a/lib_com/delay_comp_fx.c b/lib_com/delay_comp_fx.c index edccca07400e2758d17230e2030c91929269027f..7bc574c3c846ed36d8d88c4a14872456095219b7 100644 --- a/lib_com/delay_comp_fx.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, AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) + 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/enh1632.c b/lib_com/enh1632.c index bac18231eed2314f224537ba36dbb19baf08f159..f397c3432b9dc63b6a376cfb394e3efb50a82bc0 100644 --- a/lib_com/enh1632.c +++ b/lib_com/enh1632.c @@ -616,6 +616,27 @@ Word32 L_rotr( Word32 L_var1, Word16 var2, Word16 *var3 ) } +int16_t norm_ul( uint32_t UL_var1 ) +{ + int16_t var_out; + + if ( UL_var1 == 0 ) + { + var_out = 0; + } + else + { + for ( var_out = 0; UL_var1 < (uint32_t) 0x80000000U; var_out++ ) + { + UL_var1 <<= 1; + } + } + BASOP_CHECK(); + + return ( var_out ); +} + + /***************************************************************************** * * Function Name : L_rotl diff --git a/lib_com/enh1632.h b/lib_com/enh1632.h index 10c10866ae65e278c1b159c4be3273bcb76fbdf3..f91494fb137d799d461cca6afa5bbfa5b160ba39 100644 --- a/lib_com/enh1632.h +++ b/lib_com/enh1632.h @@ -55,6 +55,7 @@ Word16 rotl( Word16 var1, Word16 var2, Word16 *var3 ); Word32 L_rotr( Word32 var1, Word16 var2, Word16 *var3 ); Word32 L_rotl( Word32 var1, Word16 var2, Word16 *var3 ); +Word16 norm_ul( UWord32 UL_var1 ); /***************************************************************************** * diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 18816a94af47d9575c292285a379f6b62287dd5d..5b1d54265c66aac7c75a5d8a85cb0712387044fc 100644 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -362,6 +362,8 @@ typedef enum #define ISM_Q_STEP_BORDER 5.0f #define ISM_Q_STEP_BORDER_FX ( 20971520 ) // Q22 +#define ISM_FEC_MAX 10 + #define ISM_RADIUS_NBITS 6 #define ISM_RADIUS_MIN 0.0f #define ISM_RADIUS_MIN_Q9 0 @@ -1289,7 +1291,7 @@ enum #define MASA_RATIO_TOLERANCE 0.1f #define MASA_RATIO_THRESHOLD 0.1f #define MASA_ANGLE_TOLERANCE 0.5f -#define MASA_RATIO_THRESHOLD_FX 214748365 // 0.1 in Q31 +#define MASA_RATIO_THRESHOLD_FX 32212255 // 0.015 in Q31 #define MASA_RATIO_TOLERANCE_FX 107374182 // 0.1 in Q30 #define MASA_ANGLE_TOLERANCE_FX ONE_IN_Q21 // 0.5 in Q22 #define MASA_LIMIT_NO_BANDS_SUR_COH 8 @@ -1321,6 +1323,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) @@ -1686,7 +1689,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 @@ -1747,8 +1749,11 @@ typedef enum #define RV_FILTER_MAX_HISTORY ( 512 - 160 ) /* for longest history */ #define RV_LENGTH_NR_FC ( RV_FILTER_MAX_FFT_SIZE / 2 ) + 1 +#define RV_LENGTH_NR_FC_16KHZ ( RV_FILTER_MAX_FFT_SIZE / 4 ) + 1 #define IVAS_REVERB_DEFAULT_N_BANDS 31 +#define LR_IAC_LENGTH_NR_FC ( RV_LENGTH_NR_FC ) +#define LR_IAC_LENGTH_NR_FC_16KHZ ( RV_LENGTH_NR_FC_16KHZ ) /*----------------------------------------------------------------------------------* * FB mixer constants diff --git a/lib_com/ivas_dirac_com_fx.c b/lib_com/ivas_dirac_com_fx.c index befeb273c5a7a7cd86e706e13f1e16ffaaf9f4f8..59735c9c564cfbcdd2faeebc8f259d23c9120711 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; } @@ -223,11 +221,11 @@ ivas_error ivas_dirac_config_fx( IF( EQ_32( ivas_format, SBA_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) ) { // 100861_dirac_dec - ivas_dirac_config_bands_fx( band_grouping, IVAS_MAX_NUM_BANDS, (Word16) ( Fs * INV_CLDFB_BANDWIDTH + 0.5f ), dirac_to_spar_md_bands, hQMetaData->useLowerBandRes, hConfig->enc_param_start_band, hFbMdft ); + ivas_dirac_config_bands_fx( band_grouping, IVAS_MAX_NUM_BANDS, (Word16) ( Fs * INV_CLDFB_BANDWIDTH + 0.5f ), dirac_to_spar_md_bands, hQMetaData->useLowerBandRes, hConfig->enc_param_start_band, hFbMdft, 1 ); } ELSE { - ivas_dirac_config_bands_fx( band_grouping, hConfig->nbands, (Word16) ( Fs * INV_CLDFB_BANDWIDTH + 0.5f ), NULL, 0, 0, hFbMdft ); + ivas_dirac_config_bands_fx( band_grouping, hConfig->nbands, (Word16) ( Fs * INV_CLDFB_BANDWIDTH + 0.5f ), NULL, 0, 0, hFbMdft, 1 ); } return error; @@ -235,19 +233,20 @@ ivas_error ivas_dirac_config_fx( /*------------------------------------------------------------------------- - * ivas_dirac_sba_config_bands() + * ivas_dirac_config_bands_fx() * * DirAC Configuration freq. band function; used also in MASA decoder *------------------------------------------------------------------------*/ void ivas_dirac_config_bands_fx( - Word16 *band_grouping, /* o : band grouping */ - const Word16 nbands, /* i : number of bands */ - const Word16 max_band, /* i : maximal band index +1 */ - Word16 *dirac_to_spar_md_bands, - const Word8 useLowerBandRes, - const Word16 enc_param_start_band, - IVAS_FB_MIXER_HANDLE hFbMdft ) + Word16 *band_grouping, /* o : band grouping */ + const Word16 nbands, /* i : number of bands */ + const Word16 max_band, /* i : maximal band index +1 */ + Word16 *dirac_to_spar_md_bands, /* o : mapping of DirAC parameter band index to SPAR FB band index */ + const Word8 useLowerBandRes, /* i : flag indicating lower band resolution for DirAC */ + const Word16 enc_param_start_band, /* i : band index of first DirAC parameter band */ + IVAS_FB_MIXER_HANDLE hFbMdft, + const Word8 BandGroupLowRes ) { Word16 i; { @@ -307,15 +306,19 @@ void ivas_dirac_config_bands_fx( Word16 step = DIRAC_LOW_BANDRES_STEP; move16(); Word16 reduced_band; - FOR( ( band = enc_param_start_band + 2, reduced_band = enc_param_start_band + 1 ); band <= DIRAC_MAX_NBANDS; ( band += step, reduced_band++ ) ) - { - band_grouping[reduced_band] = band_grouping[band]; - move16(); - } - FOR( ; reduced_band <= DIRAC_MAX_NBANDS; reduced_band++ ) + + IF( BandGroupLowRes ) { - band_grouping[reduced_band] = max_band; - move16(); + FOR( ( band = enc_param_start_band + 2, reduced_band = enc_param_start_band + 1 ); band <= DIRAC_MAX_NBANDS; ( band += step, reduced_band++ ) ) + { + band_grouping[reduced_band] = band_grouping[band]; + move16(); + } + FOR( ; reduced_band <= DIRAC_MAX_NBANDS; reduced_band++ ) + { + band_grouping[reduced_band] = max_band; + move16(); + } } FOR( ( band = enc_param_start_band + ( DIRAC_MAX_NBANDS - enc_param_start_band ) / 2 - 1, reduced_band = DIRAC_MAX_NBANDS - 1 ); band >= enc_param_start_band; ( band--, reduced_band -= step ) ) { @@ -352,6 +355,8 @@ void ivas_dirac_config_bands_fx( return; } + + /*-------------------------------------------------------------------* * ivas_get_dirac_sba_max_md_bits() * @@ -571,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 */ } { diff --git a/lib_com/ivas_error.h b/lib_com/ivas_error.h index bbf951ab3dc12e2f14e05471e689bad8a91bce2a..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,6 +98,8 @@ typedef enum * input data errors * *----------------------------------------*/ IVAS_ERR_INVALID_BITSTREAM = 0x2000, + IVAS_ERR_UNEXPECTED_LC3PLUS_BITSTREAM, + IVAS_ERR_UNEXPECTED_LC3PLUS_BITSTREAM_CONFIG, /*----------------------------------------* * hardware errors * @@ -135,6 +138,8 @@ typedef enum IVAS_ERR_ACOUSTIC_ENVIRONMENT_MISSING, IVAS_ERR_INVALID_ER_PARAM, IVAS_ERR_DIRECTIVITY_PATTERN_ID_MISSING, + IVAS_ERR_LC3PLUS_INVALID_BITRATE, + IVAS_ERR_INVALID_SPLIT_REND_CONFIG, /*----------------------------------------* * unknown error * @@ -233,6 +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"; + 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"; case IVAS_ERR_EXT_ORIENTATION_NOT_SUPPORTED: return "External orientation not supported"; case IVAS_ERR_DIRECTIVITY_NOT_SUPPORTED: @@ -241,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_rend/ivas_limiter_fx.c b/lib_com/ivas_limiter_fx.c similarity index 99% rename from lib_rend/ivas_limiter_fx.c rename to lib_com/ivas_limiter_fx.c index b212e5445c0c16f89af6f59bb5d7cfa64ec1b648..60982f3f2e3ad0bf854aba398859e416e89afc44 100644 --- a/lib_rend/ivas_limiter_fx.c +++ b/lib_com/ivas_limiter_fx.c @@ -36,6 +36,7 @@ #include "prot_fx.h" #include "ivas_prot_rend_fx.h" #include "ivas_rom_rend.h" +#include "ivas_rom_com_fx.h" #include "wmc_auto.h" #include #include "ivas_prot_fx.h" diff --git a/lib_com/ivas_prot_fx.h b/lib_com/ivas_prot_fx.h index bb796d8795dce77716937d471653e13f7e9f2d66..510a9067de037845973169a4986c25fb273a14cf 100644 --- a/lib_com/ivas_prot_fx.h +++ b/lib_com/ivas_prot_fx.h @@ -42,9 +42,16 @@ #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" +/* clang-format off */ + +/*----------------------------------------------------------------------------------* + * General IVAS prototypes + *----------------------------------------------------------------------------------*/ + ivas_error ivas_masa_dec_open_fx( Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */ ); @@ -164,11 +171,6 @@ ivas_error ivas_omasa_dec_config_fx( Word16 SrcInd[MAX_NUM_TDREND_CHANNELS], Word16 *data /* o : output synthesis signal */ ); -ivas_error ivas_td_binaural_renderer_sf_fx( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - Word32 *output_fx[], /* i/o: SCE channels / Binaural synthesis */ - const Word16 n_samples_granularity /* i : granularity of the renderer/buffer */ -); void ivas_omasa_modify_masa_energy_ratios_fx( IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ @@ -1053,9 +1055,10 @@ ivas_error ivas_ism_renderer_open_fx( ); void ivas_ism_render_sf_fx( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - Word32 *output_fx[], /* i/o: core-coder transport channels/object output */ - const Word16 n_samples_to_render /* i : output frame length per channel */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + const RENDERER_TYPE renderer_type, /* i : active renderer type */ + Word32 *output_fx[], /* i/o: core-coder transport channels/object output */ + const Word16 n_samples_to_render /* i : output frame length per channel */ ); void ivas_jbm_dec_get_adapted_linear_interpolator_fx( @@ -1161,12 +1164,13 @@ void ivas_mono_stereo_downmix_mcmasa_fx( ); void ivas_apply_non_diegetic_panning_fx( + Word32 *input_f_fx, /* i : non-diegetic object */ 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 */ ); -void ivas_mono_downmix_render_passive_fx( +void ivas_ism_mono_dmx_fx( 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 */ @@ -2628,6 +2632,52 @@ Word16 getNumChanAnalysis_fx( Encoder_Struct *st_ivas /* i : IVAS encoder structure */ ); +/*----------------------------------------------------------------------------------* + * Limiter prototypes + *----------------------------------------------------------------------------------*/ + + +ivas_error ivas_limiter_open( + IVAS_LIMITER_HANDLE *hLimiter_out, /* o : limiter struct handle */ + const int16_t num_channels, /* i : number of I/O channels */ + const int32_t sampling_rate /* i : sampling rate for processing */ +); + +void ivas_limiter_close( + IVAS_LIMITER_HANDLE *phLimiter /* i/o: pointer to limiter handle, can be NULL */ +); + +void ivas_limiter_dec( + IVAS_LIMITER_HANDLE hLimiter, /* i/o: limiter struct handle */ + float *output[MAX_OUTPUT_CHANNELS], /* i/o: input/output buffer */ + const int16_t num_channels, /* i : number of channels to be processed */ + const int16_t output_frame, /* i : number of samples per channel in the buffer */ + const int16_t BER_detect /* i : BER detect flag */ +); +void ivas_limiter_dec_fx( + IVAS_LIMITER_HANDLE hLimiter, /* i/o: limiter struct handle */ + Word32 *output[MAX_OUTPUT_CHANNELS], /* i/o: input/output buffer */ + const Word16 num_channels, /* i : number of channels to be processed */ + const Word16 output_frame, /* i : number of samples per channel in the buffer */ + const Word16 BER_detect, /* i : BER detect flag */ + Word16 q_factor /* i : Q factor of the output samples */ +); +void limiter_process( + IVAS_LIMITER_HANDLE hLimiter, /* i/o: limiter struct handle */ + const int16_t output_frame, /* i : number of samples to be processed per channel in the I/O buffer */ + const float threshold, /* i : signal amplitude above which limiting starts to be applied */ + const int16_t BER_detect, /* i : BER detect flag */ + int16_t *strong_saturation_cnt /* i/o: counter of strong saturations (can be NULL) */ +); +void limiter_process_fx( + IVAS_LIMITER_HANDLE hLimiter, /* i/o: limiter struct handle */ + const Word16 output_frame, /* i : number of samples to be processed per channel in the I/O buffer */ + const Word32 threshold, /* i : signal amplitude above which limiting starts to be applied */ + const Word16 BER_detect, /* i : BER detect flag */ + Word16 *strong_saturation_cnt, /* i/o: counter of strong saturations (can be NULL) */ + Word16 q_factor /* i : Q factor of output samples */ +); + ivas_error ivas_limiter_open_fx( IVAS_LIMITER_HANDLE *hLimiter_out, /* o : limiter struct handle */ const Word16 max_num_channels, /* i : maximum number of I/O channels to be processed */ @@ -3671,14 +3721,15 @@ ivas_error ivas_allocate_binaural_hrtf_fx( ); void ivas_binRenderer_fx( - BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: binaural renderer handle */ - 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[][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 */ - 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 */ + BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: binaural renderer handle */ + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + 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 */ + 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 */ ); void ivas_binaural_add_LFE_fx( @@ -3848,17 +3899,27 @@ void ivas_omasa_decode_masa_to_total_fx( const Word16 nblocks ); +/*----------------------------------------------------------------------------------* + * TD Binaural Object renderer + *----------------------------------------------------------------------------------*/ + ivas_error ivas_td_binaural_open_fx( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - Word16 *SrcInd, /*Temporarily used to store the updated value of SrcInd*/ - Word16 *num_src ); + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Word16 *SrcInd, /*Temporarily used to store the updated value of SrcInd*/ + Word16 *num_src +); -ivas_error ivas_td_binaural_renderer_fx( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - Word32 *output[], /* i/o: SCE channels / Binaural synthesis */ - const Word16 output_frame /* i : output frame length */ +ivas_error ivas_td_binaural_renderer_sf_fx( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Word32 *output_fx[], /* i/o: SCE channels / Binaural synthesis */ + const Word16 n_samples_granularity /* i : granularity of the renderer/buffer */ ); + +/*----------------------------------------------------------------------------------* + * Filter-bank (FB) Mixer + *----------------------------------------------------------------------------------*/ + void ivas_FB_mixer_close_fx( IVAS_FB_MIXER_HANDLE *hFbMixer, /* i/o: FB mixer handle */ const Word32 sampling_rate, /* i : sampling rate in Hz */ @@ -4885,12 +4946,6 @@ ivas_error ivas_cldfb_dec_reconfig_fx( ivas_error ivas_sba_enc_reconfigure_fx( Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ ); - -Word16 ivas_sba_get_order_fx( - const Word16 nb_channels, /* i : Number of ambisonic channels */ - const Word16 sba_planar /* i : SBA planar flag */ -); - /*! r: Ambisonic (SBA) order used for analysis and coding */ Word16 ivas_sba_get_analysis_order( const Word32 ivas_total_brate, /* i : IVAS total bitrate */ @@ -4937,7 +4992,8 @@ void ivas_dirac_config_bands_fx( Word16 *dirac_to_spar_md_bands, /* o : mapping of DirAC parameter band index to SPAR FB band index */ const Word8 useLowerBandRes, /* i : flag indicating lower band resolution for DirAC */ const Word16 enc_param_start_band, /* i : band index of first DirAC parameter band */ - IVAS_FB_MIXER_HANDLE hFbMdft ); + IVAS_FB_MIXER_HANDLE hFbMdft, + const Word8 BandGroupLowRes ); void ivas_dirac_dec_close_fx( DIRAC_DEC_HANDLE *hDirAC_out ); @@ -4946,13 +5002,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 */ ); @@ -5876,6 +5926,42 @@ void reset_metadata_spatial_fx( const Word16 nb_bits_metadata /* i : number of meatdata bits */ ); +void Euler2Quat_fx( + const Word32 yaw, /* i : yaw (x) Q22 */ + const Word32 pitch, /* i : pitch (y) Q22 */ + const Word32 roll, /* i : roll (z) Q22 */ + IVAS_QUATERNION *quat /* o : quaternion describing the rotation */ +); +float deg2rad( + float degrees ); + +Word32 deg2rad_fx( + Word32 degrees ); + +void Quat2EulerDegree_fx( + const IVAS_QUATERNION quat, /* i : quaternion describing the rotation */ + Word32 *yaw_fx, /* o : yaw */ + Word32 *pitch_fx, /* o : pitch */ + Word32 *roll_fx /* o : roll */ +); + +void Copy_Quat_fx( + const IVAS_QUATERNION *in_quat, /* i : quaternion describing the rotation */ + IVAS_QUATERNION *out_quat /* i : quaternion describing the rotation */ +); + +void modify_Quat_q_fx( + const IVAS_QUATERNION *in_quat, /* i : quaternion describing the rotation */ + IVAS_QUATERNION *out_quat, /* i : quaternion describing the rotation */ + Word16 q_new /* i : quaternion describing the rotation */ +); + +void modify_Rmat_q_fx( + Word32 Rmat_in[3][3], /* i : real-space rotation matrix for this rotation */ + Word32 Rmat_out[3][3], /* o : real-space rotation matrix for this rotation*/ + Word16 q_cur, /* i : current q factor for rotation matrix */ + Word16 q_new /* i : target q factor for rotation matrix */ +); /*=============================================================================================*/ /* clang-format off */ diff --git a/lib_com/ivas_rom_com.c b/lib_com/ivas_rom_com.c index 560d1ee8e90fbaae2b3a51d6d758f140bef10ed7..5d4de33b4e9c3933724028c066232695088d6721 100644 --- a/lib_com/ivas_rom_com.c +++ b/lib_com/ivas_rom_com.c @@ -52,7 +52,6 @@ const Word32 ivas_brate_tbl[SIZE_IVAS_BRATE_TBL] = IVAS_192k, IVAS_256k, IVAS_384k, IVAS_512k }; - /*------------------------------------------------------------------------- * DFT Stereo ROM tables *------------------------------------------------------------------------*/ @@ -2901,3 +2900,5 @@ const Word16 ivas_param_upmx_mx_qmap[33] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; + +/* clang-format on */ diff --git a/lib_com/ivas_rom_com.h b/lib_com/ivas_rom_com.h index 6004760e31a69763dc430d498db97f83fa238e66..86538241043bf53b4f1d870da759ad9899c44318 100644 --- a/lib_com/ivas_rom_com.h +++ b/lib_com/ivas_rom_com.h @@ -326,5 +326,6 @@ extern const Word16 sns_1st_means_32k[2][16]; extern const Word16 ivas_param_upmx_mx_qmap[33]; + /* IVAS_ROM_COM_H */ #endif diff --git a/lib_com/ivas_rom_com_fx.c b/lib_com/ivas_rom_com_fx.c index b64ac56355f75a774b68ff2c488e17443c0a1328..e3ee71ac97c59e6cd2786c312afe64fa53385f6c 100644 --- a/lib_com/ivas_rom_com_fx.c +++ b/lib_com/ivas_rom_com_fx.c @@ -5099,4 +5099,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 2619a3f26d30045d4895a7dff0a07087c7f9144a..04a86ed5b01418904cd870d1b1701f56e8f59c2c 100644 --- a/lib_com/ivas_rom_com_fx.h +++ b/lib_com/ivas_rom_com_fx.h @@ -291,4 +291,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 new file mode 100644 index 0000000000000000000000000000000000000000..78a0837ab41197d83544338508a5575c5876201d --- /dev/null +++ b/lib_com/ivas_rotation_com.c @@ -0,0 +1,270 @@ +/****************************************************************************************************** + + (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 "ivas_cnst.h" +#include +#include +#include "options.h" +#include +#include "cnst.h" +#include "prot_fx.h" +#include "ivas_prot_fx.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" +#include "basop_util.h" +#include "enh64.h" +/*------------------------------------------------------------------------- + * Euler2Quat() + * + * Calculate corresponding Quaternion from Euler angles in radians + *------------------------------------------------------------------------*/ +void Euler2Quat_fx( + const Word32 yaw, /* i : yaw (x) Q22 */ + const Word32 pitch, /* i : pitch (y) Q22 */ + const Word32 roll, /* i : roll (z) Q22 */ + IVAS_QUATERNION *quat /* o : quaternion describing the rotation Q22*/ +) +{ + Word16 cr = getCosWord16( extract_l( L_shr_r( roll, 10 ) ) ); // Q14 + Word16 sr = shr( getSinWord16( extract_l( L_shr_r( roll, 10 ) ) ), 1 ); // Q14 + Word16 cp = getCosWord16( extract_l( L_shr_r( pitch, 10 ) ) ); + Word16 sp = shr( getSinWord16( extract_l( L_shr_r( pitch, 10 ) ) ), 1 ); // Q14 + Word16 cy = getCosWord16( extract_l( L_shr_r( yaw, 10 ) ) ); + Word16 sy = shr( getSinWord16( extract_l( L_shr_r( yaw, 10 ) ) ), 1 ); // Q14 + quat->w_fx = L_shr_r( L_add( Mpy_32_16_1( L_mult0( cr, cp ), cy ), Mpy_32_16_1( L_mult0( sr, sp ), sy ) ), 5 ); // Q22 + move32(); + quat->x_fx = L_shr_r( L_sub( Mpy_32_16_1( L_mult0( sr, cp ), cy ), Mpy_32_16_1( L_mult0( cr, sp ), sy ) ), 5 ); // Q22 + move32(); + quat->y_fx = L_shr_r( L_add( Mpy_32_16_1( L_mult0( sr, cp ), sy ), Mpy_32_16_1( L_mult0( cr, sp ), cy ) ), 5 ); // Q22 + move32(); + quat->z_fx = L_shr_r( L_sub( Mpy_32_16_1( L_mult0( cr, cp ), sy ), Mpy_32_16_1( L_mult0( sr, sp ), cy ) ), 5 ); // Q22 + move32(); + + quat->q_fact = Q22; + move16(); + + return; +} + + +/*------------------------------------------------------------------------- + * Copy_Quat_fx() + * + * Quaternion q factor modification + *------------------------------------------------------------------------*/ +void Copy_Quat_fx( + const IVAS_QUATERNION *in_quat, /* i : quaternion describing the rotation */ + IVAS_QUATERNION *out_quat /* i : quaternion describing the rotation */ +) +{ + out_quat->q_fact = in_quat->q_fact; + out_quat->w_fx = in_quat->w_fx; + out_quat->x_fx = in_quat->x_fx; + out_quat->y_fx = in_quat->y_fx; + out_quat->z_fx = in_quat->z_fx; + move16(); + move32(); + move32(); + move32(); + move32(); + + return; +} + +/*------------------------------------------------------------------------- + * Scale_Quat_fx() + * + * Quaternion q factor modification + *------------------------------------------------------------------------*/ +void modify_Quat_q_fx( + const IVAS_QUATERNION *in_quat, /* i : quaternion describing the rotation */ + IVAS_QUATERNION *out_quat, /* i : quaternion describing the rotation */ + Word16 q_new /* i : quaternion describing the rotation */ +) +{ + out_quat->w_fx = L_shl_sat( in_quat->w_fx, sub( q_new, in_quat->q_fact ) ); // q_new + out_quat->x_fx = L_shl_sat( in_quat->x_fx, sub( q_new, in_quat->q_fact ) ); // q_new + out_quat->y_fx = L_shl_sat( in_quat->y_fx, sub( q_new, in_quat->q_fact ) ); // q_new + out_quat->z_fx = L_shl_sat( in_quat->z_fx, sub( q_new, in_quat->q_fact ) ); // q_new + out_quat->q_fact = q_new; + return; +} + +/*------------------------------------------------------------------------- + * modify_Rmat_q_fx() + * + * Rotation matrix q factor modification + *------------------------------------------------------------------------*/ +void modify_Rmat_q_fx( + Word32 Rmat_in[3][3], /* i : real-space rotation matrix for this rotation */ + Word32 Rmat_out[3][3], /* o : real-space rotation matrix for this rotation*/ + Word16 q_cur, /* i : current q factor for rotation matrix */ + Word16 q_new /* i : target q factor for rotation matrix */ +) +{ + Word16 j, k; + + FOR( j = 0; j < 3; j++ ) + { + FOR( k = 0; k < 3; k++ ) + { + Rmat_out[j][k] = L_shl( Rmat_in[j][k], sub( q_new, q_cur ) ); + move32(); + } + } + return; +} + +/*------------------------------------------------------------------------- + * Quat2EulerDegree() + * + * Quaternion handling: calculate corresponding Euler angles in degrees + *------------------------------------------------------------------------*/ +void Quat2EulerDegree_fx( + const IVAS_QUATERNION quat, /* i : quaternion describing the rotation */ + Word32 *yaw_fx, /* o : yaw */ + Word32 *pitch_fx, /* o : pitch */ + Word32 *roll_fx /* o : roll */ +) +{ + IF( NE_32( quat.w_fx, L_negate( 12582912 ) /*3.0f in Q22*/ ) ) + { + Word32 tmp1 = W_extract_l( W_shr( W_mult0_32_32( quat.w_fx, quat.x_fx ), Q22 ) ); // Q22 + Word32 tmp2 = W_extract_l( W_shr( W_mult0_32_32( quat.y_fx, quat.z_fx ), Q22 ) ); // Q22 + Word32 tmp3 = L_shl( L_add( tmp1, tmp2 ), 1 ); // Q22 + + Word32 tmp4 = W_extract_l( W_shr( W_mult0_32_32( quat.x_fx, quat.x_fx ), Q22 ) ); // Q22 + Word32 tmp5 = W_extract_l( W_shr( W_mult0_32_32( quat.y_fx, quat.y_fx ), Q22 ) ); // Q22 + Word32 tmp6 = L_shl( L_add( tmp4, tmp5 ), 1 ); + Word32 tmp7 = L_sub( ONE_IN_Q22, tmp6 ); + + IF( tmp3 >= -2 && tmp3 <= 2 ) + { + tmp3 = 0; + } + IF( tmp7 >= -2 && tmp7 <= 2 ) + { + tmp7 = 0; + } + + Word16 yaw_fx_16 = BASOP_util_atan2( tmp3, tmp7, 0 ); // Q13 + *yaw_fx = Mpy_32_16_1( 961263669 /*_180_OVER_PI in Q24*/, yaw_fx_16 ); + + Word32 p_fx; + Word32 tmp8 = W_extract_l( W_shr( W_mult0_32_32( quat.w_fx, quat.y_fx ), Q22 ) ); // Q22 + Word32 tmp9 = W_extract_l( W_shr( W_mult0_32_32( quat.z_fx, quat.x_fx ), Q22 ) ); // Q22 + p_fx = L_shl( L_sub( tmp8, tmp9 ), 1 ); + p_fx = max( L_negate( ONE_IN_Q22 ), min( ONE_IN_Q22, p_fx ) ); // Q22 + + Word32 p_fx_sq = W_extract_l( W_shr( W_mult0_32_32( p_fx, p_fx ), Q22 ) ); + Word16 res_exp = 0; + Word32 one_minus_p_fx_sq = BASOP_Util_Add_Mant32Exp( ONE_IN_Q30, 1, L_negate( p_fx_sq ), 31 - Q22, &res_exp ); + Word32 sqrt_one_minus_p_fx_sq = Sqrt32( one_minus_p_fx_sq, &res_exp ); + + Word16 pitch_fx_16 = BASOP_util_atan2( p_fx, sqrt_one_minus_p_fx_sq, ( 31 - Q22 ) - res_exp ); + + *pitch_fx = Mpy_32_16_1( 961263669 /*_180_OVER_PI in Q24*/, pitch_fx_16 ); + + Word32 tmp10 = W_extract_l( W_shr( W_mult0_32_32( quat.w_fx, quat.z_fx ), Q22 ) ); // Q22 + Word32 tmp11 = W_extract_l( W_shr( W_mult0_32_32( quat.x_fx, quat.y_fx ), Q22 ) ); // Q22 + Word32 tmp12 = L_shl( L_add( tmp10, tmp11 ), 1 ); // Q22 + + Word32 tmp13 = W_extract_l( W_shr( W_mult0_32_32( quat.y_fx, quat.y_fx ), Q22 ) ); // Q22 + Word32 tmp14 = W_extract_l( W_shr( W_mult0_32_32( quat.z_fx, quat.z_fx ), Q22 ) ); // Q22 + Word32 tmp15 = L_shl( L_add( tmp13, tmp14 ), 1 ); // Q22 + Word32 tmp16 = L_sub( ONE_IN_Q22, tmp15 ); // Q22 + + IF( tmp12 >= -2 && tmp12 <= 2 ) + { + tmp12 = 0; + } + IF( tmp16 >= -2 && tmp16 <= 2 ) + { + tmp16 = 0; + } + Word16 roll_fx_16 = BASOP_util_atan2( tmp12, tmp16, 0 ); // Q13 + *roll_fx = Mpy_32_16_1( 961263669 /*_180_OVER_PI in Q24*/, roll_fx_16 ); + } + ELSE + { + /* Euler angles in R_X(roll)*R_Y(pitch)*R_Z(yaw) convention + * + * yaw: rotate scene counter-clockwise in the horizontal plane + * pitch: rotate scene in the median plane, increase elevation with positive values + * roll: rotate scene from the right ear to the top + */ + *yaw_fx = quat.z_fx; + *pitch_fx = quat.y_fx; + *roll_fx = quat.x_fx; + } + + return; +} + + +/*------------------------------------------------------------------------- + * deg2rad() + * + * Converts degrees to normalized radians + *------------------------------------------------------------------------*/ +Word32 deg2rad_fx( + Word32 degrees // Q22 +) +{ + WHILE( GE_32( degrees, DEGREE_180 ) ) + { + degrees = L_sub( degrees, DEGREE_360 ); + } + WHILE( LE_32( degrees, -DEGREE_180 ) ) + { + degrees = L_add( degrees, DEGREE_360 ); + } + + return Mpy_32_32( PI_OVER_180_FX, degrees ); // Q22 +} + +float deg2rad( + float degrees ) +{ + while ( degrees >= 180.0f ) + { + degrees = degrees - 360.0f; + } + while ( degrees <= -180.0f ) + { + degrees = degrees + 360.0f; + } + + return PI_OVER_180 * degrees; +} diff --git a/lib_com/ivas_sba_config_fx.c b/lib_com/ivas_sba_config_fx.c index b3a0806d4af63519605efa1c7ff5da40ba095d2e..ab4d931ad2cfe6a180c22060f41619324763f018 100644 --- a/lib_com/ivas_sba_config_fx.c +++ b/lib_com/ivas_sba_config_fx.c @@ -60,20 +60,7 @@ void ivas_sba_config_fx( Word16 *element_mode /* o : element mode of the core coder */ ) { - test(); - IF( sba_order < 0 && nb_channels < 0 ) - { - assert( 0 && "Either order or number of channels must be positive" ); - } - ELSE IF( sba_order < 0 ) - { - sba_order = ivas_sba_get_order_fx( nb_channels, sba_planar ); - } - ELSE IF( nb_channels < 0 ) - { - nb_channels = ivas_sba_get_nchan_fx( sba_order, sba_planar ); - } - ELSE + IF( nb_channels > 0 ) { IF( sba_planar ) { @@ -125,57 +112,6 @@ void ivas_sba_config_fx( } -/*-------------------------------------------------------------------* - * ivas_sba_get_order() - * - * Get Ambisonic order from number of ambisonic channels - *-------------------------------------------------------------------*/ - -/*! r: Ambisonic (SBA) order */ -Word16 ivas_sba_get_order_fx( - const Word16 nb_channels, /* i : Number of ambisonic channels */ - const Word16 sba_planar /* i : SBA Planar flag */ -) -{ - Word16 sba_order; - - /* sba_order = (int16_t) sqrtf( (float) nb_channels ) - 1 */ - Word16 sba_order_non_sba_planar[MAX_INPUT_CHANNELS] = { 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3 }; - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - - IF( sba_planar ) - { - sba_order = shr( sub( nb_channels, 1 ), 1 ); - assert( ( EQ_16( add( shl( sba_order, 1 ), 1 ), nb_channels ) ) && "Number of channels not supported in Planar SBA!" ); - } - ELSE - { - sba_order = sba_order_non_sba_planar[nb_channels - 1]; - move16(); - assert( ( EQ_16( mult( add( sba_order, 1 ), add( sba_order, 1 ) ), nb_channels ) ) && "Number of channels not supported in SBA!" ); - } - - assert( ( sba_order <= 3 ) && "Error: SBA order must be <= 3!" ); - - return ( sba_order ); -} - - /*-------------------------------------------------------------------* * ivas_sba_get_analysis_order() * diff --git a/lib_com/ivas_stat_com.h b/lib_com/ivas_stat_com.h index fb11d3934486f3c09af3e8e5482ec78c90f6bc7a..847442c35ec12dfcc6ef295995e71a5fde700668 100644 --- a/lib_com/ivas_stat_com.h +++ b/lib_com/ivas_stat_com.h @@ -176,6 +176,7 @@ typedef struct ivas_band_coeffs_t Word32 pred_quant_re_fx[IVAS_SPAR_MAX_CH - 1]; Word32 C_quant_re_fx[IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS][IVAS_SPAR_MAX_DMX_CHS - 1]; Word32 P_quant_re_fx[IVAS_SPAR_MAX_CH - 1]; + } ivas_band_coeffs_t; typedef struct ivas_band_coeffs_ind_t @@ -197,6 +198,7 @@ typedef struct ivas_spar_md_t Word32 ref_pow_slow_fx[IVAS_MAX_NUM_BANDS]; Word16 res_ind; Word16 prior_dyn_active_w_flag; + } ivas_spar_md_t; typedef struct ivas_spar_md_prev_t @@ -211,6 +213,7 @@ typedef struct ivas_quant_coeffs_t Word32 min_fx; /* Q28 */ Word32 max_fx; /* Q28 */ Word16 q_levels[2]; + } ivas_quant_coeffs_t; typedef struct ivas_quant_strat_t @@ -238,7 +241,6 @@ typedef struct ivas_spar_md_com_cfg Word16 max_bits_per_blk; Word16 prev_quant_idx; Word16 agc_bits_ch_idx; - Word16 planarCP; Word16 num_umx_chs; Word16 max_md_bits_spar; @@ -292,6 +294,7 @@ typedef struct ivas_arith_t Word16 range; Word16 num_models; Word32 saved_dist_arr[IVAS_NUM_PROB_MODELS][IVAS_MAX_QUANT_LEVELS]; /* Q15 */ + } ivas_arith_t; typedef struct ivas_arith_coeffs_t diff --git a/lib_com/lsf_tools_fx.c b/lib_com/lsf_tools_fx.c index a41e10713968dd99b7d8fac5b16f4f448eb24163..4b3e200a4560e8568d04886fa6f6a97f7cc97798 100644 --- a/lib_com/lsf_tools_fx.c +++ b/lib_com/lsf_tools_fx.c @@ -4286,7 +4286,7 @@ void dctT2_N_apply_matrix_fx( *pt_y = L_add( *pt_y, Mpy_32_32( ( *pt_x++ ), ( *pt_A ) ) ); move32(); pt_A += mat_step_col; /* step +maxtrunc or +1 */ /* ptr indexing*/ - MAC( 1 ); + MAC_C( 1 ); #undef WMC_TOOL_SKIP } pt_y++; @@ -4338,7 +4338,7 @@ void extend_dctN_input_fx( ext_sig[i] = L_add( ext_sig[i], Mpy_32_32( dct_input[j], ptr[i_rev][j] ) ); /* sum up scaled and extended basis vector */ // Q31 + Q - Q31 -> Q move32(); - MAC( 1 ); + MAC_C( 1 ); #undef WMC_TOOL_SKIP } } diff --git a/lib_com/options.h b/lib_com/options.h index 14b1c5eb8abefa42f190eac704904f56c7780c65..5257a5d6a276d9489f951ea7a5dbbf28aa138ef1 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -148,4 +148,25 @@ #define FIX_1824 #define FIX_1822 +/* #################### Start BASOP porting switches ############################ */ + +#define FIX_1372_ISAR_POST_REND +#define NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM /* FhG: issue 1058: do not initialize EFAP when IntSetup is HOA3 */ +#ifdef NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM +#endif + +#define USE_NEW_HRTF_BINARY_FILE_FORMAT /* Orange: to activate when decided to change the hrtf binary file format */ + +#define FIX_WARNING_RENDER_CONFIG /* Orange: fix warning on windows build */ + + + +#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_1741_REVERB_TIMES_Q_FORMAT /* Philips: reverberation times in Q26 format instead of Q31 */ +#define FIX_1831_REVERB_REGRESSION /* Philips: fixes reverb regression issues */ + +#define FIX_1835_REVERB_ACTIVATION /* FhG: Modified reverberation activation logic and corrected factEQ calculation */ +/* #################### End BASOP porting switches ############################ */ + #endif diff --git a/lib_com/prot_fx.h b/lib_com/prot_fx.h index 07069e1e6ded0b98a9154646ed457331b69d6f5d..12459249b73798862b92d1a89755f617bf5cc742 100644 --- a/lib_com/prot_fx.h +++ b/lib_com/prot_fx.h @@ -170,7 +170,7 @@ Word32 sum_l_fx( const Word32 *vec, /* i : input vector */ const Word16 lvec /* i : length of input vector */ ); -Word16 norm_ul( UWord32 UL_var1 ); + Word32 Mult_32_16( Word32 a, @@ -1626,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 ); @@ -10905,12 +10903,6 @@ Word16 sum_s( const Word16 lvec /* i : length of input vector */ ); -/*! r: sum of all vector elements */ -Word32 sum_l( - const Word32 *vec, /* i : input vector */ - const Word16 lvec /* i : length of input vector */ -); - void set_c( Word8 y[], /* i/o: Vector to set */ const Word8 a, /* i : Value to set the vector to */ diff --git a/lib_com/tools.c b/lib_com/tools.c index 0087920cd15e1ee1df384bf0d31665788c61d36d..61c489157bec7dcee3b108220b23b6b134ad0c57 100644 --- a/lib_com/tools.c +++ b/lib_com/tools.c @@ -85,7 +85,6 @@ Word16 norm_ul_float( UWord32 UL_var1 ) /*--------------------------------------------------------------------- * sum_s() * sum_l() - * sum_f() * *---------------------------------------------------------------------*/ diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index b2974696a47e39bbbd38332b2cadcd7f69be09d6..5b9cc52d773fec6cfe31a432e5192eb7b08874be 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -241,26 +241,6 @@ void fix2f_16( Word16 *var_fix, float *var_flt, Word32 expo ) #undef WMC_TOOL_SKIP -Word16 norm_ul( UWord32 UL_var1 ) -{ - Word16 var_out; - - if ( UL_var1 == 0 ) - { - var_out = 0; - } - else - { - for ( var_out = 0; UL_var1 < (UWord32) 0x80000000U; var_out++ ) - { - UL_var1 <<= 1; - } - } - BASOP_CHECK(); - - return ( var_out ); -} - /*-------------------------------------------------------------------* * usdequant_fx() * diff --git a/lib_com/typedef.h b/lib_com/typedef.h index d3aba3e9895d7beca76dea1cb09c6e073f008e3e..4dfd372240e39b54d0b84092257a09a144a85a8e 100644 --- a/lib_com/typedef.h +++ b/lib_com/typedef.h @@ -134,6 +134,8 @@ typedef float Float32; typedef unsigned short int UNS_Word16; /* 16 bit "register" (sw*) */ +typedef int Counter; + #ifndef TYPEDEF_INITIALIZED #error types in typedef.h not initialized #endif diff --git a/lib_debug/wmc_auto.h b/lib_debug/wmc_auto.h index 8c6396313f36143655da2a1e1e4d8613cec6cee8..64e2c751a9261c0e8e02c147f194047f61b83786 100644 --- a/lib_debug/wmc_auto.h +++ b/lib_debug/wmc_auto.h @@ -123,7 +123,7 @@ void update_mem( void ); ops_cnt += ( _MULT_C * ( x ) ); \ inst_cnt[_MULT] += ( x ); \ } -#define MAC( x ) \ +#define MAC_C( x ) \ { \ ops_cnt += ( _MAC_C * ( x ) ); \ inst_cnt[_MAC] += ( x ); \ @@ -273,7 +273,7 @@ extern int cntr_push_pop; #define ADD( x ) #define ABS( x ) #define MULT( x ) -#define MAC( x ) +#define MAC_C( x ) #define MOVE( x ) #define STORE( x ) #define LOGIC( x ) diff --git a/lib_dec/fd_cng_dec_fx.c b/lib_dec/fd_cng_dec_fx.c index 501276dfcfd25767078ac706525ec2144bc1b5c8..8302f68b95fdc37e0e50ede3ab7bea2c3196a7e2 100644 --- a/lib_dec/fd_cng_dec_fx.c +++ b/lib_dec/fd_cng_dec_fx.c @@ -4957,10 +4957,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; @@ -4978,7 +4979,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; @@ -5011,6 +5012,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 ); @@ -5082,6 +5088,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(); diff --git a/lib_dec/igf_dec_fx.c b/lib_dec/igf_dec_fx.c index 511d8a9777607d64bd9a16695bc8af931c66a99a..79953aacaf2dd5ee9c9258bfb583d0589fe3d92c 100644 --- a/lib_dec/igf_dec_fx.c +++ b/lib_dec/igf_dec_fx.c @@ -898,9 +898,9 @@ static void IGF_prepStereo( Word16 *igf_specL_e_arr, /* i/o: prepared left IGF spectrum exponents for each index */ Word32 *igf_specR_fx, /* i/o: prepared right IGF spectrum */ Word16 *igf_specR_e_arr, /* i/o: prepared right IGF spectrum exponents for each index */ - const Word32 *src_specL_fx, /* i : left source spectrum */ + Word32 *src_specL_fx, /* i : left source spectrum */ const Word16 src_specL_e, /* i : left source spectrum exp */ - const Word32 *src_specR_fx, /* i : right source spectrum */ + Word32 *src_specR_fx, /* i : right source spectrum */ const Word16 src_specR_e, /* i : right source spectrum exp */ const Word16 *coreMsMask /* i : line wise ms Mask Q0 */ ) @@ -967,15 +967,15 @@ static void IGF_prepStereo( { IF( hPrivateDataL->n_noise_bands_off ) { - IGF_replaceTCXNoise_2_new_ivas_with_var_shift( igf_specL_fx, - igf_specL_e_arr, - TCXNoiseL, - strt_cpy, - stop, - hPrivateDataL->totalNoiseNrg_off, - hPrivateDataL->totalNoiseNrg_off_exp, - hPrivateDataL->n_noise_bands_off, - hInfoL->nfSeed ); + IGF_replaceTCXNoise_2_new_ivas( src_specL_fx, + src_specL_e, + TCXNoiseL, + strt_cpy, + stop, + hPrivateDataL->totalNoiseNrg_off, + hPrivateDataL->totalNoiseNrg_off_exp, + hPrivateDataL->n_noise_bands_off, + hInfoL->nfSeed ); } selectionL = 1; move16(); @@ -1002,15 +1002,15 @@ static void IGF_prepStereo( { IF( hPrivateDataR->n_noise_bands_off ) { - IGF_replaceTCXNoise_2_new_ivas_with_var_shift( igf_specR_fx, - igf_specR_e_arr, - TCXNoiseR, - strt_cpy, - stop, - hPrivateDataR->totalNoiseNrg_off, - hPrivateDataR->totalNoiseNrg_off_exp, - hPrivateDataR->n_noise_bands_off, - hInfoR->nfSeed ); + IGF_replaceTCXNoise_2_new_ivas( src_specR_fx, + src_specR_e, + TCXNoiseR, + strt_cpy, + stop, + hPrivateDataR->totalNoiseNrg_off, + hPrivateDataR->totalNoiseNrg_off_exp, + hPrivateDataR->n_noise_bands_off, + hInfoR->nfSeed ); } selectionR = 1; move16(); @@ -1132,15 +1132,15 @@ static void IGF_prepStereo( { IF( hPrivateDataL->n_noise_bands_off ) { - IGF_replaceTCXNoise_2_new_ivas_with_var_shift( igf_specL_fx, - igf_specL_e_arr, - TCXNoiseL, - strt_cpy, - stop, - hPrivateDataL->totalNoiseNrg_off, - hPrivateDataL->totalNoiseNrg_off_exp, - hPrivateDataL->n_noise_bands_off, - hInfoL->nfSeed ); + IGF_replaceTCXNoise_2_new_ivas( src_specL_fx, + src_specL_e, + TCXNoiseL, + strt_cpy, + stop, + hPrivateDataL->totalNoiseNrg_off, + hPrivateDataL->totalNoiseNrg_off_exp, + hPrivateDataL->n_noise_bands_off, + hInfoL->nfSeed ); } selectionL = 1; move16(); @@ -1167,15 +1167,15 @@ static void IGF_prepStereo( { IF( hPrivateDataR->n_noise_bands_off ) { - IGF_replaceTCXNoise_2_new_ivas_with_var_shift( igf_specR_fx, - igf_specR_e_arr, - TCXNoiseR, - strt_cpy, - stop, - hPrivateDataR->totalNoiseNrg_off, - hPrivateDataR->totalNoiseNrg_off_exp, - hPrivateDataR->n_noise_bands_off, - hInfoR->nfSeed ); + IGF_replaceTCXNoise_2_new_ivas( src_specR_fx, + src_specR_e, + TCXNoiseR, + strt_cpy, + stop, + hPrivateDataR->totalNoiseNrg_off, + hPrivateDataR->totalNoiseNrg_off_exp, + hPrivateDataR->n_noise_bands_off, + hInfoR->nfSeed ); } selectionR = 1; move16(); diff --git a/lib_dec/igf_scf_dec_fx.c b/lib_dec/igf_scf_dec_fx.c index 1ddb9950aae54c498fd2f79c32e2ccfbd0ee8073..6478b3f92c60fc290385bd2e50e6df9c137494ca 100644 --- a/lib_dec/igf_scf_dec_fx.c +++ b/lib_dec/igf_scf_dec_fx.c @@ -189,6 +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 */ + /* 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. */ 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/ivas_binRenderer_internal_fx.c b/lib_dec/ivas_binRenderer_internal_fx.c index 5c2c73026714faa720a9587a2672aec03ef1932b..d241cd145d313fe5c5ba8794c4dfc6e7406daa37 100644 --- a/lib_dec/ivas_binRenderer_internal_fx.c +++ b/lib_dec/ivas_binRenderer_internal_fx.c @@ -61,6 +61,7 @@ static void ivas_binRenderer_filterModule_fx( 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 */ 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; @@ -69,12 +70,12 @@ static void ivas_binRenderer_filterModule_fx( const Word32 *filterTapsLeftRealPtr_fx, *filterTapsLeftImagPtr_fx, *filterTapsRightRealPtr_fx, *filterTapsRightImagPtr_fx; Word16 shift_q; Word16 shift_q6 = sub( -29 + 6, Q_curr ); - Q_filterStates = hBinRenderer->hBinRenConvModule->Q_filterStatesLeft; + Q_filterStates = hBinRenderer->hBinRenConvModule->Q_filterStates[pos_idx]; move16(); #ifdef OPT_BIN_REND_V2_NBE shift_q = add( sub( Q_filterStates, Q_curr ), 1 ); - hBinRenderer->hBinRenConvModule->Q_filterStatesLeft = Q_curr; + hBinRenderer->hBinRenConvModule->Q_filterStates[pos_idx] = Q_curr; #else /* OPT_BIN_REND_V2_NBE */ Word64 Cldfb_RealBuffer_64fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES]; Word64 Cldfb_ImagBuffer_64fx[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES]; @@ -88,8 +89,8 @@ static void ivas_binRenderer_filterModule_fx( FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ ) { - filterStatesLeftRealPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx][0] ); - filterStatesLeftImagPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx][0] ); + filterStatesLeftRealPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftReal_fx[pos_idx][bandIdx][chIdx][0] ); + filterStatesLeftImagPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftImag_fx[pos_idx][bandIdx][chIdx][0] ); filterTapsLeftRealPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsLeftReal_fx[bandIdx][chIdx]; // Q29 filterTapsLeftImagPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsLeftImag_fx[bandIdx][chIdx]; // Q29 @@ -113,8 +114,8 @@ static void ivas_binRenderer_filterModule_fx( FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ ) { - filterStatesLeftRealPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx][0] ); - filterStatesLeftImagPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx][0] ); + filterStatesLeftRealPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftReal_fx[pos_idx][bandIdx][chIdx][0] ); + filterStatesLeftImagPtr_fx = (Word32 *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftImag_fx[pos_idx][bandIdx][chIdx][0] ); filterTapsLeftRealPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsLeftReal_fx[bandIdx][chIdx]; // Q29 filterTapsLeftImagPtr_fx = hBinRenderer->hBinRenConvModule->filterTapsLeftImag_fx[bandIdx][chIdx]; // Q29 @@ -153,7 +154,7 @@ static void ivas_binRenderer_filterModule_fx( outImagLeft_fx = W_shr( outImagLeft_fx, shift_q ); // Q_curr + Q29 outRealRight_fx = W_shr( outRealRight_fx, shift_q ); // Q_curr + Q29 outImagRight_fx = W_shr( outImagRight_fx, shift_q ); // Q_curr + Q29 - hBinRenderer->hBinRenConvModule->Q_filterStatesLeft = Q_curr; + hBinRenderer->hBinRenConvModule->Q_filterStates[pos_idx] = Q_curr; move16(); } #endif /* OPT_BIN_REND_V2_NBE */ @@ -162,10 +163,9 @@ static void ivas_binRenderer_filterModule_fx( filterStatesLeftImagPtr_fx[0] = CLDFB_imag[chIdx][k][bandIdx]; move32(); - #ifdef OPT_BIN_REND_V2_NBE /* Left Real and Imag */ - Word32 neg_temp2 = L_negate( filterStatesLeftImagPtr_fx[0] ); // Q_curr -1 + Word32 neg_temp2 = L_negate( filterStatesLeftImagPtr_fx[0] ); // Q_curr outRealLeft = W_mac_32_32( W_mac_32_32( outRealLeft, filterStatesLeftRealPtr_fx[0], filterTapsLeftRealPtr_fx[0] ), neg_temp2, filterTapsLeftImagPtr_fx[0] ); outImagLeft = W_mac_32_32( W_mac_32_32( outImagLeft, filterStatesLeftImagPtr_fx[0], filterTapsLeftRealPtr_fx[0] ), filterStatesLeftRealPtr_fx[0], filterTapsLeftImagPtr_fx[0] ); @@ -240,9 +240,11 @@ static void ivas_binRenderer_filterModule_fx( const Word16 renderer_type, const Word16 isLoudspeaker, const AUDIO_CONFIG input_config, - const HRTFS_FASTCONV_HANDLE hHrtf ) + const HRTFS_FASTCONV_HANDLE hHrtf, + const Word16 num_poses ) { Word16 bandIdx, chIdx; + Word16 pos_idx; BINRENDERER_CONV_MODULE_HANDLE_FX hBinRenConvModule; @@ -368,44 +370,62 @@ static void ivas_binRenderer_filterModule_fx( } } - - IF( ( hBinRenConvModule->filterStatesLeftReal_fx = (Word32 ***) malloc( hBinRenderer->conv_band * sizeof( Word32 ** ) ) ) == NULL ) + 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" ) ); } - IF( ( hBinRenConvModule->filterStatesLeftImag_fx = (Word32 ***) malloc( hBinRenderer->conv_band * sizeof( Word32 ** ) ) ) == NULL ) + IF( ( hBinRenConvModule->filterStatesLeftImag_fx = (Word32 ****) malloc( num_poses * sizeof( Word32 *** ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); } + IF( ( hBinRenConvModule->Q_filterStates = (Word16 *) malloc( num_poses * sizeof( Word16 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); + } - FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) + FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) { - IF( ( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx] = (Word32 **) malloc( hBinRenderer->nInChannels * sizeof( Word32 * ) ) ) == NULL ) + IF( ( hBinRenConvModule->filterStatesLeftReal_fx[pos_idx] = (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[bandIdx] = (Word32 **) malloc( hBinRenderer->nInChannels * sizeof( Word32 * ) ) ) == NULL ) + IF( ( hBinRenConvModule->filterStatesLeftImag_fx[pos_idx] = (Word32 ***) malloc( hBinRenderer->conv_band * 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++ ) + FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) { - IF( ( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx] = (Word32 *) malloc( hBinRenConvModule->numTapsArray[bandIdx] * sizeof( Word32 ) ) ) == NULL ) + IF( ( hBinRenConvModule->filterStatesLeftReal_fx[pos_idx][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][chIdx] = (Word32 *) malloc( hBinRenConvModule->numTapsArray[bandIdx] * sizeof( Word32 ) ) ) == NULL ) + IF( ( hBinRenConvModule->filterStatesLeftImag_fx[pos_idx][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[pos_idx][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[pos_idx][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" ) ); + } + } } } + /* set memories */ FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) { @@ -446,10 +466,6 @@ static void ivas_binRenderer_filterModule_fx( IF( EQ_16( renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) { /* set the memories to zero */ - 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(); IF( isLoudspeaker ) { hBinRenConvModule->filterTapsLeftReal_fx[bandIdx][chIdx] = hHrtf->leftBRIRReal_fx[bandIdx][tmp]; @@ -461,10 +477,6 @@ static void ivas_binRenderer_filterModule_fx( ELSE { /* 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(); IF( isLoudspeaker ) { hBinRenConvModule->filterTapsLeftReal_fx[bandIdx][chIdx] = hHrtf->leftHRIRReal_fx[bandIdx][tmp]; @@ -507,6 +519,40 @@ static void ivas_binRenderer_filterModule_fx( } } + IF( EQ_16( renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) + { + FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) + { + hBinRenConvModule->Q_filterStates[pos_idx] = 31; + move16(); + FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) + { + FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ ) + { + /* set the memories to zero */ + set32_fx( hBinRenConvModule->filterStatesLeftReal_fx[pos_idx][bandIdx][chIdx], 0, hBinRenConvModule->numTapsArray[bandIdx] ); + set32_fx( hBinRenConvModule->filterStatesLeftImag_fx[pos_idx][bandIdx][chIdx], 0, hBinRenConvModule->numTapsArray[bandIdx] ); + } + } + } + } + ELSE + { + FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) + { + hBinRenConvModule->Q_filterStates[pos_idx] = 31; + move16(); + FOR( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) + { + FOR( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ ) + { + /* set the memories to zero */ + set32_fx( hBinRenConvModule->filterStatesLeftReal_fx[pos_idx][bandIdx][chIdx], 0, hBinRenConvModule->numTaps ); + set32_fx( hBinRenConvModule->filterStatesLeftImag_fx[pos_idx][bandIdx][chIdx], 0, hBinRenConvModule->numTaps ); + } + } + } + } hBinRenderer->hBinRenConvModule = hBinRenConvModule; @@ -966,7 +1012,6 @@ static void ivas_binaural_obtain_DMX_fx( move32(); imagDMX[chOutIdx][k][bandIdx] = L_add( imagDMX[chOutIdx][k][bandIdx], temp2_fx ); // Q_in move32(); - P_in_fx[bandIdx] = L_add( P_in_fx[bandIdx], L_add( Mpy_32_32( temp1_fx, temp1_fx ), Mpy_32_32( temp2_fx, temp2_fx ) ) ); // Q31-2*Q_in move32(); } @@ -994,7 +1039,11 @@ static void ivas_binaural_obtain_DMX_fx( ELSE { Word16 div = divide3232( P_in_fx[bandIdx], P_out_fx ); +#ifdef FIX_1835_REVERB_ACTIVATION + Word16 exp = 0; // divide3232 returns Q15 + following Q16 shift +#else Word16 exp = norm_l( div ); +#endif factEQ_fx = Sqrt32( L_shl( div, Q16 ), &exp ); factEQ_fx = L_shl( factEQ_fx, sub( exp, 1 ) ); // Q30 } @@ -1032,24 +1081,52 @@ 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++ ) + /*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 + { + 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(); + } } } } @@ -1058,6 +1135,110 @@ static void ivas_binaural_obtain_DMX_fx( return; } + +/*------------------------------------------------------------------------- + * ivas_rend_openCldfbRend() + * + * Allocate and initialize CLDFB fast conv renderer handle + *------------------------------------------------------------------------*/ + +ivas_error ivas_rend_openCldfbRend( + CLDFB_REND_WRAPPER *pCldfbRend, + const AUDIO_CONFIG inConfig, + const AUDIO_CONFIG outConfig, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const Word32 output_Fs ) +{ + BINAURAL_RENDERER_HANDLE hBinRenderer; + Word16 convBand; + ivas_error error; + + error = IVAS_ERR_OK; + + /*-----------------------------------------------------------------* + * prepare library opening + *-----------------------------------------------------------------*/ + + IF( ( hBinRenderer = (BINAURAL_RENDERER_HANDLE) malloc( sizeof( BINAURAL_RENDERER ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural Renderer\n" ) ); + } + + IF( ( hBinRenderer->hInputSetup = (IVAS_OUTPUT_SETUP_HANDLE) malloc( sizeof( IVAS_OUTPUT_SETUP ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for output setup Binaural Renderer\n" ) ); + } + + hBinRenderer->rotInCldfb = 1; + hBinRenderer->ivas_format = SBA_FORMAT; + + hBinRenderer->max_band = extract_l( Mpy_32_32( Mpy_32_32( BINAURAL_MAXBANDS_Q25, L_shl( output_Fs, Q6 ) ), ONE_BY_48000_Q31 ) ); + move16(); + + convBand = hBinRenderer->max_band; + move16(); + + hBinRenderer->timeSlots = MAX_PARAM_SPATIAL_SUBFRAMES; /* Corresponds to 5 msec sound to motion latency */ + move16(); + + IF( GT_16( convBand, BINAURAL_CONVBANDS ) ) + { + hBinRenderer->conv_band = BINAURAL_CONVBANDS; + move16(); + } + ELSE + { + hBinRenderer->conv_band = convBand; + move16(); + } + + hBinRenderer->hInputSetup->is_loudspeaker_setup = 0; + hBinRenderer->hInputSetup->output_config = inConfig; + IF( ( error = getAudioConfigNumChannels( inConfig, &hBinRenderer->hInputSetup->nchan_out_woLFE ) ) != IVAS_ERR_OK ) + { + return error; + } + + IF( EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + hBinRenderer->numPoses = pMultiBinPoseData->num_poses; + move16(); + } + ELSE + { + hBinRenderer->numPoses = 1; + move16(); + } + + /*LFE rendering switched off by default*/ + hBinRenderer->render_lfe = 0; + move16(); + + + /* Load HRTF tables */ + IF( NE_32( ( error = ivas_binaural_hrtf_open_fx( &pCldfbRend->hHrtfFastConv, hBinRenderer->hInputSetup->output_config, RENDERER_BINAURAL_FASTCONV ) ), IVAS_ERR_OK ) ) + { + return error; + } + + /* Allocate memories and buffers needed for convolutional module in CICP19 */ + IF( NE_32( ( error = ivas_binRenderer_convModuleOpen( hBinRenderer, RENDERER_BINAURAL_FASTCONV, hBinRenderer->hInputSetup->is_loudspeaker_setup, inConfig, pCldfbRend->hHrtfFastConv, hBinRenderer->numPoses ) ), IVAS_ERR_OK ) ) + { + return error; + } + + pCldfbRend->binaural_latency_ns = (Word32) ( pCldfbRend->hHrtfFastConv->FASTCONV_HOA3_latency_s_fx * 1000000000 ); + move32(); + hBinRenderer->hReverb = NULL; + move32(); + hBinRenderer->hEFAPdata = NULL; + move32(); + pCldfbRend->hCldfbRend = hBinRenderer; + move32(); + + return error; +} + /*------------------------------------------------------------------------- * ivas_binRenderer_open() * @@ -1089,12 +1270,22 @@ ivas_error ivas_binRenderer_open_fx( hBinRenderer->rotInCldfb = 0; move16(); test(); - if ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) || EQ_32( st_ivas->ivas_format, SBA_FORMAT ) ) + if ( EQ_32( st_ivas->ivas_format, MC_FORMAT ) || EQ_32( st_ivas->ivas_format, SBA_FORMAT ) || EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) { hBinRenderer->rotInCldfb = 1; move16(); } + 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; + move16(); + } + else + { + hBinRenderer->numPoses = 1; + move16(); + } /* Declare some common variables needed for renderer */ /* Which format used for binaural rendering (needed for late reverb) ? MC or SBA */ @@ -1151,11 +1342,10 @@ ivas_error ivas_binRenderer_open_fx( IVAS_OUTPUT_SETUP out_setup; /* Allocate memories and buffers needed for convolutional module in CICP19 */ - 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 ) ) + 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; } - ivas_output_init( &out_setup, IVAS_AUDIO_CONFIG_7_1_4 ); IF( st_ivas->hoa_dec_mtx == NULL ) @@ -1173,7 +1363,7 @@ ivas_error ivas_binRenderer_open_fx( ELSE { /* Allocate memories and buffers needed for convolutional module */ - 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 ) ) + 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; } @@ -1218,14 +1408,31 @@ ivas_error ivas_binRenderer_open_fx( /* Allocate memories needed for reverb module */ test(); - IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) && EQ_32( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) +#ifdef FIX_1835_REVERB_ACTIVATION + 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 ) ) ) +#else + 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 ) ) +#endif { - 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 ) ) + 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 ) ) { return error; } /* initialize the dmx matrix */ +#ifdef NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM + IF( NE_16( hBinRenderer->nInChannels, HOA3_CHANNELS ) ) + { + FOR( chIdx = 0; chIdx < BINAURAL_CHANNELS; chIdx++ ) + { + FOR( k = 0; k < hBinRenderer->nInChannels; k++ ) + { + hBinRenderer->hReverb->dmxmtx_fx[chIdx][k] = dmxmtx_table_fx[chIdx][k]; + move32(); + } + } + } +#else FOR( chIdx = 0; chIdx < BINAURAL_CHANNELS; chIdx++ ) { FOR( k = 0; k < hBinRenderer->nInChannels; k++ ) @@ -1234,6 +1441,7 @@ ivas_error ivas_binRenderer_open_fx( move32(); } } +#endif } ELSE { @@ -1242,11 +1450,19 @@ ivas_error ivas_binRenderer_open_fx( hBinRenderer->hEFAPdata = NULL; +#ifdef NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM + IF( hBinRenderer->hReverb != NULL && NE_16( hBinRenderer->nInChannels, HOA3_CHANNELS ) ) +#else IF( hBinRenderer->hReverb != NULL ) +#endif { test(); test(); +#ifdef NONBE_FIX_1058_DECODER_ERROR_WITH_REVERB_ROOM IF( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 ) +#else + IF( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 && NE_16( hBinRenderer->nInChannels, HOA3_CHANNELS ) ) +#endif { FOR( k = 0; k < 11; k++ ) { @@ -1278,10 +1494,12 @@ ivas_error ivas_binRenderer_open_fx( * Close convolution module handle of fastconv binaural renderer *------------------------------------------------------------------------*/ static void ivas_binRenderer_convModuleClose_fx( - BINAURAL_RENDERER_HANDLE *hBinRenderer /* i/o: fastconv binaural renderer handle */ + BINAURAL_RENDERER_HANDLE *hBinRenderer, /* i/o: fastconv binaural renderer handle */ + const Word16 num_poses /* i : number of poses */ ) { Word16 bandIdx, chIdx; + Word16 posIdx; BINRENDERER_CONV_MODULE_HANDLE_FX hBinRenConvModule; @@ -1319,24 +1537,31 @@ static void ivas_binRenderer_convModuleClose_fx( free( hBinRenConvModule->filterTapsRightImag_fx ); hBinRenConvModule->filterTapsRightImag_fx = NULL; - FOR( bandIdx = 0; bandIdx < ( *hBinRenderer )->conv_band; bandIdx++ ) + FOR( posIdx = 0; posIdx < num_poses; posIdx++ ) { - FOR( chIdx = 0; chIdx < ( *hBinRenderer )->nInChannels; chIdx++ ) + FOR( bandIdx = 0; bandIdx < ( *hBinRenderer )->conv_band; bandIdx++ ) { - free( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx] ); - hBinRenConvModule->filterStatesLeftReal_fx[bandIdx][chIdx] = NULL; + FOR( chIdx = 0; chIdx < ( *hBinRenderer )->nInChannels; chIdx++ ) + { + free( hBinRenConvModule->filterStatesLeftReal_fx[posIdx][bandIdx][chIdx] ); + hBinRenConvModule->filterStatesLeftReal_fx[posIdx][bandIdx][chIdx] = NULL; - free( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx] ); - hBinRenConvModule->filterStatesLeftImag_fx[bandIdx][chIdx] = NULL; - } + free( hBinRenConvModule->filterStatesLeftImag_fx[posIdx][bandIdx][chIdx] ); + hBinRenConvModule->filterStatesLeftImag_fx[posIdx][bandIdx][chIdx] = NULL; + } - free( hBinRenConvModule->filterStatesLeftReal_fx[bandIdx] ); - hBinRenConvModule->filterStatesLeftReal_fx[bandIdx] = NULL; + free( hBinRenConvModule->filterStatesLeftReal_fx[posIdx][bandIdx] ); + hBinRenConvModule->filterStatesLeftReal_fx[posIdx][bandIdx] = NULL; - free( hBinRenConvModule->filterStatesLeftImag_fx[bandIdx] ); - hBinRenConvModule->filterStatesLeftImag_fx[bandIdx] = NULL; - } + free( hBinRenConvModule->filterStatesLeftImag_fx[posIdx][bandIdx] ); + hBinRenConvModule->filterStatesLeftImag_fx[posIdx][bandIdx] = NULL; + } + free( hBinRenConvModule->filterStatesLeftReal_fx[posIdx] ); + hBinRenConvModule->filterStatesLeftReal_fx[posIdx] = NULL; + free( hBinRenConvModule->filterStatesLeftImag_fx[posIdx] ); + hBinRenConvModule->filterStatesLeftImag_fx[posIdx] = NULL; + } free( hBinRenConvModule->filterStatesLeftReal_fx ); hBinRenConvModule->filterStatesLeftReal_fx = NULL; @@ -1367,7 +1592,7 @@ void ivas_binRenderer_close_fx( IF( ( *hBinRenderer )->hBinRenConvModule != NULL ) { - ivas_binRenderer_convModuleClose_fx( hBinRenderer ); + ivas_binRenderer_convModuleClose_fx( hBinRenderer, ( *hBinRenderer )->numPoses ); } IF( ( *hBinRenderer )->hReverb != NULL ) @@ -1476,6 +1701,7 @@ void ivas_binaural_add_LFE_fx( ) { Word16 render_lfe, idx_lfe, gain_fx, idx; + Word32 lfe_tc[L_FRAME48k]; IF( st_ivas->hBinRenderer != NULL ) { @@ -1512,15 +1738,15 @@ void ivas_binaural_add_LFE_fx( } FOR( idx_lfe = 0; idx_lfe < st_ivas->hIntSetup.num_lfe; idx_lfe++ ) { - v_multc_fixed_16( input_fx[st_ivas->hIntSetup.index_lfe[idx_lfe]], gain_fx, input_fx[st_ivas->hIntSetup.index_lfe[idx_lfe]], output_frame ); // q_input_fx - 1 + v_multc_fixed_16( input_fx[st_ivas->hIntSetup.index_lfe[idx_lfe]], gain_fx, lfe_tc, output_frame ); // q_input_fx - 1 /* copy LFE to left and right channels */ FOR( idx = 0; idx < output_frame; idx++ ) { - input_fx[st_ivas->hIntSetup.index_lfe[idx_lfe]][idx] = L_shl_sat( input_fx[st_ivas->hIntSetup.index_lfe[idx_lfe]][idx], 1 ); // saturating to keep same q + lfe_tc[idx] = L_shl_sat( lfe_tc[idx], 1 ); // saturating to keep same q move32(); - output_fx[0][idx] = L_add_sat( output_fx[0][idx], input_fx[st_ivas->hIntSetup.index_lfe[idx_lfe]][idx] ); + output_fx[0][idx] = L_add_sat( output_fx[0][idx], lfe_tc[idx] ); move32(); - output_fx[1][idx] = L_add_sat( output_fx[1][idx], input_fx[st_ivas->hIntSetup.index_lfe[idx_lfe]][idx] ); + output_fx[1][idx] = L_add_sat( output_fx[1][idx], lfe_tc[idx] ); move32(); } } @@ -1530,38 +1756,59 @@ void ivas_binaural_add_LFE_fx( } /*------------------------------------------------------------------------- - * ivas_binRenderer() + * ivas_binRenderer_fx() * * Fastconv binaural renderer main function *-------------------------------------------------------------------------*/ void ivas_binRenderer_fx( - BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: binaural renderer handle */ - 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[][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*/ - 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 */ + BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: binaural renderer handle */ + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + 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 */ + 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; + 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]; + push_wmops( "fastconv_binaural_rendering" ); + num_poses = hBinRenderer->numPoses; + /* Compute Convolution */ /* memory reset for the binaural output */ #ifndef OPT_SBA_DEC_V2_BE - FOR( chIdx = 0; chIdx < BINAURAL_CHANNELS; chIdx++ ) + FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) { - FOR( k = 0; k < numTimeSlots; k++ ) + FOR( chIdx = 0; chIdx < BINAURAL_CHANNELS; chIdx++ ) { - 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 ); + FOR( k = 0; k < numTimeSlots; k++ ) + { + set32_fx( Cldfb_RealBuffer_Binaural_fx[pos_idx][chIdx][k], 0, CLDFB_NO_CHANNELS_MAX ); + set32_fx( Cldfb_ImagBuffer_Binaural_fx[pos_idx][chIdx][k], 0, CLDFB_NO_CHANNELS_MAX ); + } } } #endif /* OPT_SBA_DEC_V2_BE */ + /* Note: on main, this nested for loop was removed under a "bit-exact optimization" under switch OPT_SBA_DEC_V2_BE */ + /* this was found to clash with split rendering, so kept here. WMOPS impact should be assessed */ + FOR( chIdx = 0; chIdx < hBinRenderer->hInputSetup->nchan_out_woLFE; chIdx++ ) + { + FOR( k = 0; k < numTimeSlots; k++ ) + { + Copy32( RealBuffer_fx[chIdx][k], RealBuffer_local[chIdx][k], CLDFB_NO_CHANNELS_MAX ); + Copy32( ImagBuffer_fx[chIdx][k], ImagBuffer_local[chIdx][k], CLDFB_NO_CHANNELS_MAX ); + } + } + /* Head rotation in HOA3 or CICPx */ test(); test(); @@ -1598,7 +1845,77 @@ void ivas_binRenderer_fx( ivas_sba2mc_cldfb_fixed( *( hBinRenderer->hInputSetup ), RealBuffer_fx, ImagBuffer_fx, hBinRenderer->nInChannels, hBinRenderer->conv_band, numTimeSlots, hBinRenderer->hoa_dec_mtx ); } - ivas_binRenderer_filterModule_fx( Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx, RealBuffer_fx, ImagBuffer_fx, numTimeSlots, hBinRenderer, *Q_in ); + + ivas_binRenderer_filterModule_fx( Cldfb_RealBuffer_Binaural_fx[0], Cldfb_ImagBuffer_Binaural_fx[0], RealBuffer_fx, ImagBuffer_fx, numTimeSlots, hBinRenderer, 0, *Q_in ); + + IF( pMultiBinPoseData != NULL ) + { + IF( GT_16( pMultiBinPoseData->num_poses, 1 ) ) + { + IVAS_QUATERNION Quaternions_abs, Quaternions_ref, Quaternions_ref2; + Word32 Rmat_local[3][3]; + Word16 q_fact_orig; + + IF( hCombinedOrientationData && hBinRenderer->rotInCldfb ) + { + Quaternions_ref = hCombinedOrientationData->Quaternions[0]; + q_fact_orig = Quaternions_ref.q_fact; + + modify_Quat_q_fx( &Quaternions_ref, &Quaternions_ref, Q22 ); + + Quaternions_ref2.w_fx = L_negate( 12582912 ); // Q22 + IF( EQ_16( hCombinedOrientationData->shd_rot_max_order, 0 ) ) + { + /*HOA signal already rotated by DirAC*/ + Quaternions_ref2.x_fx = 0; + Quaternions_ref2.y_fx = 0; + Quaternions_ref2.z_fx = 0; + *Q_in = sub( *Q_in, 1 ); + } + ELSE + { + /*euler*/ + Quat2EulerDegree_fx( Quaternions_ref, &Quaternions_ref2.z_fx, &Quaternions_ref2.y_fx, &Quaternions_ref2.x_fx ); /*order in Quat2Euler seems to be reversed ?*/ + } + + FOR( pos_idx = 1; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ ) + { + FOR( chIdx = 0; chIdx < hBinRenderer->hInputSetup->nchan_out_woLFE; chIdx++ ) + { + FOR( k = 0; k < numTimeSlots; k++ ) + { + Copy32( RealBuffer_local[chIdx][k], RealBuffer_fx[chIdx][k], CLDFB_NO_CHANNELS_MAX ); + Copy32( ImagBuffer_local[chIdx][k], ImagBuffer_fx[chIdx][k], CLDFB_NO_CHANNELS_MAX ); + } + } + + Quaternions_abs.x_fx = L_add( Quaternions_ref2.x_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][0] ); + Quaternions_abs.y_fx = L_add( Quaternions_ref2.y_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][1] ); + Quaternions_abs.z_fx = L_add( Quaternions_ref2.z_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][2] ); + Quaternions_abs.w_fx = L_negate( 12582912 ); // Q22 + + Euler2Quat_fx( deg2rad_fx( Quaternions_abs.x_fx ), deg2rad_fx( Quaternions_abs.y_fx ), deg2rad_fx( Quaternions_abs.z_fx ), &Quaternions_abs ); + + modify_Quat_q_fx( &Quaternions_abs, &Quaternions_abs, q_fact_orig ); + + QuatToRotMat_fx( Quaternions_abs, Rmat_local ); + + modify_Rmat_q_fx( Rmat_local, Rmat_local, sub( shl( q_fact_orig, 1 ), 32 ), Q30 ); + + IF( hBinRenderer->hInputSetup->is_loudspeaker_setup ) + { + rotateFrame_sd_cldfb_fixed( Rmat_local, RealBuffer_fx, ImagBuffer_fx, hBinRenderer->hInputSetup, hBinRenderer->hEFAPdata, numTimeSlots, hBinRenderer->conv_band ); + } + ELSE + { + rotateFrame_shd_cldfb( RealBuffer_fx, ImagBuffer_fx, Rmat_local, hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, 3 ); + } + ivas_binRenderer_filterModule_fx( Cldfb_RealBuffer_Binaural_fx[pos_idx], Cldfb_ImagBuffer_Binaural_fx[pos_idx], RealBuffer_fx, ImagBuffer_fx, numTimeSlots, hBinRenderer, pos_idx, *Q_in ); + } + } + } + } + /* Obtain the binaural dmx and compute the reverb */ IF( hBinRenderer->hReverb != NULL ) { @@ -1606,6 +1923,7 @@ void ivas_binRenderer_fx( Word32 reverbIm_fx[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; Word32 inRe_fx[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; Word32 inIm_fx[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + Word16 shift_q; ivas_binaural_obtain_DMX_fx( numTimeSlots, hBinRenderer, RealBuffer_fx, ImagBuffer_fx, inRe_fx, inIm_fx ); @@ -1620,15 +1938,16 @@ void ivas_binRenderer_fx( ivas_binaural_reverb_processSubframe_fx( hBinRenderer->hReverb, BINAURAL_CHANNELS, numTimeSlots, inRe_fx, inIm_fx, reverbRe_fx, reverbIm_fx ); + shift_q = sub( Q6, sub( *Q_in, 1 ) ); FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) { FOR( j = 0; j < numTimeSlots; j++ ) { FOR( k = 0; k < hBinRenderer->hReverb->numBins; k++ ) { - reverbRe_fx[i][j][k] = L_shl( reverbRe_fx[i][j][k], 1 ); //*Q_in + reverbRe_fx[i][j][k] = L_shl( reverbRe_fx[i][j][k], shift_q ); // Q6 move32(); - reverbIm_fx[i][j][k] = L_shl( reverbIm_fx[i][j][k], 1 ); //*Q_in + reverbIm_fx[i][j][k] = L_shl( reverbIm_fx[i][j][k], shift_q ); // Q6 move32(); } } @@ -1639,9 +1958,12 @@ void ivas_binRenderer_fx( { FOR( k = 0; k < numTimeSlots; k++ ) { - /* 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 + 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 ); // Q6 + 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 ); // Q6 + } } } } @@ -1649,15 +1971,100 @@ void ivas_binRenderer_fx( #ifdef OPT_SBA_DEC_V2_BE Word16 len = sub( CLDFB_NO_CHANNELS_MAX, hBinRenderer->conv_band ); - FOR( k = 0; k < numTimeSlots; k++ ) + FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) { - set32_fx( &Cldfb_RealBuffer_Binaural_fx[0][k][hBinRenderer->conv_band], 0, len ); - set32_fx( &Cldfb_RealBuffer_Binaural_fx[1][k][hBinRenderer->conv_band], 0, len ); - set32_fx( &Cldfb_ImagBuffer_Binaural_fx[0][k][hBinRenderer->conv_band], 0, len ); - set32_fx( &Cldfb_ImagBuffer_Binaural_fx[1][k][hBinRenderer->conv_band], 0, len ); + FOR( k = 0; k < numTimeSlots; k++ ) + { + set32_fx( &Cldfb_RealBuffer_Binaural_fx[pos_idx][0][k][hBinRenderer->conv_band], 0, len ); + set32_fx( &Cldfb_RealBuffer_Binaural_fx[pos_idx][1][k][hBinRenderer->conv_band], 0, len ); + set32_fx( &Cldfb_ImagBuffer_Binaural_fx[pos_idx][0][k][hBinRenderer->conv_band], 0, len ); + set32_fx( &Cldfb_ImagBuffer_Binaural_fx[pos_idx][1][k][hBinRenderer->conv_band], 0, len ); + } } #endif /* OPT_SBA_DEC_V2_BE */ pop_wmops(); return; } + +/*------------------------------------------------------------------------- + * ivas_rend_CldfbMultiBinRendProcess() + * + * + *-------------------------------------------------------------------------*/ + +void ivas_rend_CldfbMultiBinRendProcess( + const BINAURAL_RENDERER_HANDLE hCldfbRend, + const COMBINED_ORIENTATION_HANDLE *pCombinedOrientationData, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + Word32 Cldfb_In_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_In_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_Out_Real[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals */ + Word32 Cldfb_Out_Imag[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const Word16 low_res_pre_rend_rot, + const Word16 num_subframes, + const Word16 Q_in /* i : LS signals exp */ +) +{ + int16_t slot_idx, ch_idx, idx, pose_idx, i, j; + int16_t sf_idx; + Word32 Cldfb_RealBuffer_sfIn[MAX_INPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_ImagBuffer_sfIn[MAX_INPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + Word16 Q_in_orig; + + FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + Q_in_orig = Q_in; + move16(); + FOR( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + idx = sf_idx * MAX_PARAM_SPATIAL_SUBFRAMES + slot_idx; + FOR( ch_idx = 0; ch_idx < hCldfbRend->nInChannels; ch_idx++ ) + { + Copy32( &Cldfb_In_Real[ch_idx][idx][0], &Cldfb_RealBuffer_sfIn[ch_idx][slot_idx][0], hCldfbRend->max_band ); + Copy32( &Cldfb_In_Imag[ch_idx][idx][0], &Cldfb_ImagBuffer_sfIn[ch_idx][slot_idx][0], hCldfbRend->max_band ); + } + } + + IF( ( *pCombinedOrientationData ) != NULL ) + { + IF( ( low_res_pre_rend_rot ) && ( EQ_32( pMultiBinPoseData->poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) ) ) + { + Copy_Quat_fx( &( *pCombinedOrientationData )->Quaternions[0], &( *pCombinedOrientationData )->Quaternions[sf_idx] ); + + FOR( i = 0; i < 3; i++ ) + { + FOR( j = 0; j < 3; j++ ) + { + ( *pCombinedOrientationData )->Rmat_fx[sf_idx][i][j] = ( *pCombinedOrientationData )->Rmat_fx[0][i][j]; + move32(); + } + } + } + ( *pCombinedOrientationData )->shd_rot_max_order = -1; + move16(); + } + + ivas_binRenderer_fx( hCldfbRend, pMultiBinPoseData, *pCombinedOrientationData, MAX_PARAM_SPATIAL_SUBFRAMES, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer_sfIn, Cldfb_ImagBuffer_sfIn, &Q_in_orig ); + + FOR( pose_idx = 0; pose_idx < hCldfbRend->numPoses; pose_idx++ ) + { + FOR( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + idx = sf_idx * MAX_PARAM_SPATIAL_SUBFRAMES + slot_idx; + FOR( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) + { + Copy32( &Cldfb_RealBuffer_Binaural[pose_idx][ch_idx][slot_idx][0], &Cldfb_Out_Real[( pose_idx * BINAURAL_CHANNELS ) + ch_idx][idx][0], hCldfbRend->max_band ); + Copy32( &Cldfb_ImagBuffer_Binaural[pose_idx][ch_idx][slot_idx][0], &Cldfb_Out_Imag[( pose_idx * BINAURAL_CHANNELS ) + ch_idx][idx][0], hCldfbRend->max_band ); + + Scale_sig32( &Cldfb_Out_Real[( pose_idx * BINAURAL_CHANNELS ) + ch_idx][idx][0], hCldfbRend->max_band, sub( Q_in, Q6 ) ); // Q_in + Scale_sig32( &Cldfb_Out_Imag[( pose_idx * BINAURAL_CHANNELS ) + ch_idx][idx][0], hCldfbRend->max_band, sub( Q_in, Q6 ) ); // Q_in + } + } + } + } + + return; +} diff --git a/lib_dec/ivas_dirac_dec_fx.c b/lib_dec/ivas_dirac_dec_fx.c index 69983cbf2a8c89355dd93a9c2baef62b5ceba279..69c841dac34ad395ba7c11e258cde2fb3311fa42 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,6 +980,7 @@ ivas_error ivas_dirac_dec_config_fx( Word16 need_parambin; Word16 dec_param_estim_old; Word16 dec_param_estim_new; + Word16 num_poses, pos_idx; error = IVAS_ERR_OK; move32(); @@ -1008,6 +1011,14 @@ ivas_error ivas_dirac_dec_config_fx( move16(); } + 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 ) ) + { + num_poses = st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses; + move16(); + } + sparfoa_flag = 0; move16(); test(); @@ -1054,7 +1065,7 @@ ivas_error ivas_dirac_dec_config_fx( IF( !need_parambin ) { - ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); + ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); } need_dirac_rend = 0; @@ -1093,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 ) @@ -1127,9 +1140,13 @@ ivas_error ivas_dirac_dec_config_fx( } } - IF( st_ivas->hDiracDecBin == NULL ) + IF( st_ivas->hDiracDecBin[0] == NULL ) { +#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; } @@ -1139,25 +1156,31 @@ 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(); - IF( st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_params != NULL && !( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) && st_ivas->nSCE > 0 ) ) + IF( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_params != NULL && !( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) && st_ivas->nSCE > 0 ) ) { - 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 + 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 } - 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 ) ) + 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 ) ) { return error; } - IF( !st_ivas->hDiracDecBin->useTdDecorr ) + /* 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 ) { - IF( st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_params == NULL ) + IF( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_params == NULL ) { 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 ); - 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, + 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 ) ) { @@ -1165,8 +1188,12 @@ ivas_error ivas_dirac_dec_config_fx( } } } - st_ivas->hDiracDecBin->reqularizationFactor_fx = configure_reqularization_factor_fx( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); - move16(); + + 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(); + } } } } @@ -1594,7 +1621,9 @@ void ivas_qmetadata_to_dirac_fx( move16(); hDirAC->hConfig->nbands = 5; move16(); - ivas_dirac_config_bands_fx( hDirAC->band_grouping, hDirAC->hConfig->nbands, nbands, NULL, 0, 0, NULL ); + + ivas_dirac_config_bands_fx( hDirAC->band_grouping, hDirAC->hConfig->nbands, nbands, NULL, 0, 0, NULL, 1 ); + nbands = 5; move16(); } @@ -1613,7 +1642,7 @@ void ivas_qmetadata_to_dirac_fx( move16(); } - ivas_dirac_config_bands_fx( hDirAC->band_grouping, hDirAC->hConfig->nbands, nbands, dirac_to_spar_md_bands, hQMetaData->useLowerBandRes, hDirAC->hConfig->enc_param_start_band, hDirAC->hFbMdft ); + ivas_dirac_config_bands_fx( hDirAC->band_grouping, hDirAC->hConfig->nbands, nbands, dirac_to_spar_md_bands, hQMetaData->useLowerBandRes, hDirAC->hConfig->enc_param_start_band, hDirAC->hFbMdft, 0 ); nbands = hDirAC->hConfig->nbands; move16(); @@ -2252,12 +2281,22 @@ 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]; - 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]; + 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]; 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 ); + } + } + /* local copies of azi, ele, diffuseness */ Word16 azimuth[CLDFB_NO_CHANNELS_MAX]; Word16 elevation[CLDFB_NO_CHANNELS_MAX]; @@ -2753,40 +2792,17 @@ void ivas_dirac_dec_render_sf_fx( { masa_band_mapping = st_ivas->hMasa->data.band_mapping; } - 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 ) ) - { - 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, - st_ivas->hCombinedOrientationData->shd_rot_max_order, - p_Rmat_fx, - 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, - 0, - NULL, - hodirac_flag ); - } + 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 ); } test(); @@ -2886,10 +2902,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 @@ -3298,48 +3314,22 @@ void ivas_dirac_dec_render_sf_fx( move16(); } - test(); - test(); - IF( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx] && st_ivas->hCombinedOrientationData->shd_rot_max_order > 0 ) - { - 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->hCombinedOrientationData->shd_rot_max_order, - p_Rmat_fx, - st_ivas->hVBAPdata, - hDirACRend->hOutSetup, - nchan_transport, - md_idx, - 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, - 0, - 0, - st_ivas->hVBAPdata, - hDirACRend->hOutSetup, - nchan_transport, - md_idx, - hodirac_flag, - hDirAC->hConfig->dec_param_estim ); - } + 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 ); + IF( hDirAC->hConfig->dec_param_estim ) { @@ -4020,12 +4010,46 @@ void ivas_dirac_dec_render_sf_fx( input_q = Q6; 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 ) ) + { + IF( st_ivas->hSplitBinRend->hCldfbDataOut != NULL ) + { + FOR( slot_idx = 0; slot_idx < hSpatParamRendCom->subframe_nbslots[subframe_idx]; slot_idx++ ) + { + FOR( ch = 0; ch < st_ivas->hBinRenderer->nInChannels; ch++ ) + { + Copy32( Cldfb_RealBuffer_fx[ch][slot_idx], st_ivas->hSplitBinRend->hCldfbDataOut->Cldfb_RealBuffer_fx[ch][add( slot_idx_start, slot_idx )], hSpatParamRendCom->num_freq_bands ); + Copy32( Cldfb_ImagBuffer_fx[ch][slot_idx], st_ivas->hSplitBinRend->hCldfbDataOut->Cldfb_ImagBuffer_fx[ch][add( slot_idx_start, slot_idx )], hSpatParamRendCom->num_freq_bands ); + } + } + st_ivas->hSplitBinRend->hCldfbDataOut->config = st_ivas->hIntSetup.output_config; + move16(); + } + } + + /*Binaural output in Q6 format*/ ivas_binRenderer_fx( st_ivas->hBinRenderer, + ( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, st_ivas->hCombinedOrientationData, hSpatParamRendCom->subframe_nbslots[subframe_idx], Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx, Cldfb_RealBuffer_fx, Cldfb_ImagBuffer_fx, &input_q ); + Word16 pos_idx; + 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++ ) + { + FOR( slot_idx = 0; slot_idx < hSpatParamRendCom->subframe_nbslots[subframe_idx]; slot_idx++ ) + { + FOR( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ ) + { + Copy32( Cldfb_RealBuffer_Binaural_fx[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural_fx[add( i_mult( pos_idx, BINAURAL_CHANNELS ), ch )][add( slot_idx_start, slot_idx )], hSpatParamRendCom->num_freq_bands ); // Q6 + Copy32( Cldfb_ImagBuffer_Binaural_fx[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural_fx[add( i_mult( pos_idx, BINAURAL_CHANNELS ), ch )][add( slot_idx_start, slot_idx )], hSpatParamRendCom->num_freq_bands ); // Q6 + } + } + } + } /* Inverse CLDFB*/ FOR( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ ) @@ -4036,9 +4060,9 @@ void ivas_dirac_dec_render_sf_fx( Word32 *ImagBuffer_fx[MAX_PARAM_SPATIAL_SUBFRAMES]; FOR( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe_idx]; i++ ) { - RealBuffer_fx[i] = Cldfb_RealBuffer_Binaural_fx[ch][i]; + RealBuffer_fx[i] = Cldfb_RealBuffer_Binaural_fx[0][ch][i]; move32(); - ImagBuffer_fx[i] = Cldfb_ImagBuffer_Binaural_fx[ch][i]; + ImagBuffer_fx[i] = Cldfb_ImagBuffer_Binaural_fx[0][ch][i]; move32(); } diff --git a/lib_dec/ivas_init_dec_fx.c b/lib_dec/ivas_init_dec_fx.c index 463bc22fc5b242666573f76b1f26a46c9e79db62..40bf1ccf59028449e7c7bf86401afcc52a969846 100644 --- a/lib_dec/ivas_init_dec_fx.c +++ b/lib_dec/ivas_init_dec_fx.c @@ -42,6 +42,9 @@ #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" /*-------------------------------------------------------------------* @@ -52,6 +55,207 @@ static ivas_error ivas_read_format( Decoder_Struct *st_ivas, Word16 *num_bits_re 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() @@ -521,6 +725,17 @@ ivas_error ivas_dec_setup( } } + /*-----------------------------------------------------------------* + * 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 @@ -949,6 +1164,11 @@ ivas_error ivas_init_decoder_front( { return error; } + + IF( NE_32( ( error = ivas_HRTF_statistics_binary_open( &st_ivas->hHrtfStatistics ) ), IVAS_ERR_OK ) ) + { + return error; + } } /*-------------------------------------------------------------------* @@ -956,7 +1176,8 @@ ivas_error ivas_init_decoder_front( *--------------------------------------------------------------------*/ 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 ) ) + 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 ) ) { @@ -1132,6 +1353,31 @@ ivas_error ivas_init_decoder_fx( } + /*--------------------------------------------------------------------* + * 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; + } + } + + /*-----------------------------------------------------------------* + * 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 *-----------------------------------------------------------------*/ @@ -1321,7 +1567,7 @@ ivas_error ivas_init_decoder_fx( } 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 ); + 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(); @@ -1511,7 +1757,7 @@ ivas_error ivas_init_decoder_fx( } 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 ); + 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++ ) @@ -1989,7 +2235,11 @@ ivas_error ivas_init_decoder_fx( } } +#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; } @@ -2022,9 +2272,9 @@ ivas_error ivas_init_decoder_fx( move16(); } - 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 ) ) { - 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 ) ) + 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 ) ) { return error; } @@ -2068,7 +2318,7 @@ ivas_error ivas_init_decoder_fx( } 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->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 ) ) { return error; @@ -2233,6 +2483,7 @@ ivas_error ivas_init_decoder_fx( { 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 ); @@ -2582,7 +2833,10 @@ void ivas_initialize_handles_dec( /* rendering handles */ st_ivas->hBinRenderer = NULL; - st_ivas->hDiracDecBin = 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; @@ -2596,6 +2850,7 @@ void ivas_initialize_handles_dec( st_ivas->hSetOfHRTF = NULL; st_ivas->hHrtfFastConv = NULL; st_ivas->hHrtfParambin = NULL; + st_ivas->hHrtfStatistics = NULL; st_ivas->hoa_dec_mtx = NULL; st_ivas->hMasaIsmData = NULL; st_ivas->hSbaIsmData = NULL; @@ -2607,7 +2862,11 @@ void ivas_initialize_handles_dec( 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; @@ -2744,12 +3003,21 @@ void ivas_destroy_dec_fx( /* 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 ); + ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); /* Crend handle */ - - ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) ); + 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 ); @@ -2805,6 +3073,9 @@ void ivas_destroy_dec_fx( /* Parametric binauralizer HRTF filters */ ivas_HRTF_parambin_binary_close_fx( &st_ivas->hHrtfParambin ); + /* HRTF statistics */ + ivas_HRTF_statistics_close( &st_ivas->hHrtfStatistics ); + /* Config. Renderer */ ivas_render_config_close( &( st_ivas->hRenderConfig ) ); @@ -2915,7 +3186,7 @@ void ivas_init_dec_get_num_cldfb_instances( move16(); } } - IF( st_ivas->hDiracDecBin->useTdDecorr ) + IF( st_ivas->hDiracDecBin[0]->useTdDecorr ) { *numCldfbAnalyses = add( *numCldfbAnalyses, 2 ); move16(); @@ -3176,7 +3447,7 @@ void ivas_init_dec_get_num_cldfb_instances_ivas_fx( move16(); } } - IF( st_ivas->hDiracDecBin->useTdDecorr ) + IF( st_ivas->hDiracDecBin[0]->useTdDecorr ) { *numCldfbAnalyses = add( *numCldfbAnalyses, 2 ); move16(); @@ -3464,12 +3735,16 @@ static ivas_error doSanityChecks_IVAS( } } + 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 ) ) ) + 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" ); } diff --git a/lib_dec/ivas_ism_dec_fx.c b/lib_dec/ivas_ism_dec_fx.c index 44b7a0bec5dfe408646524dee28080d6ea6c77c9..41c1efcdc6889c15f86b8c64419cf958c106b0e4 100644 --- a/lib_dec/ivas_ism_dec_fx.c +++ b/lib_dec/ivas_ism_dec_fx.c @@ -196,10 +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(); - 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 ) ) + 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 ) ) { /* close the parametric binaural renderer */ - ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); + ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); /* Open the TD Binaural renderer */ test(); IF( st_ivas->hHrtfTD == NULL || st_ivas->hBinRendererTd == NULL ) @@ -210,9 +210,9 @@ 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 ) ) { - 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 ) ) + 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 ) ) { return error; } @@ -232,13 +232,10 @@ 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 */ - ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); + ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); /* Open Crend Binaural renderer */ - 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->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) st_ivas->binaural_latency_ns = st_ivas->hCrendWrapper->binaural_latency_ns; move32(); @@ -256,7 +253,7 @@ static ivas_error ivas_ism_bitrate_switching_dec_fx( } test(); - 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 ) ) + 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 ) ) { /* open the parametric binaural renderer */ IF( NE_32( ( error = ivas_dirac_dec_binaural_copy_hrtfs_fx( &st_ivas->hHrtfParambin ) ), IVAS_ERR_OK ) ) @@ -264,7 +261,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; } @@ -295,13 +296,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 */ - ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) ); + ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ), ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ); } } @@ -342,16 +347,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(); @@ -451,16 +446,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; } } } @@ -483,9 +474,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_param_dec_fx.c b/lib_dec/ivas_ism_param_dec_fx.c index c8f6694e7bba722f48298bdc909703120aa9d551..aa778fd2da0373b23f96dbc92030b9987b27a783 100644 --- a/lib_dec/ivas_ism_param_dec_fx.c +++ b/lib_dec/ivas_ism_param_dec_fx.c @@ -527,7 +527,7 @@ static ivas_error ivas_param_ism_rendering_init_fx( test(); test(); test(); - 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 ) ) ) + 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 ) ) ) { /* computation of proto matrix */ ivas_ism_get_proto_matrix_fx( hOutSetup, nchan_transport, hParamIsmRendering->proto_matrix_fx ); @@ -705,7 +705,7 @@ ivas_error ivas_param_ism_dec_open_fx( test(); test(); 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_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 ) ) ) { /* 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 ) ) @@ -728,7 +728,7 @@ ivas_error ivas_param_ism_dec_open_fx( 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 ) ) + 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 ) ) { IF( NE_32( ( error = ivas_dirac_allocate_parameters_fx( hSpatParamRendCom, 1 ) ), IVAS_ERR_OK ) ) { @@ -926,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 */ @@ -968,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 888bfb060e9d3fe31c04eb5fcdf26b910bbd8007..8d141537dd112aaf8f1bd3eaf85314ed75f8f127 100644 --- a/lib_dec/ivas_ism_renderer_fx.c +++ b/lib_dec/ivas_ism_renderer_fx.c @@ -149,15 +149,17 @@ void ivas_ism_renderer_close( return; } + /*-------------------------------------------------------------------------* * ivas_ism_render_sf() * * Object rendering process *-------------------------------------------------------------------------*/ void ivas_ism_render_sf_fx( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - Word32 *output_fx[], /* i/o: core-coder transport channels/object output Q11*/ - const Word16 n_samples_to_render /* i : output frame length per channel */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + const RENDERER_TYPE renderer_type, /* i : active renderer type */ + Word32 *output_fx[], /* i/o: core-coder transport channels/object output Q11*/ + const Word16 n_samples_to_render /* i : output frame length per channel */ ) { Word16 i, j, k, j2; @@ -170,15 +172,31 @@ 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]; + Word16 ism_md_subframe_update_jbm, slots_to_render, first_sf, last_sf, subframe_idx; + Word16 n_samples_rendered_loop; - num_objects = st_ivas->nchan_transport; + /* loop for synthesis, assume we always have to render in multiples of 5ms subframes with spills */ + slots_to_render = s_min( sub( st_ivas->hTcBuffer->num_slots, st_ivas->hTcBuffer->slots_rendered ), n_samples_to_render / st_ivas->hTcBuffer->n_samples_granularity ); + first_sf = st_ivas->hTcBuffer->subframes_rendered; + move16(); + last_sf = first_sf; move16(); - if ( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) + 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 ) { - num_objects = st_ivas->nchan_ism; - move16(); + slots_to_render = sub( slots_to_render, st_ivas->hTcBuffer->subframe_nbslots[last_sf] ); + last_sf = add( last_sf, 1 ); } + num_objects = st_ivas->nchan_ism; + nchan_out_woLFE = st_ivas->hIntSetup.nchan_out_woLFE; move16(); @@ -187,6 +205,16 @@ void ivas_ism_render_sf_fx( interp_offset = st_ivas->hTcBuffer->n_samples_rendered; move16(); + /* Number of subframes to delay metadata to sync with audio */ + IF( st_ivas->hDecoderConfig->Opt_delay_comp ) + { + ism_md_subframe_update_jbm = s_max( 0, sub( st_ivas->hTcBuffer->nb_subframes, 3 ) ); + } + ELSE + { + ism_md_subframe_update_jbm = sub( st_ivas->hTcBuffer->nb_subframes, 2 ); + } + IF( st_ivas->hDecoderConfig->Opt_tsm ) { FOR( i = 0; i < num_objects; i++ ) @@ -208,76 +236,102 @@ void ivas_ism_render_sf_fx( set32_fx( output_fx[i], 0, n_samples_to_render ); } - test(); - IF( st_ivas->hCombinedOrientationData && EQ_16( st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx], 1 ) ) - { - ivas_jbm_dec_get_adapted_linear_interpolator_fx( n_samples_to_render, n_samples_to_render, st_ivas->hIsmRendererData->interpolator_fx ); - interp_offset = 0; - move16(); - } - FOR( i = 0; i < num_objects; i++ ) + FOR( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ ) { - /* Combined rotation: rotate the object positions depending the head and external orientations */ + int16_t n_samples_in_subframe; + + n_samples_in_subframe = st_ivas->hTcBuffer->n_samples_granularity * st_ivas->hTcBuffer->subframe_nbslots[subframe_idx]; test(); - IF( st_ivas->hCombinedOrientationData != NULL && EQ_16( st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx], 1 ) ) + IF( st_ivas->hCombinedOrientationData && EQ_16( st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx], 1 ) ) { - 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 ); - - IF( st_ivas->hEFAPdata != NULL ) - { - efap_determine_gains_fx( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains_fx[i], L_shl( azimuth, 22 ), L_shl( elevation, 22 ), EFAP_MODE_EFAP ); - } + ivas_jbm_dec_get_adapted_linear_interpolator_fx( n_samples_in_subframe, n_samples_in_subframe, st_ivas->hIsmRendererData->interpolator_fx ); + interp_offset = 0; + move16(); } - lfe_index = 0; - move16(); - FOR( ( j = 0, j2 = 0 ); j < nchan_out_woLFE; ( j++, j2++ ) ) + FOR( i = 0; i < num_objects; i++ ) { + /* Combined rotation: rotate the object positions depending the head and external orientations */ test(); - IF( ( st_ivas->hIntSetup.num_lfe > 0 ) && EQ_16( st_ivas->hIntSetup.index_lfe[lfe_index], j ) ) + IF( st_ivas->hCombinedOrientationData != NULL && EQ_16( st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx], 1 ) ) { - IF( LT_16( lfe_index, sub( st_ivas->hIntSetup.num_lfe, 1 ) ) ) + if ( GE_16( subframe_idx, ism_md_subframe_update_jbm ) ) { - lfe_index = add( lfe_index, 1 ); - j2 = add( j2, 1 ); + 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 ); } - ELSE + else { - j2 = add( j2, 1 ); + 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 ); } - } - - gain_fx = st_ivas->hIsmRendererData->gains_fx[i][j]; - move32(); - prev_gain_fx = st_ivas->hIsmRendererData->prev_gains_fx[i][j]; - move32(); - test(); - IF( ( L_abs( gain_fx ) > 0 ) || ( L_abs( prev_gain_fx ) > 0 ) ) - { - g1_fx = &st_ivas->hIsmRendererData->interpolator_fx[interp_offset]; - tc_fx = p_tc_fx[i]; - FOR( k = 0; k < n_samples_to_render; k++ ) + IF( st_ivas->hEFAPdata != NULL ) { - g2_fx = sub( 32767, *g1_fx ); // 32767 = (1.0f in Q15) - 1 - 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) - move16(); + efap_determine_gains_fx( st_ivas->hEFAPdata, st_ivas->hIsmRendererData->gains_fx[i], L_shl( azimuth, 22 ), L_shl( elevation, 22 ), EFAP_MODE_EFAP ); } } - /* update here only in case of head rotation */ - test(); - IF( st_ivas->hCombinedOrientationData != NULL && st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx] == 1 ) + lfe_index = 0; + move16(); + FOR( ( j = 0, j2 = 0 ); j < nchan_out_woLFE; ( j++, j2++ ) ) { - st_ivas->hIsmRendererData->prev_gains_fx[i][j] = gain_fx; // Q30 + test(); + IF( ( st_ivas->hIntSetup.num_lfe > 0 ) && EQ_16( st_ivas->hIntSetup.index_lfe[lfe_index], j ) ) + { + IF( LT_16( lfe_index, sub( st_ivas->hIntSetup.num_lfe, 1 ) ) ) + { + lfe_index = add( lfe_index, 1 ); + j2 = add( j2, 1 ); + } + ELSE + { + j2 = add( j2, 1 ); + } + } + + gain_fx = st_ivas->hIsmRendererData->gains_fx[i][j]; move32(); + prev_gain_fx = st_ivas->hIsmRendererData->prev_gains_fx[i][j]; + move32(); + + test(); + IF( ( L_abs( gain_fx ) > 0 ) || ( L_abs( prev_gain_fx ) > 0 ) ) + { + g1_fx = &st_ivas->hIsmRendererData->interpolator_fx[interp_offset]; + tc_fx = p_tc_fx[i]; + FOR( k = 0; k < n_samples_in_subframe; k++ ) + { + 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) + move16(); + } + } + + /* update here only in case of head rotation */ + test(); + IF( st_ivas->hCombinedOrientationData != NULL && st_ivas->hCombinedOrientationData->enableCombinedOrientation[st_ivas->hCombinedOrientationData->subframe_idx] == 1 ) + { + st_ivas->hIsmRendererData->prev_gains_fx[i][j] = gain_fx; // Q30 + move32(); + } } + p_tc_fx[i] += n_samples_in_subframe; } - } - /* update combined orientation access index */ - ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, n_samples_to_render ); + /* update combined orientation access index */ + ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, n_samples_in_subframe ); + + n_samples_rendered_loop = add( n_samples_rendered_loop, n_samples_in_subframe ); + /* 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( renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) + { + 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] ); + } + tc_offset = add( tc_offset, n_samples_in_subframe ); + interp_offset = add( interp_offset, n_samples_in_subframe ); + } return; } @@ -559,13 +613,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 0cc6f182828fe16075e0055291867e5c50e1dc3d..bcca2a71d79ea7ed669bd7ca8d66522aeb4eeb62 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,7 +248,7 @@ ivas_error ivas_jbm_dec_tc_fx( test(); IF( EQ_32( st_ivas->renderer_type, RENDERER_MONO_DOWNMIX ) ) { - ivas_mono_downmix_render_passive_fx( st_ivas, p_output_fx, output_frame ); + ivas_ism_mono_dmx_fx( st_ivas, p_output_fx, output_frame ); Scale_sig32( p_output_fx[0], L_FRAME48k, 3 ); } @@ -802,7 +785,7 @@ ivas_error ivas_jbm_dec_tc_fx( move16(); IF( EQ_32( st_ivas->renderer_type, RENDERER_MONO_DOWNMIX ) ) { - ivas_mono_downmix_render_passive_fx( st_ivas, p_output_fx, output_frame ); + ivas_ism_mono_dmx_fx( st_ivas, p_output_fx, output_frame ); output_q = 8; move16(); @@ -1105,7 +1088,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 ) ) { - ivas_mono_downmix_render_passive_fx( st_ivas, p_output_fx, output_frame ); + ivas_ism_mono_dmx_fx( st_ivas, p_output_fx, output_frame ); Scale_sig32( p_output_fx[0], L_FRAME48k, Q11 - Q8 ); // Q11 @@ -1668,11 +1651,13 @@ void ivas_jbm_dec_feed_tc_to_renderer_fx( test(); /* delay the objects here for all renderers where it is needed */ 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 ) ) + ( + 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 ) ) && + ( 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 ) ) ) { FOR( n = 0; n < st_ivas->nchan_ism; n++ ) { @@ -1744,6 +1729,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 ) ) { @@ -1852,6 +1861,7 @@ ivas_error ivas_jbm_dec_render_fx( const Word16 output_q_factor = Q11; move16(); SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; + Word16 nchan_out_syn_output; push_wmops( "ivas_dec_render" ); /*----------------------------------------------------------------* @@ -1878,7 +1888,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++ ) @@ -1953,12 +1963,6 @@ ivas_error ivas_jbm_dec_render_fx( { ivas_dirac_dec_binaural_render_fx( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, st_ivas->nchan_transport, p_output_fx ); } - ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_NON_DIEGETIC_DOWNMIX ) ) - { - *nSamplesRendered = s_min( st_ivas->hTcBuffer->n_samples_available, nSamplesAskedLocal ); - move16(); - ivas_apply_non_diegetic_panning_fx( p_output_fx, st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered ); - } ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_PARAM_ISM ) || EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_ENC ) ) { ivas_param_ism_dec_render_fx( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output_fx ); @@ -1981,18 +1985,22 @@ ivas_error ivas_jbm_dec_render_fx( IF( EQ_32( st_ivas->renderer_type, RENDERER_TD_PANNING ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) { /* Convert to CICPxx; used also for ISM->CICP19->binaural_room rendering */ - ivas_ism_render_sf_fx( st_ivas, p_output_fx, *nSamplesRendered ); + ivas_ism_render_sf_fx( st_ivas, st_ivas->renderer_type, p_output_fx, *nSamplesRendered ); } ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_NON_DIEGETIC_DOWNMIX ) ) { - ivas_apply_non_diegetic_panning_fx( p_output_fx, st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered ); + ivas_apply_non_diegetic_panning_fx( p_tc_fx[0], p_output_fx, st_ivas->hDecoderConfig->non_diegetic_pan_gain_fx, *nSamplesRendered ); } +#ifdef DEBUGGING ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_ENC ) || EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV ) ) +#else + ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_SBA_LINEAR_ENC ) ) +#endif { - /* Convert to Ambisonics; used also for ISM->HOA3->binaural rendering */ + /* Convert to Ambisonics */ FOR( i = 0; i < st_ivas->nchan_transport; i++ ) { - FOR( j = 0; j < 16; j++ ) + FOR( j = 0; j < HOA3_CHANNELS; j++ ) { st_ivas->hIsmRendererData->gains_fx[i][j] = L_shr( st_ivas->hIsmRendererData->gains_fx[i][j], 1 ); // Q30 -> Q29 move32(); @@ -2000,14 +2008,15 @@ ivas_error ivas_jbm_dec_render_fx( move32(); } } + ivas_ism2sba_sf_fx( st_ivas->hTcBuffer->tc_fx, p_output_fx, st_ivas->hIsmRendererData, st_ivas->nchan_transport, *nSamplesRendered, st_ivas->hTcBuffer->n_samples_rendered, st_ivas->hIntSetup.ambisonics_order ); + Word16 sba_num_chans = imult1616( add( st_ivas->hIntSetup.ambisonics_order, 1 ), add( st_ivas->hIntSetup.ambisonics_order, 1 ) ); FOR( j = 0; j < sba_num_chans; j++ ) { scale_sig32( p_output_fx[j], *nSamplesRendered, sub( Q11, sub( add( output_q_factor, 29 ), 31 ) ) ); // Q11 } - FOR( i = 0; i < st_ivas->nchan_transport; i++ ) { FOR( j = 0; j < 16; j++ ) @@ -2023,9 +2032,19 @@ ivas_error ivas_jbm_dec_render_fx( /* 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 ) ) + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { - return error; + IF( ( error = ivas_td_binaural_renderer_sf_splitBinaural( st_ivas, p_output_fx, *nSamplesRendered ) ) != IVAS_ERR_OK ) + { + return error; + } + } + ELSE + { + IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_output_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) ) + { + return error; + } } } ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) @@ -2046,10 +2065,12 @@ 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( 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 ) ) + + 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; } + FOR( i = 0; i < nchan_out; i++ ) { scale_sig32( p_output_fx[i], *nSamplesRendered, sub( 11, *st_ivas->hCrendWrapper->p_io_qfactor ) ); // Q11 @@ -2070,20 +2091,7 @@ ivas_error ivas_jbm_dec_render_fx( } ELSE IF( EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) { - 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 ) ) + IF( EQ_32( st_ivas->renderer_type, RENDERER_DIRAC ) ) { ivas_dirac_dec_render_fx( st_ivas, nchan_remapped, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output_fx ); } @@ -2159,7 +2167,7 @@ ivas_error ivas_jbm_dec_render_fx( } /* render objects */ - ivas_ism_render_sf_fx( st_ivas, p_output_fx, *nSamplesRendered ); + ivas_ism_render_sf_fx( st_ivas, st_ivas->renderer_type, p_output_fx, *nSamplesRendered ); /* add already rendered SBA part */ FOR( n = 0; n < nchan_out; n++ ) @@ -2220,6 +2228,12 @@ ivas_error ivas_jbm_dec_render_fx( } ELSE IF( EQ_32( st_ivas->ivas_format, MC_FORMAT ) ) { + + FOR( n = 0; n < st_ivas->hTcBuffer->nchan_buffer_full; n++ ) + { + p_tc_fx[n] = &st_ivas->hTcBuffer->tc_fx[n][st_ivas->hTcBuffer->n_samples_rendered]; + } + IF( EQ_32( st_ivas->mc_mode, MC_MODE_MCT ) ) { Word16 crendInPlaceRotation = FALSE; @@ -2270,25 +2284,38 @@ ivas_error ivas_jbm_dec_render_fx( scale_sig32( p_tc_fx[i], *nSamplesRendered, negate( sub( Q11, *st_ivas->hCrendWrapper->p_io_qfactor ) ) ); // Q = *st_ivas->hCrendWrapper->p_io_qfactor } } - 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 ) ) + + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { - return error; + 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; + } } - - IF( st_ivas->hDecoderConfig->Opt_tsm ) + ELSE { - IF( NE_16( exp, *st_ivas->hCrendWrapper->p_io_qfactor ) ) + 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 ) ) { - FOR( i = 0; i < nchan_in; i++ ) + return error; + } + + // Todo main-pc update: This might be needed also in the split rendering path + IF( st_ivas->hDecoderConfig->Opt_tsm ) + { + IF( NE_16( exp, *st_ivas->hCrendWrapper->p_io_qfactor ) ) { - scale_sig32( p_tc_fx[i], *nSamplesRendered, sub( *st_ivas->hCrendWrapper->p_io_qfactor, exp ) ); + FOR( i = 0; i < nchan_in; i++ ) + { + scale_sig32( p_tc_fx[i], *nSamplesRendered, sub( *st_ivas->hCrendWrapper->p_io_qfactor, exp ) ); + } } } - } - ivas_binaural_add_LFE_fx( st_ivas, *nSamplesRendered, p_tc_fx, p_output_fx ); + ivas_binaural_add_LFE_fx( st_ivas, *nSamplesRendered, p_tc_fx, p_output_fx ); + } FOR( i = 0; i < nchan_in; i++ ) { @@ -2312,12 +2339,22 @@ ivas_error ivas_jbm_dec_render_fx( } ELSE 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 ) ) + IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { - return error; + IF( NE_32( ( error = ivas_td_binaural_renderer_sf_splitBinaural( st_ivas, p_output_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) ) + { + return error; + } } + else + { + 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 ); + ivas_binaural_add_LFE_fx( st_ivas, *nSamplesRendered, p_tc_fx, p_output_fx ); + } } } ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) @@ -2329,7 +2366,11 @@ 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 ) { - ivas_binaural_add_LFE_fx( st_ivas, *nSamplesRendered, p_output_fx, p_output_fx ); + /*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 ) ) + { + ivas_binaural_add_LFE_fx( st_ivas, *nSamplesRendered, p_output_fx, p_output_fx ); + } } ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_MC ) ) { @@ -2339,15 +2380,6 @@ ivas_error ivas_jbm_dec_render_fx( { ivas_mc2sba_fx( st_ivas->hIntSetup, p_output_fx, p_output_fx, *nSamplesRendered, st_ivas->hOutSetup.ambisonics_order, 0 ); } - ELSE IF( EQ_32( st_ivas->renderer_type, RENDERER_BINAURAL_OBJECTS_TD ) ) - { - IF( NE_32( ( error = ivas_td_binaural_renderer_fx( st_ivas, p_output_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) ) - { - return error; - } - - ivas_binaural_add_LFE_fx( st_ivas, *nSamplesRendered, p_output_fx, p_output_fx ); - } } ELSE IF( EQ_32( st_ivas->mc_mode, MC_MODE_PARAMMC ) ) { @@ -2545,6 +2577,17 @@ ivas_error ivas_jbm_dec_render_fx( move16(); } + 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++ ) + { + Copy32( p_output_fx[i], st_ivas->hSplitBinRend->hMultiBinCldfbData->output_fx[i], *nSamplesRendered ); + } + } + nchan_out_syn_output = nchan_out; + move16(); + + IF( st_ivas->hDecoderConfig->Opt_Limiter ) { IF( NE_32( st_ivas->ivas_format, MONO_FORMAT ) ) { @@ -2554,7 +2597,7 @@ ivas_error ivas_jbm_dec_render_fx( } } - ivas_syn_output_fx( p_output_fx, output_q_factor, *nSamplesRendered, nchan_out, data ); + ivas_syn_output_fx( p_output_fx, output_q_factor, *nSamplesRendered, nchan_out_syn_output, data ); *nSamplesAvailableNext = st_ivas->hTcBuffer->n_samples_available; move16(); @@ -2586,9 +2629,8 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( Word16 n_slots_still_available; Word16 n_samples_to_render; DECODER_TC_BUFFER_HANDLE hTcBuffer; - 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]; - Word16 nchan_in, nchan_out, gd_bits, n_chan_inp, i, shift; + Word32 *p_output_fx[MAX_CICP_CHANNELS + MAX_NUM_OBJECTS]; + Word16 nchan_in, nchan_out; IF( !st_ivas->hDecoderConfig->Opt_tsm ) { return IVAS_ERR_OK; @@ -2636,11 +2678,7 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( hTcBuffer->n_samples_buffered = add( hTcBuffer->n_samples_granularity, n_samples_still_available ); hTcBuffer->n_samples_available = 0; hTcBuffer->n_samples_flushed = n_samples_to_render; -#ifdef CR_FIX_JBM_FLUSH_OFFSET hTcBuffer->n_samples_rendered = 0; -#else - hTcBuffer->n_samples_rendered = hTcBuffer->n_samples_granularity; -#endif move16(); move16(); move16(); @@ -2653,7 +2691,7 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( FOR( ch_idx = 0; ch_idx < ( MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS ); ch_idx++ ) { - p_output_fx[ch_idx] = output_fx[ch_idx]; + p_output_fx[ch_idx] = st_ivas->p_output_fx[ch_idx]; } test(); @@ -2675,44 +2713,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, hTcBuffer->n_samples_granularity ); + ivas_ism_render_sf_fx( st_ivas, renderer_type_old, 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(); - - shift = MAX_16; - move16(); - n_chan_inp = add( st_ivas->hIntSetup.nchan_out_woLFE, st_ivas->hIntSetup.num_lfe ); - - FOR( i = 0; i < n_chan_inp; i++ ) - { - shift = s_min( shift, L_norm_arr( p_output_fx[i], hTcBuffer->n_samples_granularity ) ); - } - gd_bits = sub( find_guarded_bits_fx( imult1616( hTcBuffer->subframe_nbslots[0], hTcBuffer->n_samples_granularity ) ), shift ); - - *st_ivas->hCrendWrapper->p_io_qfactor = sub( *st_ivas->hCrendWrapper->p_io_qfactor, gd_bits ); move16(); - - FOR( i = 0; i < n_chan_inp; i++ ) - { - scale_sig32( p_output_fx[i], hTcBuffer->n_samples_granularity, sub( *st_ivas->hCrendWrapper->p_io_qfactor, Q11 ) ); // Q(*st_ivas->hCrendWrapper->p_io_qfactor) - } - 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 ) ), + 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; } - - FOR( i = 0; i < n_chan_inp; i++ ) - { - scale_sig32( p_output_fx[i], hTcBuffer->n_samples_granularity, sub( Q11, *st_ivas->hCrendWrapper->p_io_qfactor ) ); // Q(11) - } - *st_ivas->hCrendWrapper->p_io_qfactor = Q11; - move16(); } } ELSE @@ -2739,8 +2751,9 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( } *st_ivas->hCrendWrapper->p_io_qfactor = 11; move16(); + 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 ) ), + 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; @@ -2748,7 +2761,7 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( 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 ) ) { @@ -2756,6 +2769,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 { @@ -2849,9 +2866,7 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( { return IVAS_ERROR( IVAS_ERR_WRONG_MODE, "Wrong IVAS format in VoIP renderer flushing!" ); } -#ifdef CR_FIX_JBM_FLUSH_OFFSET hTcBuffer->n_samples_rendered = hTcBuffer->n_samples_granularity; -#endif } /* update global combined orientation start index */ @@ -2860,15 +2875,16 @@ ivas_error ivas_jbm_dec_flush_renderer_fx( *nSamplesRendered = n_samples_to_render; move16(); /* Only write out the valid data*/ + IF( st_ivas->hDecoderConfig->Opt_Limiter ) { IF( NE_16( st_ivas->ivas_format, MONO_FORMAT ) ) { #ifndef DISABLE_LIMITER Word16 ch_idx, exp = 11; move16(); - FOR( ch_idx = 0; ch_idx < MAX_CICP_CHANNELS; ch_idx++ ) + FOR( ch_idx = 0; ch_idx < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; ch_idx++ ) { - p_output_fx[ch_idx] = output_fx[ch_idx]; + p_output_fx[ch_idx] = st_ivas->p_output_fx[ch_idx]; } ivas_limiter_dec_fx( st_ivas->hLimiter, p_output_fx, st_ivas->hDecoderConfig->nchan_out, *nSamplesRendered, st_ivas->BER_detect, exp ); #endif @@ -2975,7 +2991,7 @@ void ivas_jbm_dec_get_adapted_subframes( move16(); Word16 temp, temp_e; /* get last subframe size from previous frame, determine how many slots have to be processed - in the first subframe (i.e. potential leftover of a 5ms subframe) */ + in the first subframe (i.e. potential leftover of a 5ms subframe) */ nSlotsInFirstSubframe = ( sub( PARAM_MC_MAX_NSLOTS_IN_SUBFRAME, subframe_nbslots[*nb_subframes - 1] ) ); *nb_subframes = 0; move16(); @@ -3040,7 +3056,7 @@ void ivas_jbm_dec_get_md_map( } /* changed part (first segment), interpolate index to parameters - (we do not want to interpolate and smooth acutal direction/diffuseness values even more) */ + (we do not want to interpolate and smooth acutal direction/diffuseness values even more) */ IF( src_idx >= 0 ) { dec_fx = BASOP_Util_Divide3232_Scale( L_shl( add( src_idx, 1 ), 16 ), jbm_segment_len, &temp_e ); @@ -3251,9 +3267,7 @@ Word16 ivas_jbm_dec_get_num_tc_channels_fx( move16(); } - test(); - test(); - if ( ( st_ivas->sba_planar && GE_16( num_tc, 3 ) ) || EQ_16( num_tc, 3 ) ) + if ( EQ_16( num_tc, 3 ) ) { num_tc = add( num_tc, 1 ); } diff --git a/lib_dec/ivas_masa_dec_fx.c b/lib_dec/ivas_masa_dec_fx.c index 6363bdf743d35785ed33cbbd059f797026b16380..3133c8c57752b90884c94727cab98a97abffa2b7 100644 --- a/lib_dec/ivas_masa_dec_fx.c +++ b/lib_dec/ivas_masa_dec_fx.c @@ -166,6 +166,14 @@ ivas_error ivas_masa_decode_fx( } move16(); + 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(); + } + test(); test(); test(); @@ -1579,6 +1587,7 @@ ivas_error ivas_masa_dec_reconfigure_fx( Word16 numCldfbAnalyses_old, numCldfbSyntheses_old; ivas_error error; Word32 ism_total_brate; + Word16 pos_idx; error = IVAS_ERR_OK; move16(); @@ -1610,7 +1619,7 @@ ivas_error ivas_masa_dec_reconfigure_fx( test(); test(); 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 ) ) + ( ( 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 ) ) { /* init a new DirAC dec */ if ( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_OPEN ) ) != IVAS_ERR_OK ) @@ -1623,7 +1632,7 @@ ivas_error ivas_masa_dec_reconfigure_fx( IF( st_ivas->hDirAC != NULL ) { /* close all unnecessary parametric decoding and rendering */ - ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); + ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); ivas_dirac_rend_close_fx( &( st_ivas->hDirACRend ) ); ivas_spat_hSpatParamRendCom_close_fx( &( st_ivas->hSpatParamRendCom ) ); ivas_dirac_dec_close_fx( &( st_ivas->hDirAC ) ); @@ -1674,7 +1683,7 @@ ivas_error ivas_masa_dec_reconfigure_fx( test(); test(); test(); - 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 ) + 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 ) { if ( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_RECONFIGURE ) ), IVAS_ERR_OK ) ) { @@ -1730,7 +1739,7 @@ ivas_error ivas_masa_dec_reconfigure_fx( test(); test(); test(); - 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 ) ) + 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 ) ) { if ( NE_32( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_RECONFIGURE ) ), IVAS_ERR_OK ) ) { @@ -1748,7 +1757,7 @@ ivas_error ivas_masa_dec_reconfigure_fx( test(); test(); test(); - 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 ) ) + 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 ) ) { if ( ( error = ivas_dirac_dec_config_fx( st_ivas, DIRAC_RECONFIGURE ) ) != IVAS_ERR_OK ) { @@ -1758,11 +1767,14 @@ ivas_error ivas_masa_dec_reconfigure_fx( } } - IF( st_ivas->hDiracDecBin != NULL ) + FOR( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) { - /* 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(); + IF( st_ivas->hDiracDecBin[pos_idx] != NULL ) + { + /* regularization factor is bitrate-dependent */ + st_ivas->hDiracDecBin[pos_idx]->reqularizationFactor_fx = configure_reqularization_factor_fx( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); + move16(); + } } test(); @@ -1771,9 +1783,9 @@ ivas_error ivas_masa_dec_reconfigure_fx( /*-----------------------------------------------------------------* * TD Decorrelator *-----------------------------------------------------------------*/ - IF( st_ivas->hDiracDecBin != NULL ) + 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->hTdDecorr ), &( st_ivas->hDiracDecBin->useTdDecorr ) ) ), IVAS_ERR_OK ) ) + 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 ) ) { return error; } @@ -2010,7 +2022,7 @@ void ivas_spar_param_to_masa_param_mapping_fx( move16(); hSpatParamRendCom->numSimultaneousDirections = 1; move16(); - hDiffuseDist = st_ivas->hDiracDecBin->hDiffuseDist; + hDiffuseDist = st_ivas->hDiracDecBin[0]->hDiffuseDist; nchan_transport = st_ivas->nchan_transport; move16(); band_grouping = hDirAC->band_grouping; diff --git a/lib_dec/ivas_mc_param_dec_fx.c b/lib_dec/ivas_mc_param_dec_fx.c index e20610dab0cfc82154ea042c25c09e6604105ea9..c8cfe7af21a71508dbad9b110da85af6a830e8e1 100644 --- a/lib_dec/ivas_mc_param_dec_fx.c +++ b/lib_dec/ivas_mc_param_dec_fx.c @@ -1852,8 +1852,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]; - 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]; + 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]; Word32 *p_output_f_fx[MAX_OUTPUT_CHANNELS]; FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) { @@ -2129,8 +2129,28 @@ void ivas_param_mc_dec_render_fx( { Word16 input_q = 6; 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 ) ) + { + IF( st_ivas->hSplitBinRend->hCldfbDataOut != NULL ) + { + FOR( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + FOR( ch = 0; ch < ( st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe ); ch++ ) + { + Copy32( Cldfb_RealBuffer_fx[ch][slot_idx], st_ivas->hSplitBinRend->hCldfbDataOut->Cldfb_RealBuffer_fx[ch][add( slot_idx_start, slot_idx )], hParamMC->num_freq_bands ); + Copy32( Cldfb_ImagBuffer_fx[ch][slot_idx], st_ivas->hSplitBinRend->hCldfbDataOut->Cldfb_ImagBuffer_fx[ch][add( slot_idx_start, slot_idx )], hParamMC->num_freq_bands ); + } + } + st_ivas->hSplitBinRend->hCldfbDataOut->config = st_ivas->hIntSetup.output_config; + move16(); + } + } + /* Implement binaural rendering */ + /*Binaural output in Q6 format*/ ivas_binRenderer_fx( st_ivas->hBinRenderer, + ( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, st_ivas->hCombinedOrientationData, hParamMC->subframe_nbslots[subframe_idx], Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx, @@ -2149,6 +2169,21 @@ void ivas_param_mc_dec_render_fx( } } + Word16 pos_idx; + 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++ ) + { + FOR( slot_idx = 0; slot_idx < hParamMC->subframe_nbslots[subframe_idx]; slot_idx++ ) + { + FOR( ch = 0; ch < nchan_out_cldfb; ch++ ) + { + Copy32( Cldfb_RealBuffer_Binaural_fx[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural_fx[add( i_mult( pos_idx, BINAURAL_CHANNELS ), ch )][add( slot_idx_start, slot_idx )], hParamMC->num_freq_bands ); + Copy32( Cldfb_ImagBuffer_Binaural_fx[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural_fx[add( i_mult( pos_idx, BINAURAL_CHANNELS ), ch )][add( slot_idx_start, slot_idx )], hParamMC->num_freq_bands ); + } + } + } + } /* update combined orientation access index */ ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, hParamMC->num_freq_bands * hParamMC->subframe_nbslots[subframe_idx] ); } @@ -2172,8 +2207,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 ) ) { - RealBuffer_fx[i] = Cldfb_RealBuffer_Binaural_fx[ch][i]; // Q6 - ImagBuffer_fx[i] = Cldfb_ImagBuffer_Binaural_fx[ch][i]; // Q6 + RealBuffer_fx[i] = Cldfb_RealBuffer_Binaural_fx[0][ch][i]; // Q6 + ImagBuffer_fx[i] = Cldfb_ImagBuffer_Binaural_fx[0][ch][i]; // Q6 } ELSE { @@ -3022,14 +3057,6 @@ static void ivas_param_mc_get_mixing_matrices_fx( } -/*------------------------------------------------------------------------- - * ivas_param_mc_get_mono_stereo_mixing_matrices() - * - * calculate the direct and residual mixing matrices - * for mono and stereo output - *------------------------------------------------------------------------*/ - - /*------------------------------------------------------------------------- * param_mc_update_mixing_matrices() * diff --git a/lib_dec/ivas_mc_paramupmix_dec_fx.c b/lib_dec/ivas_mc_paramupmix_dec_fx.c index 46b28ec8c4d9428ee1a532a3bcdbd56c169aaa8e..af2506b95ac60dfef43416d6f04bb6bdba817303 100644 --- a/lib_dec/ivas_mc_paramupmix_dec_fx.c +++ b/lib_dec/ivas_mc_paramupmix_dec_fx.c @@ -118,6 +118,13 @@ void ivas_mc_paramupmix_dec_read_BS( move32(); } } + + 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 ); + } + hMCParamUpmix->first_frame = 1; move16(); } @@ -145,6 +152,16 @@ void ivas_mc_paramupmix_dec_read_BS( st0->total_brate = st_ivas->hDecoderConfig->ivas_total_brate; /* to avoid BER detect */ move32(); + + IF( EQ_16( hMCParamUpmix->first_frame, 0 ) ) + { + FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) + { + Copy32( hMCParamUpmix->alphas_fx[i], hMCParamUpmix->alpha_prev_fx[i], IVAS_MAX_NUM_BANDS ); + Copy32( hMCParamUpmix->betas_fx[i], hMCParamUpmix->beta_prev_fx[i], IVAS_MAX_NUM_BANDS ); + } + } + FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) { get_ec_data( st0, ALPHA, hMCParamUpmix->alpha_quant[i], alpha_quant, hMCParamUpmix->alphas_fx[i] ); @@ -167,6 +184,12 @@ void ivas_mc_paramupmix_dec_read_BS( hMCParamUpmix->first_frame = 0; move16(); } + + 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 ); + } } pop_wmops(); @@ -257,11 +280,6 @@ void ivas_mc_paramupmix_dec_render( } { - 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 ); - } FOR( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ ) { @@ -278,11 +296,6 @@ void ivas_mc_paramupmix_dec_render( /* update combined orientation access index */ ivas_combined_orientation_update_index( st_ivas->hCombinedOrientationData, n_samples_sf ); } - 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 ); - } } *nSamplesAvailable = imult1616( sub( st_ivas->hTcBuffer->num_slots, st_ivas->hTcBuffer->slots_rendered ), (Word16) slot_size ); @@ -718,13 +731,17 @@ static void ivas_mc_paramupmix_dec_sf( Word16 subframeIdx, idx_in, maxBand; 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 }; - 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]; + + 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; hMCParamUpmix = st_ivas->hMCParamUpmix; assert( hMCParamUpmix ); push_wmops( "ivas_mc_paramupmix_dec_sf" ); + slot_index_start = st_ivas->hTcBuffer->slots_rendered; + FOR( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) { pPcm_temp_fx[2 * i] = output_fx[i + 4]; /* un-decorrelated Q11*/ @@ -839,14 +856,53 @@ static void ivas_mc_paramupmix_dec_sf( Word16 input_q = 6; move16(); + + /*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 ) ) + { + IF( st_ivas->hSplitBinRend->hCldfbDataOut != NULL ) + { + FOR( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[st_ivas->hTcBuffer->subframes_rendered]; slot_idx++ ) + { + FOR( ch = 0; ch < ( st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe ); ch++ ) + { + Copy32( Cldfb_RealBuffer_subfr_fx[ch][slot_idx], st_ivas->hSplitBinRend->hCldfbDataOut->Cldfb_RealBuffer_fx[ch][add( slot_index_start, slot_idx )], maxBand ); + Copy32( Cldfb_ImagBuffer_subfr_fx[ch][slot_idx], st_ivas->hSplitBinRend->hCldfbDataOut->Cldfb_ImagBuffer_fx[ch][add( slot_index_start, slot_idx )], maxBand ); + } + } + + st_ivas->hSplitBinRend->hCldfbDataOut->config = st_ivas->hIntSetup.output_config; + move16(); + } + } + /* Implement binaural rendering */ + /*Binaural output in Q6 format*/ ivas_binRenderer_fx( st_ivas->hBinRenderer, + ( st_ivas->hSplitBinRend == NULL ) ? NULL : &st_ivas->hSplitBinRend->splitrend.multiBinPoseData, 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 ); + Word16 pos_idx; + 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++ ) + { + FOR( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[subframeIdx]; slot_idx++ ) + { + FOR( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ ) + { + Copy32( Cldfb_RealBuffer_Binaural_fx[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural_fx[add( i_mult( pos_idx, BINAURAL_CHANNELS ), ch )][add( slot_index_start, slot_idx )], maxBand ); + Copy32( Cldfb_ImagBuffer_Binaural_fx[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural_fx[add( i_mult( pos_idx, BINAURAL_CHANNELS ), ch )][add( slot_index_start, slot_idx )], maxBand ); + } + } + } + } + + /* Implement CLDFB synthesis */ FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { @@ -855,8 +911,8 @@ static void ivas_mc_paramupmix_dec_sf( FOR( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[subframeIdx]; slot_idx++ ) { - RealBuffer_fx[slot_idx] = Cldfb_RealBuffer_Binaural_fx[ch][slot_idx]; // Q6 - ImagBuffer_fx[slot_idx] = Cldfb_ImagBuffer_Binaural_fx[ch][slot_idx]; // Q6 + 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 } cldfbSynthesis_ivas_fx( RealBuffer_fx, ImagBuffer_fx, &( output_fx[ch][0] ), imult1616( maxBand, st_ivas->hTcBuffer->subframe_nbslots[subframeIdx] ), 6, 0, st_ivas->cldfbSynDec[ch] ); // output_fx returned in Q11 } diff --git a/lib_dec/ivas_mct_dec_fx.c b/lib_dec/ivas_mct_dec_fx.c index c08cec4ce13716d12c195c344ae90f796e89ddcb..9b622bdcd5f7432bd0c67fb00b4fa1933158dfae 100644 --- a/lib_dec/ivas_mct_dec_fx.c +++ b/lib_dec/ivas_mct_dec_fx.c @@ -1064,30 +1064,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 @@ -1508,7 +1512,7 @@ static ivas_error ivas_mc_dec_reconfig_fx( test(); test(); test(); - 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 ) ) + 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 ) ) { /* remove unneeded binaural renderers */ test(); @@ -1523,10 +1527,9 @@ static ivas_error ivas_mc_dec_reconfig_fx( test(); test(); test(); - 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 ) ) ) ) + 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 ) ) ) ) { - - ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) ); + ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ), ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ); } test(); @@ -1539,13 +1542,13 @@ static ivas_error ivas_mc_dec_reconfig_fx( } } - IF( st_ivas->hDiracDecBin != NULL ) + IF( st_ivas->hDiracDecBin[0] != NULL ) { 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 ) ) { - ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); + ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); } } @@ -1570,14 +1573,14 @@ static ivas_error ivas_mc_dec_reconfig_fx( } IF( EQ_16( st_ivas->hIntSetup.output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { - IF( ( error = ivas_rend_initCrendWrapper( &st_ivas->hCrendWrapper ) ) != IVAS_ERR_OK ) + IF( ( error = ivas_rend_initCrendWrapper( &st_ivas->hCrendWrapper, 1 ) ) != IVAS_ERR_OK ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend Wrapper\n" ); } - st_ivas->hCrendWrapper->hCrend = NULL; + st_ivas->hCrendWrapper->hCrend[0] = NULL; st_ivas->hCrendWrapper->hHrtfCrend = NULL; - IF( ( st_ivas->hCrendWrapper->hCrend = (CREND_HANDLE) malloc( sizeof( CREND_DATA ) ) ) == 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" ); } @@ -1585,7 +1588,7 @@ static ivas_error ivas_mc_dec_reconfig_fx( } 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 ) ) ) { - 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->hHrtfStatistics, st_ivas->hDecoderConfig->output_Fs, ( st_ivas->hSplitBinRend == NULL ) ? 1 : st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses ) ) != IVAS_ERR_OK ) { return error; } diff --git a/lib_dec/ivas_mono_dmx_renderer_fx.c b/lib_dec/ivas_mono_dmx_renderer_fx.c index 2eb8d84dfe6a1d93e468243d1a11353fed12e82e..848f457eb468cbf5486ec65b99905265ff1f82a0 100644 --- a/lib_dec/ivas_mono_dmx_renderer_fx.c +++ b/lib_dec/ivas_mono_dmx_renderer_fx.c @@ -45,8 +45,8 @@ /*------------------------------------------------------------------------- * Local constants *------------------------------------------------------------------------*/ -#define DOWNMIX_ALPHA_FX 31130 /* Smoothing coefficient */ -#define MONO_DOWNMIX_RENDERER_MAX_INPUT_CHANS 4 +#define DOWNMIX_ALPHA_FX 31130 /* Smoothing coefficient alpha */ +#define DOWNMIX_ONE_MINUS_ALPHA_FX 1638 /* Smoothing coefficient (1 - alpha) */ /*------------------------------------------------------------------------- * ivas_mono_dmx_renderer_open() @@ -102,11 +102,11 @@ void ivas_mono_dmx_renderer_close( } /*------------------------------------------------------------------------- - * ivas_mono_downmix_render_passive() + * ivas_ism_mono_dmx() * * Downmix process *------------------------------------------------------------------------*/ -void ivas_mono_downmix_render_passive_fx( +void ivas_ism_mono_dmx_fx( 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 */ @@ -120,6 +120,7 @@ void ivas_mono_downmix_render_passive_fx( Word16 Q_shift, proto_shift, input_shift, norm_protoEner, norm_inputEner, proto_norm; Word16 diff_shift, div, div_sqrt; Word32 protoEner_pre, inputEner_pre; + numInputChannels = st_ivas->nSCE; move16(); if ( EQ_32( st_ivas->ivas_format, SBA_ISM_FORMAT ) ) @@ -160,11 +161,6 @@ void ivas_mono_downmix_render_passive_fx( v_add_32( output_shr, proto_signal_fx, proto_signal_fx, output_frame ); } - /* 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(); proto_norm = L_norm_arr( proto_signal_fx, output_frame ); @@ -185,6 +181,14 @@ void ivas_mono_downmix_render_passive_fx( } } + 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(); + + 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 ); + /* compute the eq factor */ IF( hDownmix->protoEnergy_fx == 0 ) @@ -314,7 +318,8 @@ 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 */ + Word32 *input_f_fx, /* i : non-diegetic object */ + 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*/ ) @@ -324,8 +329,8 @@ 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 ); - 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 ); + 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 ); return; } diff --git a/lib_dec/ivas_objectRenderer_internal_fx.c b/lib_dec/ivas_objectRenderer_internal_fx.c index 79683e402242b8f940058eedd22252e5fec4b9fb..08bf0f437ec7d1abf36ef64e9f968cbaf66c21ca 100644 --- a/lib_dec/ivas_objectRenderer_internal_fx.c +++ b/lib_dec/ivas_objectRenderer_internal_fx.c @@ -63,51 +63,6 @@ ivas_error ivas_td_binaural_open_fx( } -/*---------------------------------------------------------------------* - * ivas_td_binaural_renderer() - * - * Receives the current frames for the object streams, updates metadata - * and renders the current frame. - *---------------------------------------------------------------------*/ - -ivas_error ivas_td_binaural_renderer_fx( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - Word32 *output[], /* i/o: SCE channels / Binaural synthesis Q11*/ - const Word16 output_frame /* i : output frame length */ -) -{ - Word16 ism_md_subframe_update; - Word16 nchan_transport; - test(); - IF( EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) || EQ_32( st_ivas->ism_mode, ISM_SBA_MODE_DISC ) ) - { - nchan_transport = st_ivas->nchan_ism; - } - ELSE - { - nchan_transport = st_ivas->nchan_transport; - } - move16(); - - IF( st_ivas->hDecoderConfig->Opt_delay_comp ) - { - ism_md_subframe_update = 1; - } - ELSE - { - ism_md_subframe_update = 2; - } - move16(); - - if ( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) ) - { - ism_md_subframe_update = 2; - move16(); - } - return ivas_td_binaural_renderer_unwrap_fx( st_ivas->hReverb, st_ivas->transport_config, st_ivas->hBinRendererTd, nchan_transport, LFE_CHANNEL, st_ivas->ivas_format, st_ivas->hIsmMetaData, st_ivas->hCombinedOrientationData, ism_md_subframe_update, output, output_frame, MAX_PARAM_SPATIAL_SUBFRAMES ); -} - - /*---------------------------------------------------------------------* * ivas_td_binaural_renderer_sf() * @@ -272,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 ) { @@ -314,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 @@ -340,3 +291,157 @@ ivas_error ivas_td_binaural_renderer_sf_fx( return IVAS_ERR_OK; } + +/*---------------------------------------------------------------------* + * ivas_td_binaural_renderer_sf_splitBinaural() + * + * Render to multiple binaural pairs based on relative head positions for split rendering. + *---------------------------------------------------------------------*/ + +ivas_error ivas_td_binaural_renderer_sf_splitBinaural( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Word32 *output[], /* i/o: SCE channels / Binaural synthesis */ + const Word16 nSamplesRendered /* i : number of samples to render */ +) +{ + Word16 i; + Word16 pos_idx; + IVAS_QUATERNION originalHeadRot[MAX_PARAM_SPATIAL_SUBFRAMES]; + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData; + BINAURAL_TD_OBJECT_RENDERER_HANDLE origTdRendHandle; + ivas_error error; + Word16 original_subframes_rendered; + Word16 original_slots_rendered; + Word32 *p_bin_output[BINAURAL_CHANNELS]; + Word32 output_local[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + Word16 q_fact_orig[MAX_PARAM_SPATIAL_SUBFRAMES]; + + Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; + + pMultiBinPoseData = &st_ivas->hSplitBinRend->splitrend.multiBinPoseData; + move32(); + + /* If not yet allocated, open additional instances of TD renderer */ + FOR( i = 0; i < pMultiBinPoseData->num_poses - 1; ++i ) + { + IF( st_ivas->hTdRendHandles[i] != NULL ) + { + continue; + } + + IF( ( error = ivas_td_binaural_open_unwrap_fx( &st_ivas->hHrtfTD, + st_ivas->hDecoderConfig->output_Fs, + st_ivas->nchan_transport, + st_ivas->ivas_format, + st_ivas->transport_config, + st_ivas->hRenderConfig->directivity_fx, + st_ivas->hTransSetup, + &st_ivas->hTdRendHandles[i], + &st_ivas->binaural_latency_ns, + SrcInd ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + /* Save current head positions */ + FOR( i = 0; i < st_ivas->hCombinedOrientationData->num_subframes; ++i ) + { + originalHeadRot[i] = st_ivas->hCombinedOrientationData->Quaternions[i]; + q_fact_orig[i] = originalHeadRot[i].q_fact; + } + + original_subframes_rendered = st_ivas->hTcBuffer->subframes_rendered; + move16(); + original_slots_rendered = st_ivas->hTcBuffer->slots_rendered; + move16(); + origTdRendHandle = st_ivas->hBinRendererTd; + move32(); + + FOR( i = 0; i < st_ivas->hCombinedOrientationData->num_subframes; ++i ) + { + modify_Quat_q_fx( &originalHeadRot[i], &originalHeadRot[i], Q22 ); + } + + FOR( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ ) + { + /* Update head positions */ + IF( NE_16( pos_idx, 0 ) ) + { + COMBINED_ORIENTATION_HANDLE pCombinedOrientationData = st_ivas->hCombinedOrientationData; + FOR( i = 0; i < st_ivas->hCombinedOrientationData->num_subframes; ++i ) + { + pCombinedOrientationData->Quaternions[i].w_fx = L_negate( 12582912 ); // Q22 + /*euler*/ + Quat2EulerDegree_fx( originalHeadRot[i], + &pCombinedOrientationData->Quaternions[i].z_fx, + &pCombinedOrientationData->Quaternions[i].y_fx, + &pCombinedOrientationData->Quaternions[i].x_fx ); + pCombinedOrientationData->Quaternions[i].x_fx = L_add( pCombinedOrientationData->Quaternions[i].x_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][0] ); + pCombinedOrientationData->Quaternions[i].y_fx = L_add( pCombinedOrientationData->Quaternions[i].y_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][1] ); + pCombinedOrientationData->Quaternions[i].z_fx = L_add( pCombinedOrientationData->Quaternions[i].z_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][2] ); + + Euler2Quat_fx( deg2rad_fx( pCombinedOrientationData->Quaternions[i].x_fx ), + deg2rad_fx( pCombinedOrientationData->Quaternions[i].y_fx ), + deg2rad_fx( pCombinedOrientationData->Quaternions[i].z_fx ), &pCombinedOrientationData->Quaternions[i] ); + + modify_Quat_q_fx( &pCombinedOrientationData->Quaternions[i], &pCombinedOrientationData->Quaternions[i], q_fact_orig[i] ); + } + } + + /* set output channels */ + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + p_bin_output[i] = output_local[add( i_mult( pos_idx, BINAURAL_CHANNELS ), i )]; + move32(); + } + st_ivas->hTcBuffer->subframes_rendered = original_subframes_rendered; + move16(); + st_ivas->hTcBuffer->slots_rendered = original_slots_rendered; + move16(); + + /* update combined orientation access index */ + ivas_combined_orientation_set_to_start_index( st_ivas->hCombinedOrientationData ); + + /* Render */ + IF( NE_16( pos_idx, 0 ) ) + { + st_ivas->hBinRendererTd = st_ivas->hTdRendHandles[sub( pos_idx, 1 )]; + move32(); + } + + IF( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_bin_output, nSamplesRendered ) ) != IVAS_ERR_OK ) + { + return error; + } + + IF( EQ_16( st_ivas->ivas_format, MC_FORMAT ) ) + { + Word32 *p_tc[MAX_TRANSPORT_CHANNELS]; + FOR( i = 0; i < st_ivas->nchan_transport; i++ ) + { + p_tc[i] = st_ivas->hTcBuffer->tc_fx[i] + st_ivas->hTcBuffer->n_samples_rendered; + } + ivas_binaural_add_LFE_fx( st_ivas, nSamplesRendered, p_tc, p_bin_output ); + } + } + + FOR( i = 0; i < i_mult( pMultiBinPoseData->num_poses, BINAURAL_CHANNELS ); i++ ) + { + Copy32( output_local[i], output[i], nSamplesRendered ); + } + + /* Restore original head rotation */ + FOR( i = 0; i < st_ivas->hCombinedOrientationData->num_subframes; ++i ) + { + modify_Quat_q_fx( &originalHeadRot[i], &originalHeadRot[i], q_fact_orig[i] ); + st_ivas->hCombinedOrientationData->Quaternions[i] = originalHeadRot[i]; + move32(); + } + + /* restore original td renderer handle */ + st_ivas->hBinRendererTd = origTdRendHandle; + move32(); + + return IVAS_ERR_OK; +} diff --git a/lib_dec/ivas_omasa_dec_fx.c b/lib_dec/ivas_omasa_dec_fx.c index 8f7da758da7383a82977c24577fb0d370dfcd1cd..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,10 +419,9 @@ ivas_error ivas_omasa_dec_config_fx( * TD Decorrelator *-----------------------------------------------------------------*/ - IF( st_ivas->hDiracDecBin != NULL ) + 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->hTdDecorr ), &( st_ivas->hDiracDecBin->useTdDecorr ) ) ), IVAS_ERR_OK ) ) - + 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 ) ) { return error; } @@ -694,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 ) ) + if ( !st_ivas->hDecoderConfig->Opt_tsm ) { - Copy32( output_f[CPE_CHANNELS], data_separated_objects[0], nSamplesAsked ); - } - ELSE - { - 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[n + CPE_CHANNELS], data_separated_objects[n], nSamplesAsked ); + Copy32( &output_f[CPE_CHANNELS][st_ivas->hTcBuffer->n_samples_rendered], data_separated_objects[0], *nSamplesRendered ); + } + ELSE + { + 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; @@ -744,13 +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(); + Word16 slot_idx_start; + + slot_idx_start = st_ivas->hSpatParamRendCom->slots_rendered; + move16(); FOR( n = 0; n < MAX_NUM_OBJECTS; n++ ) { @@ -758,34 +766,73 @@ 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 ); - IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_sepobj_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) ) + 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 ) ) { - return error; - } + Word16 slot_idx, num_cldfb_bands, nchan_transport_orig, cldfb_slots; + Word32 Cldfb_RealBuffer[CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_ImagBuffer[CLDFB_NO_CHANNELS_MAX]; + Word32 *p_rend_obj[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS]; /* [8 * 2] */ + Word16 q_cldfb, q_in = 11; + move16(); + + FOR( n = 0; n < i_mult( st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses, BINAURAL_CHANNELS ); n++ ) + { + p_rend_obj[n] = &output_fx[n][0]; + move32(); + } + + num_cldfb_bands = st_ivas->hSplitBinRend->splitrend.hCldfbHandles->cldfbAna[0]->no_channels; + move16(); + nchan_transport_orig = st_ivas->nchan_transport; + move16(); + st_ivas->nchan_transport = st_ivas->nchan_ism; + move16(); + + IF( ( error = ivas_td_binaural_renderer_sf_splitBinaural( st_ivas, p_rend_obj, *nSamplesRendered ) ) != IVAS_ERR_OK ) /* objects are read from st_ivas->hTcBuffer->tc[2..(1+n_isms)] */ + { + return error; + } + st_ivas->nchan_transport = nchan_transport_orig; + move16(); + cldfb_slots = *nSamplesRendered / num_cldfb_bands; - FOR( n = 0; n < BINAURAL_CHANNELS; n++ ) + FOR( n = 0; n < i_mult( st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses, BINAURAL_CHANNELS ); ++n ) + { + q_cldfb = q_in; + Scale_sig32( st_ivas->hSplitBinRend->splitrend.hCldfbHandles->cldfbAna[n]->cldfb_state_fx, + sub( st_ivas->hSplitBinRend->splitrend.hCldfbHandles->cldfbAna[n]->p_filter_length, st_ivas->hSplitBinRend->splitrend.hCldfbHandles->cldfbAna[n]->no_channels ), + sub( q_cldfb, st_ivas->hSplitBinRend->splitrend.hCldfbHandles->cldfbAna[n]->Q_cldfb_state ) ); + st_ivas->hSplitBinRend->splitrend.hCldfbHandles->cldfbAna[n]->Q_cldfb_state = q_cldfb; + FOR( slot_idx = 0; slot_idx < cldfb_slots; slot_idx++ ) + { + q_cldfb = q_in; + cldfbAnalysis_ts_fx_fixed_q( &( p_rend_obj[n][num_cldfb_bands * slot_idx] ), Cldfb_RealBuffer, Cldfb_ImagBuffer, num_cldfb_bands, st_ivas->hSplitBinRend->splitrend.hCldfbHandles->cldfbAna[n], &q_cldfb ); + + Scale_sig32( Cldfb_RealBuffer, num_cldfb_bands, sub( Q6, q_cldfb ) ); + Scale_sig32( Cldfb_ImagBuffer, num_cldfb_bands, sub( Q6, q_cldfb ) ); + /* note: this intentionally differs from OSBA by: no scaling by 0.5 */ + v_add_fx( st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural_fx[n][slot_idx_start + slot_idx], Cldfb_RealBuffer, st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural_fx[n][slot_idx_start + slot_idx], num_cldfb_bands ); + v_add_fx( st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural_fx[n][slot_idx_start + slot_idx], Cldfb_ImagBuffer, st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural_fx[n][slot_idx_start + slot_idx], num_cldfb_bands ); + } + } + } + else { - v_add_fx( output_fx[n], p_sepobj_fx[n], output_fx[n], *nSamplesRendered ); + IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_sepobj_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) ) + { + return error; + } + + FOR( n = 0; n < BINAURAL_CHANNELS; n++ ) + { + v_add_fx( output_fx[n], p_sepobj_fx[n], output_fx[n], *nSamplesRendered ); + } } return IVAS_ERR_OK; diff --git a/lib_dec/ivas_osba_dec_fx.c b/lib_dec/ivas_osba_dec_fx.c index d12bf12e9f16e360e2d4acc35484188cf57be8d9..fc325d893963ebb89b81c814c08ca8e1eb9cdbdf 100644 --- a/lib_dec/ivas_osba_dec_fx.c +++ b/lib_dec/ivas_osba_dec_fx.c @@ -137,6 +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; + Word16 slot_idx_start; + + slot_idx_start = st_ivas->hSpatParamRendCom->slots_rendered; + move16(); FOR( Word16 i = 0; i < BINAURAL_CHANNELS; i++ ) { @@ -156,18 +160,73 @@ ivas_error ivas_osba_dirac_td_binaural_jbm_fx( return error; } - IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_sepobj_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) ) + 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 ) ) { - return error; - } + Word16 slot_idx, num_cldfb_bands, b, nchan_transport_orig; + Word16 cldfb_slots; + Word32 Cldfb_RealBuffer[CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_ImagBuffer[CLDFB_NO_CHANNELS_MAX]; + Word16 q_cldfb, q_in = 11; + move16(); + + num_cldfb_bands = st_ivas->hSplitBinRend->splitrend.hCldfbHandles->cldfbAna[0]->no_channels; + move16(); + nchan_transport_orig = st_ivas->nchan_transport; + move16(); + st_ivas->nchan_transport = st_ivas->nchan_ism; + move16(); + IF( ( error = ivas_td_binaural_renderer_sf_splitBinaural( st_ivas, output_fx, *nSamplesRendered ) ) != IVAS_ERR_OK ) + { + return error; + } + st_ivas->nchan_transport = nchan_transport_orig; + move16(); + cldfb_slots = *nSamplesRendered / num_cldfb_bands; - FOR( n = 0; n < BINAURAL_CHANNELS; n++ ) + FOR( n = 0; n < i_mult( st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses, BINAURAL_CHANNELS ); ++n ) + { + q_cldfb = q_in; + Scale_sig32( st_ivas->hSplitBinRend->splitrend.hCldfbHandles->cldfbAna[n]->cldfb_state_fx, + sub( st_ivas->hSplitBinRend->splitrend.hCldfbHandles->cldfbAna[n]->p_filter_length, st_ivas->hSplitBinRend->splitrend.hCldfbHandles->cldfbAna[n]->no_channels ), + sub( q_cldfb, st_ivas->hSplitBinRend->splitrend.hCldfbHandles->cldfbAna[n]->Q_cldfb_state ) ); + st_ivas->hSplitBinRend->splitrend.hCldfbHandles->cldfbAna[n]->Q_cldfb_state = q_cldfb; + FOR( slot_idx = 0; slot_idx < cldfb_slots; slot_idx++ ) + { + q_cldfb = q_in; + cldfbAnalysis_ts_fx_fixed_q( &( output_fx[n][num_cldfb_bands * slot_idx] ), Cldfb_RealBuffer, Cldfb_ImagBuffer, num_cldfb_bands, st_ivas->hSplitBinRend->splitrend.hCldfbHandles->cldfbAna[n], &q_cldfb ); + + Scale_sig32( Cldfb_RealBuffer, num_cldfb_bands, sub( Q6, q_cldfb ) ); + Scale_sig32( Cldfb_ImagBuffer, num_cldfb_bands, sub( Q6, q_cldfb ) ); + FOR( b = 0; b < num_cldfb_bands; b++ ) + { + st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural_fx[n][slot_idx_start + slot_idx][b] = + L_add( L_shr( st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural_fx[n][add( slot_idx_start, slot_idx )][b], 1 ), + L_shr( Cldfb_RealBuffer[b], 1 ) ); + move32(); + + st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural_fx[n][slot_idx_start + slot_idx][b] = + L_add( L_shr( st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural_fx[n][add( slot_idx_start, slot_idx )][b], 1 ), + L_shr( Cldfb_ImagBuffer[b], 1 ) ); + move32(); + } + } + } + } + else { - Word16 i; - FOR( i = 0; i < nSamplesAsked; i++ ) + IF( NE_32( ( error = ivas_td_binaural_renderer_sf_fx( st_ivas, p_sepobj_fx, *nSamplesRendered ) ), IVAS_ERR_OK ) ) { - output_fx[n][i] = L_add( L_shr( output_fx[channel_offset + n][i], 1 ), L_shr( p_sepobj_fx[n][i], 1 ) ); - move32(); + return error; + } + + FOR( n = 0; n < BINAURAL_CHANNELS; n++ ) + { + Word16 i; + FOR( i = 0; i < nSamplesAsked; i++ ) + { + output_fx[n][i] = L_add( L_shr( output_fx[channel_offset + n][i], 1 ), L_shr( p_sepobj_fx[n][i], 1 ) ); + move32(); + } } } return IVAS_ERR_OK; @@ -232,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 ) ) @@ -244,7 +308,7 @@ ivas_error ivas_osba_render_sf_fx( IF( NE_32( st_ivas->renderer_type, RENDERER_BINAURAL_FASTCONV_ROOM ) ) { - ivas_ism_render_sf_fx( st_ivas, p_output_ism, *nSamplesRendered ); + ivas_ism_render_sf_fx( st_ivas, st_ivas->renderer_type, p_output_ism, *nSamplesRendered ); } FOR( n = 0; n < st_ivas->hDecoderConfig->nchan_out; n++ ) diff --git a/lib_dec/ivas_out_setup_conversion_fx.c b/lib_dec/ivas_out_setup_conversion_fx.c index 6e78e9c6902bf5e4188d3e264f3ec4faaa583ca3..bc96bf46c537fdf2b13e514c86046b8ebb7c4d52 100644 --- a/lib_dec/ivas_out_setup_conversion_fx.c +++ b/lib_dec/ivas_out_setup_conversion_fx.c @@ -1215,7 +1215,7 @@ void ivas_ls_setup_conversion_process_mdct_param_mc_fx( set_zero_fx( cy_fx, MAX_CICP_CHANNELS * MAX_CICP_CHANNELS ); set_zero_fx( Nrqq_fx, MAX_OUTPUT_CHANNELS ); set_zero_fx( target_ch_ener_fx, MAX_OUTPUT_CHANNELS ); - /* Step 1.2, get target channel energies for the transported format as in ivas_param_mc_get_mono_stereo_mixing_matrices(), Nrqq calculation */ + /* Step 1.2, get target channel energies for the transported format, Nrqq calculation */ ild_q_fx = hParamMC->icld_q_fx + imult1616( bandIdx, hParamMC->hMetadataPMC->ild_mapping_conf->ild_map_size_lfe ); move16(); FOR( chInIdx = 0; chInIdx < nchan_transport_format; chInIdx++ ) @@ -1237,7 +1237,7 @@ void ivas_ls_setup_conversion_process_mdct_param_mc_fx( move32(); } - /* Step 1.3 get target Cy like in ivas_param_mc_get_mono_stereo_mixing_matrices() (with dmx matrix from CICPX to MONO/STEREO saved in hParamMC) */ + /* Step 1.3 get target Cy () (with dmx matrix from CICPX to MONO/STEREO saved in hParamMC) */ FOR( chOutIdx = 0; chOutIdx < nchan_out; chOutIdx++ ) { FOR( i = 0; i < nchan_transport_format; i++ ) diff --git a/lib_dec/ivas_output_config_fx.c b/lib_dec/ivas_output_config_fx.c index 17999496e39f56e8b84c60feb75495912ae60951..bdf7b67bc808ed5cf30f4c1811978ea2a83ccc1a 100644 --- a/lib_dec/ivas_output_config_fx.c +++ b/lib_dec/ivas_output_config_fx.c @@ -80,7 +80,7 @@ void ivas_renderer_select( test(); 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 ) ) + 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 ) ) { test(); test(); @@ -91,7 +91,7 @@ void ivas_renderer_select( { IF( EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) ) { - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) ) + 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_PARAMETRIC; move16(); @@ -105,7 +105,7 @@ void ivas_renderer_select( ELSE /* ISM_MODE_DISC */ { test(); - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + 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 ) ) { *renderer_type = RENDERER_BINAURAL_OBJECTS_TD; move16(); @@ -125,8 +125,7 @@ void ivas_renderer_select( { *internal_config = output_config; move16(); - - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) ) + 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_PARAMETRIC; move16(); @@ -143,7 +142,7 @@ void ivas_renderer_select( move16(); test(); - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + 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(); @@ -198,7 +197,7 @@ void ivas_renderer_select( *internal_config = output_config; move16(); - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) ) + 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_PARAMETRIC; move16(); @@ -214,14 +213,13 @@ void ivas_renderer_select( *internal_config = transport_config; move16(); test(); - IF( EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_32( output_config, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + 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 ) ) { test(); test(); test(); test(); - test(); - IF( ( EQ_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_5_1 ) || EQ_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_7_1 ) ) && ( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) && ( EQ_32( st_ivas->mc_mode, MC_MODE_MCT ) || EQ_32( st_ivas->mc_mode, MC_MODE_PARAMUPMIX ) ) ) + IF( ( EQ_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_5_1 ) || EQ_32( st_ivas->transport_config, IVAS_AUDIO_CONFIG_7_1 ) ) && ( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) && EQ_32( st_ivas->mc_mode, MC_MODE_MCT ) ) { *renderer_type = RENDERER_BINAURAL_OBJECTS_TD; move16(); @@ -409,7 +407,7 @@ void ivas_renderer_select( *internal_config = IVAS_AUDIO_CONFIG_HOA3; move16(); } - st_ivas->renderer_type = RENDERER_SBA_LINEAR_DEC; + *renderer_type = RENDERER_SBA_LINEAR_DEC; 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 c1be6caf82100f929c75342db0b7101db89fc2b4..182ed54abd6a38d87d513abcadd8f33ef049097b 100644 --- a/lib_dec/ivas_qmetadata_dec_fx.c +++ b/lib_dec/ivas_qmetadata_dec_fx.c @@ -4631,15 +4631,13 @@ static void read_stream_dct_coeffs_omasa_fx( Word16 *index, /*Q0*/ const Word16 first_line /*Q0*/ ) { - Word16 sign, nbits; + Word16 sign; Word16 i, j, i_min; - Word32 step; Word16 GR1, GR2; step = STEP_M2T_FX; move32(); - nbits = 0; move16(); sign = 1; move16(); @@ -4653,7 +4651,6 @@ static void read_stream_dct_coeffs_omasa_fx( sign = -1; move16(); } - nbits = add( nbits, 1 ); } set16_fx( q_idx, 0, len_stream ); @@ -4679,7 +4676,7 @@ static void read_stream_dct_coeffs_omasa_fx( { i_min = extract_l( L_add( shl( i_min, 1 ), bit_stream[( *index )--] ) ); /*Q0*/ } - nbits = add( nbits, j ); + /* read GR orders */ GR1 = extract_l( L_add( bit_stream[( *index )--], 1 ) ); /*Q0*/ IF( EQ_16( GR1, 2 ) ) diff --git a/lib_dec/ivas_sba_dec_fx.c b/lib_dec/ivas_sba_dec_fx.c index c8c3d80a533e987ba40c0a3a6047d47e130e174e..687991c8931e49533bf13399579596d9941e5bdc 100644 --- a/lib_dec/ivas_sba_dec_fx.c +++ b/lib_dec/ivas_sba_dec_fx.c @@ -183,7 +183,7 @@ ivas_error ivas_sba_dec_reconfigure_fx( test(); test(); test(); - 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 ) ) ) + 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 ) ) ) { RENDERER_TYPE renderer_type_new; Word16 sba_order_internal; @@ -194,7 +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 ) ) { - IF( EQ_16( st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL ) ) + 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_PARAMETRIC; move16(); @@ -208,7 +208,7 @@ ivas_error ivas_sba_dec_reconfigure_fx( ELSE { 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_REVERB ) ) + 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(); @@ -270,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 ) @@ -411,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; } @@ -423,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; } @@ -434,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; } @@ -473,7 +471,7 @@ ivas_error ivas_sba_dec_reconfigure_fx( } ivas_dirac_config_bands_fx( band_grouping, IVAS_MAX_NUM_BANDS, (Word16) ( L_add( st_ivas->hDecoderConfig->output_Fs, 400 ) / CLDFB_BANDWIDTH ), - st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0 ); + st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0, 1 ); if ( st_ivas->hDirAC ) { @@ -627,9 +625,9 @@ ivas_error ivas_sba_dec_reconfigure_fx( * TD Decorrelator *-----------------------------------------------------------------*/ - IF( st_ivas->hDiracDecBin != NULL ) + 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->hTdDecorr ), &( st_ivas->hDiracDecBin->useTdDecorr ) ) ), IVAS_ERR_OK ) ) + 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 ) ) { return error; } @@ -783,7 +781,7 @@ void ivas_sba_dec_digest_tc_fx( ivas_spar_dec_digest_tc_fx( st_ivas, st_ivas->nchan_transport, nCldfbSlots, nSamplesForRendering ); } test(); - IF( st_ivas->hDiracDecBin != NULL && ( st_ivas->hDiracDecBin->useTdDecorr ) ) + IF( st_ivas->hDiracDecBin[0] != NULL && st_ivas->hDiracDecBin[0]->useTdDecorr ) { Word16 nSamplesLeftForTD, default_frame; Word32 *decorr_signal[BINAURAL_CHANNELS]; @@ -806,9 +804,9 @@ void ivas_sba_dec_digest_tc_fx( { Word16 nSamplesToDecorr = s_min( nSamplesLeftForTD, default_frame ); /*Q0*/ - IF( st_ivas->hDiracDecBin->hTdDecorr ) + IF( st_ivas->hDiracDecBin[0]->hTdDecorr ) { - ivas_td_decorr_process_fx( st_ivas->hDiracDecBin->hTdDecorr, p_tc, decorr_signal, nSamplesToDecorr ); + ivas_td_decorr_process_fx( st_ivas->hDiracDecBin[0]->hTdDecorr, p_tc, decorr_signal, nSamplesToDecorr ); } FOR( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) @@ -852,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_sba_dirac_stereo_dec_fx.c b/lib_dec/ivas_sba_dirac_stereo_dec_fx.c index 50db27aa582f0d7dec9e9b9476a4eb334160d820..e20e2df9ae0359478f56eb02f199311218e21177 100644 --- a/lib_dec/ivas_sba_dirac_stereo_dec_fx.c +++ b/lib_dec/ivas_sba_dirac_stereo_dec_fx.c @@ -276,6 +276,8 @@ static Word16 get_panning_tangent_gain( lim_r = sub( idx, 1 ); /*Q0*/ } } + assert( "should not be reached, added to avoid issues with WMC tool instrumentation" ); + return 0; /* should not be reached, added to avoid issues with WMC tool instrumentation */ } static Word16 get_panning( diff --git a/lib_dec/ivas_spar_decoder_fx.c b/lib_dec/ivas_spar_decoder_fx.c index abf953f37fdd88b8de6092b8a9f15725b48a9e46..4a95f4d35d7e586f204f94c6783937e167aac82d 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; @@ -1595,9 +1595,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( @@ -2095,7 +2095,7 @@ void ivas_spar_dec_upmixer_sf_fx( test(); test(); test(); - 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 ) ) ) && + 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 ) ) ) { 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 4eb40f337f615439667a69cdfbff37ad71838330..4a8c3cbd99febd54e9600ffef4d26e883ad80426 100644 --- a/lib_dec/ivas_stat_dec.h +++ b/lib_dec/ivas_stat_dec.h @@ -40,6 +40,7 @@ #include "stat_dec.h" #include "ivas_stat_com.h" #include "ivas_stat_rend.h" +#include "isar_stat.h" /*----------------------------------------------------------------------------------* @@ -859,30 +860,36 @@ typedef struct renderer_struct } ISM_RENDERER_DATA, *ISM_RENDERER_HANDLE; -/* Fastconv binaural data structure */ -typedef struct ivas_binaural_rendering_struct + +/*----------------------------------------------------------------------------------* + * IVAS decoder specific ISAR wrapper structures + *----------------------------------------------------------------------------------*/ + +typedef 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 */ + Word32 Cldfb_RealBuffer_Binaural_fx[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_ImagBuffer_Binaural_fx[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + Word32 output_fx[BINAURAL_CHANNELS * MAX_HEAD_ROT_POSES][L_FRAME48k]; - /* Convolution module structure */ - BINRENDERER_CONV_MODULE_HANDLE_FX hBinRenConvModule; +} ISAR_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA, *ISAR_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA_HANDLE; - /* Variables related to reverberator module */ - Word32 earlyPartEneCorrection_fx[CLDFB_NO_CHANNELS_MAX]; - REVERB_STRUCT_HANDLE hReverb; +typedef struct +{ + Word32 Cldfb_RealBuffer_fx[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_ImagBuffer_fx[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + IVAS_AUDIO_CONFIG config; -} BINAURAL_RENDERER, *BINAURAL_RENDERER_HANDLE; +} ISAR_DEC_SPLIT_REND_CLDFB_OUT_DATA, *ISAR_DEC_SPLIT_REND_CLDFB_OUT_DATA_HANDLE; +typedef struct +{ + ISAR_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA_HANDLE hMultiBinCldfbData; /*scratch buffer for frame by frame processing*/ + ISAR_SPLIT_REND_BITS_HANDLE hSplitRendBits; /*scratch buffer for frame by frame processing*/ + SPLIT_REND_WRAPPER splitrend; + ISAR_DEC_SPLIT_REND_CLDFB_OUT_DATA_HANDLE hCldfbDataOut; /*buffer to store cldfb data before binauralization*/ + Word16 numTdSamplesPerChannelCached; + +} ISAR_DEC_SPLIT_REND_WRAPPER, *ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE; /*----------------------------------------------------------------------------------* * MASA decoder structures @@ -1027,7 +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 */ - + int16_t Opt_Limiter; } DECODER_CONFIG, *DECODER_CONFIG_HANDLE; @@ -1104,7 +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 */ - DIRAC_DEC_BIN_HANDLE hDiracDecBin; /* parametric binaural renderer handle */ + DIRAC_DEC_BIN_HANDLE hDiracDecBin[MAX_HEAD_ROT_POSES]; /* parametric binaural renderer handle */ LSSETUP_CONVERSION_HANDLE hLsSetUpConversion; /* MC LS configuration convertion handle */ EFAP_HANDLE hEFAPdata; /* EFAP structure */ VBAP_HANDLE hVBAPdata; /* VBAP structure */ @@ -1114,6 +1121,7 @@ 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 */ + HRTFS_STATISTICS_HANDLE hHrtfStatistics; /* HRTF statistics handle */ 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 */ @@ -1128,6 +1136,8 @@ typedef struct Decoder_Struct Word16 flag_omasa_brate; + ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE hSplitBinRend; /* ISAR split binaural rendering handle */ + BINAURAL_TD_OBJECT_RENDERER_HANDLE hTdRendHandles[MAX_HEAD_ROT_POSES - 1]; /* JBM module */ DECODER_TC_BUFFER_HANDLE hTcBuffer; /* JBM structure */ diff --git a/lib_dec/ivas_stereo_dft_dec_dmx_fx.c b/lib_dec/ivas_stereo_dft_dec_dmx_fx.c index cdb64e46c62c5c73343b11c8a202d9623923088b..6a369a14c407a2563ad115ff7986e406db292264 100644 --- a/lib_dec/ivas_stereo_dft_dec_dmx_fx.c +++ b/lib_dec/ivas_stereo_dft_dec_dmx_fx.c @@ -378,10 +378,8 @@ void stereo_dft_unify_dmx_fx( Word16 idx_k0, idx_k1; Word16 q_shift0; Word16 q_shift1; - idx_k0 = ( add( hStereoDft->past_DMX_pos, 1 ) ) % STEREO_DFT_PAST_MAX; - move16(); - idx_k1 = ( add( idx_k0, 1 ) ) % STEREO_DFT_PAST_MAX; - move16(); + idx_k0 = add( hStereoDft->past_DMX_pos, STEREO_DFT_PAST_MAX - 1 ) & ( STEREO_DFT_PAST_MAX - 1 ); /* Q0 */ + idx_k1 = add( idx_k0, 1 ) & ( STEREO_DFT_PAST_MAX - 1 ); q_shift0 = sub( hStereoDft->q_dft, hStereoDft->q_DFT_past_DMX_fx[idx_k0] ); q_shift1 = sub( hStereoDft->q_dft, hStereoDft->q_DFT_past_DMX_fx[idx_k1] ); diff --git a/lib_dec/lib_dec.h b/lib_dec/lib_dec.h index 0c4d54db8bcde6d8889b50d9a1b2966209740fb4..3a6ea5b458ebdb5657878c7ef62ea98ab1693b00 100644 --- a/lib_dec/lib_dec.h +++ b/lib_dec/lib_dec.h @@ -144,6 +144,40 @@ ivas_error IVAS_DEC_GetSamples( bool *needNewFrame /* o : indication that the decoder needs a new frame */ ); +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 */ + ISAR_SPLIT_REND_BITS_DATA *splitRendBits, /* o : output split rendering bits */ + Word16 *nOutSamples, /* o : number of samples per channel written to output buffer */ + bool *needNewFrame /* o : indication that the decoder needs a new frame */ +); + +/*! r: decoder error code */ +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 */ + 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 /* o: pointer to LC3plus High-Res setting */ +); + +/*! r: decoder error code */ +ivas_error IVAS_DEC_GetCldfbSamples( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + Word32 *out_real, /* o : buffer for decoded PCM real output in CLDFB domain */ + Word32 *out_imag, /* o : buffer for decoded PCM imag output in CLDFB domain */ + IVAS_AUDIO_CONFIG *audio_config, /* o : audio configuration */ + Word16 *nOutSamples /* o : number of samples per channel written to output buffer */ +); + +int16_t IVAS_DEC_is_split_rendering_enabled( + IVAS_DEC_HANDLE hIvasDec /* i: IVAS decoder handle */ +); +int16_t IVAS_DEC_is_split_rendering_coded_out( + IVAS_DEC_HANDLE hIvasDec /* i/o: IVAS decoder handle */ +); /*! r: error code */ ivas_error IVAS_DEC_GetObjectMetadata( @@ -165,7 +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 */ - const Word16 subframe_idx /* i : subframe index */ + const Word16 subframe_idx, /* i : subframe index */ + const ISAR_SPLIT_REND_ROT_AXIS rot_axis /* i : external control for rotation axis for split rendering */ ); /*! r: error code */ @@ -242,6 +277,10 @@ ivas_error IVAS_DEC_EnableVoIP( const IVAS_DEC_INPUT_FORMAT inputFormat /* i : format of the input bitstream */ ); +/*! r: error code */ +ivas_error IVAS_DEC_EnableSplitRendering( + IVAS_DEC_HANDLE hIvasDec /* i/o: IVAS decoder handle */ +); ivas_error IVAS_DEC_SetRenderFramesize( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ @@ -307,27 +346,31 @@ 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 */ ); +ivas_error IVAS_DEC_GetHrtfStatisticsHandle( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_STATISTICS_HANDLE **hHrtfStatistics /* o : HRTF statistics handle */ +); /*! 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 9a60d024fcb697918dc111613aace689f7195def..7c881cce983bd84a83833722e87d9e5d4df5f9d3 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -37,6 +37,8 @@ #include "ivas_cnst.h" #include "ivas_prot_rend_fx.h" #include "prot_fx.h" +#include "isar_prot.h" +#include "lib_isar_pre_rend.h" #include "ivas_prot_fx.h" #include "jbm_jb4sb.h" @@ -121,7 +123,9 @@ static Word16 get_render_frame_size_ms( IVAS_RENDER_FRAMESIZE render_framesize ) #ifdef NONBE_FIX_864_JBM_RENDER_FRAMESIZE static void update_voip_rendered20ms( IVAS_DEC_HANDLE hIvasDec, const Word16 nSamplesRendered ); #endif - +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 ); /*---------------------------------------------------------------------* * IVAS_DEC_Open() @@ -285,6 +289,42 @@ ivas_error IVAS_DEC_Open( return IVAS_ERR_WRONG_PARAMS; } +/*-------------------------------------------------------------------------* + * isar_set_split_rend_setup() + * + * Setup IVAS split rendering + *-------------------------------------------------------------------------*/ + +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 /* o : output split rendering bits */ +) +{ + splitRendBits->bits_read = 0; + splitRendBits->bits_written = 0; + splitRendBits->buf_len = ISAR_MAX_SPLIT_REND_BITS_BUFFER_SIZE_IN_BYTES; + splitRendBits->codec = ISAR_SPLIT_REND_CODEC_DEFAULT; + splitRendBits->pose_correction = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE; + splitRendBits->codec_frame_size_ms = 0; + splitRendBits->isar_frame_size_ms = 0; + splitRendBits->lc3plus_highres = 0; + + if ( ( hSplitBinRend->hMultiBinCldfbData = (ISAR_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA_HANDLE) malloc( sizeof( ISAR_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for split rendering structure" ); + } + + ISAR_PRE_REND_GetMultiBinPoseData( hSplitBinConfig, &hSplitBinRend->splitrend.multiBinPoseData, ( hCombinedOrientationData != NULL ) ? hCombinedOrientationData->sr_pose_pred_axis : DEFAULT_AXIS ); + + if ( hCombinedOrientationData != NULL ) + { + isar_set_split_rend_ht_setup_fx( &hSplitBinRend->splitrend, hCombinedOrientationData->Quaternions, hCombinedOrientationData->Rmat_fx ); + } + + return IVAS_ERR_OK; +} /*---------------------------------------------------------------------* * init_decoder_config() @@ -307,6 +347,8 @@ static void init_decoder_config( hDecoderConfig->Opt_non_diegetic_pan = 0; hDecoderConfig->non_diegetic_pan_gain_fx = 0; // Q15 hDecoderConfig->Opt_tsm = 0; + hDecoderConfig->Opt_Limiter = 1; + move16(); hDecoderConfig->Opt_delay_comp = 0; hDecoderConfig->Opt_ExternalOrientation = 0; hDecoderConfig->Opt_dpid_on = 0; @@ -353,6 +395,9 @@ void IVAS_DEC_Close( ( *phIvasDec )->hVoIP = NULL; } + /* destroy Split binaural renderer (ISAR) handle */ + ivas_destroy_handle_isar( &( *phIvasDec )->st_ivas->hSplitBinRend ); + IF( ( *phIvasDec )->st_ivas ) { ivas_destroy_dec_fx( ( *phIvasDec )->st_ivas ); @@ -538,12 +583,27 @@ ivas_error IVAS_DEC_Configure( move16(); + 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(); + } + /* Set decoder parameters to initial values */ IF( NE_32( ( error = ivas_init_decoder_front( st_ivas ) ), IVAS_ERR_OK ) ) { return error; } + /* 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 ) ) + { + IF( ( error = ivas_create_handle_isar( &st_ivas->hSplitBinRend ) ) != IVAS_ERR_OK ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for ISAR handle" ); + } + } + if ( EQ_16( hIvasDec->mode, IVAS_DEC_MODE_EVS ) ) { hIvasDec->st_ivas->ivas_format = MONO_FORMAT; @@ -565,6 +625,41 @@ ivas_error IVAS_DEC_Configure( return error; } +/*---------------------------------------------------------------------* + * IVAS_DEC_EnableSplitRendering( ) + * + * Intitialize Split rendering + *---------------------------------------------------------------------*/ + +ivas_error IVAS_DEC_EnableSplitRendering( + IVAS_DEC_HANDLE hIvasDec /* i/o: IVAS decoder handle */ +) +{ + DECODER_CONFIG_HANDLE hDecoderConfig; + ivas_error error; + + error = IVAS_ERR_OK; + move32(); + + + IF( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + hDecoderConfig = hIvasDec->st_ivas->hDecoderConfig; + move32(); + + hDecoderConfig->Opt_Headrotation = 1; + move16(); + hDecoderConfig->render_framesize = IVAS_RENDER_FRAMESIZE_20MS; + move32(); + + hDecoderConfig->Opt_Limiter = 0; + move16(); + + return error; +} /*---------------------------------------------------------------------* * get_render_framesize_ms( ) @@ -609,6 +704,16 @@ ivas_error IVAS_DEC_SetRenderFramesize( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } + IF( hIvasDec->st_ivas->hExtOrientationData != NULL ) + { + hIvasDec->st_ivas->hExtOrientationData->num_subframes = (Word16) render_framesize; + } + IF( hIvasDec->st_ivas->hCombinedOrientationData != NULL ) + { + hIvasDec->st_ivas->hCombinedOrientationData->num_subframes = (Word16) render_framesize; + } + + hIvasDec->st_ivas->hDecoderConfig->render_framesize = render_framesize; move16(); @@ -1020,6 +1125,19 @@ ivas_error IVAS_DEC_GetSamples( { return error; } + + /*----------------------------------------------------------------* + * Binaural split rendering setup + *----------------------------------------------------------------*/ + + IF( EQ_32( hIvasDec->st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( hIvasDec->st_ivas->hDecoderConfig->output_config, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + IF( hIvasDec->st_ivas->hCombinedOrientationData != NULL ) + { + isar_set_split_rend_ht_setup_fx( &hIvasDec->st_ivas->hSplitBinRend->splitrend, hIvasDec->st_ivas->hCombinedOrientationData->Quaternions, hIvasDec->st_ivas->hCombinedOrientationData->Rmat_fx ); + } + } + hIvasDec->updateOrientation = false; move16(); } @@ -1193,6 +1311,265 @@ return IVAS_ERR_OK; } +/*---------------------------------------------------------------------* + * IVAS_DEC_GetSplitBinauralBitstream( ) + * + * + *---------------------------------------------------------------------*/ + +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 */ + ISAR_SPLIT_REND_BITS_DATA *splitRendBits, /* o : output split rendering bits */ + Word16 *nOutSamples, /* o : number of samples per channel written to output buffer */ + bool *needNewFrame /* o : indication that the decoder needs a new frame */ +) +{ + Decoder_Struct *st_ivas; + AUDIO_CONFIG output_config; + Word32 output_Fs; + Word32 *pOutput[BINAURAL_CHANNELS * MAX_HEAD_ROT_POSES]; + Word32 Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + FOR( Word32 i = 0; i < MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS; i++ ) + { + FOR( Word32 j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + FOR( Word32 k = 0; k < CLDFB_NO_CHANNELS_MAX; k++ ) + { + Cldfb_RealBuffer_Binaural[i][j][k] = 0; + Cldfb_ImagBuffer_Binaural[i][j][k] = 0; + move32(); + move32(); + } + } + } + Word16 numSamplesPerChannelToDecode; + Word16 i, j; + ivas_error error; + ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE hSplitBinRend; + Word16 max_band; + Word16 pcm_out_flag; + Word16 td_input; + Word16 numPoses; + Word16 slots_rendered, slots_rendered_new; + Word16 ro_md_flag; + IVAS_QUATERNION Quaternion; + + error = IVAS_ERR_OK; + st_ivas = hIvasDec->st_ivas; + output_config = st_ivas->hDecoderConfig->output_config; + output_Fs = st_ivas->hDecoderConfig->output_Fs; + numSamplesPerChannelToDecode = (Word16) ( output_Fs / FRAMES_PER_SEC ); // TODO remove division + + *needNewFrame = false; + hSplitBinRend = st_ivas->hSplitBinRend; + + if ( ( error = isar_set_split_rend_setup( hSplitBinRend, &st_ivas->hRenderConfig->split_rend_config, st_ivas->hCombinedOrientationData, splitRendBits ) ) != IVAS_ERR_OK ) + { + return error; + } + FOR( i = 0; i < MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + set32_fx( hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural_fx[i][j], 0, CLDFB_NO_CHANNELS_MAX ); + set32_fx( hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural_fx[i][j], 0, CLDFB_NO_CHANNELS_MAX ); + } + } + + numPoses = hSplitBinRend->splitrend.multiBinPoseData.num_poses; + move16(); + + IF( NE_32( st_ivas->hDecoderConfig->render_framesize, IVAS_RENDER_FRAMESIZE_20MS ) && + ( EQ_32( hIvasDec->st_ivas->hRenderConfig->split_rend_config.poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) || + EQ_16( hIvasDec->st_ivas->hRenderConfig->split_rend_config.dof, 0 ) ) ) + { + numSamplesPerChannelToDecode = (Word16) ( output_Fs / FRAMES_PER_SEC ); // TODO remove division + numSamplesPerChannelToDecode = (Word16) ( numSamplesPerChannelToDecode / MAX_PARAM_SPATIAL_SUBFRAMES ); // TODO remove division + numSamplesPerChannelToDecode *= (Word16) st_ivas->hDecoderConfig->render_framesize; + move16(); + move16(); + } + + IF( EQ_16( IVAS_DEC_is_split_rendering_enabled( hIvasDec ), 0 ) ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + IF( st_ivas->hTcBuffer == NULL || hIvasDec->hasBeenFedFrame ) + { + slots_rendered = 0; + } + ELSE + { + /* this is needed for OMASA-DISC, because the td-rend granularity is 240 samples at 48kHz, leading to wrong slot count. */ + IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) + { + slots_rendered = st_ivas->hTcBuffer->n_samples_rendered / NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ); // TODO remove division + } + else + { + slots_rendered = st_ivas->hTcBuffer->n_samples_rendered / st_ivas->hTcBuffer->n_samples_granularity; + } + } + + + /* Decode and render */ + if ( ( error = IVAS_DEC_GetSamples( hIvasDec, numSamplesPerChannelToDecode, pcmBuf_out, nOutSamples, needNewFrame ) ) != IVAS_ERR_OK ) + { + return error; + } + + + FOR( i = 0; i < BINAURAL_CHANNELS * MAX_HEAD_ROT_POSES; ++i ) + { + pOutput[i] = hSplitBinRend->hMultiBinCldfbData->output_fx[i]; + move32(); + } + + IF( st_ivas->hTcBuffer == NULL ) + { + slots_rendered_new = 0; + move16(); + } + ELSE + { + /* this is needed for OMASA-DISC, because the td-rend granularity is 240 samples at 48kHz, leading to wrong slot count. */ + IF( EQ_32( st_ivas->ivas_format, MASA_ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_MASA_MODE_DISC ) ) + { + slots_rendered_new = st_ivas->hTcBuffer->n_samples_rendered / NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ); // TODO remove division + } + ELSE + { + slots_rendered_new = st_ivas->hTcBuffer->n_samples_rendered / st_ivas->hTcBuffer->n_samples_granularity; // TODO remove division + } + } + + FOR( i = 0; i < i_mult( BINAURAL_CHANNELS, numPoses ); ++i ) + { + FOR( j = slots_rendered; j < slots_rendered_new; ++j ) + { + Copy32( hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural_fx[i][j], Cldfb_RealBuffer_Binaural[i][j - slots_rendered], CLDFB_NO_CHANNELS_MAX ); + Copy32( hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural_fx[i][j], Cldfb_ImagBuffer_Binaural[i][j - slots_rendered], CLDFB_NO_CHANNELS_MAX ); + } + } + + max_band = (Word16) ( ( BINAURAL_MAXBANDS * output_Fs ) / 48000 ); // TODO remove division + move16(); + pcm_out_flag = ( output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0; + td_input = st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && st_ivas->renderer_type != RENDERER_STEREO_PARAMETRIC; + + IF( st_ivas->hBinRendererTd != NULL ) + { + ro_md_flag = 1; + move16(); + } + ELSE + { + ro_md_flag = 0; + move16(); + } + + IF( st_ivas->hHeadTrackData != NULL ) + { + Quaternion = st_ivas->hHeadTrackData->Quaternions[0]; + } + ELSE + { + Quaternion.w_fx = -12582912; + Quaternion.x_fx = 0; + Quaternion.y_fx = 0; + Quaternion.z_fx = 0; + } + Word16 q1 = 31, q2 = 31, Q_buff; + Word16 Q_out[CLDFB_NO_COL_MAX]; + Q_out[0] = 31; + Word16 num_poses = hSplitBinRend->splitrend.multiBinPoseData.num_poses; + + for ( i = 0; i < i_mult( BINAURAL_CHANNELS, numPoses ); i++ ) + { + for ( j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + q1 = s_min( q1, L_norm_arr( Cldfb_RealBuffer_Binaural[i][j], CLDFB_NO_CHANNELS_MAX ) ); + q2 = s_min( q2, L_norm_arr( Cldfb_ImagBuffer_Binaural[i][j], CLDFB_NO_CHANNELS_MAX ) ); + } + } + Q_buff = s_min( q1, q2 ); + for ( i = 0; i < i_mult( BINAURAL_CHANNELS, numPoses ); i++ ) + { + for ( j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + scale_sig32( Cldfb_RealBuffer_Binaural[i][j], CLDFB_NO_CHANNELS_MAX, Q_buff ); + scale_sig32( Cldfb_ImagBuffer_Binaural[i][j], CLDFB_NO_CHANNELS_MAX, Q_buff ); + } + } + Q_buff = add( Q_buff, Q6 ); + + IF( NE_16( td_input, 0 ) ) + { + /*TD input*/ + /*if CLDFB handles have been allocated then assume valid multi binaural input in out[][] buffer and perform CLDFB analysis*/ + /* local float2fix, to be removed */ + num_poses = hSplitBinRend->splitrend.multiBinPoseData.num_poses; + + FOR( i = 0; i < num_poses * BINAURAL_CHANNELS; ++i ) + { + Q_out[0] = s_min( Q_out[0], L_norm_arr( pOutput[i], L_FRAME48k ) ); + } + + FOR( i = 0; i < num_poses * BINAURAL_CHANNELS; ++i ) + { + scale_sig32( pOutput[i], L_FRAME48k, Q_out[0] ); + } + Q_out[0] = add( Q_out[0], Q11 ); + Q_out[1] = Q_out[0]; + } + + if ( ( error = ISAR_PRE_REND_MultiBinToSplitBinaural( &hSplitBinRend->splitrend, + Quaternion, + st_ivas->hRenderConfig->split_rend_config.splitRendBitRate, + st_ivas->hRenderConfig->split_rend_config.codec, + st_ivas->hRenderConfig->split_rend_config.isar_frame_size_ms, + st_ivas->hRenderConfig->split_rend_config.codec_frame_size_ms, + splitRendBits, + Cldfb_RealBuffer_Binaural, + Cldfb_ImagBuffer_Binaural, + max_band, pOutput, 1, !td_input, pcm_out_flag, ro_md_flag, Q_buff, &Q_out[0] ) ) != IVAS_ERR_OK ) + + { + return error; + } + + + /* convert to int16 with limiting for BINAURAL_SPLIT_PCM */ + IF( pcm_out_flag ) + { + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + scale_sig32( pOutput[j], numSamplesPerChannelToDecode, sub( Q11, Q_out[j] ) ); // Q11 + } + IF( EQ_32( st_ivas->hDecoderConfig->render_framesize, IVAS_RENDER_FRAMESIZE_5MS ) ) + { +#ifndef DISABLE_LIMITER + ivas_limiter_dec_fx( st_ivas->hLimiter, pOutput, st_ivas->hDecoderConfig->nchan_out, numSamplesPerChannelToDecode, st_ivas->BER_detect, Q11 ); +#endif + } + else + { + ivas_limiter_dec_fx( st_ivas->hLimiter, pOutput, st_ivas->hDecoderConfig->nchan_out, numSamplesPerChannelToDecode, st_ivas->BER_detect, Q11 ); + } + + ivas_syn_output_fx( pOutput, Q11, numSamplesPerChannelToDecode, st_ivas->hDecoderConfig->nchan_out, (int16_t *) pcmBuf_out ); + } + + free( st_ivas->hSplitBinRend->hMultiBinCldfbData ); + + return error; +} + + /*---------------------------------------------------------------------* * IVAS_DEC_Setup( ) * @@ -1861,10 +2238,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 */ - const Word16 subframe_idx /* i : subframe index */ + 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 */ ) { HEAD_TRACK_DATA_HANDLE hHeadTrackData; @@ -1885,9 +2263,11 @@ ivas_error IVAS_DEC_FeedHeadTrackData( /* Move head-tracking data to the decoder handle */ /* check for Euler angle signaling */ - IF( EQ_32( orientation.w_fx, -1610612736 /* -3.0f in Q29 */ ) ) + /* 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 ); } Word32 updateRate_fx = 1677721600; // value is 200 in Q23 @@ -1926,6 +2306,9 @@ ivas_error IVAS_DEC_FeedHeadTrackData( move32(); move16(); + hHeadTrackData->sr_pose_pred_axis = rot_axis; + move32(); + hIvasDec->updateOrientation = true; move16(); @@ -2126,8 +2509,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(); @@ -2137,7 +2520,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; } @@ -2150,8 +2533,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(); @@ -2161,7 +2544,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; } @@ -2174,8 +2557,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(); @@ -2185,7 +2568,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; } @@ -2198,8 +2581,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(); @@ -2209,7 +2592,28 @@ ivas_error IVAS_DEC_GetHrtfParamBinHandle( return IVAS_ERR_WRONG_PARAMS; } - *hHrtfParambin = hIvasDec->st_ivas->hHrtfParambin; + *hHrtfParambin = &hIvasDec->st_ivas->hHrtfParambin; + + return IVAS_ERR_OK; +} + +/*---------------------------------------------------------------------* + * 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; } @@ -2239,6 +2643,28 @@ static ivas_error copyRendererConfigStruct( Copy32( hRCin->roomAcoustics.pAcoustic_rt60_fx, hRCout->roomAcoustics.pAcoustic_rt60_fx, CLDFB_NO_CHANNELS_MAX ); // Q26 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 ); + + 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; + hRCout->split_rend_config.isar_frame_size_ms = 20; + move16(); + 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; + hRCout->split_rend_config.lc3plus_highres = hRCin->split_rend_config.lc3plus_highres; + move16(); + move32(); + move16(); + move16(); + move16(); + move16(); + move32(); + move32(); + move32(); + hRCout->roomAcoustics.use_er = hRCin->roomAcoustics.use_er; hRCout->roomAcoustics.lowComplexity = hRCin->roomAcoustics.lowComplexity; move16(); @@ -2303,6 +2729,7 @@ ivas_error IVAS_DEC_FeedRenderConfig( ) { RENDER_CONFIG_HANDLE hRenderConfig; + ivas_error error; test(); test(); @@ -2341,6 +2768,19 @@ ivas_error IVAS_DEC_FeedRenderConfig( Copy( renderConfig.directivity_fx, hRenderConfig->directivity_fx, 3 * MAX_NUM_OBJECTS ); + hRenderConfig->split_rend_config = renderConfig.split_rend_config; + + /* Overwrite any pose correction settings if 0 DOF (no pose correction) was selected */ + IF( hRenderConfig->split_rend_config.dof == 0 ) + { + hRenderConfig->split_rend_config.poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE; + } + + IF( ( error = isar_split_rend_validate_config( &hRenderConfig->split_rend_config, ( hIvasDec->st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0 ) ) != IVAS_ERR_OK ) + { + return error; + } + return IVAS_ERR_OK; } @@ -2395,14 +2835,15 @@ ivas_error IVAS_DEC_GetDelay( } move32(); - nSamples[1] = NS2SA_FX2( hDecoderConfig->output_Fs, get_delay_fx( DEC, hDecoderConfig->output_Fs, st_ivas->ivas_format, st_ivas->cldfbAnaDec[0] ) ); + 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(); 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] ); move16(); - IF( EQ_16( (Word16) st_ivas->ivas_format, MASA_FORMAT ) ) + test(); + IF( EQ_16( (Word16) st_ivas->ivas_format, MASA_FORMAT ) || EQ_16( (Word16) st_ivas->ivas_format, MASA_ISM_FORMAT ) ) { /* note: in MASA, all delay is compensated at the decoder by default, so subtract the encoder delay for print-out */ nSamples[1] = sub( nSamples[1], NS2SA_FX2( hDecoderConfig->output_Fs, IVAS_ENC_DELAY_NS ) ); @@ -2561,8 +3002,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 ); @@ -3288,7 +3738,7 @@ static ivas_error printConfigInfo_dec( test(); test(); - 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 ) ) ) + 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 ) ) ) { fprintf( stdout, "Render framesize: %dms\n", get_render_frame_size_ms( st_ivas->hDecoderConfig->render_framesize ) ); } @@ -3681,3 +4131,208 @@ static ivas_error IVAS_DEC_VoIP_reconfigure( return IVAS_ERR_OK; } + + +/*---------------------------------------------------------------------* + * IVAS_DEC_GetSplitRendBitstreamHeader() + * + * + *---------------------------------------------------------------------*/ + +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 */ + 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 ) +{ + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + *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; + *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; + return IVAS_ERR_OK; +} + + +/*---------------------------------------------------------------------* + * IVAS_DEC_GetCldfbSamples() + * + * API function to output CLDFB samples + *---------------------------------------------------------------------*/ + +ivas_error IVAS_DEC_GetCldfbSamples( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + Word32 *out_real, /* o : buffer for decoded PCM real output in CLDFB domain */ + Word32 *out_imag, /* o : buffer for decoded PCM imag output in CLDFB domain */ + AUDIO_CONFIG *audio_config, /* o : audio configuration */ + Word16 *nOutSamples /* o : number of samples per channel written to output buffer */ +) +{ + ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE hSplitBinRend; + Word16 ch, b, slot_idx, num_chs, maxBand, num_samples; + + IF( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasDec->st_ivas->hSplitBinRend == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + hSplitBinRend = hIvasDec->st_ivas->hSplitBinRend; + num_samples = 0; + + IF( hSplitBinRend->hCldfbDataOut != NULL ) + { + *audio_config = hSplitBinRend->hCldfbDataOut->config; + IF( hSplitBinRend->hCldfbDataOut->config != IVAS_AUDIO_CONFIG_INVALID ) + { + num_chs = audioCfg2channels( hSplitBinRend->hCldfbDataOut->config ); + maxBand = (int16_t) ( ( CLDFB_NO_CHANNELS_MAX * hIvasDec->st_ivas->hDecoderConfig->output_Fs ) / 48000 ); + + FOR( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX; slot_idx++ ) + { + FOR( b = 0; b < maxBand; b++ ) + { + FOR( ch = 0; ch < num_chs; ch++ ) + { + *out_real++ = hSplitBinRend->hCldfbDataOut->Cldfb_RealBuffer_fx[ch][slot_idx][b]; + *out_imag++ = hSplitBinRend->hCldfbDataOut->Cldfb_ImagBuffer_fx[ch][slot_idx][b]; + } + } + } + num_samples = CLDFB_NO_COL_MAX * maxBand; + } + } + ELSE + { + *audio_config = IVAS_AUDIO_CONFIG_INVALID; + } + + *nOutSamples = num_samples; + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * ivas_create_handle_isar() + * + * Initialize IVAS decoder split rend handle + *-------------------------------------------------------------------*/ + +static ivas_error ivas_create_handle_isar( + ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE *hSplitBinRend_out /* o : ISAR split binaural rendering handle */ +) +{ + ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE hSplitBinRend; + + if ( ( hSplitBinRend = (ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE) malloc( sizeof( ISAR_DEC_SPLIT_REND_WRAPPER ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for IVAS decoder handle" ); + } + + isar_init_split_rend_handles( &hSplitBinRend->splitrend ); + + hSplitBinRend->hMultiBinCldfbData = NULL; + hSplitBinRend->hCldfbDataOut = NULL; + hSplitBinRend->numTdSamplesPerChannelCached = 0; + + *hSplitBinRend_out = hSplitBinRend; + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * ivas_destroy_handle_isar() + * + * destroy IVAS decoder split rend handle + *-------------------------------------------------------------------*/ + +static void ivas_destroy_handle_isar( + ISAR_DEC_SPLIT_REND_WRAPPER_HANDLE *hSplitBinRend /* i/o: ISAR split binaural rendering handle */ +) +{ + IF( *hSplitBinRend != NULL ) + { + ISAR_PRE_REND_close( &( *hSplitBinRend )->splitrend, NULL ); + + IF( ( *hSplitBinRend )->hCldfbDataOut != NULL ) + { + free( ( *hSplitBinRend )->hCldfbDataOut ); + ( *hSplitBinRend )->hCldfbDataOut = NULL; + } + + free( *hSplitBinRend ); + *hSplitBinRend = NULL; + } + + return; +} + + +/*---------------------------------------------------------------------* + * IVAS_DEC_is_split_rendering_enabled() + * + * + *---------------------------------------------------------------------*/ + +int16_t IVAS_DEC_is_split_rendering_enabled( + IVAS_DEC_HANDLE hIvasDec /* i/o: IVAS decoder handle */ +) +{ + Decoder_Struct *st_ivas; + Word16 isSplitRend; + + IF( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + st_ivas = hIvasDec->st_ivas; + isSplitRend = 0; + + IF( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM || + ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_STEREO && st_ivas->hDecoderConfig->Opt_non_diegetic_pan && st_ivas->hRenderConfig->split_rend_config.dof == 0 ) ) + { + isSplitRend = 1; + } + + return isSplitRend; +} + + +/*---------------------------------------------------------------------* + * IVAS_DEC_is_split_rendering_coded_out() + * + * + *---------------------------------------------------------------------*/ + +Word16 IVAS_DEC_is_split_rendering_coded_out( + IVAS_DEC_HANDLE hIvasDec /* i/o: IVAS decoder handle */ +) +{ + Decoder_Struct *st_ivas; + Word16 isSplitCoded; + + IF( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + st_ivas = hIvasDec->st_ivas; + isSplitCoded = 0; + + IF( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || + ( st_ivas->hDecoderConfig->output_config == IVAS_AUDIO_CONFIG_STEREO && st_ivas->hDecoderConfig->Opt_non_diegetic_pan && st_ivas->hRenderConfig->split_rend_config.dof == 0 ) ) + { + isSplitCoded = 1; + } + + return isSplitCoded; +} diff --git a/lib_enc/bw_detect_fx.c b/lib_enc/bw_detect_fx.c index 94ed49129de9c7a0e9ad3b158399d35a366c6de4..6f2dad29a9ba35f015b77718962fb5a161479556 100644 --- a/lib_enc/bw_detect_fx.c +++ b/lib_enc/bw_detect_fx.c @@ -1165,15 +1165,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/enc_higher_acelp_fx.c b/lib_enc/enc_higher_acelp_fx.c index bf248bb5a3c0e5235e4e8f428535fac2daa6b53a..5edc6229ff9c80372ec10db06f94a2805c2e5504 100644 --- a/lib_enc/enc_higher_acelp_fx.c +++ b/lib_enc/enc_higher_acelp_fx.c @@ -290,7 +290,6 @@ void transf_cdbk_enc_fx( x_tran[i] = shl_o( x_norm[i], Q_AVQ_OUT_DEC, &Overflow ); move16(); } - set16_fx( x_tran + Nsv * WIDTH_BAND, 0, sub( L_SUBFR, i_mult2( WIDTH_BAND, Nsv ) ) ); test(); test(); @@ -643,7 +642,6 @@ void transf_cdbk_enc_ivas_fx( x_tran[i] = shl_o( x_norm[i], Q_AVQ_OUT_DEC, &Overflow ); move16(); } - set16_fx( x_tran + Nsv * WIDTH_BAND, 0, sub( L_SUBFR, i_mult2( WIDTH_BAND, Nsv ) ) ); test(); test(); diff --git a/lib_enc/init_enc_fx.c b/lib_enc/init_enc_fx.c index 9e3045be1758b2fe33d914c6e33a1422963e0f6c..69cee425591e02ed5e9b17353c01c41b4c26def5 100644 --- a/lib_enc/init_enc_fx.c +++ b/lib_enc/init_enc_fx.c @@ -6,7 +6,7 @@ #include "cnst.h" /* Common constants */ #include "rom_com_fx.h" /* Static table prototypes */ #include "rom_com.h" /* Static table prototypes */ -//#include "prot_fx.h" /* Function prototypes */ +// #include "prot_fx.h" /* Function prototypes */ #include "stl.h" #include "ivas_cnst.h" #include "ivas_error.h" diff --git a/lib_enc/ivas_cpe_enc_fx.c b/lib_enc/ivas_cpe_enc_fx.c index 0cd7532d57992f8787ac6000bfcad6f773c6cd08..515659124b386a445531893de9db8d1862a2fb22 100644 --- a/lib_enc/ivas_cpe_enc_fx.c +++ b/lib_enc/ivas_cpe_enc_fx.c @@ -977,25 +977,7 @@ ivas_error ivas_cpe_enc_fx( /*----------------------------------------------------------------* * Core codec configuration *----------------------------------------------------------------*/ - /* IGF reconfiguration */ - FOR( n = 0; n < n_CoreChannels; n++ ) - { - test(); - test(); - test(); - test(); - test(); - test(); - 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 */ - 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; - } - } - } + test(); IF( EQ_16( hCPE->element_mode, IVAS_CPE_MDCT ) && st_ivas->hMCT == NULL ) { @@ -1026,6 +1008,34 @@ ivas_error ivas_cpe_enc_fx( } } + /* IGF reconfiguration */ + FOR( n = 0; n < n_CoreChannels; n++ ) + { + test(); + test(); + test(); + test(); + test(); + test(); + 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; + 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; + } + } + } + /* set ACELP@12k8 / ACELP@16k flag for flexible ACELP core */ FOR( n = 0; n < n_CoreChannels; n++ ) { 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_ism_enc_fx.c b/lib_enc/ivas_ism_enc_fx.c index 122ea1d7590348098b464e9ae8d55a0fcc3f4d71..3e7d8afcd71851e989044b64fe03ef9c50d05bbd 100644 --- a/lib_enc/ivas_ism_enc_fx.c +++ b/lib_enc/ivas_ism_enc_fx.c @@ -360,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; } diff --git a/lib_enc/ivas_ism_metadata_enc_fx.c b/lib_enc/ivas_ism_metadata_enc_fx.c index d7751aa4d1e97b5fd8adec9e6c78cc09b064d984..d35327de0cb0aacb322d1e8ab8b21a23eaddc481 100644 --- a/lib_enc/ivas_ism_metadata_enc_fx.c +++ b/lib_enc/ivas_ism_metadata_enc_fx.c @@ -55,7 +55,6 @@ #define ISM_MAX_ELEVATION_DIFF_IDX ( ISM_ELEVATION_NBITS - 1 /*zero*/ - 1 /*sign*/ ) #define ISM_MAX_RADIUS_DIFF_IDX ( ISM_RADIUS_NBITS - 1 /*zero*/ - 1 /*sign*/ ) -#define ISM_FEC_MAX 10 #define ISM_MD_FEC_DIFF 10 #define ISM_MD_FEC_DIFF_Q22 41943040 #define ISM_MD_INC_DIFF_CNT_MAX 6 diff --git a/lib_enc/ivas_masa_enc_fx.c b/lib_enc/ivas_masa_enc_fx.c index b87bcf88b0a6ef1c74d59fb5c8c880df6f85203d..616c28ad8912b7c69d52a0b4420d1a34a362d84c 100644 --- a/lib_enc/ivas_masa_enc_fx.c +++ b/lib_enc/ivas_masa_enc_fx.c @@ -1857,6 +1857,7 @@ void ivas_masa_combine_directions_fx( hMeta->directional_meta[1].energy_ratio_fx[j][i] = 0; // Q30 move16(); move16(); + hMeta->common_meta.diffuse_to_total_ratio_fx[j][i] = L_sub( ONE_IN_Q30, hMeta->directional_meta[0].energy_ratio_fx[j][i] ); // Q30 IF( computeCoherence ) { @@ -2104,6 +2105,8 @@ static void detect_metadata_composition_fx( { FOR( band = 0; band < MASA_FREQUENCY_BANDS; band++ ) { + hMeta->directional_meta[0].spherical_index[sf][band] = hMeta->directional_meta[1].spherical_index[sf][band]; + move16(); hMeta->directional_meta[0].azimuth_fx[sf][band] = hMeta->directional_meta[1].azimuth_fx[sf][band]; /*q22*/ hMeta->directional_meta[0].elevation_fx[sf][band] = hMeta->directional_meta[1].elevation_fx[sf][band]; /*q22*/ hMeta->directional_meta[0].energy_ratio_fx[sf][band] = hMeta->directional_meta[1].energy_ratio_fx[sf][band]; /*q30*/ @@ -2228,7 +2231,8 @@ static void compensate_energy_ratios_fx( UWord8 numDirs; hMeta = &( hMasa->masaMetadata ); - numDirs = (UWord8) add( hMeta->descriptive_meta.numberOfDirections, 1 ); + numDirs = hMasa->config.numberOfDirections; + move16(); FOR( sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) { @@ -3137,10 +3141,16 @@ static void copy_masa_metadata_subframe_fx( ) { UWord8 dir; + UWord8 band; /* directional metadata */ FOR( dir = 0; dir < MASA_MAXIMUM_DIRECTIONS; dir++ ) { + FOR( band = 0; band < MASA_FREQUENCY_BANDS; band++ ) + { + hMetaTo->directional_meta[dir].spherical_index[sfTo][band] = hMetaFrom->directional_meta[dir].spherical_index[sfFrom][band]; + move16(); + } Copy32( hMetaFrom->directional_meta[dir].azimuth_fx[sfFrom], hMetaTo->directional_meta[dir].azimuth_fx[sfTo], MASA_FREQUENCY_BANDS ); // Q22 Copy32( hMetaFrom->directional_meta[dir].elevation_fx[sfFrom], hMetaTo->directional_meta[dir].elevation_fx[sfTo], MASA_FREQUENCY_BANDS ); // Q22 Copy32( hMetaFrom->directional_meta[dir].energy_ratio_fx[sfFrom], hMetaTo->directional_meta[dir].energy_ratio_fx[sfTo], MASA_FREQUENCY_BANDS ); // Q30 diff --git a/lib_enc/ivas_mct_enc_fx.c b/lib_enc/ivas_mct_enc_fx.c index 23a70ef9745ffa4b3c9c41e6e2e27c5dba89f2eb..8eb2ee9b26000c9cac8e634a7dbcc603abf705a4 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 ); } } } diff --git a/lib_enc/ivas_omasa_enc_fx.c b/lib_enc/ivas_omasa_enc_fx.c index e09a1fb3681b57cfa88a3c5e8d009c913d4ae9e9..4e7bc83283187a4bf1e568a0ca4b2a1d62e02dc4 100644 --- a/lib_enc/ivas_omasa_enc_fx.c +++ b/lib_enc/ivas_omasa_enc_fx.c @@ -45,6 +45,12 @@ #endif +/*------------------------------------------------------------------------- + * Local constants + *------------------------------------------------------------------------*/ + +#define OMASA_FEC_MAX 5 + /*------------------------------------------------------------------------- * Local function prototypes *------------------------------------------------------------------------*/ @@ -187,6 +193,8 @@ ivas_error ivas_omasa_enc_open_fx( hOMasa->prev_selected_object = 0; hOMasa->changing_object = 0; + hOMasa->since_obj_change_cnt = 0; + move16(); move16(); move16(); @@ -651,6 +659,25 @@ void ivas_omasa_enc_fx( move32(); move16(); } + + /* force absolute MD coding in case of change of separated object */ + IF( NE_16( hOMasa->prev_selected_object, selected_object ) ) + { + hOMasa->since_obj_change_cnt = 0; + hIsmMeta[0]->position_angle.angle1_diff_cnt = ISM_FEC_MAX; + move16(); + move16(); + } + ELSE + { + hOMasa->since_obj_change_cnt = add( hOMasa->since_obj_change_cnt, 1 ); + hOMasa->since_obj_change_cnt = s_min( OMASA_FEC_MAX, hOMasa->since_obj_change_cnt ); + IF( LT_16( hOMasa->since_obj_change_cnt, OMASA_FEC_MAX ) ) + { + hIsmMeta[0]->position_angle.angle1_diff_cnt = ISM_FEC_MAX; + move16(); + } + } hOMasa->prev_selected_object = selected_object; 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_spar_md_enc_fx.c b/lib_enc/ivas_spar_md_enc_fx.c index 8226ee77243cb518a942ebe24d5e23e14dab7f35..8769c748b91b395ff954568e5b766a8278625a1f 100644 --- a/lib_enc/ivas_spar_md_enc_fx.c +++ b/lib_enc/ivas_spar_md_enc_fx.c @@ -490,6 +490,8 @@ ivas_error ivas_spar_md_enc_process_fx( Word16 max_num_indices_tmp; Word32 Wscale_fx[IVAS_MAX_NUM_BANDS]; Word16 q_Wscale[IVAS_MAX_NUM_BANDS]; + Word32 P_quant_re_prior[SPAR_DIRAC_SPLIT_START_BAND][FOA_CHANNELS - 1]; + Word16 Q_P_quant_re_prior[SPAR_DIRAC_SPLIT_START_BAND]; /*extra 16 bits for arithmetic coder as overshoot check is after a symbol is written*/ md_indices_allocated = add( hMdEnc->spar_md_cfg.max_bits_per_blk, IVAS_SPAR_ARITH_OVERSHOOT_BITS ); @@ -606,6 +608,7 @@ ivas_error ivas_spar_md_enc_process_fx( bands_bw = 1; move16(); } + test(); IF( hMdEnc->spar_hoa_md_flag && hMdEnc->spar_hoa_dirac2spar_md_flag ) { @@ -618,6 +621,16 @@ ivas_error ivas_spar_md_enc_process_fx( } } } + + IF( LT_32( hEncoderConfig->ivas_total_brate, IVAS_24k4 ) ) + { + FOR( b = 0; b < i_mult( num_bands, bands_bw ); b++ ) + { + Copy32( hMdEnc->spar_md.band_coeffs[b].P_quant_re_fx, P_quant_re_prior[b], sub( FOA_CHANNELS, 1 ) ); + Q_P_quant_re_prior[b] = hMdEnc->spar_md.band_coeffs[b].q_P_re_fx; + } + } + ivas_compute_spar_params_enc_fx( cov_real_fx, cov_real_q, dm_fv_re_fx, &q_dm_fv_re, 0, hMdEnc->mixer_mat_fx, &hMdEnc->q_mixer_mat_fx, 0, nB, dtx_vad, num_ch, bands_bw, active_w, active_w_vlbr, &hMdEnc->spar_md_cfg, &hMdEnc->spar_md, Wscale_fx, q_Wscale, 0, dyn_active_w_flag ); IF( dirac_mono_flag ) @@ -951,7 +964,21 @@ ivas_error ivas_spar_md_enc_process_fx( *q_prior_mixer = hMdEnc->q_mixer_mat_fx; move16(); } + /* Reuse mixer matrix values for unsent bands */ + IF( LT_32( hEncoderConfig->ivas_total_brate, IVAS_24k4 ) ) + { + FOR( k = num_bands - 1; k >= 0; k-- ) + { + FOR( b = bands_bw - 1; b >= 0; b-- ) + { + Copy32( hMdEnc->spar_md.band_coeffs[k].P_quant_re_fx, hMdEnc->spar_md.band_coeffs[add( i_mult( bands_bw, k ), b )].P_quant_re_fx, sub( FOA_CHANNELS, 1 ) ); + hMdEnc->spar_md.band_coeffs[add( i_mult( bands_bw, k ), b )].q_P_re_fx = hMdEnc->spar_md.band_coeffs[k].q_P_re_fx; + move16(); + } + } + } + test(); IF( ( LT_32( hEncoderConfig->ivas_total_brate, IVAS_24k4 ) ) && GT_16( code_strat, 3 ) ) { @@ -962,6 +989,7 @@ ivas_error ivas_spar_md_enc_process_fx( { b = add( b, 2 ); } + FOR( i = 0; i < 1; i++ ) { FOR( j = 0; j < 4; j++ ) @@ -972,6 +1000,13 @@ ivas_error ivas_spar_md_enc_process_fx( move32(); } } + + Copy32( P_quant_re_prior[b], hMdEnc->spar_md.band_coeffs[b].P_quant_re_fx, sub( FOA_CHANNELS, 1 ) ); + Copy32( P_quant_re_prior[b + 1], hMdEnc->spar_md.band_coeffs[b + 1].P_quant_re_fx, sub( FOA_CHANNELS, 1 ) ); + hMdEnc->spar_md.band_coeffs[b].q_P_re_fx = Q_P_quant_re_prior[b]; + hMdEnc->spar_md.band_coeffs[b + 1].q_P_re_fx = Q_P_quant_re_prior[b + 1]; + move16(); + move16(); } } @@ -986,6 +1021,8 @@ ivas_error ivas_spar_md_enc_process_fx( return IVAS_ERR_OK; } + + /*-----------------------------------------------------------------------------------------* * Function ivas_band_mixer() * diff --git a/lib_enc/ivas_stat_enc.h b/lib_enc/ivas_stat_enc.h index f421fd034f4f3e6ab0cfe60915568b6d288abb9a..126bc61f6e2898d1f08c4792c9c59e6033650a14 100644 --- a/lib_enc/ivas_stat_enc.h +++ b/lib_enc/ivas_stat_enc.h @@ -873,6 +873,7 @@ typedef struct ivas_omasa_enc_state_structure Word16 prev_selected_object; UWord8 changing_object; + Word16 since_obj_change_cnt; } OMASA_ENC_STATE, *OMASA_ENC_HANDLE; @@ -1177,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 @@ -1201,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; @@ -1213,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_dmx_evs_fx.c b/lib_enc/ivas_stereo_dmx_evs_fx.c index f82f8ac1354de6f2ae8b4149b6a94ef6ab7a4d74..1739dc1e9e71c13dad2d7bb78305743103756046 100644 --- a/lib_enc/ivas_stereo_dmx_evs_fx.c +++ b/lib_enc/ivas_stereo_dmx_evs_fx.c @@ -101,32 +101,49 @@ #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 250000000 +#define STEREO_DMX_EVS_SGC_LEGY_THRES_32 300000000 +#define STEREO_DMX_EVS_SGC_LEGY_THRES_48 500000000 +#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 *-----------------------------------------------------------------------*/ @@ -205,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() * @@ -310,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; @@ -616,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 ) ); @@ -848,34 +862,37 @@ 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(); + 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_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 ); @@ -889,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; @@ -940,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 ) { - /* IPDn */ + 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 + { + 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 { - FOR( i = 1; i < nsbd; i++ ) + 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 ) ) + { + 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 + } + } + } - 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 + 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 */ + + 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 ) ); + + 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(); - /* PHA L2R */ - p_curr_taps = hPHA->p_curr_taps_fx[0]; - p_curr_taps[0] = L_shl( rfft_pha_buf[0], 9 ); // Q22->Q31 + 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 ) ) + { + // 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 { - p_curr_taps[i] = L_shl( rfft_pha_buf[input_frame_pha - i], 9 ); // Q22->Q31 + 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++ ) @@ -1088,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 @@ -1583,26 +1739,91 @@ 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() * @@ -1686,6 +1907,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() * @@ -1700,27 +1957,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; } @@ -1818,6 +2082,51 @@ 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 ); + W_tmp = W_shr( W_tmp, 16 ); + *gain = W_extract_l( W_tmp ); + + return; +} + /*-------------------------------------------------------------------* * stereo_dmx_evs_enc() * @@ -1832,16 +2141,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]; @@ -1880,6 +2195,7 @@ void stereo_dmx_evs_enc_fx( BREAK; } move16(); + hPHA = hStereoDmxEVS->hPHA; FOR( n = 0; n < input_frame; n++ ) { @@ -1894,7 +2210,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 ) ) { @@ -1924,8 +2239,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] ); @@ -1940,7 +2253,7 @@ 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(); } @@ -1948,27 +2261,16 @@ void stereo_dmx_evs_enc_fx( 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_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++ ) @@ -1985,14 +2287,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 ); } @@ -2017,11 +2319,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 ); @@ -2029,12 +2331,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++ ) @@ -2042,7 +2344,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 ) ); @@ -2059,7 +2361,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++ ) @@ -2067,7 +2369,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; @@ -2096,59 +2398,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(); @@ -2156,51 +2458,185 @@ 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( NE_32( curr_prc, hStereoDmxEVS->hPHA->curr_prc ) ) + IF( EQ_16( is_transient, 1 ) ) + { + n_fad_r = 1; + move16(); + } + ELSE + { + n_fad_r = STEREO_DMX_EVS_FAD_R; + move16(); + } + + 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(); + } - IF( NE_32( curr_prc, hStereoDmxEVS->hPHA->curr_prc ) ) + 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 ); + + 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 @@ -2225,7 +2661,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; @@ -2416,6 +2852,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 ) ) { @@ -2427,6 +2867,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 ) ) { @@ -2438,6 +2882,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 { @@ -2446,8 +2894,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; @@ -2463,7 +2909,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 ) ) @@ -2519,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 ); @@ -2577,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]; @@ -2590,32 +3035,11 @@ 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 ) - { - 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; - move16(); - BREAK; - case 32000: - hStereoDmxEVS->hPHA->fad_len_prc = STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 32; - move16(); - BREAK; - case 48000: - hStereoDmxEVS->hPHA->fad_len_prc = STEREO_DMX_EVS_FADE_LEN_PRC_Q0 * 48; - move16(); - BREAK; - default: - IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "invalid sample rate\n" ); - BREAK; - } - fad_len = hStereoDmxEVS->hPHA->fad_len_prc; + fad_len = input_frame; move16(); + fad_g = hStereoDmxEVS->hPHA->fad_g_prc_fx; + move32(); // fad_r = 1.0f / (float) ( fad_len + 1 ); SWITCH( fad_len ) { @@ -2659,6 +3083,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/lib_enc_fx.c b/lib_enc/lib_enc_fx.c index a7592e2ca8906fe26a6840f25a0d471230b5c534..dece7ba26a5a9b771489163b89aac1d22baeb02f 100644 --- a/lib_enc/lib_enc_fx.c +++ b/lib_enc/lib_enc_fx.c @@ -1191,7 +1191,7 @@ ivas_error IVAS_ENC_GetDelay( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } - *delay = NS2SA_FX2( hEncoderConfig->input_Fs, get_delay_fx( ENC, hEncoderConfig->input_Fs, hEncoderConfig->ivas_format, NULL ) ); /*Q0*/ + *delay = NS2SA_FX2( hEncoderConfig->input_Fs, get_delay_fx( ENC, hEncoderConfig->input_Fs, hEncoderConfig->ivas_format, NULL, IVAS_AUDIO_CONFIG_INVALID ) ); move16(); *delay = imult1616( *delay, hEncoderConfig->nchan_inp ); /*Q0*/ diff --git a/lib_isar/isar_MSPred.c b/lib_isar/isar_MSPred.c new file mode 100644 index 0000000000000000000000000000000000000000..040fcc3a963c49ead1c0613be96c3a3a0ef975ff --- /dev/null +++ b/lib_isar/isar_MSPred.c @@ -0,0 +1,548 @@ +/****************************************************************************************************** + + (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 "options.h" +#include +#include "isar_lcld_rom_tables.h" +#include "isar_lcld_prot.h" +#include "isar_prot.h" +#include "wmc_auto.h" +#include "basop_util.h" +#include "enh64.h" +#include +/*-------------------------------------------------------------------* + * Function _round() + * + * + *-------------------------------------------------------------------*/ + +static int32_t _round( + float val ) +{ + return ( val > 0.0f ? (int32_t) ( val + 0.5f ) : (int32_t) ( val - 0.5f ) ); +} + + +/*-------------------------------------------------------------------* + * Function quantPhase() + * + * + *-------------------------------------------------------------------*/ + +Word32 quantPhase_fx( + Word32 phase, + Word16 exp ) // i:31? +{ + Word32 phaseQ; + + // phaseQ = _round(phase * PHASE_QUANT_FACTOR); + phaseQ = L_shr_r( Mpy_32_32( phase, PHASE_QUANT_FACTOR_FX_Q29 ), 29 - exp ); // Q60 + if ( phaseQ == PHASE_MAX_VAL ) + { + phaseQ = PHASE_MIN_VAL; + } + return phaseQ; +} + +int32_t quantPhase( + float phase ) +{ + int32_t phaseQ; + + phaseQ = _round( phase * PHASE_QUANT_FACTOR ); + if ( phaseQ == PHASE_MAX_VAL ) + { + phaseQ = PHASE_MIN_VAL; + } + return phaseQ; +} + + +/*-------------------------------------------------------------------* + * Function cplxmult() + * + * + *-------------------------------------------------------------------*/ +void cplxmult_fx( + Word32 *pr1, + Word32 *pi1, + Word32 r2, + Word32 i2 ) +{ + Word32 r1 = *pr1, i1 = *pi1; + + *pr1 = L_sub( Mpy_32_32( r1, r2 ), Mpy_32_32( i1, i2 ) ); + *pi1 = L_add( Mpy_32_32( r1, i2 ), Mpy_32_32( i1, r2 ) ); + + return; +} +void cplxmult( + float *pr1, + float *pi1, + float r2, + float i2 ) +{ + float r1 = *pr1, i1 = *pi1; + + *pr1 = r1 * r2 - i1 * i2; + *pi1 = r1 * i2 + i1 * r2; + + return; +} +/*-------------------------------------------------------------------* + * Function requantPhase() + * + * + *-------------------------------------------------------------------*/ + +Word32 requantPhase( + Word32 phaseQ ) +{ + + IF( GE_32( phaseQ, PHASE_MAX_VAL ) ) + { + phaseQ = L_add( phaseQ, PHASE_MAX_VAL ); + phaseQ %= ( L_shl( PHASE_MAX_VAL, 1 ) ); + phaseQ = L_sub( phaseQ, PHASE_MAX_VAL ); + } + ELSE IF( LT_32( phaseQ, PHASE_MIN_VAL ) ) + { + phaseQ = L_sub( phaseQ, PHASE_MAX_VAL ); + phaseQ %= ( L_shl( PHASE_MAX_VAL, 1 ) ); + phaseQ = L_add( phaseQ, PHASE_MAX_VAL ); + IF( EQ_32( phaseQ, PHASE_MAX_VAL ) ) + { + phaseQ = PHASE_MIN_VAL; + move32(); + } + } + + return phaseQ; +} + + +/*-------------------------------------------------------------------* + * Function quantPred() + * + * + *-------------------------------------------------------------------*/ + +Word32 quantPred_fx( + const Word32 pred, + Word16 exp ) // i:Q31 +{ + // int32_t predQ = _round(pred * PRED_QUANT_FACTOR); + Word32 predQ = W_round32_s( W_shl( W_mult_32_32( pred, (Word32) PRED_QUANT_FACTOR ), exp ) ); + predQ = predQ > PRED_MAX_VAL ? PRED_MAX_VAL : predQ; + predQ = predQ < PRED_MIN_VAL ? PRED_MIN_VAL : predQ; + + return predQ; +} +int32_t quantPred( + const float pred ) +{ + int32_t predQ = _round( pred * PRED_QUANT_FACTOR ); + predQ = predQ > PRED_MAX_VAL ? PRED_MAX_VAL : predQ; + predQ = predQ < PRED_MIN_VAL ? PRED_MIN_VAL : predQ; + + return predQ; +} + + +/*-------------------------------------------------------------------* + * Function dequantPhase() + * + * + *-------------------------------------------------------------------*/ + +float dequantPhase( + const int32_t phaseQ ) +{ + return (float) phaseQ / PHASE_QUANT_FACTOR; +} + + +/*-------------------------------------------------------------------* + * Function dequantPred() + * + * + *-------------------------------------------------------------------*/ +Word32 dequantPred_fx( Word32 predQ ) +{ + if ( predQ == 12 ) + { + return MAX_32; + } + Word16 tmp_e; + Word32 tmp, value; + if ( predQ == 0 ) + { + return predQ; + } + tmp = BASOP_Util_Divide3216_Scale( predQ, PRED_QUANT_FACTOR_FX, &tmp_e ); + value = L_shl( tmp, sub( 31, negate( add( 1, tmp_e ) ) ) ); // Q31 + return value; +} +float dequantPred( int32_t predQ ) +{ + return (float) predQ / PRED_QUANT_FACTOR; +} + + +/*-------------------------------------------------------------------* + * Function PrepEncode() + * + * + *-------------------------------------------------------------------*/ + +Word32 PrepEncode( + Word32 *piQuant, + const Word32 *piMSFlags, + const Word32 numBands ) +{ + Word32 b, numMSBands; + numMSBands = 0; + move32(); + + FOR( b = 0; b < numBands; b++ ) + { + IF( piMSFlags[b] ) + { + piQuant[numMSBands++] = piQuant[b]; + move32(); + } + } + + FOR( b = numMSBands; b < numBands; b++ ) + { + piQuant[b] = 0; + move32(); + } + + return numMSBands; +} + + +/*-------------------------------------------------------------------* + * Function EncodePhase() + * + * + *-------------------------------------------------------------------*/ + +void EncodePhase( + Word32 *phaseQuant, + const Word32 numMSBands, + const Word32 diffDim ) +{ + Word32 b; + + IF( GT_32( diffDim, 0 ) ) + { + Word32 tmp1, tmp2; + tmp1 = phaseQuant[0]; + move32(); + FOR( b = 1; b < numMSBands; b++ ) + { + tmp2 = phaseQuant[b]; + move32(); + phaseQuant[b] = L_sub( phaseQuant[b], tmp1 ); + tmp1 = tmp2; + move32(); + } + } + + IF( GT_32( diffDim, 1 ) ) + { + Word32 tmp1, tmp2; + tmp1 = phaseQuant[1]; + move32(); + FOR( b = 2; b < numMSBands; b++ ) + { + tmp2 = phaseQuant[b]; + move32(); + phaseQuant[b] = L_sub( phaseQuant[b], tmp1 ); + tmp1 = tmp2; + move32(); + } + } + FOR( b = 1; b < numMSBands; b++ ) + { + phaseQuant[b] = requantPhase( phaseQuant[b] ); + } + + return; +} + + +/*-------------------------------------------------------------------* + * Function DecodePhase() + * + * + *-------------------------------------------------------------------*/ + +void DecodePhase( + Word32 *phaseQuant, + const Word32 numMSBands, + const Word32 diffDim ) +{ + Word32 b; + + IF( GT_32( diffDim, 1 ) ) + { + FOR( b = 2; b < numMSBands; b++ ) + { + phaseQuant[b] = L_add( phaseQuant[b], phaseQuant[b - 1] ); + move32(); + } + } + + IF( GT_32( diffDim, 0 ) ) + { + FOR( b = 1; b < numMSBands; b++ ) + { + phaseQuant[b] = L_add( phaseQuant[b], phaseQuant[b - 1] ); + move32(); + } + } + + FOR( b = 1; b < numMSBands; b++ ) + { + phaseQuant[b] = requantPhase( phaseQuant[b] ); + move32(); + } + + return; +} + + +/*-------------------------------------------------------------------* + * Function EncodePredCoef() + * + * + *-------------------------------------------------------------------*/ + +Word32 EncodePredCoef( + Word32 *predQuant, + const Word32 numMSBands ) +{ + Word32 b, tmp1, tmp2; + + tmp1 = predQuant[0]; + move32(); + FOR( b = 1; b < numMSBands; b++ ) + { + tmp2 = predQuant[b]; + move32(); + predQuant[b] = L_sub( predQuant[b], tmp1 ); + tmp1 = tmp2; + move32(); + } + + return numMSBands; +} + + +/*-------------------------------------------------------------------* + * Function DecodePredCoef() + * + * + *-------------------------------------------------------------------*/ + +void DecodePredCoef( + Word32 *phaseQuant, + const Word32 numMSBands ) +{ + Word32 b; + + FOR( b = 1; b < numMSBands; b++ ) + { + phaseQuant[b] = L_add( phaseQuant[b], phaseQuant[b - 1] ); + } + + return; +} + + +/*-------------------------------------------------------------------* + * Function CountMSBits() + * + * + *-------------------------------------------------------------------*/ + +Word32 CountMSBits( + Word32 iNumBands, + const Word32 iMSMode, + const Word32 *piMSFlags, + const Word32 *piLRPhaseDiff, + const Word32 *piMSPredCoef ) +{ + Word32 iBitsWritten = 0; + move32(); + Word32 b; + Word32 anyNonZero; + Word32 iNumMSBands = 0; + move32(); + Word32 piPhaseCopy[MAX_BANDS_48]; + Word32 piPredCopy[MAX_BANDS_48]; + + FOR( b = 0; b < MAX_BANDS_48; b++ ) + { + piPhaseCopy[b] = 0; + move32(); + piPredCopy[b] = 0; + move32(); + } + + iBitsWritten = L_add( iBitsWritten, 2 ); /* iMSMode */ + FOR( b = 0; b < iNumBands; b++ ) + { + iNumMSBands = L_add( iNumMSBands, NE_32( piMSFlags[b], 0 ) ); + } + + IF( EQ_32( iNumMSBands, 0 ) ) + { + return iBitsWritten; + } + + IF( LT_32( iNumMSBands, iNumBands ) ) + { + iBitsWritten = L_add( iBitsWritten, iNumBands ); /* piMSFlags */ + } + + IF( LT_32( iMSMode, 3 ) ) + { + return iBitsWritten; + } + + /* prepare arrays for coding evaluation */ + FOR( b = 0; b < iNumBands; b++ ) + { + piPhaseCopy[b] = piLRPhaseDiff[b]; + move32(); + piPredCopy[b] = piMSPredCoef[b]; + move32(); + } + + /* Differential Coding of Phase Data*/ + PrepEncode( piPhaseCopy, piMSFlags, iNumBands ); + PrepEncode( piPredCopy, piMSFlags, iNumBands ); + EncodePhase( piPhaseCopy, iNumMSBands, PHASE_DIFF_DIM ); + EncodePredCoef( piPredCopy, iNumMSBands ); + + iBitsWritten = L_add( iBitsWritten, 1 ); /* iMSPredAll */ + anyNonZero = 0; /* phase */ + move32(); + FOR( b = 0; b < iNumMSBands; b++ ) + { + IF( NE_32( piPhaseCopy[b], 0 ) ) + { + anyNonZero = 1; + move32(); + BREAK; + } + } + iBitsWritten = L_add( iBitsWritten, 1 ); /*anyNonZero Phase*/ + IF( anyNonZero ) + { + iBitsWritten = L_add( iBitsWritten, PHASE_BAND0_BITS ); + FOR( b = 1; b < iNumMSBands; b++ ) + { + Word32 tabIdx = L_sub( piPhaseCopy[b], ENV_DELTA_MIN ); + iBitsWritten = L_add( iBitsWritten, c_aaiRMSEnvHuffEnc[tabIdx][0] ); + } + } + anyNonZero = 0; /* prediction */ + move32(); + FOR( b = 0; b < iNumMSBands; b++ ) + { + IF( NE_32( piPredCopy[b], 0 ) ) + { + anyNonZero = 1; + move32(); + break; + } + } + + iBitsWritten = L_add( iBitsWritten, 1 ); /* any nonZero Pred */ + IF( anyNonZero ) + { + iBitsWritten = L_add( iBitsWritten, PRED_BAND0_BITS ); + FOR( b = 1; b < iNumMSBands; b++ ) + { + Word32 tabIdx = L_sub( piPredCopy[b], ENV_DELTA_MIN ); + iBitsWritten = L_add( iBitsWritten, c_aaiRMSEnvHuffEnc[tabIdx][0] ); + } + } + + return iBitsWritten; +} + + +#ifdef DEBUG_WRITE_MS_PRED +void writeMSPred( + int32_t *phaseQuant, + int32_t *predQuant, + int32_t MSMode, + int32_t numMSBands, + int32_t numBands, + void *fid, + int32_t *piMsFlags ) +{ + int32_t b; + + fid = (FILE *) fid; + fprintf( fid, "%d %d", MSMode, numMSBands ); + for ( b = 0; b < numMSBands; b++ ) + { + fprintf( fid, " %d", phaseQuant[b] ); + } + for ( b = numMSBands; b < numBands; b++ ) + { + fprintf( fid, " %d", 0 ); + } + for ( b = 0; b < numMSBands; b++ ) + { + fprintf( fid, " %d", predQuant[b] ); + } + for ( b = numMSBands; b < numBands; b++ ) + { + fprintf( fid, " %d", 0 ); + } + for ( b = 0; b < numBands; b++ ) + { + fprintf( fid, " %d", piMsFlags[b] ); + } + fprintf( fid, "\n" ); + + return; +} +#endif diff --git a/lib_isar/isar_NoiseGen.c b/lib_isar/isar_NoiseGen.c new file mode 100644 index 0000000000000000000000000000000000000000..1a6881681d5b92d7df492e4a762ce2105cd1b0d3 --- /dev/null +++ b/lib_isar/isar_NoiseGen.c @@ -0,0 +1,56 @@ +/****************************************************************************************************** + + (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 +#include "prot_fx.h" +#include "isar_lcld_prot.h" +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------------------------* + * Function DeleteNoiseGen() + * + * + *------------------------------------------------------------------------------------------*/ + +void DeleteNoiseGen( NoiseGen *psNoiseGen ) +{ + free( psNoiseGen->pfNoiseBuffer ); + free( psNoiseGen ); + + return; +} + +extern float GetNoise( NoiseGen *psNoiseGen ); +extern Word32 GetNoise_fx( NoiseGen *psNoiseGen ); diff --git a/lib_isar/isar_PerceptualModel.c b/lib_isar/isar_PerceptualModel.c new file mode 100644 index 0000000000000000000000000000000000000000..b9a5b1b334053d18d4ee4aff9537b8d708cd0837 --- /dev/null +++ b/lib_isar/isar_PerceptualModel.c @@ -0,0 +1,467 @@ +/****************************************************************************************************** + + (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 "isar_lcld_prot.h" +#include "prot_fx.h" +#include "isar_lcld_rom_tables.h" +#include +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------------------------* + * Local constants + *------------------------------------------------------------------------------------------*/ +#define PERCEPTUAL_MODEL_SCALE_SHIFT ( 6 ) +#define PERCEPTUAL_MODEL_SCALE ( 64 ) +#define PERCEPTUAL_MODEL_SCALE_SHIFT ( 6 ) +#define PERCEPTUAL_MODEL_ALPHA_SCALE ( 614 ) +#define PERCEPTUAL_MODEL_ALPHA_INV_SCALE ( 6827 ) +#define PERCEPTUAL_MODEL_ALPHA_SHIFT ( 11 ) + +/*------------------------------------------------------------------------------------------* + * Function LogAdd() + * + * + *------------------------------------------------------------------------------------------*/ + +static inline Word16 LogAdd_fx( + const Word16 iVal1, + const Word16 iVal2 ) +{ + Word16 iRetVal; + + IF( iVal1 > iVal2 ) + { + iRetVal = sub( iVal1, iVal2 ); + move16(); + iRetVal = ( iRetVal < sub( LOG_ADD_TABLE_LENGTH, 1 ) ) ? iRetVal : sub( LOG_ADD_TABLE_LENGTH, 1 ); + move16(); + iRetVal = add( iVal1, c_aiLogAddTable_fx[iRetVal] ); + move16(); + } + ELSE + { + iRetVal = sub( iVal2, iVal1 ); + move16(); + iRetVal = ( iRetVal < sub( LOG_ADD_TABLE_LENGTH, 1 ) ) ? iRetVal : sub( LOG_ADD_TABLE_LENGTH, 1 ); + move16(); + iRetVal = add( iVal2, c_aiLogAddTable_fx[iRetVal] ); + move16(); + } + + return iRetVal; +} +/*------------------------------------------------------------------------------------------* + * Function LogAdd() + * + * + *------------------------------------------------------------------------------------------*/ + +static inline int32_t LogAdd( + const int32_t iVal1, + const int32_t iVal2 ) +{ + int32_t iRetVal; + + if ( iVal1 > iVal2 ) + { + iRetVal = iVal1 - iVal2; + iRetVal = ( iRetVal < ( LOG_ADD_TABLE_LENGTH - 1 ) ) ? iRetVal : ( LOG_ADD_TABLE_LENGTH - 1 ); + iRetVal = iVal1 + c_aiLogAddTable[iRetVal]; + } + else + { + iRetVal = iVal2 - iVal1; + iRetVal = ( iRetVal < ( LOG_ADD_TABLE_LENGTH - 1 ) ) ? iRetVal : ( LOG_ADD_TABLE_LENGTH - 1 ); + iRetVal = iVal2 + c_aiLogAddTable[iRetVal]; + } + + return iRetVal; +} +/*------------------------------------------------------------------------------------------* + * Function PerceptualModel() + * + * + *------------------------------------------------------------------------------------------*/ + +void PerceptualModel_fx( + const Word32 iMaxQuantBands, + const Word32 *piRMSEnvelope, + Word32 *piExcitation, + Word32 *piSMR ) +{ + Word16 n; + + FOR( n = 0; n < iMaxQuantBands; n++ ) + { + Word16 iSLOffset; + + piExcitation[n] = shl( add( extract_l( piRMSEnvelope[n] ), c_aiBandwidthAdjust48_fx[n] ), PERCEPTUAL_MODEL_SCALE_SHIFT ); // shift instead of multiplying by PERCEPTUAL_MODEL_SCALE + move16(); + /* Calculate sensation level offset */ + iSLOffset = (Word16) extract_l( L_shr( L_mult0( c_aiDefaultTheta48_fx[n], sub( extract_l( piExcitation[n] ), c_aiAbsoluteThresh48_fx[n] ) ), PERCEPTUAL_MODEL_SLGAIN_SHIFT ) ); + // iSLOffset = (iSLOffset > 0) ? iSLOffset : 0; + move16(); + /* Offset envelope by sensation level offset */ + piExcitation[n] = sub( extract_l( piExcitation[n] ), iSLOffset ); + move16(); + /* Convert to loudness domain (x^0.3) */ + piExcitation[n] = extract_l( L_shr( L_mult0( PERCEPTUAL_MODEL_ALPHA_SCALE, extract_l( piExcitation[n] ) ), PERCEPTUAL_MODEL_ALPHA_SHIFT ) ); + move16(); + } + + /* Spread excitation function */ + FOR( n = 0; n < iMaxQuantBands; n++ ) + { + Word16 k; + const Word16 *piSpread; + + piSpread = &c_aaiSpreadFunction48_fx[n * MAX_BANDS_48]; + move16(); + piSMR[n] = add( extract_l( piExcitation[n] ), piSpread[n] ); + move16(); + FOR( k = 0; k < iMaxQuantBands; k++ ) + { + IF( NE_16( k, n ) ) + { + piSMR[n] = L_deposit_l( LogAdd_fx( extract_l( piSMR[n] ), add( extract_l( piExcitation[k] ), piSpread[k] ) ) ); + move16(); + } + } + } + + FOR( n = 0; n < iMaxQuantBands; n++ ) + { + piSMR[n] = extract_l( L_shr( L_mult0( PERCEPTUAL_MODEL_ALPHA_INV_SCALE, extract_l( piSMR[n] ) ), PERCEPTUAL_MODEL_ALPHA_SHIFT ) ); + move16(); + piSMR[n] = shl( sub( add( extract_l( piRMSEnvelope[n] ), c_aiBandwidthAdjust48_fx[n] ), extract_l( piSMR[n] ) ), PERCEPTUAL_MODEL_SCALE_SHIFT ); + move16(); + } + + return; +} +/*------------------------------------------------------------------------------------------* + * Function PerceptualModel() + * + * + *------------------------------------------------------------------------------------------*/ + +void PerceptualModel( + const int32_t iMaxQuantBands, + const int32_t *piRMSEnvelope, + int32_t *piExcitation, + int32_t *piSMR ) +{ + int32_t n; + + for ( n = 0; n < iMaxQuantBands; n++ ) + { + int32_t iSLOffset; + + piExcitation[n] = PERCEPTUAL_MODEL_SCALE * piRMSEnvelope[n] + c_aiBandwidthAdjust48[n]; + + /* Calculate sensation level offset */ + iSLOffset = c_aiDefaultTheta48[n] * ( piExcitation[n] - c_aiAbsoluteThresh48[n] ) >> PERCEPTUAL_MODEL_SLGAIN_SHIFT; + // iSLOffset = (iSLOffset > 0) ? iSLOffset : 0; + + /* Offset envelope by sensation level offset */ + piExcitation[n] -= iSLOffset; + + /* Convert to loudness domain (x^0.3) */ + piExcitation[n] = PERCEPTUAL_MODEL_ALPHA_SCALE * piExcitation[n] >> PERCEPTUAL_MODEL_ALPHA_SHIFT; + } + + /* Spread excitation function */ + for ( n = 0; n < iMaxQuantBands; n++ ) + { + int32_t k; + const int32_t *piSpread; + + piSpread = &c_aaiSpreadFunction48[n * MAX_BANDS_48]; + piSMR[n] = piExcitation[n] + piSpread[n]; + for ( k = 0; k < iMaxQuantBands; k++ ) + { + if ( k != n ) + { + piSMR[n] = LogAdd( piSMR[n], piExcitation[k] + piSpread[k] ); + } + } + } + + for ( n = 0; n < iMaxQuantBands; n++ ) + { + piSMR[n] = PERCEPTUAL_MODEL_ALPHA_INV_SCALE * piSMR[n] >> PERCEPTUAL_MODEL_ALPHA_SHIFT; + piSMR[n] = PERCEPTUAL_MODEL_SCALE * piRMSEnvelope[n] + c_aiBandwidthAdjust48[n] - piSMR[n]; + } + + return; +} +/*------------------------------------------------------------------------------------------* + * Function PerceptualModelStereo() + * + * + *------------------------------------------------------------------------------------------*/ + +void PerceptualModelStereo( + const int32_t iMaxQuantBands, + const int32_t *piMSFlags, + const int32_t *piRMSEnvelope0, + const int32_t *piRMSEnvelope1, + int32_t *piExcitation0, + int32_t *piExcitation1, + int32_t *piSMR0, + int32_t *piSMR1 ) +{ + int32_t n; + + for ( n = 0; n < iMaxQuantBands; n++ ) + { + int32_t iMaxRMSEnv; + int32_t iSLOffset; + + iMaxRMSEnv = piRMSEnvelope0[n]; + + piExcitation0[n] = PERCEPTUAL_MODEL_SCALE * iMaxRMSEnv + c_aiBandwidthAdjust48[n]; /* piRMSEnvelope0[n] */ + + /* Calculate sensation level offset */ + iSLOffset = c_aiDefaultTheta48[n] * ( piExcitation0[n] - c_aiAbsoluteThresh48[n] ) >> PERCEPTUAL_MODEL_SLGAIN_SHIFT; + // iSLOffset = (iSLOffset > 0) ? iSLOffset : 0; + + /* Offset envelope by sensation level offset */ + piExcitation0[n] -= iSLOffset; + + /* Convert to loudness domain (x^0.3) */ + piExcitation0[n] = PERCEPTUAL_MODEL_ALPHA_SCALE * piExcitation0[n] >> PERCEPTUAL_MODEL_ALPHA_SHIFT; + } + + /* Spread excitation function */ + for ( n = 0; n < iMaxQuantBands; n++ ) + { + int32_t k; + const int32_t *piSpread; + + piSpread = &c_aaiSpreadFunction48[n * MAX_BANDS_48]; + piSMR0[n] = piExcitation0[n] + piSpread[n]; + for ( k = 0; k < iMaxQuantBands; k++ ) + { + if ( k != n ) + { + piSMR0[n] = LogAdd( piSMR0[n], piExcitation0[k] + piSpread[k] ); + } + } + } + + for ( n = 0; n < iMaxQuantBands; n++ ) + { + int32_t iMaxRMSEnv; + int32_t iSLOffset; + + iMaxRMSEnv = piRMSEnvelope1[n]; + + piExcitation1[n] = PERCEPTUAL_MODEL_SCALE * iMaxRMSEnv + c_aiBandwidthAdjust48[n]; /* piRMSEnvelope1[n] */ + + /* Calculate sensation level offset */ + iSLOffset = c_aiDefaultTheta48[n] * ( piExcitation1[n] - c_aiAbsoluteThresh48[n] ) >> PERCEPTUAL_MODEL_SLGAIN_SHIFT; + // iSLOffset = (iSLOffset > 0) ? iSLOffset : 0; + + /* Offset envelope by sensation level offset */ + piExcitation1[n] -= iSLOffset; + + /* Convert to loudness domain (x^0.3) */ + piExcitation1[n] = PERCEPTUAL_MODEL_ALPHA_SCALE * piExcitation1[n] >> PERCEPTUAL_MODEL_ALPHA_SHIFT; + } + + /* Spread excitation function */ + for ( n = 0; n < iMaxQuantBands; n++ ) + { + int32_t k; + const int32_t *piSpread; + + piSpread = &c_aaiSpreadFunction48[n * MAX_BANDS_48]; + piSMR1[n] = piExcitation1[n] + piSpread[n]; + for ( k = 0; k < iMaxQuantBands; k++ ) + { + if ( k != n ) + { + piSMR1[n] = LogAdd( piSMR1[n], piExcitation1[k] + piSpread[k] ); + } + } + } + + for ( n = 0; n < iMaxQuantBands; n++ ) + { + if ( piMSFlags[n] == 1 ) + { + piSMR0[n] = ( piSMR0[n] > piSMR1[n] ) ? piSMR0[n] : piSMR1[n]; + piSMR1[n] = piSMR0[n]; + } + } + + for ( n = 0; n < iMaxQuantBands; n++ ) + { + piSMR0[n] = PERCEPTUAL_MODEL_ALPHA_INV_SCALE * piSMR0[n] >> PERCEPTUAL_MODEL_ALPHA_SHIFT; + piSMR0[n] = PERCEPTUAL_MODEL_SCALE * piRMSEnvelope0[n] + c_aiBandwidthAdjust48[n] - piSMR0[n]; + } + + for ( n = 0; n < iMaxQuantBands; n++ ) + { + piSMR1[n] = PERCEPTUAL_MODEL_ALPHA_INV_SCALE * piSMR1[n] >> PERCEPTUAL_MODEL_ALPHA_SHIFT; + piSMR1[n] = PERCEPTUAL_MODEL_SCALE * piRMSEnvelope1[n] + c_aiBandwidthAdjust48[n] - piSMR1[n]; + } + + return; +} +void PerceptualModelStereo_fx( + const Word32 iMaxQuantBands, + const Word32 *piMSFlags, + const Word32 *piRMSEnvelope0, + const Word32 *piRMSEnvelope1, + Word32 *piExcitation0, + Word32 *piExcitation1, + Word32 *piSMR0, + Word32 *piSMR1 ) +{ + Word16 n; + + FOR( n = 0; n < iMaxQuantBands; n++ ) + { + Word16 iMaxRMSEnv; + Word16 iSLOffset; + + iMaxRMSEnv = extract_l( piRMSEnvelope0[n] ); + move16(); + piExcitation0[n] = add( shl( iMaxRMSEnv, PERCEPTUAL_MODEL_SCALE_SHIFT ), c_aiBandwidthAdjust48_fx[n] ); /* piRMSEnvelope0[n] */ + move16(); + /* Calculate sensation level offset */ + iSLOffset = extract_l( L_shr( L_mult0( c_aiDefaultTheta48_fx[n], sub( extract_l( piExcitation0[n] ), c_aiAbsoluteThresh48_fx[n] ) ), PERCEPTUAL_MODEL_SLGAIN_SHIFT ) ); + // iSLOffset = (iSLOffset > 0) ? iSLOffset : 0; + move16(); + /* Offset envelope by sensation level offset */ + piExcitation0[n] = sub( extract_l( piExcitation0[n] ), iSLOffset ); + move16(); + /* Convert to loudness domain (x^0.3) */ + piExcitation0[n] = extract_l( L_shr( L_mult0( PERCEPTUAL_MODEL_ALPHA_SCALE, extract_l( piExcitation0[n] ) ), PERCEPTUAL_MODEL_ALPHA_SHIFT ) ); + move16(); + } + + /* Spread excitation function */ + for ( n = 0; n < iMaxQuantBands; n++ ) + { + Word16 k; + const Word16 *piSpread; + + piSpread = &c_aaiSpreadFunction48_fx[n * MAX_BANDS_48]; + move16(); + piSMR0[n] = add( extract_l( piExcitation0[n] ), piSpread[n] ); + move16(); + FOR( k = 0; k < iMaxQuantBands; k++ ) + { + IF( NE_16( k, n ) ) + { + piSMR0[n] = L_deposit_l( LogAdd_fx( extract_l( piSMR0[n] ), add( extract_l( piExcitation0[k] ), piSpread[k] ) ) ); + move16(); + } + } + } + + FOR( n = 0; n < iMaxQuantBands; n++ ) + { + Word16 iMaxRMSEnv; + Word16 iSLOffset; + + iMaxRMSEnv = extract_l( piRMSEnvelope1[n] ); + move16(); + piExcitation1[n] = add( shl( iMaxRMSEnv, PERCEPTUAL_MODEL_SCALE_SHIFT ), c_aiBandwidthAdjust48_fx[n] ); /* piRMSEnvelope1[n] */ + move16(); + /* Calculate sensation level offset */ + iSLOffset = extract_l( L_shr( L_mult0( c_aiDefaultTheta48_fx[n], sub( extract_l( piExcitation1[n] ), c_aiAbsoluteThresh48_fx[n] ) ), PERCEPTUAL_MODEL_SLGAIN_SHIFT ) ); + // iSLOffset = (iSLOffset > 0) ? iSLOffset : 0; + move16(); + /* Offset envelope by sensation level offset */ + piExcitation1[n] = sub( extract_l( piExcitation1[n] ), iSLOffset ); + move16(); + /* Convert to loudness domain (x^0.3) */ + piExcitation1[n] = extract_l( L_shr( L_mult0( PERCEPTUAL_MODEL_ALPHA_SCALE, extract_l( piExcitation1[n] ) ), PERCEPTUAL_MODEL_ALPHA_SHIFT ) ); + move16(); + } + + /* Spread excitation function */ + FOR( n = 0; n < iMaxQuantBands; n++ ) + { + Word16 k; + const Word16 *piSpread; + + piSpread = &c_aaiSpreadFunction48_fx[n * MAX_BANDS_48]; + move16(); + piSMR1[n] = add( extract_l( piExcitation1[n] ), piSpread[n] ); + move16(); + FOR( k = 0; k < iMaxQuantBands; k++ ) + { + IF( NE_16( k, n ) ) + { + piSMR1[n] = LogAdd_fx( extract_l( piSMR1[n] ), add( extract_l( piExcitation1[k] ), piSpread[k] ) ); + move16(); + } + } + } + + FOR( n = 0; n < iMaxQuantBands; n++ ) + { + IF( EQ_16( extract_l( piMSFlags[n] ), 1 ) ) + { + piSMR0[n] = ( piSMR0[n] > piSMR1[n] ) ? piSMR0[n] : piSMR1[n]; + move16(); + piSMR1[n] = piSMR0[n]; + move16(); + } + } + + FOR( n = 0; n < iMaxQuantBands; n++ ) + { + piSMR0[n] = extract_l( L_shr( L_mult0( PERCEPTUAL_MODEL_ALPHA_INV_SCALE, extract_l( piSMR0[n] ) ), PERCEPTUAL_MODEL_ALPHA_SHIFT ) ); + move16(); + piSMR0[n] = sub( add( shl( extract_l( piRMSEnvelope0[n] ), PERCEPTUAL_MODEL_SCALE_SHIFT ), c_aiBandwidthAdjust48_fx[n] ), extract_l( piSMR0[n] ) ); + move16(); + } + + FOR( n = 0; n < iMaxQuantBands; n++ ) + { + piSMR1[n] = extract_l( L_shr( L_mult0( PERCEPTUAL_MODEL_ALPHA_INV_SCALE, extract_l( piSMR1[n] ) ), PERCEPTUAL_MODEL_ALPHA_SHIFT ) ); + move16(); + piSMR1[n] = sub( add( shl( extract_l( piRMSEnvelope1[n] ), PERCEPTUAL_MODEL_SCALE_SHIFT ), c_aiBandwidthAdjust48_fx[n] ), extract_l( piSMR1[n] ) ); + move16(); + } + + return; +} diff --git a/lib_isar/isar_PredDecoder.c b/lib_isar/isar_PredDecoder.c new file mode 100644 index 0000000000000000000000000000000000000000..a202aaa1c0d203c83ae8986be88c65d80d584f76 --- /dev/null +++ b/lib_isar/isar_PredDecoder.c @@ -0,0 +1,493 @@ +/****************************************************************************************************** + + (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 +#include "prot_fx.h" +#include "isar_prot.h" +#include "isar_lcld_prot.h" +#include "isar_lcld_rom_tables.h" +#include "wmc_auto.h" + +/*-------------------------------------------------------------------* + * Function CreatePredictionDecoder() + * + * + *-------------------------------------------------------------------*/ + +ivas_error CreatePredictionDecoder_fx( + PredictionDecoder **psPredictionDecoder_out, + const Word32 iChannels, + const Word32 iNumBlocks ) +{ + Word16 n; + Word16 m; + PredictionDecoder *psPredictionDecoder = NULL; + + IF( ( psPredictionDecoder = (PredictionDecoder *) malloc( sizeof( PredictionDecoder ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + psPredictionDecoder->iChannels = iChannels; + move32(); + psPredictionDecoder->iNumBlocks = iNumBlocks; + move32(); + psPredictionDecoder->iNumSubSets = LCLD_BLOCKS_PER_FRAME / psPredictionDecoder->iNumBlocks; + move32(); + psPredictionDecoder->iSubSetId = 0; + move32(); + /* PLC_IMPROVEMENT */ + IF( ( psPredictionDecoder->ppiDecodingFailedPrev = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppiDecodingFailed = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppiDecodingUnresolved = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + FOR( n = 0; n < iChannels; n++ ) + { + Word32 k; + IF( ( psPredictionDecoder->ppiDecodingUnresolved[n] = (Word32 *) malloc( sizeof( Word32 ) * LCLD_MAX_NUM_PRED_SUBSETS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppiDecodingFailed[n] = (Word32 *) malloc( sizeof( Word32 ) * LCLD_MAX_NUM_PRED_SUBSETS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppiDecodingFailedPrev[n] = (Word32 *) malloc( sizeof( Word32 ) * LCLD_MAX_NUM_PRED_SUBSETS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + FOR( k = 0; k < LCLD_MAX_NUM_PRED_SUBSETS; k++ ) + { + psPredictionDecoder->ppiDecodingUnresolved[n][k] = 0; + move32(); + psPredictionDecoder->ppiDecodingFailed[n][k] = 0; + move32(); + psPredictionDecoder->ppiDecodingFailedPrev[n][k] = 0; + move32(); + } + } + IF( ( psPredictionDecoder->piPredChanEnable = (Word32 *) malloc( sizeof( Word32 ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppiPredBandEnable = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppfA1Real_fx = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppfA1Imag_fx = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppiA1Mag = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppiA1Phase = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppfPredStateReal_fx = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppfPredStateImag_fx = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + + FOR( n = 0; n < psPredictionDecoder->iChannels; n++ ) + { + psPredictionDecoder->piPredChanEnable[n] = 0; + move32(); + IF( ( psPredictionDecoder->ppiPredBandEnable[n] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + FOR( m = 0; m < LCLD_BANDS; m++ ) + { + psPredictionDecoder->ppiPredBandEnable[n][m] = 0; + move32(); + } + IF( ( psPredictionDecoder->ppfA1Real_fx[n] = (Word32 *) malloc( sizeof( Word32 ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppfA1Imag_fx[n] = (Word32 *) malloc( sizeof( Word32 ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppiA1Mag[n] = (Word32 *) malloc( sizeof( Word32 ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppiA1Phase[n] = (Word32 *) malloc( sizeof( Word32 ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppfPredStateReal_fx[n] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionDecoder Module \n" ) ); + } + IF( ( psPredictionDecoder->ppfPredStateImag_fx[n] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionDecoder Module \n" ) ); + } + FOR( m = 0; m < LCLD_BANDS; m++ ) + { + psPredictionDecoder->ppfPredStateReal_fx[n][m] = 0; + move32(); + psPredictionDecoder->ppfPredStateImag_fx[n][m] = 0; + move32(); + } + } + + /* pre-define these tables? */ + + FOR( n = 0; n < ( 1 << PRED_QUNAT_FILTER_MAG_BITS ); n++ ) + { + psPredictionDecoder->pfMagLUT_fx[n] = c_pfMagLUT[n]; /* Q31 */ + move32(); + } + + FOR( n = 0; n < ( 1 << PRED_QUANT_FILTER_PHASE_BITS ); n++ ) + { + psPredictionDecoder->pfP2RRealLUT_fx[n] = c_pfP2RRealLUT[n]; /* Q31 */ + move32(); + psPredictionDecoder->pfP2RImagLUT_fx[n] = c_pfP2RImagLUT[n]; /* Q31 */ + move32(); + } + + *psPredictionDecoder_out = psPredictionDecoder; + + return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------* + * Function DeletePredictionDecoder() + * + * + *-------------------------------------------------------------------*/ + +void DeletePredictionDecoder_fx( + PredictionDecoder *psPredictionDecoder ) +{ + Word32 n; + + FOR( n = 0; n < psPredictionDecoder->iChannels; n++ ) + { + free( psPredictionDecoder->ppiPredBandEnable[n] ); + free( psPredictionDecoder->ppfA1Real_fx[n] ); + free( psPredictionDecoder->ppfA1Imag_fx[n] ); + free( psPredictionDecoder->ppiA1Mag[n] ); + free( psPredictionDecoder->ppiA1Phase[n] ); + free( psPredictionDecoder->ppfPredStateReal_fx[n] ); + free( psPredictionDecoder->ppfPredStateImag_fx[n] ); + free( psPredictionDecoder->ppiDecodingUnresolved[n] ); + free( psPredictionDecoder->ppiDecodingFailed[n] ); + free( psPredictionDecoder->ppiDecodingFailedPrev[n] ); + } + free( psPredictionDecoder->piPredChanEnable ); + free( psPredictionDecoder->ppiPredBandEnable ); + free( psPredictionDecoder->ppfA1Real_fx ); + free( psPredictionDecoder->ppfA1Imag_fx ); + free( psPredictionDecoder->ppiA1Mag ); + free( psPredictionDecoder->ppiA1Phase ); + free( psPredictionDecoder->ppfPredStateReal_fx ); + free( psPredictionDecoder->ppfPredStateImag_fx ); + /* PLC_IMPROVEMENT */ + free( psPredictionDecoder->ppiDecodingUnresolved ); + free( psPredictionDecoder->ppiDecodingFailed ); + free( psPredictionDecoder->ppiDecodingFailedPrev ); + + free( psPredictionDecoder ); + psPredictionDecoder = NULL; + + return; +} +/*-------------------------------------------------------------------* + * Function ReadPredictors() + * + * + *-------------------------------------------------------------------*/ + +Word32 ReadPredictors_fx( + PredictionDecoder *psPredictionDecoder, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word16 iBitsRead = 0; + Word32 c; + Word32 b; + Word16 iNumPredBandBits = 6; + const Word16 iSubSetBits = ( GT_32( LCLD_MAX_NUM_PRED_SUBSETS, 4 ) ? 3 : 2 ); + move16(); + move16(); + move16(); + + psPredictionDecoder->iNumSubSets = L_add( ISAR_SPLIT_REND_BITStream_read_int32( pBits, iSubSetBits ), 1 ); + iBitsRead = add( iBitsRead, iSubSetBits ); + + IF( GT_32( psPredictionDecoder->iNumSubSets, 1 ) ) + { + psPredictionDecoder->iSubSetId = ISAR_SPLIT_REND_BITStream_read_int32( pBits, iSubSetBits ); + iBitsRead = add( iBitsRead, iSubSetBits ); + iNumPredBandBits = ( GE_32( psPredictionDecoder->iNumSubSets, 4 ) ? 4 : 5 ); + move16(); + } + ELSE + { + psPredictionDecoder->iSubSetId = 0; + move32(); + } + FOR( c = 0; c < psPredictionDecoder->iChannels; c++ ) + { + psPredictionDecoder->piPredChanEnable[c] = ISAR_SPLIT_REND_BITStream_read_int32( pBits, psPredictionDecoder->iNumSubSets ); + move32(); + iBitsRead = add( iBitsRead, (Word16) psPredictionDecoder->iNumSubSets ); + + IF( get_bit( psPredictionDecoder->piPredChanEnable[c], psPredictionDecoder->iSubSetId ) ) + { + Word32 b0 = psPredictionDecoder->iSubSetId; + Word32 bstep = psPredictionDecoder->iNumSubSets; + Word32 iNumPredBands; + move32(); + move32(); + + FOR( b = b0; b < LCLD_BANDS; b = L_add( b, bstep ) ) + { + psPredictionDecoder->ppiPredBandEnable[c][b] = 0; + move32(); + } + iNumPredBands = ISAR_SPLIT_REND_BITStream_read_int32( pBits, iNumPredBandBits ); + iBitsRead = add( iBitsRead, iNumPredBandBits ); + iNumPredBands = L_add( L_mult0( (Word16) iNumPredBands, (Word16) psPredictionDecoder->iNumSubSets ), b0 ); + + FOR( b = b0; b < iNumPredBands; b = L_add( b, bstep ) ) + { + psPredictionDecoder->ppiPredBandEnable[c][b] = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 1 ); + move32(); + iBitsRead = add( iBitsRead, 1 ); + + IF( EQ_32( psPredictionDecoder->ppiPredBandEnable[c][b], 1 ) ) + { + Word32 iA1Mag; + Word32 iA1Phase; + Word32 fA1Real; + Word32 fA1Imag; + iA1Mag = ISAR_SPLIT_REND_BITStream_read_int32( pBits, PRED_QUNAT_FILTER_MAG_BITS ); + iBitsRead = add( iBitsRead, PRED_QUNAT_FILTER_MAG_BITS ); + iA1Phase = ISAR_SPLIT_REND_BITStream_read_int32( pBits, PRED_QUANT_FILTER_PHASE_BITS ); + iBitsRead = add( iBitsRead, PRED_QUANT_FILTER_PHASE_BITS ); + + psPredictionDecoder->ppiA1Mag[c][b] = iA1Mag; + move32(); + psPredictionDecoder->ppiA1Phase[c][b] = L_add( iA1Phase, PRED_QUANT_FILTER_PHASE_MIN ); + move32(); + + fA1Real = Mpy_32_32( psPredictionDecoder->pfMagLUT_fx[iA1Mag], psPredictionDecoder->pfP2RRealLUT_fx[iA1Phase] ); /* Q31 */ + fA1Imag = Mpy_32_32( psPredictionDecoder->pfMagLUT_fx[iA1Mag], psPredictionDecoder->pfP2RImagLUT_fx[iA1Phase] ); /* Q31 */ + + psPredictionDecoder->ppfA1Real_fx[c][b] = fA1Real; /* Q31 */ + move32(); + psPredictionDecoder->ppfA1Imag_fx[c][b] = fA1Imag; /* Q31 */ + move32(); + } + } + } + } + + /* disable any inactive prediction bands */ + FOR( c = 0; c < psPredictionDecoder->iChannels; c++ ) + { + Word32 set; + FOR( set = 0; set < psPredictionDecoder->iNumSubSets; set++ ) + { + IF( !get_bit( psPredictionDecoder->piPredChanEnable[c], set ) ) + { + FOR( b = set; b < LCLD_BANDS; b = L_add( b, psPredictionDecoder->iNumSubSets ) ) + { + psPredictionDecoder->ppiPredBandEnable[c][b] = 0; + move32(); + } + } + } + } + + return iBitsRead; +} +/* PLC_IMPROVEMENT */ +void SetDecodingPassed( PredictionDecoder *psPredictionDecoder ) +{ + int32_t n, ch; + for ( ch = 0; ch < psPredictionDecoder->iChannels; ch++ ) + { + for ( n = 0; n < psPredictionDecoder->iNumSubSets; n++ ) + { + psPredictionDecoder->ppiDecodingFailed[ch][n] = 0; + } + } +} +int32_t AnyDecodingUnresolved( PredictionDecoder *psPredictionDecoder ) +{ + int32_t n, ch; + for ( ch = 0; ch < psPredictionDecoder->iChannels; ch++ ) + { + for ( n = 0; n < psPredictionDecoder->iNumSubSets; n++ ) + { + if ( psPredictionDecoder->ppiDecodingUnresolved[ch][n] == 1 ) + { + return 1; + } + } + } + return 0; +} + +void UpdateDecodingFailedStatus( PredictionDecoder *psPredictionDecoder ) +{ + int32_t n, ch; + for ( ch = 0; ch < psPredictionDecoder->iChannels; ch++ ) + { + for ( n = 0; n < psPredictionDecoder->iNumSubSets; n++ ) + { + psPredictionDecoder->ppiDecodingFailedPrev[ch][n] = psPredictionDecoder->ppiDecodingFailed[ch][n]; + } + } +} + +void UpdateDecodingUnresolved( PredictionDecoder *psPredictionDecoder ) +{ + int32_t n, ch; + + int32_t iCurrentSubSet = psPredictionDecoder->iSubSetId; + + for ( ch = 0; ch < psPredictionDecoder->iChannels; ch++ ) + { + /* Prediction data always available for current subset */ + psPredictionDecoder->ppiDecodingUnresolved[ch][iCurrentSubSet] = 0; + + for ( n = 0; n < psPredictionDecoder->iNumSubSets; n++ ) + { + int32_t iSubSetActive = get_bit( psPredictionDecoder->piPredChanEnable[ch], n ); + if ( iSubSetActive == 0 ) + { + /* Prediction information available inactive subsets (e.g. no Prediction) */ + psPredictionDecoder->ppiDecodingUnresolved[ch][n] = 0; + } + } + } +} + +/*-------------------------------------------------------------------* + * Function ApplyInversePredictors() + * + * + *-------------------------------------------------------------------*/ + +void ApplyInversePredictors_fx( + PredictionDecoder *psPredictionDecoder, + Word32 ***pppfReal, + Word32 ***pppfImag ) +{ + Word32 c; + FOR( c = 0; c < psPredictionDecoder->iChannels; c++ ) + { + IF( GT_32( psPredictionDecoder->piPredChanEnable[c], 0 ) ) + { + Word32 b; + FOR( b = 0; b < LCLD_BANDS; b++ ) + { + IF( EQ_32( psPredictionDecoder->ppiPredBandEnable[c][b], 1 ) ) + { + Word32 n; + Word32 fA1Real; + Word32 fA1Imag; + Word32 fPrevReal = 0; + move32(); + Word32 fPrevImag = 0; + move32(); + Word32 iSubset = b % psPredictionDecoder->iNumSubSets; + + IF( NE_32( iSubset, psPredictionDecoder->iSubSetId ) ) + { + fPrevReal = psPredictionDecoder->ppfPredStateReal_fx[c][b]; + move32(); + fPrevImag = psPredictionDecoder->ppfPredStateImag_fx[c][b]; + move32(); + } + + fA1Real = psPredictionDecoder->ppfA1Real_fx[c][b]; + move32(); + fA1Imag = psPredictionDecoder->ppfA1Imag_fx[c][b]; + move32(); + FOR( n = 0; n < psPredictionDecoder->iNumBlocks; n++ ) + { + Word32 fReal; + Word32 fImag; + + fReal = L_add( L_sub( pppfReal[c][n][b], Mpy_32_32( fA1Real, fPrevReal ) ), Mpy_32_32( fA1Imag, fPrevImag ) ); + fImag = L_sub( L_sub( pppfImag[c][n][b], Mpy_32_32( fA1Real, fPrevImag ) ), Mpy_32_32( fA1Imag, fPrevReal ) ); + + pppfReal[c][n][b] = fReal; + move32(); + pppfImag[c][n][b] = fImag; + move32(); + + fPrevReal = fReal; + move32(); + fPrevImag = fImag; + move32(); + } + psPredictionDecoder->ppfPredStateReal_fx[c][b] = fPrevReal; + move32(); + psPredictionDecoder->ppfPredStateImag_fx[c][b] = fPrevImag; + move32(); + } + } + } + } + + return; +} diff --git a/lib_isar/isar_PredEncoder.c b/lib_isar/isar_PredEncoder.c new file mode 100644 index 0000000000000000000000000000000000000000..8eed33ca60041619cb72d302b2576ab2a177a176 --- /dev/null +++ b/lib_isar/isar_PredEncoder.c @@ -0,0 +1,1213 @@ +/****************************************************************************************************** + + (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 +#include "isar_lcld_prot.h" +#include "isar_lcld_rom_tables.h" +#include "prot_fx.h" +#include "isar_prot.h" +#include "wmc_auto.h" +#include "prot_fx.h" +#include "basop_util.h" +#include "enh64.h" +#include "basop32.h" + + +/*-------------------------------------------------------------------* + * Function activate_bit() + * + * + *-------------------------------------------------------------------*/ +static void activate_bit( + Word32 *state, + const Word32 bit_id ) +{ + ( *state ) = L_or( ( *state ), L_shl( 1, extract_l( bit_id ) ) ); +} + +/*-------------------------------------------------------------------* + * Function deactivate_bit() + * + * + *-------------------------------------------------------------------*/ + +static void deactivate_bit( + Word32 *state, + const Word32 bit_id ) +{ + ( *state ) = L_and( ( *state ), ~L_shl( 1, extract_l( bit_id ) ) ); +} +void UpdatePredictionSubSetId( PredictionEncoder *psPredictionEncoder ) +{ + IF( EQ_32( ++psPredictionEncoder->iSubSetId, psPredictionEncoder->iNumSubSets ) ) + { + psPredictionEncoder->iSubSetId = 0; + move32(); + } +} +/*-------------------------------------------------------------------* + * Function CreatePredictionEncoder() + * + * + *-------------------------------------------------------------------*/ + +ivas_error CreatePredictionEncoder_fx( + PredictionEncoder **psPredictionEncoder_out, + const Word32 iChannels, + const Word32 iNumBlocks, + const Word32 iNumSubSets, + const Word32 iMaxNumPredBands ) +{ + Word32 k, n; + PredictionEncoder *psPredictionEncoder = NULL; + + IF( ( psPredictionEncoder = (PredictionEncoder *) malloc( sizeof( PredictionEncoder ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + + psPredictionEncoder->iChannels = iChannels; + move32(); + psPredictionEncoder->iNumBlocks = iNumBlocks; + move32(); + psPredictionEncoder->iSubSetId = 0; + move32(); + psPredictionEncoder->iMaxNumPredBands = iMaxNumPredBands; + move32(); + psPredictionEncoder->iNumSubSets = iNumSubSets; + move32(); + IF( ( psPredictionEncoder->piPredChanEnable = (Word32 *) malloc( sizeof( Word32 ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + + IF( ( psPredictionEncoder->piNumPredBands = (Word32 *) malloc( sizeof( Word32 ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + FOR( n = 0; n < psPredictionEncoder->iChannels; n++ ) + { + psPredictionEncoder->piPredChanEnable[n] = 0; + move32(); + psPredictionEncoder->piNumPredBands[n] = 40; // Will need to be set correctly + move32(); + } + + IF( ( psPredictionEncoder->ppiPredBandEnable = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppfA1Real_fx = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppfA1Imag_fx = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppiA1Mag = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppiA1Phase = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->pppfInpBufReal_fx = (Word32 ***) malloc( sizeof( Word32 ** ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->pppfInpBufImag_fx = (Word32 ***) malloc( sizeof( Word32 ** ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppfInpPrevReal_fx = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppfInpPrevImag_fx = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppfPredStateReal_fx = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppfPredStateImag_fx = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppfPredStateRealTmp_fx = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppfPredStateImagTmp_fx = (Word32 **) malloc( sizeof( Word32 * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + + FOR( n = 0; n < psPredictionEncoder->iChannels; n++ ) + { + IF( ( psPredictionEncoder->ppiPredBandEnable[n] = (Word32 *) malloc( sizeof( Word32 ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppfA1Real_fx[n] = (Word32 *) malloc( sizeof( Word32 ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppfA1Imag_fx[n] = (Word32 *) malloc( sizeof( Word32 ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppiA1Mag[n] = (Word32 *) malloc( sizeof( Word32 ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppiA1Phase[n] = (Word32 *) malloc( sizeof( Word32 ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->pppfInpBufReal_fx[n] = (Word32 **) malloc( sizeof( Word32 * ) * LCLD_PRED_WIN_LEN ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->pppfInpBufImag_fx[n] = (Word32 **) malloc( sizeof( Word32 * ) * LCLD_PRED_WIN_LEN ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + FOR( k = 0; k < LCLD_PRED_WIN_LEN; k++ ) + { + IF( ( psPredictionEncoder->pppfInpBufReal_fx[n][k] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->pppfInpBufImag_fx[n][k] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + set32_fx( psPredictionEncoder->pppfInpBufReal_fx[n][k], 0, LCLD_BANDS ); + set32_fx( psPredictionEncoder->pppfInpBufImag_fx[n][k], 0, LCLD_BANDS ); + } + IF( ( psPredictionEncoder->ppfPredStateReal_fx[n] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppfPredStateImag_fx[n] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + set32_fx( psPredictionEncoder->ppfPredStateReal_fx[n], 0, LCLD_BANDS ); + set32_fx( psPredictionEncoder->ppfPredStateImag_fx[n], 0, LCLD_BANDS ); + + IF( ( psPredictionEncoder->ppfInpPrevReal_fx[n] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppfInpPrevImag_fx[n] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + + set32_fx( psPredictionEncoder->ppfInpPrevReal_fx[n], 0, LCLD_BANDS ); + set32_fx( psPredictionEncoder->ppfInpPrevImag_fx[n], 0, LCLD_BANDS ); + + IF( ( psPredictionEncoder->ppfPredStateRealTmp_fx[n] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + IF( ( psPredictionEncoder->ppfPredStateImagTmp_fx[n] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + set32_fx( psPredictionEncoder->ppfPredStateRealTmp_fx[n], 0, LCLD_BANDS ); + set32_fx( psPredictionEncoder->ppfPredStateImagTmp_fx[n], 0, LCLD_BANDS ); + FOR( k = 0; k < LCLD_BANDS; k++ ) + { + psPredictionEncoder->ppiPredBandEnable[n][k] = 0; + move32(); + psPredictionEncoder->ppfA1Real_fx[n][k] = 0; + move32(); + psPredictionEncoder->ppfA1Imag_fx[n][k] = 0; + move32(); + } + } + + *psPredictionEncoder_out = psPredictionEncoder; + + return IVAS_ERR_OK; +} +ivas_error CreatePredictionEncoder( + PredictionEncoder **psPredictionEncoder_out, + const int32_t iChannels, + const int32_t iNumBlocks, + const int32_t iNumSubSets, + const int32_t iMaxNumPredBands ) +{ + int32_t k, n; + PredictionEncoder *psPredictionEncoder = NULL; + + if ( ( psPredictionEncoder = (PredictionEncoder *) malloc( sizeof( PredictionEncoder ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + + psPredictionEncoder->iChannels = iChannels; + psPredictionEncoder->iNumBlocks = iNumBlocks; + psPredictionEncoder->iSubSetId = 0; + psPredictionEncoder->iMaxNumPredBands = iMaxNumPredBands; + psPredictionEncoder->iNumSubSets = iNumSubSets; + + if ( ( psPredictionEncoder->piPredChanEnable = (int32_t *) malloc( sizeof( int32_t ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + + if ( ( psPredictionEncoder->piNumPredBands = (int32_t *) malloc( sizeof( int32_t ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + for ( n = 0; n < psPredictionEncoder->iChannels; n++ ) + { + psPredictionEncoder->piPredChanEnable[n] = 0; + psPredictionEncoder->piNumPredBands[n] = 40; // Will need to be set correctly + } + + if ( ( psPredictionEncoder->ppiPredBandEnable = (int32_t **) malloc( sizeof( int32_t * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfA1Real = (float **) malloc( sizeof( float * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfA1Imag = (float **) malloc( sizeof( float * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppiA1Mag = (int32_t **) malloc( sizeof( int32_t * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppiA1Phase = (int32_t **) malloc( sizeof( int32_t * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->pppfInpBufReal = (float ***) malloc( sizeof( float ** ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->pppfInpBufImag = (float ***) malloc( sizeof( float ** ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfInpPrevReal = (float **) malloc( sizeof( float * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfInpPrevImag = (float **) malloc( sizeof( float * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfPredStateReal = (float **) malloc( sizeof( float * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfPredStateImag = (float **) malloc( sizeof( float * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfPredStateRealTmp = (float **) malloc( sizeof( float * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfPredStateImagTmp = (float **) malloc( sizeof( float * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + + for ( n = 0; n < psPredictionEncoder->iChannels; n++ ) + { + if ( ( psPredictionEncoder->ppiPredBandEnable[n] = (int32_t *) malloc( sizeof( int32_t ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfA1Real[n] = (float *) malloc( sizeof( float ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfA1Imag[n] = (float *) malloc( sizeof( float ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppiA1Mag[n] = (int32_t *) malloc( sizeof( int32_t ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppiA1Phase[n] = (int32_t *) malloc( sizeof( int32_t ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->pppfInpBufReal[n] = (float **) malloc( sizeof( float * ) * LCLD_PRED_WIN_LEN ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->pppfInpBufImag[n] = (float **) malloc( sizeof( float * ) * LCLD_PRED_WIN_LEN ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + for ( k = 0; k < LCLD_PRED_WIN_LEN; k++ ) + { + if ( ( psPredictionEncoder->pppfInpBufReal[n][k] = (float *) malloc( LCLD_BANDS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->pppfInpBufImag[n][k] = (float *) malloc( LCLD_BANDS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + set_zero( psPredictionEncoder->pppfInpBufReal[n][k], LCLD_BANDS ); + set_zero( psPredictionEncoder->pppfInpBufImag[n][k], LCLD_BANDS ); + } + if ( ( psPredictionEncoder->ppfPredStateReal[n] = (float *) malloc( LCLD_BANDS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfPredStateImag[n] = (float *) malloc( LCLD_BANDS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + set_zero( psPredictionEncoder->ppfPredStateReal[n], LCLD_BANDS ); + set_zero( psPredictionEncoder->ppfPredStateImag[n], LCLD_BANDS ); + + if ( ( psPredictionEncoder->ppfInpPrevReal[n] = (float *) malloc( LCLD_BANDS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfInpPrevImag[n] = (float *) malloc( LCLD_BANDS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + + set_zero( psPredictionEncoder->ppfInpPrevReal[n], LCLD_BANDS ); + set_zero( psPredictionEncoder->ppfInpPrevImag[n], LCLD_BANDS ); + + if ( ( psPredictionEncoder->ppfPredStateRealTmp[n] = (float *) malloc( LCLD_BANDS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfPredStateImagTmp[n] = (float *) malloc( LCLD_BANDS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + set_zero( psPredictionEncoder->ppfPredStateRealTmp[n], LCLD_BANDS ); + set_zero( psPredictionEncoder->ppfPredStateImagTmp[n], LCLD_BANDS ); + for ( k = 0; k < LCLD_BANDS; k++ ) + { + psPredictionEncoder->ppiPredBandEnable[n][k] = 0; + psPredictionEncoder->ppfA1Real[n][k] = 0.0f; + psPredictionEncoder->ppfA1Imag[n][k] = 0.0f; + } + } + + *psPredictionEncoder_out = psPredictionEncoder; + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * Function DeletePredictionEncoder() + * + * + *-------------------------------------------------------------------*/ + +void DeletePredictionEncoder_fx( + PredictionEncoder *psPredictionEncoder ) +{ + Word32 n; + FOR( n = 0; n < psPredictionEncoder->iChannels; n++ ) + { + Word32 k; + free( psPredictionEncoder->ppiPredBandEnable[n] ); + free( psPredictionEncoder->ppfA1Real_fx[n] ); + free( psPredictionEncoder->ppfA1Imag_fx[n] ); + free( psPredictionEncoder->ppiA1Mag[n] ); + free( psPredictionEncoder->ppiA1Phase[n] ); + FOR( k = 0; k < LCLD_PRED_WIN_LEN; k++ ) + { + free( psPredictionEncoder->pppfInpBufReal_fx[n][k] ); + free( psPredictionEncoder->pppfInpBufImag_fx[n][k] ); + } + free( psPredictionEncoder->pppfInpBufReal_fx[n] ); + free( psPredictionEncoder->pppfInpBufImag_fx[n] ); + free( psPredictionEncoder->ppfInpPrevReal_fx[n] ); + free( psPredictionEncoder->ppfInpPrevImag_fx[n] ); + free( psPredictionEncoder->ppfPredStateReal_fx[n] ); + free( psPredictionEncoder->ppfPredStateImag_fx[n] ); + free( psPredictionEncoder->ppfPredStateRealTmp_fx[n] ); + free( psPredictionEncoder->ppfPredStateImagTmp_fx[n] ); + } + free( psPredictionEncoder->piPredChanEnable ); + free( psPredictionEncoder->piNumPredBands ); + free( psPredictionEncoder->ppiPredBandEnable ); + free( psPredictionEncoder->ppfA1Real_fx ); + free( psPredictionEncoder->ppfA1Imag_fx ); + free( psPredictionEncoder->ppiA1Mag ); + free( psPredictionEncoder->ppiA1Phase ); + free( psPredictionEncoder->pppfInpBufReal_fx ); + free( psPredictionEncoder->pppfInpBufImag_fx ); + free( psPredictionEncoder->ppfInpPrevReal_fx ); + free( psPredictionEncoder->ppfInpPrevImag_fx ); + free( psPredictionEncoder->ppfPredStateReal_fx ); + free( psPredictionEncoder->ppfPredStateImag_fx ); + free( psPredictionEncoder->ppfPredStateRealTmp_fx ); + free( psPredictionEncoder->ppfPredStateImagTmp_fx ); + + + free( psPredictionEncoder ); + + return; +} +void DeletePredictionEncoder( + PredictionEncoder *psPredictionEncoder ) +{ + int32_t n; + for ( n = 0; n < psPredictionEncoder->iChannels; n++ ) + { + int32_t k; + free( psPredictionEncoder->ppiPredBandEnable[n] ); + free( psPredictionEncoder->ppfA1Real[n] ); + free( psPredictionEncoder->ppfA1Imag[n] ); + free( psPredictionEncoder->ppiA1Mag[n] ); + free( psPredictionEncoder->ppiA1Phase[n] ); + for ( k = 0; k < LCLD_PRED_WIN_LEN; k++ ) + { + free( psPredictionEncoder->pppfInpBufReal[n][k] ); + free( psPredictionEncoder->pppfInpBufImag[n][k] ); + } + free( psPredictionEncoder->pppfInpBufReal[n] ); + free( psPredictionEncoder->pppfInpBufImag[n] ); + free( psPredictionEncoder->ppfInpPrevReal[n] ); + free( psPredictionEncoder->ppfInpPrevImag[n] ); + free( psPredictionEncoder->ppfPredStateReal[n] ); + free( psPredictionEncoder->ppfPredStateImag[n] ); + free( psPredictionEncoder->ppfPredStateRealTmp[n] ); + free( psPredictionEncoder->ppfPredStateImagTmp[n] ); + } + free( psPredictionEncoder->piPredChanEnable ); + free( psPredictionEncoder->piNumPredBands ); + free( psPredictionEncoder->ppiPredBandEnable ); + free( psPredictionEncoder->ppfA1Real ); + free( psPredictionEncoder->ppfA1Imag ); + free( psPredictionEncoder->ppiA1Mag ); + free( psPredictionEncoder->ppiA1Phase ); + free( psPredictionEncoder->pppfInpBufReal ); + free( psPredictionEncoder->pppfInpBufImag ); + free( psPredictionEncoder->ppfInpPrevReal ); + free( psPredictionEncoder->ppfInpPrevImag ); + free( psPredictionEncoder->ppfPredStateReal ); + free( psPredictionEncoder->ppfPredStateImag ); + free( psPredictionEncoder->ppfPredStateRealTmp ); + free( psPredictionEncoder->ppfPredStateImagTmp ); + + + free( psPredictionEncoder ); + + return; +} + + +/*-------------------------------------------------------------------* + * Function ComputePredictors() + * + * + *-------------------------------------------------------------------*/ + +void ComputePredictors( + PredictionEncoder *psPredictionEncoder, + float ***pppfReal, + float ***pppfImag ) +{ + int32_t c; + + int32_t b0 = psPredictionEncoder->iSubSetId; + int32_t bstep = psPredictionEncoder->iNumSubSets; + int32_t iNumBlocks = psPredictionEncoder->iNumBlocks; + float ***pppfRealBuf; + float ***pppfImagBuf; + float pfEstPredBitGain[LCLD_BANDS] = { 0 }; + + if ( iNumBlocks < LCLD_PRED_WIN_LEN ) + { + pppfRealBuf = psPredictionEncoder->pppfInpBufReal; + pppfImagBuf = psPredictionEncoder->pppfInpBufImag; + for ( c = 0; c < psPredictionEncoder->iChannels; c++ ) + { + int32_t n; + for ( n = 0; n < LCLD_PRED_WIN_LEN - iNumBlocks; n++ ) + { + mvr2r( pppfRealBuf[c][n + iNumBlocks], pppfRealBuf[c][n], LCLD_BANDS ); + mvr2r( pppfImagBuf[c][n + iNumBlocks], pppfImagBuf[c][n], LCLD_BANDS ); + } + for ( n = 0; n < iNumBlocks; n++ ) + { + mvr2r( pppfReal[c][n], pppfRealBuf[c][n + LCLD_PRED_WIN_LEN - iNumBlocks], LCLD_BANDS ); + mvr2r( pppfImag[c][n], pppfImagBuf[c][n + LCLD_PRED_WIN_LEN - iNumBlocks], LCLD_BANDS ); + } + } + } + else + { + pppfRealBuf = pppfReal; + pppfImagBuf = pppfImag; + } + + for ( c = 0; c < psPredictionEncoder->iChannels; c++ ) + { + int32_t b; + for ( b = b0; b < psPredictionEncoder->iMaxNumPredBands; b += bstep ) + { + int32_t n; + float fGain = 0.0; + float fBitGain = 0.0; + float *pfRxxReal; + float *pfRxxImag; + float fA1Real; + float fA1Imag; + int32_t iA1Mag; + int32_t iA1Phase; + + pfRxxReal = psPredictionEncoder->pfRxxReal; + pfRxxImag = psPredictionEncoder->pfRxxImag; + + pfRxxReal[0] = 0.0; + pfRxxImag[0] = 0.0; + for ( n = 0; n < LCLD_PRED_WIN_LEN; n++ ) + { + pfRxxReal[0] += ( pppfRealBuf[c][n][b] * pppfRealBuf[c][n][b] + pppfImagBuf[c][n][b] * pppfImagBuf[c][n][b] ); + } + + pfRxxReal[1] = 0.0; + pfRxxImag[1] = 0.0; + for ( n = 1; n < LCLD_PRED_WIN_LEN; n++ ) + { + pfRxxReal[1] += ( pppfRealBuf[c][n][b] * pppfRealBuf[c][n - 1][b] + pppfImagBuf[c][n][b] * pppfImagBuf[c][n - 1][b] ); + pfRxxImag[1] += ( pppfImagBuf[c][n][b] * pppfRealBuf[c][n - 1][b] - pppfRealBuf[c][n][b] * pppfImagBuf[c][n - 1][b] ); + } + + if ( pfRxxReal[0] > 1e-12f ) + { + float fA1Mag; + float fA1Phase; + float fGain2; + float fBitGain2; + int32_t iNumBlocksPerPredCoef = min( iNumBlocks * psPredictionEncoder->iNumSubSets, LCLD_PRED_WIN_LEN ); + + const float fMagScale = ( 2.0f * (float) ( 1 << ( PRED_QUNAT_FILTER_MAG_BITS ) ) + 1.0f ) / M_PI; + const float fInvMagScale = M_PI / ( 2.0f * (float) ( 1 << ( PRED_QUNAT_FILTER_MAG_BITS ) ) + 1.0f ); + const float fPhaseScale = (float) ( 1 << ( PRED_QUANT_FILTER_PHASE_BITS - 1 ) ) / M_PI; + const float fInvPhaseScale = M_PI / (float) ( 1 << ( PRED_QUANT_FILTER_PHASE_BITS - 1 ) ); + + /* Compute filter coefficeints */ + fA1Real = -pfRxxReal[1] / pfRxxReal[0]; + fA1Imag = -pfRxxImag[1] / pfRxxReal[0]; + + /* compute these before quant */ + /* Compute est coding gain based on quantized filter coefficients */ + fGain = 1.0f / ( 1.0f - fA1Real * fA1Real - fA1Imag * fA1Imag ); + fBitGain = 0.65f * log2f( fGain ) * (float) ( iNumBlocksPerPredCoef ) - (float) ( PRED_QUNAT_FILTER_MAG_BITS + PRED_QUANT_FILTER_PHASE_BITS ); // Wrong fix (iNumBlocks-1) + fA1Mag = sqrtf( fA1Real * fA1Real + fA1Imag * fA1Imag ); + fA1Mag = fMagScale * asinf( fA1Mag ); + iA1Mag = (int32_t) ( fA1Mag + 0.5f ); + iA1Mag = ( iA1Mag > PRED_QUANT_FILTER_MAG_MIN ) ? iA1Mag : PRED_QUANT_FILTER_MAG_MIN; + iA1Mag = ( iA1Mag < PRED_QUANT_FILTER_MAG_MAX ) ? iA1Mag : PRED_QUANT_FILTER_MAG_MAX; + fA1Mag = sinf( fInvMagScale * (float) iA1Mag ); + + fA1Phase = atan2f( fA1Imag, fA1Real ); + fA1Phase = fPhaseScale * fA1Phase; + iA1Phase = ( fA1Phase > 0.0f ) ? (int32_t) ( fA1Phase + 0.5f ) : (int32_t) ( fA1Phase - 0.5f ); + iA1Phase = ( iA1Phase > PRED_QUANT_FILTER_PHASE_MIN ) ? iA1Phase : PRED_QUANT_FILTER_PHASE_MIN; + iA1Phase = ( iA1Phase < PRED_QUANT_FILTER_PHASE_MAX ) ? iA1Phase : PRED_QUANT_FILTER_PHASE_MAX; // Is this the correct way to deal with this? should wrap? + fA1Phase = fInvPhaseScale * (float) iA1Phase; + + fA1Real = fA1Mag * cosf( fA1Phase ); + fA1Imag = fA1Mag * sinf( fA1Phase ); + + fGain2 = 1.0f / ( 1.0f - fA1Real * fA1Real - fA1Imag * fA1Imag ); + fBitGain2 = 0.65f * log2f( fGain ) * (float) ( iNumBlocksPerPredCoef ) - (float) ( PRED_QUNAT_FILTER_MAG_BITS + PRED_QUANT_FILTER_PHASE_BITS ); // Wrong fix (iNumBlocks-1) + fGain = ( fGain < fGain2 ) ? fGain : fGain2; + fBitGain = ( fBitGain < fBitGain2 ) ? fBitGain : fBitGain2; + } + else + { + fA1Real = 0.0f; + fA1Imag = 0.0f; + iA1Mag = 0; + iA1Phase = 0; + fGain = -10.0f; // Fix this + } + + pfEstPredBitGain[b] = fBitGain; + psPredictionEncoder->ppiPredBandEnable[c][b] = ( fBitGain > 0.0f ); // Initial prediction enable + psPredictionEncoder->ppfA1Real[c][b] = fA1Real; + psPredictionEncoder->ppfA1Imag[c][b] = fA1Imag; + psPredictionEncoder->ppiA1Mag[c][b] = iA1Mag; + psPredictionEncoder->ppiA1Phase[c][b] = iA1Phase; + } + + { + float fBestCost; + int32_t iPredBands; + float fBitGain; + int32_t iPredChanEnable = 0; + + fBestCost = 0.0; + iPredBands = 0; + fBitGain = -7.0; + for ( b = b0; b < psPredictionEncoder->iMaxNumPredBands; b += bstep ) + { // still getting this decision wrong! + fBitGain -= 1.0; + if ( psPredictionEncoder->ppiPredBandEnable[c][b] == 1 ) + { + fBitGain += pfEstPredBitGain[b]; + } + if ( fBitGain > fBestCost ) + { + fBestCost = fBitGain; + iPredBands = b; + iPredChanEnable = 1; + } + } + + if ( iPredChanEnable == 1 ) + { + for ( b = iPredBands + bstep; b < LCLD_BANDS; b += bstep ) + { + psPredictionEncoder->ppiPredBandEnable[c][b] = 0; + } + activate_bit( &psPredictionEncoder->piPredChanEnable[c], psPredictionEncoder->iSubSetId ); + psPredictionEncoder->piNumPredBands[c] = iPredBands + bstep; + } + else + { + for ( b = b0; b < LCLD_BANDS; b += bstep ) + { + psPredictionEncoder->ppiPredBandEnable[c][b] = 0; + } + deactivate_bit( &psPredictionEncoder->piPredChanEnable[c], psPredictionEncoder->iSubSetId ); + psPredictionEncoder->piNumPredBands[c] = 0; + } + } + } +} + +void ComputePredictors_fx( + PredictionEncoder *psPredictionEncoder, + Word32 ***pppfReal_fx, // Q12? + Word32 ***pppfImag_fx ) // Q12? +{ + Word32 c; + + Word32 b0 = psPredictionEncoder->iSubSetId; + Word32 bstep = psPredictionEncoder->iNumSubSets; + Word32 iNumBlocks = psPredictionEncoder->iNumBlocks; + /*float ***pppfRealBuf; + float ***pppfImagBuf;*/ + Word32 ***pppfRealBuf_fx; + Word32 ***pppfImagBuf_fx; + // float pfEstPredBitGain[LCLD_BANDS] = { 0 }; + Word32 pfEstPredBitGain_fx[LCLD_BANDS] = { 0 }; + + IF( LT_32( iNumBlocks, LCLD_PRED_WIN_LEN ) ) + { + /*pppfRealBuf = psPredictionEncoder->pppfInpBufReal; + pppfImagBuf = psPredictionEncoder->pppfInpBufImag;*/ + pppfRealBuf_fx = psPredictionEncoder->pppfInpBufReal_fx; + move32(); + pppfImagBuf_fx = psPredictionEncoder->pppfInpBufImag_fx; + move32(); + FOR( c = 0; c < psPredictionEncoder->iChannels; c++ ) + { + Word32 n; + FOR( n = 0; n < L_sub( LCLD_PRED_WIN_LEN, iNumBlocks ); n++ ) + { + /*mvr2r(pppfRealBuf[c][n + iNumBlocks], pppfRealBuf[c][n], LCLD_BANDS); + mvr2r(pppfImagBuf[c][n + iNumBlocks], pppfImagBuf[c][n], LCLD_BANDS);*/ + mvl2l( pppfRealBuf_fx[c][n + iNumBlocks], pppfRealBuf_fx[c][n], LCLD_BANDS ); + mvl2l( pppfImagBuf_fx[c][n + iNumBlocks], pppfImagBuf_fx[c][n], LCLD_BANDS ); + } + FOR( n = 0; n < iNumBlocks; n++ ) + { + /*mvr2r(pppfReal[c][n], pppfRealBuf[c][n + LCLD_PRED_WIN_LEN - iNumBlocks], LCLD_BANDS); + mvr2r(pppfImag[c][n], pppfImagBuf[c][n + LCLD_PRED_WIN_LEN - iNumBlocks], LCLD_BANDS);*/ + mvl2l( pppfReal_fx[c][n], pppfRealBuf_fx[c][n + LCLD_PRED_WIN_LEN - iNumBlocks], LCLD_BANDS ); + mvl2l( pppfImag_fx[c][n], pppfImagBuf_fx[c][n + LCLD_PRED_WIN_LEN - iNumBlocks], LCLD_BANDS ); + } + } + } + ELSE + { + /*pppfRealBuf = pppfReal; + pppfImagBuf = pppfImag;*/ + pppfRealBuf_fx = pppfReal_fx; + move32(); + pppfImagBuf_fx = pppfImag_fx; + move32(); + } + + FOR( c = 0; c < psPredictionEncoder->iChannels; c++ ) + { + Word32 b; + FOR( b = b0; b < psPredictionEncoder->iMaxNumPredBands; b += bstep ) + { + Word32 n; + /*float fGain = 0.0; + float fBitGain = 0.0; + float *pfRxxReal; + float *pfRxxImag; + float fA1Real; + float fA1Imag;*/ + Word32 fGain_fx = 0; + Word32 fBitGain_fx = 0; + Word32 *pfRxxReal_fx; + Word32 *pfRxxImag_fx; + Word32 fA1Real_fx; + Word32 fA1Imag_fx; + Word32 L_temp; + Word64 W_temp1, W_temp2; + Word32 iA1Mag; + Word32 iA1Phase; + + /*pfRxxReal = psPredictionEncoder->pfRxxReal; + pfRxxImag = psPredictionEncoder->pfRxxImag;*/ + pfRxxReal_fx = psPredictionEncoder->pfRxxReal_fx; + move32(); + pfRxxImag_fx = psPredictionEncoder->pfRxxImag_fx; + move32(); + /*pfRxxReal[0] = 0.0; + pfRxxImag[0] = 0.0;*/ + pfRxxReal_fx[0] = 0; + move32(); + pfRxxImag_fx[0] = 0; + move32(); + W_temp1 = 0; + FOR( n = 0; n < LCLD_PRED_WIN_LEN; n++ ) + { + // pfRxxReal[0] += (pppfRealBuf[c][n][b] * pppfRealBuf[c][n][b] + pppfImagBuf[c][n][b] * pppfImagBuf[c][n][b]); + W_temp1 = W_add( W_temp1, W_add( W_mult0_32_32( pppfRealBuf_fx[c][n][b], pppfRealBuf_fx[c][n][b] ), + W_mult0_32_32( pppfImagBuf_fx[c][n][b], pppfImagBuf_fx[c][n][b] ) ) ); // Q40 + } + Word16 w_norm1 = W_norm( W_temp1 ); + W_temp1 = W_shr( W_temp1, 32 - w_norm1 ); + pfRxxReal_fx[0] = W_extract_l( W_temp1 ); + /*pfRxxReal[1] = 0.0; + pfRxxImag[1] = 0.0;*/ + pfRxxReal_fx[1] = 0; + move32(); + pfRxxImag_fx[1] = 0; + move32(); + W_temp1 = 0; + W_temp2 = 0; + FOR( n = 1; n < LCLD_PRED_WIN_LEN; n++ ) + { + /*pfRxxReal[1] += (pppfRealBuf[c][n][b] * pppfRealBuf[c][n - 1][b] + pppfImagBuf[c][n][b] * pppfImagBuf[c][n - 1][b]); + pfRxxImag[1] += (pppfImagBuf[c][n][b] * pppfRealBuf[c][n - 1][b] - pppfRealBuf[c][n][b] * pppfImagBuf[c][n - 1][b]);*/ + W_temp1 = W_add( W_temp1, W_add( W_mult0_32_32( pppfRealBuf_fx[c][n][b], pppfRealBuf_fx[c][n - 1][b] ), + W_mult0_32_32( pppfImagBuf_fx[c][n][b], pppfImagBuf_fx[c][n - 1][b] ) ) ); // Q40 + W_temp2 = W_add( W_temp2, W_sub( W_mult0_32_32( pppfImagBuf_fx[c][n][b], pppfRealBuf_fx[c][n - 1][b] ), + W_mult0_32_32( pppfRealBuf_fx[c][n][b], pppfImagBuf_fx[c][n - 1][b] ) ) ); // Q40 + } + + Word16 w_norm2 = W_norm( W_temp1 ); + W_temp1 = W_shr( W_temp1, 32 - w_norm2 ); + pfRxxReal_fx[1] = W_extract_l( W_temp1 ); + Word16 w_norm3 = W_norm( W_temp2 ); + W_temp2 = W_shr( W_temp2, 32 - w_norm3 ); + pfRxxImag_fx[1] = W_extract_l( W_temp2 ); + Word16 final_w_norm = min( w_norm1, min( w_norm2, w_norm3 ) ); + pfRxxReal_fx[0] = L_shr( pfRxxReal_fx[0], w_norm1 - final_w_norm ); // Q8 + final_w_norm + pfRxxReal_fx[1] = L_shr( pfRxxReal_fx[1], w_norm2 - final_w_norm ); // Q8 + final_w_norm + pfRxxImag_fx[1] = L_shr( pfRxxImag_fx[1], w_norm3 - final_w_norm ); // Q8 + final_w_norm + // if (pfRxxReal[0] > 1e-12f) + IF( GT_32( pfRxxReal_fx[0], 0 ) ) + { + /*float fA1Mag; + float fA1Phase; + float fGain2; + float fBitGain2;*/ + Word32 fA1Mag_fx; + Word32 fA1Phase_fx; + Word32 fGain2_fx; + Word32 fBitGain2_fx; + Word32 iNumBlocksPerPredCoef = L_min( iNumBlocks * psPredictionEncoder->iNumSubSets, LCLD_PRED_WIN_LEN ); + const Word32 fMagScale_fx32 = 1452576210; // Q28 + move32(); + // const float fInvMagScale = M_PI / (2.0f * (float)(1 << (PRED_QUNAT_FILTER_MAG_BITS)) + 1.0f); + const Word16 fInvMagScale_fx = 6055; // Q15 + move16(); + // const float fPhaseScale = (float)(1 << (PRED_QUANT_FILTER_PHASE_BITS - 1)) / M_PI + const Word32 fPhaseScale_fx32 = 1367130551; // Q28 + // const float fInvPhaseScale = M_PI / (float)(1 << (PRED_QUANT_FILTER_PHASE_BITS - 1)); + const Word16 fInvPhaseScale_fx = 6434; // Q15 + move16(); + + /* Compute filter coefficeints */ + // fA1Real = -pfRxxReal[1] / pfRxxReal[0]; + Word16 sf_r, sf_i; + fA1Real_fx = BASOP_Util_Divide3232_Scale( -pfRxxReal_fx[1], pfRxxReal_fx[0], &sf_r ); + // fA1Imag = -pfRxxImag[1] / pfRxxReal[0]; + fA1Imag_fx = BASOP_Util_Divide3232_Scale( -pfRxxImag_fx[1], pfRxxReal_fx[0], &sf_i ); + + IF( GT_16( sf_r, sf_i ) ) + { + fA1Imag_fx = L_shr( fA1Imag_fx, sub( sf_r, sf_i ) ); + sf_i = sf_r; + move16(); + } + ELSE IF( LT_16( sf_r, sf_i ) ) + { + fA1Real_fx = L_shr( fA1Real_fx, sub( sf_i, sf_r ) ); + sf_r = sf_i; + move16(); + } + Word32 L_temp_1; + IF( LT_16( sf_r, -7 ) ) + { + fA1Real_fx = L_shr( fA1Real_fx, sub( -8, sf_r ) ); + fA1Imag_fx = L_shr( fA1Imag_fx, sub( -8, sf_i ) ); + sf_r = sf_i = -8; + move16(); + L_temp_1 = MAX_32; + move32(); + } + ELSE + { + L_temp_1 = L_shl( 1, sub( 15, shl( sf_r, 1 ) ) ); + } + /* compute these before quant */ + /* Compute est coding gain based on quantized filter coefficients */ + // fGain = 1.0f / (1.0f - fA1Real * fA1Real - fA1Imag * fA1Imag); + L_temp = L_sub( L_sub( L_temp_1, mult_r( extract_l( fA1Real_fx ), extract_l( fA1Real_fx ) ) ), mult_r( extract_l( fA1Imag_fx ), extract_l( fA1Imag_fx ) ) ); + Word16 exp = norm_l( L_temp ); + IF( LT_16( exp, 16 ) ) + { + L_temp = L_shr( L_temp, sub( 16, exp ) ); + exp = add( sub( 16, exp ), shl( sf_r, 1 ) ); + } + else + { + exp = shl( sf_r, 1 ); + } + // fGain_fx = sub(sub(32767, extract_h(Mpy_32_32(fA1Real_fx, fA1Real_fx))), extract_h(Mpy_32_32(fA1Imag_fx, fA1Imag_fx))); + // fGain_fx = extract_l(L_shl(L_temp, 2*sf_r)); + fGain_fx = extract_l( L_temp ); + fGain_fx = max( 1, fGain_fx ); + fGain_fx = Inv16( extract_l( fGain_fx ), &exp ); // Q15 - exp + // fGain_fx = L_shl(fGain_fx, exp); //Q15 + // fBitGain = 0.65f * log2f(fGain) * (float)(iNumBlocksPerPredCoef)-(float)(PRED_QUNAT_FILTER_MAG_BITS + PRED_QUANT_FILTER_PHASE_BITS); // Wrong fix (iNumBlocks-1) + // fBitGain_fx = L_sub(L_mult0(L_shr(L_mult0(21299, L_shr(L_add(BASOP_Util_Log2(fGain_fx), 335544320), 10)), 15), (Word16)iNumBlocksPerPredCoef), 262144); // Wrong fix (iNumBlocks-1) Q15 + W_temp1 = W_mult0_32_32( L_shr( Mpy_32_32( 1395864371, L_add( BASOP_Util_Log2( fGain_fx ), L_shl( add( 16, exp ), 25 ) ) ), 10 ), iNumBlocksPerPredCoef ); + Word16 w_norm4 = W_norm( W_temp1 ); + IF( LT_16( w_norm4, 32 ) ) + { + W_temp1 = W_shr( W_temp1, 32 - w_norm4 ); + w_norm4 = sub( 32, w_norm4 ); + } + ELSE + { + w_norm4 = 0; + move16(); + } + fBitGain_fx = L_sub( W_extract_l( W_temp1 ), L_shr( 262144, w_norm4 ) ); // Wrong fix (iNumBlocks-1) Q15 + // fA1Mag = sqrtf(fA1Real * fA1Real + fA1Imag * fA1Imag); + fA1Mag_fx = L_add( mult_r( extract_l( fA1Real_fx ), extract_l( fA1Real_fx ) ), mult_r( extract_l( fA1Imag_fx ), extract_l( fA1Imag_fx ) ) ); // Q15 - 2*sf_r + // fA1Mag = fMagScale * asinf(fA1Mag); + exp = 0; + move16(); + L_temp = L_sub( L_temp_1, fA1Mag_fx ); // Q15 - 2*sf_r + IF( NE_32( L_temp, 0 ) ) + { + fA1Mag_fx = BASOP_Util_Divide3232_Scale( fA1Mag_fx, L_temp, &exp ); + } + ELSE + { + fA1Mag_fx = 0; + move32(); + exp = 0; + move16(); + } + fA1Mag_fx = L_shl( fA1Mag_fx, 16 ); + IF( fA1Mag_fx > 0 ) + { + fA1Mag_fx = Sqrt32( fA1Mag_fx, &exp ); + } + ELSE + { + fA1Mag_fx = 0; + move32(); + exp = 0; + move16(); + } + + fA1Mag_fx = BASOP_util_atan( L_shr_r_sat( fA1Mag_fx, 6 - exp ) ); // Q14 + fA1Mag_fx = Mpy_32_16_1( fMagScale_fx32, extract_l( fA1Mag_fx ) ); // Q27 + + // iA1Mag = (int32_t)(fA1Mag + 0.5f); + IF( GE_32( fA1Mag_fx, 0 ) ) + { + iA1Mag = L_shr( L_add( fA1Mag_fx, 67108864 ), Q27 ); // Q27 -> Q0 + } + ELSE + { + fA1Mag_fx = L_negate( fA1Mag_fx ); + iA1Mag = L_shr( L_add( fA1Mag_fx, 67108864 ), Q27 ); // Q27 -> Q0 + iA1Mag = L_negate( iA1Mag ); + } + iA1Mag = ( iA1Mag > PRED_QUANT_FILTER_MAG_MIN ) ? iA1Mag : PRED_QUANT_FILTER_MAG_MIN; + iA1Mag = ( iA1Mag < PRED_QUANT_FILTER_MAG_MAX ) ? iA1Mag : PRED_QUANT_FILTER_MAG_MAX; + // fA1Mag = sinf(fInvMagScale * (float)iA1Mag); + fA1Mag_fx = L_deposit_l( shr( getSinWord16( extract_l( L_shr( L_mult0( extract_l( fInvMagScale_fx ), extract_l( iA1Mag ) ), 2 ) ) ), 1 ) ); // Q14 + + // fA1Phase = atan2f(fA1Imag, fA1Real); + fA1Phase_fx = BASOP_util_atan2( fA1Imag_fx, fA1Real_fx, 0 ); // Q13 + // fA1Phase = fPhaseScale * fA1Phase; + fA1Phase_fx = Mpy_32_16_1( fPhaseScale_fx32, extract_l( fA1Phase_fx ) ); // Q26 + // iA1Phase = (fA1Phase > 0.0f) ? (int32_t)(fA1Phase + 0.5f) : (int32_t)(fA1Phase - 0.5f); + // iA1Phase = (fA1Phase_fx > 0) ? shr(add(fA1Phase_fx, 512), 10) : shr(sub(fA1Phase_fx, 512), 10); + IF( GE_32( fA1Phase_fx, 0 ) ) + { + iA1Phase = L_shr( L_add( fA1Phase_fx, 33554432 ), Q26 ); // Q26 -> Q0 + } + ELSE + { + fA1Phase_fx = L_negate( fA1Phase_fx ); + iA1Phase = L_shr( L_add( fA1Phase_fx, 33554432 ), Q26 ); // Q26 -> Q0 + iA1Phase = L_negate( iA1Phase ); + } + iA1Phase = ( iA1Phase > PRED_QUANT_FILTER_PHASE_MIN ) ? iA1Phase : PRED_QUANT_FILTER_PHASE_MIN; + iA1Phase = ( iA1Phase < PRED_QUANT_FILTER_PHASE_MAX ) ? iA1Phase : PRED_QUANT_FILTER_PHASE_MAX; // Is this the correct way to deal with this? should wrap? + // fA1Phase = fInvPhaseScale * (float)iA1Phase; + L_temp = L_mult0( fInvPhaseScale_fx, (Word16) iA1Phase ); // Q15 + + // fA1Real = fA1Mag * cosf(fA1Phase); + fA1Real_fx = L_mult0( extract_l( fA1Mag_fx ), getCosWord16( extract_l( L_shr( L_temp, 2 ) ) ) ); // Q28 + // fA1Imag = fA1Mag * sinf(fA1Phase); + fA1Imag_fx = L_mult0( extract_l( fA1Mag_fx ), shr( getSinWord16( extract_l( L_shr( L_temp, 2 ) ) ), 1 ) ); // Q28 + + // fGain2 = 1.0f / (1.0f - fA1Real * fA1Real - fA1Imag * fA1Imag); + exp = 0; + fGain2_fx = sub( sub( 32767, mult_r( extract_l( L_shr( fA1Real_fx, 13 ) ), extract_l( L_shr( fA1Real_fx, 13 ) ) ) ), mult_r( extract_l( L_shr( fA1Imag_fx, 13 ) ), extract_l( L_shr( fA1Imag_fx, 13 ) ) ) ); + fGain2_fx = L_max( 1, fGain2_fx ); + fGain2_fx = Inv16( extract_l( fGain2_fx ), &exp ); // Q15-exp + fGain2_fx = L_shl( fGain2_fx, exp ); + // fBitGain2 = 0.65f * log2f(fGain) * (float)(iNumBlocksPerPredCoef)-(float)(PRED_QUNAT_FILTER_MAG_BITS + PRED_QUANT_FILTER_PHASE_BITS); // Wrong fix (iNumBlocks-1) + // fBitGain2_fx = L_sub(L_mult0(L_shr(L_mult0(21299, L_shr(L_add(BASOP_Util_Log2(fGain_fx), 335544320), 10)), 15), (Word16)iNumBlocksPerPredCoef), 262144); // Wrong fix (iNumBlocks-1) Q15 + fBitGain2_fx = L_sub( W_extract_l( W_temp1 ), L_shr( 262144, w_norm4 ) ); // Wrong fix (iNumBlocks-1) Q15 + // fGain = (fGain < fGain2) ? fGain : fGain2; + fGain_fx = ( fGain_fx < fGain2_fx ) ? fGain_fx : fGain2_fx; + // fBitGain = (fBitGain < fBitGain2) ? fBitGain : fBitGain2; + fBitGain_fx = ( fBitGain_fx < fBitGain2_fx ) ? fBitGain_fx : fBitGain2_fx; + } + ELSE + { + /*fA1Real = 0.0f; + fA1Imag = 0.0f;*/ + fA1Real_fx = 0; + move32(); + fA1Imag_fx = 0; + move32(); + iA1Mag = 0; + move32(); + iA1Phase = 0; + move32(); + // fGain = -10.0f; // Fix this + fGain_fx = -327680; // Fix this + move32(); + } + + // pfEstPredBitGain[b] = fBitGain; + // psPredictionEncoder->ppiPredBandEnable[c][b] = (fBitGain > 0.0f); // Initial prediction enable + // psPredictionEncoder->ppfA1Real[c][b] = fA1Real; + // psPredictionEncoder->ppfA1Imag[c][b] = fA1Imag; + pfEstPredBitGain_fx[b] = fBitGain_fx; // Q15 + move32(); + // printf("\n %d %d %f %f %f ", iA1Mag, iA1Phase, (float)fBitGain_fx / 32768, (float)fA1Real_fx / ONE_IN_Q28, (float)fA1Imag_fx / ONE_IN_Q28); + psPredictionEncoder->ppiPredBandEnable[c][b] = ( fBitGain_fx > 0 ); // Initial prediction enable + psPredictionEncoder->ppfA1Real_fx[c][b] = L_shl( fA1Real_fx, Q3 ); // Q31 + psPredictionEncoder->ppfA1Imag_fx[c][b] = L_shl( fA1Imag_fx, Q3 ); // Q31 + psPredictionEncoder->ppiA1Mag[c][b] = iA1Mag; + move32(); + psPredictionEncoder->ppiA1Phase[c][b] = iA1Phase; + move32(); + } + + { + // float fBestCost; + Word32 fBestCost_fx; + Word32 iPredBands; + // float fBitGain; + Word32 fBitGain_fx; + Word32 iPredChanEnable = 0; + + // fBestCost = 0.0; + fBestCost_fx = 0; + move32(); + iPredBands = 0; + move32(); + // fBitGain = -7.0; + fBitGain_fx = -229376; // Q15 + move32(); + FOR( b = b0; b < psPredictionEncoder->iMaxNumPredBands; b += bstep ) + { // still getting this decision wrong! + // fBitGain -= 1.0; + fBitGain_fx = L_sub( fBitGain_fx, 32768 ); + IF( EQ_32( psPredictionEncoder->ppiPredBandEnable[c][b], 1 ) ) + { + // fBitGain += pfEstPredBitGain[b]; + fBitGain_fx = L_add( fBitGain_fx, pfEstPredBitGain_fx[b] ); + } + // if (fBitGain > fBestCost) + IF( GT_32( fBitGain_fx, fBestCost_fx ) ) + { + fBestCost_fx = fBitGain_fx; + iPredBands = b; + iPredChanEnable = 1; + } + } + + IF( EQ_32( iPredChanEnable, 1 ) ) + { + FOR( b = iPredBands + bstep; b < LCLD_BANDS; b += bstep ) + { + psPredictionEncoder->ppiPredBandEnable[c][b] = 0; + } + activate_bit( &psPredictionEncoder->piPredChanEnable[c], psPredictionEncoder->iSubSetId ); + psPredictionEncoder->piNumPredBands[c] = iPredBands + bstep; + } + ELSE + { + FOR( b = b0; b < LCLD_BANDS; b += bstep ) + { + psPredictionEncoder->ppiPredBandEnable[c][b] = 0; + } + deactivate_bit( &psPredictionEncoder->piPredChanEnable[c], psPredictionEncoder->iSubSetId ); + psPredictionEncoder->piNumPredBands[c] = 0; + move32(); + } + } + } +} + +/*-------------------------------------------------------------------* + * Function ApplyForwardPredictors() + * + * + *-------------------------------------------------------------------*/ + +/*-------------------------------------------------------------------* + * Function WritePredictors() + * + * + *-------------------------------------------------------------------*/ + +Word32 WritePredictors( + PredictionEncoder *psPredictionEncoder, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word32 iBitsWritten = 0; + Word32 c; + Word32 iNumSubSets = psPredictionEncoder->iNumSubSets; + Word32 iSubSetId = psPredictionEncoder->iSubSetId; + Word32 iNumPredBandBits = 6; + const Word16 iSubSetBits = ( GT_16( LCLD_MAX_NUM_PRED_SUBSETS, 4 ) ? 3 : 2 ); + move32(); + move32(); + move16(); + + /* number of subsets */ + ISAR_SPLIT_REND_BITStream_write_int32( pBits, L_sub( iNumSubSets, 1 ), iSubSetBits ); /* otherwise use default */ + iBitsWritten = L_add( iBitsWritten, iSubSetBits ); + + IF( GT_32( iNumSubSets, 1 ) ) + { + /* write current subset */ + ISAR_SPLIT_REND_BITStream_write_int32( pBits, iSubSetId, iSubSetBits ); + iBitsWritten = L_add( iBitsWritten, iSubSetBits ); + iNumPredBandBits = ( GE_32( iNumSubSets, 4 ) ? 4 : 5 ); + move32(); + } + + FOR( c = 0; c < psPredictionEncoder->iChannels; c++ ) + { + Word32 b; + Word32 b0 = iSubSetId; + move32(); + + ISAR_SPLIT_REND_BITStream_write_int32( pBits, psPredictionEncoder->piPredChanEnable[c], iNumSubSets ); + iBitsWritten = L_add( iBitsWritten, iNumSubSets ); + + IF( get_bit( psPredictionEncoder->piPredChanEnable[c], iSubSetId ) ) + { + Word32 iNumPredBands = L_sub( psPredictionEncoder->piNumPredBands[c], b0 ) / iNumSubSets; + + ISAR_SPLIT_REND_BITStream_write_int32( pBits, iNumPredBands, iNumPredBandBits ); + iBitsWritten = L_add( iBitsWritten, iNumPredBandBits ); + + FOR( b = b0; b < psPredictionEncoder->piNumPredBands[c]; b += iNumSubSets ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, psPredictionEncoder->ppiPredBandEnable[c][b], 1 ); + iBitsWritten = L_add( iBitsWritten, 1 ); + + IF( EQ_32( psPredictionEncoder->ppiPredBandEnable[c][b], 1 ) ) + { + Word32 iA1Mag; + Word32 iA1Phase; + + iA1Mag = psPredictionEncoder->ppiA1Mag[c][b]; + move32(); + iA1Phase = L_sub( psPredictionEncoder->ppiA1Phase[c][b], PRED_QUANT_FILTER_PHASE_MIN ); + + ISAR_SPLIT_REND_BITStream_write_int32( pBits, iA1Mag, PRED_QUNAT_FILTER_MAG_BITS ); + iBitsWritten = L_add( iBitsWritten, PRED_QUNAT_FILTER_MAG_BITS ); + + ISAR_SPLIT_REND_BITStream_write_int32( pBits, iA1Phase, PRED_QUANT_FILTER_PHASE_BITS ); + iBitsWritten = L_add( iBitsWritten, PRED_QUANT_FILTER_PHASE_BITS ); + } + } + } + } + + return iBitsWritten; +} diff --git a/lib_isar/isar_RMSEnvGrouping.c b/lib_isar/isar_RMSEnvGrouping.c new file mode 100644 index 0000000000000000000000000000000000000000..9a7b2ba54ed8aa6fc838b0d074e15ea1433dffab --- /dev/null +++ b/lib_isar/isar_RMSEnvGrouping.c @@ -0,0 +1,962 @@ +/****************************************************************************************************** + + (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. + +*******************************************************************************************************/ + +/* Double check cost function calculation */ + +#include +#include "options.h" +#include +#include "prot_fx.h" +#include "isar_lcld_prot.h" +#include "isar_lcld_rom_tables.h" +#include "wmc_auto.h" +#include "prot_fx.h" +#include "basop_util.h" +#include "enh64.h" +Word32 Inv_grp_length[17] = { + // Q31 + 0, + 2147483647, + 1073741823, + 715827882, + 536870911, + 429496729, + 357913941, + 306783378, + 268435455, + 238609294, + 214748364, + 195225786, + 178956970, + 165191049, + 153391689, + 143165576, + 134217727, + +}; + +/*-------------------------------------------------------------------* + * Local ROM tables + * + * + *-------------------------------------------------------------------*/ +static const Word32 c_afThreshQuiet48_fx[23] = { + // Q23 + -705191424, + -705191424, + -705191424, + -705191424, + -705191424, + -705191424, + -705191424, + -705191424, + -703021824, + -694920256, + -685375488, + -662531840, + -646432768, + -636262784, + -627448000, + -618652544, + -598245120, + -575579520, + -550540736, + -508787360, + -264583456, + -161516096, + -158042848, +}; +static const Word32 c_fiDefaultTheta48_fx[MAX_BANDS_48] = { + // Q31 + 939524096, + 939524096, + 805306368, + 671088640, + 671088640, + 536870912, + 536870912, + 536870912, + 536870912, + 536870912, + 536870912, + 536870912, + 536870912, + 536870912, + 536870912, + 536870912, + 536870912, + 536870912, + 536870912, + 536870912, + 536870912, + 536870912, + 536870912, +}; +typedef struct GMNODE +{ + int32_t iGroupStart; + int32_t iGroupLength; + Word32 *pfMergedEnergydB_fx; + int32_t *piQRMSEnvelope; + + int32_t iGroupRMSEnvelopeCost; + Word32 fGroupSNRPenalty_fx; + Word16 fGroupSNRPenalty_exp; + struct GMNODE *psNext; +} GMNode; + +struct RMS_ENVELOPE_GROUPING +{ + int32_t iNumBlocks; + int32_t iMaxGroups; + Word32 **ppfWeight_man; + Word16 **ppfWeight_exp; + Word32 **ppfBandEnergy_man; + Word16 **ppfBandEnergy_exp; + Word32 **ppfBandEnergydB_fx; + // Word32 **ppfWeight_fx; + GMNode *psGMNodes; +}; + + +/*-------------------------------------------------------------------* + * Function CreateRMSEnvelopeGrouping() + * + * + *-------------------------------------------------------------------*/ + +RMSEnvelopeGrouping *CreateRMSEnvelopeGrouping( + const Word32 iNumBlocks ) +{ + Word32 n; + + RMSEnvelopeGrouping *psRMSEnvelopeGrouping; + + psRMSEnvelopeGrouping = (RMSEnvelopeGrouping *) malloc( sizeof( RMSEnvelopeGrouping ) ); + psRMSEnvelopeGrouping->iNumBlocks = iNumBlocks; + + psRMSEnvelopeGrouping->iMaxGroups = iNumBlocks >> 1; + psRMSEnvelopeGrouping->ppfBandEnergy_man = (Word32 **) malloc( psRMSEnvelopeGrouping->iNumBlocks * sizeof( Word32 * ) ); + psRMSEnvelopeGrouping->ppfBandEnergy_exp = (Word16 **) malloc( psRMSEnvelopeGrouping->iNumBlocks * sizeof( Word16 * ) ); + psRMSEnvelopeGrouping->ppfBandEnergydB_fx = (Word32 **) malloc( psRMSEnvelopeGrouping->iNumBlocks * sizeof( Word32 * ) ); + psRMSEnvelopeGrouping->ppfWeight_man = (Word32 **) malloc( psRMSEnvelopeGrouping->iNumBlocks * sizeof( Word32 * ) ); + psRMSEnvelopeGrouping->ppfWeight_exp = (Word16 **) malloc( psRMSEnvelopeGrouping->iNumBlocks * sizeof( Word16 * ) ); + + for ( n = 0; n < psRMSEnvelopeGrouping->iNumBlocks; n++ ) + { + psRMSEnvelopeGrouping->ppfBandEnergy_man[n] = (Word32 *) malloc( MAX_BANDS * 2 * sizeof( Word32 ) ); /* 2 for stereo joint group calc */ + psRMSEnvelopeGrouping->ppfBandEnergy_exp[n] = (Word16 *) malloc( MAX_BANDS * 2 * sizeof( Word16 ) ); /* 2 for stereo joint group calc */ + psRMSEnvelopeGrouping->ppfBandEnergydB_fx[n] = (Word32 *) malloc( MAX_BANDS * 2 * sizeof( Word32 ) ); + psRMSEnvelopeGrouping->ppfWeight_man[n] = (Word32 *) malloc( MAX_BANDS * 2 * sizeof( Word32 ) ); + psRMSEnvelopeGrouping->ppfWeight_exp[n] = (Word16 *) malloc( MAX_BANDS * 2 * sizeof( Word16 ) ); + } + + psRMSEnvelopeGrouping->psGMNodes = (GMNode *) malloc( psRMSEnvelopeGrouping->iNumBlocks * sizeof( GMNode ) ); + for ( n = 0; n < psRMSEnvelopeGrouping->iNumBlocks; n++ ) + { + psRMSEnvelopeGrouping->psGMNodes[n].pfMergedEnergydB_fx = (Word32 *) malloc( MAX_BANDS * 2 * sizeof( float ) ); + psRMSEnvelopeGrouping->psGMNodes[n].piQRMSEnvelope = (Word32 *) malloc( MAX_BANDS * 2 * sizeof( int32_t ) ); + psRMSEnvelopeGrouping->psGMNodes[n].iGroupRMSEnvelopeCost = -1; + psRMSEnvelopeGrouping->psGMNodes[n].fGroupSNRPenalty_fx = L_negate( ONE_IN_Q30 ); + psRMSEnvelopeGrouping->psGMNodes[n].fGroupSNRPenalty_exp = 1; + } + + return psRMSEnvelopeGrouping; +} + + +/*-------------------------------------------------------------------* + * Function DeleteRMSEnvelopeGrouping() + * + * + *-------------------------------------------------------------------*/ + +void DeleteRMSEnvelopeGrouping( + RMSEnvelopeGrouping *psRMSEnvelopeGrouping ) +{ + int32_t n; + + for ( n = 0; n < psRMSEnvelopeGrouping->iNumBlocks; n++ ) + { + free( psRMSEnvelopeGrouping->ppfBandEnergy_man[n] ); + free( psRMSEnvelopeGrouping->ppfBandEnergy_exp[n] ); + free( psRMSEnvelopeGrouping->ppfBandEnergydB_fx[n] ); + free( psRMSEnvelopeGrouping->ppfWeight_man[n] ); + free( psRMSEnvelopeGrouping->ppfWeight_exp[n] ); + } + free( psRMSEnvelopeGrouping->ppfBandEnergy_man ); + free( psRMSEnvelopeGrouping->ppfBandEnergy_exp ); + free( psRMSEnvelopeGrouping->ppfBandEnergydB_fx ); + free( psRMSEnvelopeGrouping->ppfWeight_man ); + free( psRMSEnvelopeGrouping->ppfWeight_exp ); + + + for ( n = 0; n < psRMSEnvelopeGrouping->iNumBlocks; n++ ) + { + free( psRMSEnvelopeGrouping->psGMNodes[n].pfMergedEnergydB_fx ); + free( psRMSEnvelopeGrouping->psGMNodes[n].piQRMSEnvelope ); + } + free( psRMSEnvelopeGrouping->psGMNodes ); + + free( psRMSEnvelopeGrouping ); + + return; +} + + +/*-------------------------------------------------------------------* + * Function ComputeBandEnergy() + * + * + *-------------------------------------------------------------------*/ +static void ComputeBandEnergy( + const Word32 iChannels, + const Word32 iNumBlocks, + const Word32 iNumBands, + const Word32 *piBandwidths, + Word32 ***pppfReal_fx, + Word32 ***pppfImag_fx, + Word32 **ppfBandEnergy_man, + Word16 **ppfBandEnergy_exp, + Word32 **ppfBandEnergydB_fx, + Word32 **ppfWeight_man, + Word16 **ppfWeight_exp, + Word16 q_final ) +{ + + Word32 n; + Word32 constant = 1616142483; // Q29 of(1/log2(10))*10 + Word32 const_comp3, const_comp1; + Word16 exp3 = 0, exp1 = 0, Flag1, Flag2, Flag3; + Word16 div_exp; + /*For 0.33f*/ + const_comp3 = 1417339264; + move32(); + exp3 = -1; + move16(); + // f2me( 0.33, &const_comp3, &exp3 );// + // f2me( 1.0, &const_comp1, &exp1 );// + /*For 1.0f*/ + Word32 mul_32; + Word16 mul_exp; + const_comp1 = 1073741824; + move32(); + exp1 = 1; + move16(); + FOR( n = 0; n < iChannels; n++ ) + { + Word32 k; + Word32 iChanOffset; + + iChanOffset = L_mult0( extract_l( n ), extract_l( iNumBands ) ); + FOR( k = 0; k < iNumBlocks; k++ ) + { + Word32 b; + Word32 iFBOffset; + Word32 fMaxWeight_fx = 0; + move32(); + Word16 fMaxWeight_exp = 0; + move16(); + iFBOffset = 0; + move32(); + FOR( b = 0; b < iNumBands; b++ ) + { + Word32 m; + Word16 fEnergy_exp; + Word32 fEnergy_fx, fWeight_temp; + Word16 shift_value; + Word32 fEnergy_log_fx, fEnergy_log_fx1; + fEnergy_exp = 0; + move16(); + /*For 1e-12f in Q63*/ + Word32 fWeight_fx; + Word64 Wmult_value; + Word16 exp_pow = 0; + move16(); + Word16 guard_bits = find_guarded_bits_fx( piBandwidths[b] + 1 ); + // fEnergy_f64 = W_shr( fEnergy_f64, ( 63 - ( 2 * ( q_final - guard_bits ) + 1 ) ) ); + fEnergy_fx = 1180591616; + fEnergy_exp = -39; + FOR( m = 0; m < piBandwidths[b]; m++ ) + { + Wmult_value = W_add( W_mult_32_32( L_shr( pppfReal_fx[n][k][iFBOffset], guard_bits ), L_shr( pppfReal_fx[n][k][iFBOffset], guard_bits ) ), W_mult_32_32( L_shr( pppfImag_fx[n][k][iFBOffset], guard_bits ), L_shr( pppfImag_fx[n][k][iFBOffset], guard_bits ) ) ); + shift_value = W_norm( Wmult_value ); + mul_32 = W_extract_h( W_shl( Wmult_value, shift_value ) ); + mul_exp = 31 - ( 2 * ( q_final - guard_bits ) + 1 + shift_value - 32 ); + fEnergy_fx = BASOP_Util_Add_Mant32Exp( fEnergy_fx, fEnergy_exp, mul_32, mul_exp, &fEnergy_exp ); // Some large number to prevent clipping + iFBOffset++; + } + IF( EQ_32( fEnergy_fx, 0 ) ) + { + // f2me( 1e-12f, &fEnergy_fx, &fEnergy_exp ); // + fEnergy_fx = 1180591616; + fEnergy_exp = -39; + fEnergy_fx = Mpy_32_32( fEnergy_fx, Inv_grp_length[piBandwidths[b]] ); // Correction removed normalization by 2 + ppfBandEnergy_man[k][iChanOffset + b] = fEnergy_fx; + move32(); + ppfBandEnergy_exp[k][iChanOffset + b] = fEnergy_exp; + move16(); + fEnergy_fx = Mpy_32_32( fEnergy_fx, Inv_grp_length[piBandwidths[b]] ); // Correction removed normalization by 2 + ppfBandEnergy_man[k][iChanOffset + b] = fEnergy_fx; + move32(); + ppfBandEnergy_exp[k][iChanOffset + b] = fEnergy_exp; + move16(); + fEnergy_log_fx1 = -1006632960; // Q23 + fWeight_fx = 403727488; // Q31 + exp_pow = 0; + } + ELSE + { + fEnergy_fx = Mpy_32_32( fEnergy_fx, Inv_grp_length[piBandwidths[b]] ); // Correction removed normalization by 2 + ppfBandEnergy_man[k][iChanOffset + b] = fEnergy_fx; + move32(); + ppfBandEnergy_exp[k][iChanOffset + b] = fEnergy_exp; + move16(); + fEnergy_fx = BASOP_Util_Log2( fEnergy_fx ); + move32(); + fEnergy_log_fx = L_add( fEnergy_fx, L_shl( L_deposit_l( fEnergy_exp ), WORD32_BITS - 1 - LD_DATA_SCALE ) ); /*Q25*/ // log2f( fEnergy ) + fEnergy_log_fx1 = Mpy_32_32( fEnergy_log_fx, constant ); + fEnergy_log_fx = L_sub( fEnergy_log_fx1, c_afThreshQuiet48_fx[b] ); // Q23 of ( 10.0f * log10f( fEnergy ) - c_afThreshQuiet48[b] ) ) + fWeight_fx = Mpy_32_32( 48509336, fEnergy_log_fx ); // 0.0068f*3.3219 in Q31, result in Q23 + fWeight_temp = BASOP_util_Pow2( fWeight_fx, 8, &exp_pow ); + fWeight_fx = Mpy_32_32( 708669604, fWeight_temp ); // 708669604 = Q31 0f 0.33 + } + Flag1 = BASOP_Util_Cmp_Mant32Exp( fWeight_fx, exp_pow, const_comp3, exp3 ); + IF( NE_16( Flag1, 1 ) ) + { + fWeight_fx = const_comp3; + move32(); + exp_pow = exp3; + move16(); + } + Flag2 = BASOP_Util_Cmp_Mant32Exp( const_comp1, exp1, fWeight_fx, exp_pow ); + IF( NE_16( Flag2, 1 ) ) + { + fWeight_fx = const_comp1; + move32(); + exp_pow = exp1; + move16(); + } + Flag3 = BASOP_Util_Cmp_Mant32Exp( fMaxWeight_fx, fMaxWeight_exp, fWeight_fx, exp_pow ); + IF( NE_16( Flag3, 1 ) ) + { + fMaxWeight_fx = fWeight_fx; + move32(); + fMaxWeight_exp = exp_pow; + move16(); + } +#ifdef APPLY_TEMPORAL_SMOOTHING + if ( k > 0 ) + { + float fSmoothEnergy; + fSmoothEnergy = 0.7f * ppfBandEnergy[k - 1][iChanOffset + b] + 0.3f * fEnergy; + + fEnergy = ( fEnergy > fSmoothEnergy ) ? fEnergy : fSmoothEnergy; + } +#endif + ppfWeight_man[k][iChanOffset + b] = fWeight_fx; + ppfWeight_exp[k][iChanOffset + b] = exp_pow; + ppfBandEnergydB_fx[k][iChanOffset + b] = fEnergy_log_fx1; // Q23 + } + FOR( b = 0; b < iNumBands; b++ ) + { + ppfWeight_man[k][iChanOffset + b] = L_deposit_h( BASOP_Util_Divide3232_Scale( ppfWeight_man[k][iChanOffset + b], fMaxWeight_fx, &div_exp ) ); + ppfWeight_exp[k][iChanOffset + b] = div_exp + ppfWeight_exp[k][iChanOffset + b] - fMaxWeight_exp; + } + } + } + /* fclose( fp ); + fclose( fp1 );*/ + return; +} +/*-------------------------------------------------------------------* + * Function ComputeMergeRMS() + * + * + *-------------------------------------------------------------------*/ +static void ComputeMergeRMS( + const Word32 iNumBands, + const Word32 iStartBlock, + const Word32 iGroupLength, + Word32 *pfMergedEnergydB, + Word32 *piQRMSEnvelope, + Word32 **ppfBandEnergy_man, + Word16 **ppfBandEnergy_exp ) +{ + Word32 b; + /* FILE *fp = fopen( "float_fGroupEnergy.txt","ab+" ); + FILE *fp1 = fopen( "fixed_fGroupEnergy.txt","ab+" );*/ + Word32 constant = 1616142483; // Q29 of(1/log2(10))*10 // Note epsolon was added when computing BandEnergy; + move32(); + Word32 fGroupEnergy32_fx; + + FOR( b = 0; b < iNumBands; b++ ) + { + Word32 n; + Word32 fGroupEnergy_fx = 0; + move32(); + Word16 fGroupEnergy_exp = 0; + move16(); + Word32 fRMSEnvelope_fx; + Word32 iQRMSEnvelope_fx; + FOR( n = iStartBlock; n < ( iStartBlock + iGroupLength ); n++ ) + { + fGroupEnergy_fx = BASOP_Util_Add_Mant32Exp( ppfBandEnergy_man[n][b], ppfBandEnergy_exp[n][b], fGroupEnergy_fx, fGroupEnergy_exp, &fGroupEnergy_exp ); + } + fGroupEnergy_fx = Mpy_32_32( fGroupEnergy_fx, Inv_grp_length[iGroupLength] ); // Division by iGroupLength + move32(); + IF( NE_32( fGroupEnergy_fx, 0 ) ) + { + fRMSEnvelope_fx = BASOP_Util_Log2( fGroupEnergy_fx ); + move32(); + fRMSEnvelope_fx = L_add( fRMSEnvelope_fx, L_shl( L_deposit_l( fGroupEnergy_exp ), WORD32_BITS - 1 - LD_DATA_SCALE ) ); /*Q25*/ + } + ELSE + { + fRMSEnvelope_fx = 0; + fGroupEnergy_exp = 0; + } + iQRMSEnvelope_fx = ( fRMSEnvelope_fx > 0 ) ? L_add( fRMSEnvelope_fx, ONE_IN_Q24 ) : L_negate( L_add( L_negate( fRMSEnvelope_fx ), ONE_IN_Q24 ) ); + iQRMSEnvelope_fx = L_shr( iQRMSEnvelope_fx, 25 ); + + fGroupEnergy32_fx = fRMSEnvelope_fx; /*Q25*/ // BASOP_Util_Log2( fGroupEnergy_fx ); + fGroupEnergy32_fx = Mpy_32_32( fGroupEnergy32_fx, constant ); // Q23 + pfMergedEnergydB[b] = fGroupEnergy32_fx; // Q23 + piQRMSEnvelope[b] = iQRMSEnvelope_fx; // Q25 + } + return; +} +/*-------------------------------------------------------------------* + * Function ComputeRMSEnvelopeBits() + * + * + *-------------------------------------------------------------------*/ +static Word32 ComputeRMSEnvelopeBits( + const Word32 iChannels, + const Word32 iNumBands, + const Word32 *piQRMSEnevelope ) +{ + Word32 n; + Word32 iRMSEnvelopeBits = 0; + move32(); + Word32 iChanOffset = 0; + move32(); + + FOR( n = 0; n < iChannels; n++ ) + { + Word32 b; + Word32 iLastRMSVal; + + iRMSEnvelopeBits = L_add( iRMSEnvelopeBits, ENV0_BITS ); + iLastRMSVal = piQRMSEnevelope[iChanOffset]; + move32(); + FOR( b = 1; b < iNumBands; b++ ) + { + Word32 iDelta; + + iDelta = L_sub( piQRMSEnevelope[iChanOffset + b], iLastRMSVal ); + iDelta = ( iDelta > ENV_DELTA_MIN ) ? iDelta : ENV_DELTA_MIN; + iDelta = ( iDelta < ENV_DELTA_MAX ) ? iDelta : ENV_DELTA_MAX; + iDelta = L_sub( iDelta, ENV_DELTA_MIN ); + iRMSEnvelopeBits = L_add( iRMSEnvelopeBits, c_aaiRMSEnvHuffEnc[iDelta][0] ); + + iLastRMSVal = piQRMSEnevelope[iChanOffset + b]; + move32(); + } + + iChanOffset = L_add( iChanOffset, iNumBands ); + } + + return iRMSEnvelopeBits; +} +/*-------------------------------------------------------------------* + * Function ComputeSNRPenalty() + * + * + *-------------------------------------------------------------------*/ +static Word32 ComputeSNRPenalty( + const Word32 iChannels, + const Word32 iNumBands, + const Word32 *piBandwidths, + const Word32 iStartBlock, + const Word32 iGroupLength, + Word32 **ppfBandEnergy_dB_fx, + const Word32 *piRMSEnvelope, + Word16 *fSNRPenalty_exp ) +{ + Word32 n; + Word32 iChanOffset; + Word32 temp; + Word32 fSNRPenalty_fx = 0; + move32(); + Word32 fSNRPenaltyconst_fx = 0; + move32(); + Word32 mul_temp; + Word16 fSNRPenaltycnst_exp = 0, exp = 0; + /*FILE *fp = fopen( "float_SNRpenalty.txt", "ab+" ); + FILE *fp1 = fopen( "fixed_SNRpenalty.txt", "ab+" );*/ + // f2me( 1e10f, &fSNRPenaltyconst_fx, &fSNRPenaltycnst_exp );// + /*For 1e10f*/ + fSNRPenaltyconst_fx = 1250000000; + fSNRPenaltycnst_exp = 34; + iChanOffset = 0; + move32(); + FOR( n = 0; n < iChannels; n++ ) + { + Word32 b; + FOR( b = 0; b < iNumBands; b++ ) + { + Word32 k; + Word32 fRMSVal_fx; + Word32 RMS_value_fx; + // RMS_value = piRMSEnvelope[iChanOffset + b]; + RMS_value_fx = L_shl( piRMSEnvelope[iChanOffset + b], 25 ); + move32(); + // fRMSVal = 3.0103f * (float) RMS_value; + fRMSVal_fx = Mpy_32_32( 1616142506, RMS_value_fx ); // Q23 + move32(); + FOR( k = iStartBlock; k < ( iStartBlock + iGroupLength ); k++ ) + { + Word32 fDeltadB_fx; + fDeltadB_fx = L_sub( fRMSVal_fx, ppfBandEnergy_dB_fx[k][iChanOffset + b] ); + IF( LT_32( fDeltadB_fx, -75756680 ) ) + { + fSNRPenalty_fx = BASOP_Util_Add_Mant32Exp( fSNRPenalty_fx, *fSNRPenalty_exp, fSNRPenaltyconst_fx, fSNRPenaltycnst_exp, fSNRPenalty_exp ); // Some large number to prevent clipping + } + ELSE + { + mul_temp = L_abs( L_sub( Mpy_32_32( c_fiDefaultTheta48_fx[b], fDeltadB_fx ), fDeltadB_fx ) ); + temp = Mpy_32_32( mul_temp, Mpy_32_32( 715827883, L_shl( piBandwidths[b], 27 ) ) ); // Q27+23 -31=19 + exp = Q12; // Q31 - Q19 + fSNRPenalty_fx = BASOP_Util_Add_Mant32Exp( fSNRPenalty_fx, *fSNRPenalty_exp, temp, exp, fSNRPenalty_exp ); + } + } + } + + iChanOffset = L_add( iChanOffset, iNumBands ); + } + // fprintf( fp,"%f\n", fSNRPenalty ); + // fprintf( fp1,"%f\n", fSNRPenalty ); + /* fclose( fp ); + fclose( fp1 );*/ + return fSNRPenalty_fx; +} +/*-------------------------------------------------------------------* + * Function TryMerge2() + * + * + *-------------------------------------------------------------------*/ +static Word32 TryMerge2( + const Word32 iChannels, + const Word32 iNumBands, + const Word32 *piBandwidths, + Word32 **ppfBandEnergy_man, + Word16 **ppfBandEnergy_exp, + Word32 **ppfBandEnergydB_fx, + GMNode *psGMNode1, + GMNode *psGMNode2, + Word16 *fMergedCost_exp ) +{ + Word32 iRMSEnvBits1; + Word32 iRMSEnvBits2; + Word32 iRMSEnvBitsMerged; + Word32 temp = 0; + move32(); + Word16 temp_exp = 0; + move16(); + Word32 fMergedCost_fx = 0; + move32(); + Word32 RMSEnvBits_fx; + Word32 fSNRPenalty1_fx; + Word32 fSNRPenalty2_fx; + Word32 fSNRPenaltyMerged_fx; + Word16 fSNRPenalty1_exp = 0; + move16(); + Word16 fSNRPenalty2_exp = 0; + move16(); + Word16 fSNRPenaltyMerged_exp = 0; + move16(); + Word32 one_in_mant = L_negate( ONE_IN_Q30 ); + Word16 one_in_exp = 1; + move16(); + *fMergedCost_exp = 0; + move16(); + Word16 flag = 0; + move16(); + IF( EQ_32( psGMNode1->fGroupSNRPenalty_fx, one_in_mant ) && EQ_16( psGMNode1->fGroupSNRPenalty_exp, one_in_exp ) ) + { + flag = 1; + move16(); + } + /* First compute current RMS Envelope for each group */ + IF( EQ_32( psGMNode1->iGroupRMSEnvelopeCost, -1 ) || flag ) + { + ComputeMergeRMS( iNumBands * iChannels, psGMNode1->iGroupStart, psGMNode1->iGroupLength, psGMNode1->pfMergedEnergydB_fx, psGMNode1->piQRMSEnvelope, ppfBandEnergy_man, ppfBandEnergy_exp ); + iRMSEnvBits1 = ComputeRMSEnvelopeBits( iChannels, iNumBands, psGMNode1->piQRMSEnvelope ); + fSNRPenalty1_fx = ComputeSNRPenalty( iChannels, iNumBands, piBandwidths, psGMNode1->iGroupStart, psGMNode1->iGroupLength, ppfBandEnergydB_fx, psGMNode1->piQRMSEnvelope, &fSNRPenalty1_exp ); + psGMNode1->iGroupRMSEnvelopeCost = iRMSEnvBits1; + move32(); + psGMNode1->fGroupSNRPenalty_fx = fSNRPenalty1_fx; + move32(); + psGMNode1->fGroupSNRPenalty_exp = fSNRPenalty1_exp; + move16(); + } + ELSE + { + iRMSEnvBits1 = psGMNode1->iGroupRMSEnvelopeCost; + move32(); + fSNRPenalty1_fx = psGMNode1->fGroupSNRPenalty_fx; + move32(); + fSNRPenalty1_exp = psGMNode1->fGroupSNRPenalty_exp; + move16(); + } + IF( EQ_32( psGMNode2->fGroupSNRPenalty_fx, one_in_mant ) && EQ_16( psGMNode2->fGroupSNRPenalty_exp, one_in_exp ) ) + { + flag = 1; + move16(); + } + IF( EQ_32( psGMNode2->iGroupRMSEnvelopeCost, -1 ) || flag ) + { + + ComputeMergeRMS( iNumBands * iChannels, psGMNode2->iGroupStart, psGMNode2->iGroupLength, psGMNode2->pfMergedEnergydB_fx, psGMNode2->piQRMSEnvelope, ppfBandEnergy_man, ppfBandEnergy_exp ); + iRMSEnvBits2 = ComputeRMSEnvelopeBits( iChannels, iNumBands, psGMNode2->piQRMSEnvelope ); + fSNRPenalty2_fx = ComputeSNRPenalty( iChannels, iNumBands, piBandwidths, psGMNode2->iGroupStart, psGMNode2->iGroupLength, ppfBandEnergydB_fx, psGMNode2->piQRMSEnvelope, &fSNRPenalty2_exp ); + psGMNode2->iGroupRMSEnvelopeCost = iRMSEnvBits2; + move32(); + psGMNode2->fGroupSNRPenalty_fx = fSNRPenalty2_fx; + move32(); + psGMNode2->fGroupSNRPenalty_exp = fSNRPenalty2_exp; + move16(); + } + ELSE + { + iRMSEnvBits2 = psGMNode2->iGroupRMSEnvelopeCost; + move32(); + fSNRPenalty2_fx = psGMNode2->fGroupSNRPenalty_fx; + move32(); + fSNRPenalty2_exp = psGMNode2->fGroupSNRPenalty_exp; + move16(); + } + ComputeMergeRMS( iNumBands * iChannels, psGMNode1->iGroupStart, psGMNode1->iGroupLength + psGMNode2->iGroupLength, psGMNode1->pfMergedEnergydB_fx, psGMNode1->piQRMSEnvelope, ppfBandEnergy_man, ppfBandEnergy_exp ); + + /* Compute the RMS Envelope cost for merged group */ + iRMSEnvBitsMerged = ComputeRMSEnvelopeBits( iChannels, iNumBands, psGMNode1->piQRMSEnvelope ); + // fSNRPenalty_exp = 0; + /* Compute an approximation of the bit cost based on SNR increase/decrease due to merging */ + fSNRPenaltyMerged_fx = ComputeSNRPenalty( iChannels, iNumBands, piBandwidths, psGMNode1->iGroupStart, psGMNode1->iGroupLength + psGMNode2->iGroupLength, ppfBandEnergydB_fx, psGMNode1->piQRMSEnvelope, &fSNRPenaltyMerged_exp ); + RMSEnvBits_fx = L_sub( L_sub( iRMSEnvBitsMerged, iRMSEnvBits1 ), iRMSEnvBits2 ); + RMSEnvBits_fx = L_shl( RMSEnvBits_fx, 10 ); // Converting to Q10 + temp = BASOP_Util_Add_Mant32Exp( fSNRPenaltyMerged_fx, fSNRPenaltyMerged_exp, L_negate( fSNRPenalty1_fx ), fSNRPenalty1_exp, &temp_exp ); + fMergedCost_fx = BASOP_Util_Add_Mant32Exp( temp, temp_exp, L_negate( fSNRPenalty2_fx ), fSNRPenalty2_exp, fMergedCost_exp ); + fMergedCost_fx = BASOP_Util_Add_Mant32Exp( fMergedCost_fx, *fMergedCost_exp, RMSEnvBits_fx, 21, fMergedCost_exp ); + // fMergedCost = fSNRPenaltyMerged - fSNRPenalty1 - fSNRPenalty2 + (float) iRMSEnvBitsMerged - (float) iRMSEnvBits1 - (float) iRMSEnvBits2; + return fMergedCost_fx; +} + +/*-------------------------------------------------------------------* + * Function ComputeGreedyGroups3() + * + * + *-------------------------------------------------------------------*/ +static void ComputeGreedyGroups3( + RMSEnvelopeGrouping *psRMSEnvelopeGrouping, + const int32_t iChannels, + const int32_t iNumBands, + const int32_t *piBandwidths, + const int32_t iMaxGroups ) +{ + + Word32 iDone = 0; + Word32 iNumGroups = psRMSEnvelopeGrouping->iMaxGroups; + WHILE( EQ_32( iDone, 0 ) ) + { + GMNode *psGMNode; + GMNode *psBestGMNode; + /* Instead of 1e20f*/ + Word32 fBestMergeCost_fx = 1455191552; // mantissa of 1e20f + move32(); + Word16 fBestMergeCost_exp = 67; // exp of 1e20f + move16(); + Word16 Flag = 0; + move16(); + psGMNode = &psRMSEnvelopeGrouping->psGMNodes[0]; + psBestGMNode = NULL; + WHILE( psGMNode->psNext != NULL ) + { + Word32 fMergeCost_fx = 0; + move32(); + Word16 fMergeCost_exp = 0; + move16(); + fMergeCost_fx = TryMerge2( iChannels, iNumBands, piBandwidths, psRMSEnvelopeGrouping->ppfBandEnergy_man, psRMSEnvelopeGrouping->ppfBandEnergy_exp, psRMSEnvelopeGrouping->ppfBandEnergydB_fx, psGMNode, psGMNode->psNext, &fMergeCost_exp ); + IF( LT_32( fMergeCost_fx, 0 ) && ( GT_32( fBestMergeCost_fx, 0 ) ) ) + { + + Flag = 1; + move16(); + } + ELSE IF( ( GT_32( fMergeCost_fx, 0 ) && ( LT_32( fBestMergeCost_fx, 0 ) ) ) ) + { + Flag = -1; + move16(); + } + ELSE + { + Flag = BASOP_Util_Cmp_Mant32Exp( fBestMergeCost_fx, fBestMergeCost_exp, fMergeCost_fx, fMergeCost_exp ); + } + IF( EQ_32( Flag, 1 ) ) + { + fBestMergeCost_fx = fMergeCost_fx; + move32(); + fBestMergeCost_exp = fMergeCost_exp; + move16(); + psBestGMNode = psGMNode; + } + + psGMNode = psGMNode->psNext; + } + + IF( ( GT_32( fBestMergeCost_fx, 0 ) && ( LE_32( iNumGroups, iMaxGroups ) ) ) ) + { + iDone++; + } + ELSE IF( ( psBestGMNode != NULL ) && ( psBestGMNode->psNext != NULL ) ) + { + psBestGMNode->iGroupLength = L_add( psBestGMNode->psNext->iGroupLength, psBestGMNode->iGroupLength ); + psBestGMNode->fGroupSNRPenalty_fx = L_negate( ONE_IN_Q30 ); + psBestGMNode->fGroupSNRPenalty_exp = 1; + move16(); + psBestGMNode->psNext = psBestGMNode->psNext->psNext; + iNumGroups--; + } + ELSE + { + iDone++; // This only catches a problem + } + } + return; +} +/*-------------------------------------------------------------------* + * Function ComputeRMSEnvelope() + * + * + *-------------------------------------------------------------------*/ +static void ComputeRMSEnvelope( + const Word32 iChannels, + const Word32 iNumBands, + const Word32 iNumGroups, + const Word32 *piGroupLengths, + Word32 **ppfBandEnergy_man, + Word16 **ppfBandEnergy_exp, + Word32 ***pppiRMSEnvelope ) +{ + Word32 n; + Word32 fGroupEnergy_fx; + Word16 fGroupEnergy_exp; + Word32 temp; + // FILE *fp = fopen( "RmsEnvelope_fixed", "ab+" ); + // FILE *fp1 = fopen( "RmsEnvelope_float", "ab+" ); + FOR( n = 0; n < iChannels; n++ ) + { + Word32 b; + Word32 iChanOffset; + + iChanOffset = L_mult0( extract_l( n ), extract_l( iNumBands ) ); + + FOR( b = 0; b < iNumBands; b++ ) + { + Word32 k; + Word32 iBlockOffset; + iBlockOffset = 0; + FOR( k = 0; k < iNumGroups; k++ ) + { + Word32 m; + fGroupEnergy_exp = 0; + move16(); + fGroupEnergy_fx = 0; + move32(); + FOR( m = 0; m < piGroupLengths[k]; m++ ) + { + fGroupEnergy_fx = BASOP_Util_Add_Mant32Exp( ppfBandEnergy_man[iBlockOffset][b + iChanOffset], ppfBandEnergy_exp[iBlockOffset][b + iChanOffset], fGroupEnergy_fx, fGroupEnergy_exp, &fGroupEnergy_exp ); + iBlockOffset++; + } + fGroupEnergy_fx = Mpy_32_32( fGroupEnergy_fx, Inv_grp_length[piGroupLengths[k]] ); // Division by iGroupLength + fGroupEnergy_fx = BASOP_Util_Log2( fGroupEnergy_fx ); + move32(); + fGroupEnergy_fx = L_add( fGroupEnergy_fx, L_shl( L_deposit_l( fGroupEnergy_exp ), WORD32_BITS - 1 - LD_DATA_SCALE ) ); /*Q25*/ + temp = ( fGroupEnergy_fx > 0 ) ? L_add( fGroupEnergy_fx, ONE_IN_Q24 ) : L_negate( L_add( L_negate( fGroupEnergy_fx ), ONE_IN_Q24 ) ); // Q25 + temp = L_shr( temp, 25 ); + temp = ( temp > ENV_MIN ) ? temp : ENV_MIN; + temp = ( temp < ENV_MAX ) ? temp : ENV_MAX; + pppiRMSEnvelope[n][k][b] = temp; + // fprintf( fp,"%d\n", pppiRMSEnvelope[n][k][b] ); + } + } + } + // fclose( fp ); + /* fclose( fp1 );*/ + return; +} + +/*-------------------------------------------------------------------* + * Function LimitRMSEnvelope() + * + * + *-------------------------------------------------------------------*/ +static void LimitRMSEnvelope( + const Word32 iBandCount, + const Word32 iRMSDeltaMax, + const Word32 iRMSDeltaMin, + Word32 *piRMSEnvelope ) +{ + Word32 iBand; + Word32 iLastSCF; + + /* Increase low envelope values to ensure that the scale factors traces the large values correctly (checking for max deltas) */ + iLastSCF = piRMSEnvelope[iBandCount - 1]; + move32(); + for ( iBand = iBandCount - 2; iBand > -1; iBand-- ) + { + Word32 iDelta; + + iDelta = L_sub( iLastSCF, piRMSEnvelope[iBand] ); + + IF( GT_32( iDelta, iRMSDeltaMax ) ) + { +#ifdef DEBUG_VERBOSE + printf( "WARNING RMS envelope delta limited\n" ); +#endif + piRMSEnvelope[iBand] = L_add( L_sub( iDelta, iRMSDeltaMax ), piRMSEnvelope[iBand] ); + } + + iLastSCF = piRMSEnvelope[iBand]; + move32(); + } + + /* Increase low envelope values to ensure that the envelope traces the large values correctly (checking for min deltas)*/ + iLastSCF = piRMSEnvelope[0]; + FOR( iBand = 1; iBand < iBandCount; iBand++ ) + { + Word32 iDelta; + + iDelta = L_sub( piRMSEnvelope[iBand], iLastSCF ); + + IF( LT_32( iDelta, iRMSDeltaMin ) ) + { +#ifdef DEBUG_VERBOSE + printf( "WARNING RMS envelope delta limited\n" ); +#endif + piRMSEnvelope[iBand] = L_add( piRMSEnvelope[iBand], L_sub( iRMSDeltaMin, iDelta ) ); + } + + iLastSCF = piRMSEnvelope[iBand]; + move32(); + } + + return; +} + +/*-------------------------------------------------------------------* + * Function ComputeEnvelopeGrouping() + * + * + *-------------------------------------------------------------------*/ +void ComputeEnvelopeGrouping( + RMSEnvelopeGrouping *psRMSEnvelopeGrouping, + const Word32 iChannels, + const Word32 iNumBands, + const Word32 *piBandwidths, + Word32 ***pppfReal_fx, + Word32 ***pppfImag_fx, + Word32 *piNumGroups, + Word32 *piGroupLengths, + Word32 ***pppiRMSEnvelope, + Word16 q_final ) +{ + Word32 n; + GMNode *psGMNode; + + /* Compute Band Energies */ + ComputeBandEnergy( iChannels, psRMSEnvelopeGrouping->iNumBlocks, iNumBands, piBandwidths, pppfReal_fx, pppfImag_fx, psRMSEnvelopeGrouping->ppfBandEnergy_man, psRMSEnvelopeGrouping->ppfBandEnergy_exp, psRMSEnvelopeGrouping->ppfBandEnergydB_fx, psRMSEnvelopeGrouping->ppfWeight_man, psRMSEnvelopeGrouping->ppfWeight_exp, q_final ); + /* Init GMNodes */ + psRMSEnvelopeGrouping->psGMNodes[0].iGroupStart = 0; + move32(); + psRMSEnvelopeGrouping->psGMNodes[0].iGroupLength = 2; + move32(); + psRMSEnvelopeGrouping->psGMNodes[0].psNext = NULL; + psRMSEnvelopeGrouping->psGMNodes[0].iGroupRMSEnvelopeCost = -1; + move32(); + psRMSEnvelopeGrouping->psGMNodes[0].fGroupSNRPenalty_fx = L_negate( ONE_IN_Q30 ); + psRMSEnvelopeGrouping->psGMNodes[0].fGroupSNRPenalty_exp = 1; + move16(); + FOR( n = 1; n < psRMSEnvelopeGrouping->iMaxGroups; n++ ) + { + psRMSEnvelopeGrouping->psGMNodes[n - 1].psNext = &psRMSEnvelopeGrouping->psGMNodes[n]; + psRMSEnvelopeGrouping->psGMNodes[n].iGroupStart = L_shl( n, 1 ); + move32(); + psRMSEnvelopeGrouping->psGMNodes[n].iGroupLength = 2; + move32(); + psRMSEnvelopeGrouping->psGMNodes[n].iGroupRMSEnvelopeCost = -1; + move32(); + psRMSEnvelopeGrouping->psGMNodes[n].fGroupSNRPenalty_fx = L_negate( ONE_IN_Q30 ); + psRMSEnvelopeGrouping->psGMNodes[n].fGroupSNRPenalty_exp = 1; + move16(); + psRMSEnvelopeGrouping->psGMNodes[n].psNext = NULL; + } + /* Perform grouping via Greedy Merge */ + /* Allows control over max groups can call using 16 if want same as previous call */ + ComputeGreedyGroups3( psRMSEnvelopeGrouping, iChannels, iNumBands, piBandwidths, psRMSEnvelopeGrouping->iNumBlocks ); + /* Calc Groups from Merge Results */ + *piNumGroups = 0; + move32(); + psGMNode = &psRMSEnvelopeGrouping->psGMNodes[0]; + WHILE( psGMNode != NULL ) + { + piGroupLengths[*piNumGroups] = psGMNode->iGroupLength; + move32(); + *piNumGroups = L_add( *piNumGroups, 1 ); + psGMNode = psGMNode->psNext; + } + /* Compute RMS Envelope given group lengths */ + ComputeRMSEnvelope( iChannels, iNumBands, *piNumGroups, piGroupLengths, psRMSEnvelopeGrouping->ppfBandEnergy_man, psRMSEnvelopeGrouping->ppfBandEnergy_exp, pppiRMSEnvelope ); + + /* Envelope Tenting */ + FOR( n = 0; n < iChannels; n++ ) + { + Word32 k; + FOR( k = 0; k < *piNumGroups; k++ ) + { + LimitRMSEnvelope( iNumBands, ENV_DELTA_MAX, ENV_DELTA_MIN, pppiRMSEnvelope[n][k] ); + } + } + + return; +} diff --git a/lib_isar/isar_cnst.h b/lib_isar/isar_cnst.h new file mode 100644 index 0000000000000000000000000000000000000000..4aef03cf2160135ceaf7e44b4cf4903d8077cef6 --- /dev/null +++ b/lib_isar/isar_cnst.h @@ -0,0 +1,151 @@ +/****************************************************************************************************** + + (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 ISAR_CNST_H +#define ISAR_CNST_H + +#include +#include "options.h" + +/* clang-format off */ + + +/*----------------------------------------------------------------------------------* + * Split Binaural Rendering Constants + *----------------------------------------------------------------------------------*/ + +typedef enum +{ + PCM_INT16, + PCM_FLOAT32, + PCM_NOT_KNOW = 0xffff +} PCM_RESOLUTION; + +typedef enum +{ + ANY_YAW, + PITCH_ONLY, + ANY_ROLL, + PRED_ONLY, + PRED_ROLL_ONLY, + COM_GAIN_ONLY, + LR_GAIN_ONLY +} ISAR_SPLIT_REND_POSE_TYPE; + + +#define CLDFB_PLC_XF 2 /* Length of cross-fade into first good frame after frame loss in CLDFB cols. */ + +#define SPLIT_REND_MAX_YAW_ONLY_POSES 2 +#define SPLIT_REND_MAX_PITCH_ONLY_POSES 2 +#define SPLIT_REND_MAX_ROLL_ONLY_POSES 2 +#define SPLIT_REND_MAX_ONE_AXIS_MD_POSES 2 +#define MAX_EXTRAPOLATION_ANGLE 15.0f /* this means additional 15 degrees can be extrapolated on top of MD probing poses*/ +#define MAX_EXTRAPOLATION_ANGLE_Q22 (62914560) /* this means additional 15 degrees can be extrapolated on top of MD probing poses*/ + +#define MAX_HEAD_ROT_POSES ( 2 + SPLIT_REND_MAX_YAW_ONLY_POSES + SPLIT_REND_MAX_PITCH_ONLY_POSES + SPLIT_REND_MAX_ROLL_ONLY_POSES ) +#define MAX_SPLIT_REND_MD_BANDS 20 +#define MAX_SPLIT_MD_SUBFRAMES 1 +#define COMPLEX_MD_BAND_THRESH MAX_SPLIT_REND_MD_BANDS +#define COMPLEX_MD_BAND_THRESH_LOW 4 +#define COMPLEX_MD_BAND_THRESH_HIGH 10 +#define SPLIT_REND_RO_MD_BAND_THRESH 4 + +#define ISAR_SPLIT_REND_PRED_63QUANT_PNTS_LOG2_CEIL 6 +#define ISAR_SPLIT_REND_PRED_31QUANT_PNTS_LOG2_CEIL 5 +#define ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS_LOG2_CEIL 5 +#define ISAR_SPLIT_REND_D_QUANT_PNTS_LOG2_CEIL 4 + +#define ISAR_SPLIT_REND_PRED_MIN_VAL_Q30 -1503238553 //Q30 +#define ISAR_SPLIT_REND_PRED_MAX_VAL_Q30 1503238553 //Q30 + +#define ISAR_SPLIT_REND_NUM_QUANT_STRATS 4 +#define ISAR_SPLIT_REND_PRED_63QUANT_PNTS 63 +#define ISAR_SPLIT_REND_PRED_31QUANT_PNTS 31 +#define ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS 31 +#define ISAR_SPLIT_REND_D_QUANT_PNTS 15 +#define ISAR_SPLIT_REND_PRED_MIN_VAL -1.4f +#define ISAR_SPLIT_REND_PRED_MAX_VAL 1.4f + +#define ISAR_SPLIT_REND_PITCH_G_MIN_VAL 0.5f +#define ISAR_SPLIT_REND_PITCH_G_MAX_VAL 1.5f +#define ISAR_SPLIT_REND_PITCH_G_MIN_VAL_Q30 (1<<29) //0.5f in Q30 +#define ISAR_SPLIT_REND_PITCH_G_MAX_VAL_Q30 1610612736 //1.5f in Q30 +#define ISAR_SPLIT_REND_PITCH_G_QUANT_PNTS ISAR_SPLIT_REND_D_QUANT_PNTS +#define ISAR_SPLIT_REND_D_MIN_VAL 0.0f +#define ISAR_SPLIT_REND_D_MAX_VAL 1.0f +#define ISAR_SPLIT_REND_D_MIN_VAL_FX 0 //Q31 +#define ISAR_SPLIT_REND_D_MAX_VAL_FX MAX_32 //Q31 + +#define ISAR_SPLIT_REND_PRED_ROLL_Q_STEP ( ( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL ) / ( ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 ) ) +#define ISAR_SPLIT_REND_PRED_ROLL_Q_STEP_Q31 200431807 +#define ISAR_SPLIT_REND_PRED_ROLL_1BYQ_STEP_Q26 719023543 +#define ISAR_SPLIT_REND_PRED_ROLL_1BYQ_STEP ( ( ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 ) / ( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL ) ) +#define ISAR_SPLIT_REND_PRED31_Q_STEP ( ( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL ) / ( ISAR_SPLIT_REND_PRED_31QUANT_PNTS - 1 ) ) +#define ISAR_SPLIT_REND_PRED31_1BYQ_STEP ( ( ISAR_SPLIT_REND_PRED_31QUANT_PNTS - 1 ) / ( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL ) ) +#define ISAR_SPLIT_REND_PRED63_Q_STEP ( ( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL ) / ( ISAR_SPLIT_REND_PRED_63QUANT_PNTS - 1 ) ) +#define ISAR_SPLIT_REND_PRED63_1BYQ_STEP ( ( ISAR_SPLIT_REND_PRED_63QUANT_PNTS - 1 ) / ( ISAR_SPLIT_REND_PRED_MAX_VAL - ISAR_SPLIT_REND_PRED_MIN_VAL ) ) + +#define ISAR_SPLIT_REND_PRED31_Q_STEP_FX_Q31 200431807 +#define ISAR_SPLIT_REND_PRED31_1BYQ_STEP_FX_Q26 719023543 +#define ISAR_SPLIT_REND_PRED63_Q_STEP_FX_Q31 96983132 +#define ISAR_SPLIT_REND_PRED63_1BYQ_STEP_FX_Q26 1485981989 + +#define ISAR_SPLIT_REND_D_Q_STEP ( ( ISAR_SPLIT_REND_D_MAX_VAL - ISAR_SPLIT_REND_D_MIN_VAL ) / ( ISAR_SPLIT_REND_D_QUANT_PNTS - 1 ) ) +#define ISAR_SPLIT_REND_D_1BYQ_STEP ( ( ISAR_SPLIT_REND_D_QUANT_PNTS - 1 ) / ( ISAR_SPLIT_REND_D_MAX_VAL - ISAR_SPLIT_REND_D_MIN_VAL ) ) +#define ISAR_SPLIT_REND_PITCH_G_Q_STEP ( ( ISAR_SPLIT_REND_PITCH_G_MAX_VAL - ISAR_SPLIT_REND_PITCH_G_MIN_VAL ) / ( ISAR_SPLIT_REND_PITCH_G_QUANT_PNTS - 1 ) ) +#define ISAR_SPLIT_REND_PITCH_G_1BYQ_STEP ( ( ISAR_SPLIT_REND_PITCH_G_QUANT_PNTS - 1 ) / ( ISAR_SPLIT_REND_PITCH_G_MAX_VAL - ISAR_SPLIT_REND_PITCH_G_MIN_VAL ) ) +#define ISAR_SPLIT_REND_D_Q_STEP_Q31 153391689 +#define ISAR_SPLIT_REND_D_1BYQ_STEP_Q27 (14 << 27) //Q27 +#define ISAR_SPLIT_REND_PITCH_G_Q_STEP_Q31 153391689 +#define ISAR_SPLIT_REND_PITCH_G_1BYQ_STEP_Q27 (14 << 27) //Q27 + + +#define ISAR_SPLIT_REND_HEAD_POSE_BITS 9 +#define ISAR_SPLIT_REND_DOF_BITS 2 +#define ISAR_SPLIT_REND_HQ_MODE_BITS 1 +#define ISAR_SPLIT_REND_ROT_AXIS_BITS 3 +#define ISAR_SPLIT_REND_RO_FLAG_BITS 1 + +#define IVAS_LC3PLUS_MAX_NUM_DECODERS 2 +/*----------------------------------------------------------------------------------* + * Split rendering bitrate constants + *----------------------------------------------------------------------------------*/ + +#define SPLIT_REND_256k 256000 +#define SPLIT_REND_320k 320000 +#define SPLIT_REND_384k 384000 +#define SPLIT_REND_512k 512000 +#define SPLIT_REND_768k 768000 + + +#endif /*ISAR_CNST_H */ +/* clang-format on */ diff --git a/lib_isar/isar_lc3plus_common.c b/lib_isar/isar_lc3plus_common.c new file mode 100644 index 0000000000000000000000000000000000000000..5c56c0b437aff18d7f88ab7711c814c466764780 --- /dev/null +++ b/lib_isar/isar_lc3plus_common.c @@ -0,0 +1,85 @@ +/****************************************************************************************************** + + (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 "options.h" +#include "isar_lc3plus_common.h" +#include "ivas_error.h" +#include "lc3.h" + +/*-----------------------------------------------------------------------------------------* + * Function ISAR_LC3PLUS_LC3plusErrToIvasErr() + * + * + *-----------------------------------------------------------------------------------------*/ + +ivas_error ISAR_LC3PLUS_LC3plusErrToIvasErr( + const LC3PLUS_Error lc3PlusError ) +{ + switch ( lc3PlusError ) + { + case LC3PLUS_OK: + return IVAS_ERR_OK; + case LC3PLUS_BITRATE_ERROR: + return IVAS_ERR_LC3PLUS_INVALID_BITRATE; + default: + break; + } + + return IVAS_ERR_INTERNAL; +} +ivas_error IVAS_LC3PLUS_LC3plusRtpErrToIvasErr( const LC3PLUS_RTP_ERR lc3PlusRtpError ) +{ + switch ( lc3PlusRtpError ) + { + case LC3PLUS_RTP_ERR_NO_ERROR: + return IVAS_ERR_OK; + case LC3PLUS_RTP_ERR_NULL_PTR: + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + case LC3PLUS_RTP_ERR_INVALID_PARAMETERS: + return IVAS_ERR_WRONG_PARAMS; + case LC3PLUS_RTP_ERR_NOT_IMPLEMENTED: + return IVAS_ERR_NOT_IMPLEMENTED; + case LC3PLUS_RTP_ERR_UNSUPPORTED_CONFIGURATION: + return IVAS_ERR_INTERNAL; + case LC3PLUS_RTP_ERR_INVALID_BITSTREAM: + return IVAS_ERR_UNEXPECTED_LC3PLUS_BITSTREAM; + case LC3PLUS_RTP_ERR_INVALID_BITSTREAM_SIZE: + return IVAS_ERR_INVALID_BUFFER_SIZE; + case LC3PLUS_RTP_ERR_NOT_ENOUGH_FTDS_ALLOCATED: + return IVAS_ERR_INTERNAL; + case LC3PLUS_RTP_ERR_GENERIC_ERROR: + default: + break; + } + + return IVAS_ERR_UNKNOWN; +} diff --git a/lib_isar/isar_lc3plus_common.h b/lib_isar/isar_lc3plus_common.h new file mode 100644 index 0000000000000000000000000000000000000000..2638ea8a9cbb34fca0705c0b84e46692e34e9a19 --- /dev/null +++ b/lib_isar/isar_lc3plus_common.h @@ -0,0 +1,64 @@ +/****************************************************************************************************** + + (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 ISAR_LC3PLUS_COM_H +#define ISAR_LC3PLUS_COM_H + + +#include +#include "options.h" +#include "ivas_error.h" +#include "lc3.h" +#include "isar_lc3plus_payload.h" + +/*! common configuration parameters between encoder and decoder */ +typedef struct LC3PLUS_CONFIG +{ + /*! frame duration in microseconds [10000, 5000, 2500] */ + int16_t lc3plus_frame_duration_us; + /*! isar frame duration in microseconds [20000, 10000, 5000] */ + int16_t isar_frame_duration_us; + /*! sampling rate*/ + int32_t samplerate; + /*! number of channels */ + int16_t channels; + /*! high resolution mode enabled (1) or disabled (0)*/ + int16_t high_res_mode_enabled; +} LC3PLUS_CONFIG; + +/*! utility function to convert LC3PLUS_Errors to the suitable ivas_error */ +ivas_error ISAR_LC3PLUS_LC3plusErrToIvasErr( const LC3PLUS_Error lc3PlusError ); + +/*! utility function to convert LC3PLUS_Errors to the suitable ivas_error */ +ivas_error IVAS_LC3PLUS_LC3plusRtpErrToIvasErr( const LC3PLUS_RTP_ERR lc3PlusRtpError ); + +#endif /* ISAR_LC3PLUS_COM_H */ diff --git a/lib_isar/isar_lc3plus_dec.c b/lib_isar/isar_lc3plus_dec.c new file mode 100644 index 0000000000000000000000000000000000000000..38371d1343b81d0c4c484f9d29f3f78f00cdff85 --- /dev/null +++ b/lib_isar/isar_lc3plus_dec.c @@ -0,0 +1,557 @@ +/****************************************************************************************************** + + (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 "prot_fx.h" +#include "ivas_prot_fx.h" +#include "isar_lc3plus_dec.h" +#include "isar_lc3plus_common.h" +#include "lc3.h" +#include "ivas_error_utils.h" +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------- + * ISAR_LC3PLUS_DEC_Open() + * + * + *------------------------------------------------------------------------*/ + +ivas_error ISAR_LC3PLUS_DEC_Open( + const LC3PLUS_CONFIG config, /* i : LC3plus decoder configuration */ + ISAR_LC3PLUS_DEC_HANDLE *handle /* o : decoder handle */ +) +{ + LC3PLUS_Error err; + int32_t decoder_size; + Word32 scratch_size; + int16_t i; + + if ( 0 == config.lc3plus_frame_duration_us ) + { + return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Invalid lc3plus_frame_duration_us (0)\n" ); + } + + 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" ); + } + + 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" ); + } + + + ( *handle )->num_decs = 0; + ( *handle )->pcm_conversion_buffer = NULL; + ( *handle )->handles = NULL; + ( *handle )->selective_decoding_states = NULL; + ( *handle )->bitstream_caches = NULL; + ( *handle )->scratch = NULL; + + if ( ( ( *handle )->handles = malloc( config.channels * sizeof( ISAR_LC3PLUS_DEC_HANDLE ) ) ) == NULL ) + { + ISAR_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus wrapper handle\n" ); + } + + if ( ( ( *handle )->selective_decoding_states = malloc( config.channels * sizeof( ISAR_LC3PLUS_DEC_SELECTIVE_DECODING_STATE * ) ) ) == NULL ) + { + ISAR_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus wrapper handle\n" ); + } + + for ( i = 0; i < config.channels; ++i ) + { + ( *handle )->handles[i] = NULL; + ( *handle )->selective_decoding_states[i] = NULL; + } + + if ( ( ( *handle )->bitstream_caches = malloc( config.channels * sizeof( ISAR_LC3PLUS_DEC_BITSTREAM_CACHE * ) ) ) == NULL ) + { + ISAR_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus wrapper handle\n" ); + } + for ( i = 0; i < config.channels; ++i ) + { + ( *handle )->bitstream_caches[i] = NULL; + } + + ( *handle )->num_decs = config.channels; + for ( int32_t iCh = 0; iCh < config.channels; iCh++ ) + { + ( *handle )->selective_decoding_states[iCh] = NULL; + if ( NULL != ( *handle )->bitstream_caches ) + { + ( *handle )->bitstream_caches[iCh] = NULL; + } + /* allocate and configure LC3plus decoder */ + decoder_size = lc3plus_dec_get_size( config.samplerate, 1, LC3PLUS_PLC_ADVANCED ); + if ( 0 == decoder_size ) + { + ISAR_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_INTERNAL, "lc3plus_dec_get_size failed\n" ); + } + + if ( ( ( *handle )->handles[iCh] = malloc( decoder_size ) ) == NULL ) + { + ISAR_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" ); + } + + err = lc3plus_dec_init( ( *handle )->handles[iCh], config.samplerate, 1, LC3PLUS_PLC_ADVANCED, config.high_res_mode_enabled ); + if ( LC3PLUS_OK != err ) + { + ISAR_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( ISAR_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_dec_init failed\n" ); + } + + err = lc3plus_dec_set_frame_dms( ( *handle )->handles[iCh], config.lc3plus_frame_duration_us / 100 ); + if ( LC3PLUS_OK != err ) + { + ISAR_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( ISAR_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_dec_set_frame_dms failed\n" ); + } + + /* allocate and configure per LC3plus decoder skip state */ + if ( ( ( *handle )->selective_decoding_states[iCh] = malloc( sizeof( ISAR_LC3PLUS_DEC_SELECTIVE_DECODING_STATE ) ) ) == NULL ) + { + ISAR_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" ); + } + + + ( *handle )->selective_decoding_states[iCh]->has_skipped_a_frame = 0; + ( *handle )->selective_decoding_states[iCh]->shall_decode_cached_frame = 0; + ( *handle )->selective_decoding_states[iCh]->frame_action = DEC_ACTION_DECODE_AND_USE; + + /* allocate and configure per LC3plus decoder bitstream cache */ + if ( ( ( *handle )->bitstream_caches[iCh] = malloc( sizeof( ISAR_LC3PLUS_DEC_BITSTREAM_CACHE ) ) ) == NULL ) + { + ISAR_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" ); + } + ( *handle )->bitstream_caches[iCh]->bitstream_cache_capacity = 400 /*LC3plus max non-HR octet count*/; + if ( ( ( *handle )->bitstream_caches[iCh]->bitstream_cache = malloc( ( *handle )->bitstream_caches[iCh]->bitstream_cache_capacity ) ) == NULL ) + { + ISAR_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" ); + } + ( *handle )->bitstream_caches[iCh]->bitstream_cache_size = 0; + } + + ( *handle )->config = config; + if ( config.isar_frame_duration_us < config.lc3plus_frame_duration_us || config.isar_frame_duration_us % config.lc3plus_frame_duration_us != 0 ) + { + ISAR_LC3PLUS_DEC_Close( handle ); + 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" ); + } + + if ( ( ( *handle )->pcm_conversion_buffer = malloc( sizeof( int16_t ) * config.samplerate * config.lc3plus_frame_duration_us / 1000000 ) ) == NULL ) + { + ISAR_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder wrapper pcm_conversion_buffer\n" ); + } + + scratch_size = lc3plus_dec_get_scratch_size( ( *handle )->handles[0] ); + if ( ( ( *handle )->scratch = malloc( sizeof( uint8_t ) * scratch_size ) ) == NULL ) + { + ISAR_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder wrapper scratch\n" ); + } + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * ISAR_LC3PLUS_DEC_GetDelay() + * + * + *------------------------------------------------------------------------*/ + +ivas_error ISAR_LC3PLUS_DEC_GetDelay( + ISAR_LC3PLUS_DEC_HANDLE handle, /* i : LC3plus decoder handle */ + int32_t *delayInSamples /* o : decoder delay in number of samples per channel */ +) +{ + int32_t tmpDelayInSamples; + + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "ISAR_LC3PLUS_DEC_HANDLE is NULL\n" ); + } + if ( NULL == delayInSamples ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "delayInSamples is NULL\n" ); + } + + *delayInSamples = 0; + /* sanity check whether all encoders are actually configured identically */ + for ( uint32_t iDec = 0; iDec < handle->num_decs; iDec++ ) + { + if ( NULL == handle->handles[iDec] ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3plus decoder handle is NULL\n" ); + } + + tmpDelayInSamples = lc3plus_dec_get_delay( handle->handles[iDec] ); + if ( 0 != *delayInSamples && tmpDelayInSamples != *delayInSamples ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "Not all mono LC3plus decoders are configured identically\n" ); + } + + *delayInSamples = tmpDelayInSamples; + } + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * ISAR_LC3PLUS_DEC_Close() + * + * + *------------------------------------------------------------------------*/ + +void ISAR_LC3PLUS_DEC_Close( + ISAR_LC3PLUS_DEC_HANDLE *handle /* i/o: Pointer to LC3plus decoder handle */ +) +{ + if ( NULL == handle || NULL == *handle ) + { + return; + } + for ( uint32_t iDec = 0; iDec < ( *handle )->num_decs; iDec++ ) + { + if ( NULL != ( *handle )->handles && NULL != ( *handle )->handles[iDec] ) + { + free( ( *handle )->handles[iDec] ); + } + + if ( NULL != ( *handle )->selective_decoding_states && NULL != ( *handle )->selective_decoding_states[iDec] ) + { + free( ( *handle )->selective_decoding_states[iDec] ); + } + + if ( NULL != ( *handle )->bitstream_caches && NULL != ( *handle )->bitstream_caches[iDec] ) + { + free( ( *handle )->bitstream_caches[iDec]->bitstream_cache ); + free( ( *handle )->bitstream_caches[iDec] ); + } + } + + if ( NULL != ( *handle )->pcm_conversion_buffer ) + { + free( ( *handle )->pcm_conversion_buffer ); + } + if ( NULL != ( *handle )->scratch ) + { + free( ( *handle )->scratch ); + } + + free( ( *handle )->handles ); + + if ( NULL != ( *handle )->bitstream_caches ) + { + free( ( *handle )->bitstream_caches ); + } + free( ( *handle )->selective_decoding_states ); + + free( *handle ); + *handle = NULL; + + return; +} + + +/*------------------------------------------------------------------------- + * decode_or_conceal_one_lc3plus_frame() + * + * + *------------------------------------------------------------------------*/ + +static ivas_error decode_or_conceal_one_lc3plus_frame( + LC3PLUS_Dec *dec, + uint8_t *bitstream_in, + const int32_t bitstream_in_length, + int16_t **pcm_out_buffer, + const int32_t badFrameIndicator, + uint8_t *scratch ) +{ + LC3PLUS_Error err; + + push_wmops( "lc3plus_dec16" ); + err = lc3plus_dec16( dec, bitstream_in, bitstream_in_length, pcm_out_buffer, scratch, badFrameIndicator ); + pop_wmops(); + + if ( err == LC3PLUS_DECODE_ERROR && 1 == badFrameIndicator ) + { + /* LC3PLUS_DECODE_ERROR && badFrameIndicator means that the decoder has successfully concealed, which is actually OK. */ + err = LC3PLUS_OK; + } + + if ( err != LC3PLUS_OK ) + { + return IVAS_ERROR( ISAR_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_dec16 failed\n" ); + } + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * isar_LC3PLUS_DEC_Decode_or_Conceal_internal() + * + * + *------------------------------------------------------------------------*/ + +static ivas_error isar_LC3PLUS_DEC_Decode_or_Conceal_internal( + ISAR_LC3PLUS_DEC_HANDLE handle, /* i : LC3plus decoder configuration */ + uint8_t *bitstream_in, /* i : pointer to input bitstream */ + int32_t bitstream_in_size, /* i : size of bitstream_in */ + const int16_t badFrameIndicator, /* i : bad frame indicator. If set to 1, triggers concealment */ + Word32 **pcm_out /* o : decoded samples */ +) +{ + uint32_t iDec; + int32_t config_num_media_times; + int32_t iMediaTime; + int32_t iFtd; + LC3PLUS_RTP_PAYLOAD payload; + int32_t ivasSampleIndex; + int16_t numSamplesPerLC3plusChannel; + ivas_error err; + + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3PLUS_Dec_Wrap_Handle is NULL\n" ); + } + if ( NULL == bitstream_in ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "bitstream_in is NULL\n" ); + } + if ( NULL == pcm_out ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "pcm_out is NULL\n" ); + } + if ( badFrameIndicator != 0 && badFrameIndicator != 1 ) + { + return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "badFrameIndicator must be 1 or 0\n" ); + } + if ( badFrameIndicator == 0 && bitstream_in_size <= 0 ) + { + return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "bitstream_in_size must be positive\n" ); + } + + 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" ); + } + + config_num_media_times = handle->config.isar_frame_duration_us / handle->config.lc3plus_frame_duration_us; + if ( !badFrameIndicator ) + { + if ( LC3PLUS_RTP_payload_deserialize( &payload, bitstream_in, bitstream_in_size ) != LC3PLUS_RTP_ERR_NO_ERROR ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "LC3PLUS_RTP_payload_deserialize failed\n" ); + } + if ( payload.sampling_rate_hz != handle->config.samplerate ) + { + return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "LC3plus config change (samplerate) in bitstream is not supported\n" ); + } + if ( payload.num_channels != handle->config.channels ) + { + return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "LC3plus config change (number of channels) in bitstream is not supported\n" ); + } + if ( payload.frame_duration_us != handle->config.lc3plus_frame_duration_us ) + { + return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "LC3plus config change (frame duration) in bitstream is not supported\n" ); + } + if ( payload.high_resolution_enabled != handle->config.high_res_mode_enabled ) + { + return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "LC3plus config change (high resolution mode) in bitstream is not supported\n" ); + } + if ( payload.num_media_times != config_num_media_times ) + { + return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "LC3plus config change (number of media times per frame data block) in bitstream is not supported\n" ); + } + } + + 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; + if ( handle->selective_decoding_states[iDec]->shall_decode_cached_frame ) + { + if ( 0 == handle->bitstream_caches[iDec]->bitstream_cache_size ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "LC3plus cache is empty\n" ); + } + + err = decode_or_conceal_one_lc3plus_frame( handle->handles[iDec], handle->bitstream_caches[iDec]->bitstream_cache, handle->bitstream_caches[iDec]->bitstream_cache_size, &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]->shall_decode_cached_frame = 0; + handle->selective_decoding_states[iDec]->has_skipped_a_frame = 0; + } + + /* reset cache if caching is enabled - it has either been decoded or is not needed */ + if ( NULL != handle->bitstream_caches ) + { + handle->bitstream_caches[iDec]->bitstream_cache_size = 0; + } + + switch ( handle->selective_decoding_states[iDec]->frame_action ) + { + case DEC_ACTION_DECODE_AND_USE: + { + if ( badFrameIndicator ) + { + err = decode_or_conceal_one_lc3plus_frame( handle->handles[iDec], bitstream_in, bitstream_in_size, &handle->pcm_conversion_buffer, badFrameIndicator, handle->scratch ); + } + else if ( payload.ftds[iFtd].frame_data_length == LC3PLUS_RTP_FDL_SPEECH_BAD ) + { + return IVAS_ERR_NOT_IMPLEMENTED; + /* Untested therefore disabled. Would probably only need to call concealment, + * but the LC3plus API requires a non-NULL ptr for this which is not available here */ + } + else + { + err = decode_or_conceal_one_lc3plus_frame( handle->handles[iDec], payload.ftds[iFtd].frame_data, payload.ftds[iFtd].frame_data_length, &handle->pcm_conversion_buffer, badFrameIndicator, handle->scratch ); + } + if ( err != IVAS_ERR_OK ) + { + return IVAS_ERROR( err, "lc3plus decoding failed\n" ); + } + + for ( int16_t iSampleInt16 = 0; iSampleInt16 < numSamplesPerLC3plusChannel; iSampleInt16++ ) + { + ivasSampleIndex = iSampleInt16 + iMediaTime * numSamplesPerLC3plusChannel; + pcm_out[iDec][ivasSampleIndex] = handle->pcm_conversion_buffer[iSampleInt16]; + } + handle->selective_decoding_states[iDec]->has_skipped_a_frame = 0; + break; + } + case DEC_ACTION_CACHE: + { + 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" ); + } + /* store bit rate of cached frame */ + mvc2c( payload.ftds[iFtd].frame_data, handle->bitstream_caches[iDec]->bitstream_cache, (int16_t) payload.ftds[iFtd].frame_data_length ); + handle->bitstream_caches[iDec]->bitstream_cache_size = payload.ftds[iFtd].frame_data_length; + /* 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; + } + case DEC_ACTION_NUM_ENUMS: + default: + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "invalid LC3plus decoder state\n" ); + } + } /* 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 */ + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * ISAR_LC3PLUS_DEC_Decode() + * + * + *------------------------------------------------------------------------*/ + +ivas_error ISAR_LC3PLUS_DEC_Decode( + ISAR_LC3PLUS_DEC_HANDLE handle, /* i : LC3plus decoder configuration */ + uint8_t *bitstream_in, /* i : pointer to input bitstream */ + const int32_t bitstream_in_size, /* i : size of bitstream_in */ + Word32 **pcm_out /* o : decoded samples */ +) +{ + int16_t badFrameIndicator; + + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3PLUS_Dec_Wrap_Handle is NULL\n" ); + } + if ( NULL == bitstream_in ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "bitstream_in is NULL\n" ); + } + if ( NULL == pcm_out ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "pcm_out is NULL\n" ); + } + badFrameIndicator = 0; + + return isar_LC3PLUS_DEC_Decode_or_Conceal_internal( handle, bitstream_in, bitstream_in_size, badFrameIndicator, pcm_out ); +} + + +/*------------------------------------------------------------------------- + * ISAR_LC3PLUS_DEC_Conceal() + * + * + *------------------------------------------------------------------------*/ + +ivas_error ISAR_LC3PLUS_DEC_Conceal( + ISAR_LC3PLUS_DEC_HANDLE handle, /* i : LC3plus decoder handle */ + Word32 **pcm_out /* o : decoded samples */ +) +{ + uint8_t bitstream_in[LC3PLUS_MAX_BYTES]; + int16_t badFrameIndicator; + + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3PLUS_Dec_Wrap_Handle is NULL\n" ); + } + + if ( NULL == pcm_out ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "pcm_out is NULL\n" ); + } + + /* LC3plus API requires a non-NULL bitstream pointer, even when triggering concealment */ + badFrameIndicator = 1; + + return isar_LC3PLUS_DEC_Decode_or_Conceal_internal( handle, bitstream_in, 0, badFrameIndicator, pcm_out ); +} diff --git a/lib_isar/isar_lc3plus_dec.h b/lib_isar/isar_lc3plus_dec.h new file mode 100644 index 0000000000000000000000000000000000000000..f3e9699405844875e995738c1ed5310d4db836c7 --- /dev/null +++ b/lib_isar/isar_lc3plus_dec.h @@ -0,0 +1,109 @@ +/****************************************************************************************************** + + (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 ISAR_LC3PLUS_DEC_H +#define ISAR_LC3PLUS_DEC_H + +#include +#include "options.h" +#include "lc3.h" +#include "ivas_error.h" +#include "ivas_cnst.h" +#include "isar_lc3plus_common.h" + + +typedef enum +{ + DEC_ACTION_DECODE_AND_USE, + DEC_ACTION_CACHE, + DEC_ACTION_NUM_ENUMS +} SelectiveDecAction; + + +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; + /*! action to execute for the next frame */ + SelectiveDecAction frame_action; + /*! 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; + +typedef struct ISAR_LC3PLUS_DEC_BITSTREAM_CACHE +{ + uint8_t *bitstream_cache; + int32_t bitstream_cache_capacity; + int32_t bitstream_cache_size; +} ISAR_LC3PLUS_DEC_BITSTREAM_CACHE; + +/* decoder wrapper */ +typedef struct ISAR_LC3PLUS_DEC_HANDLE +{ + LC3PLUS_Dec **handles; + ISAR_LC3PLUS_DEC_SELECTIVE_DECODING_STATE **selective_decoding_states; + ISAR_LC3PLUS_DEC_BITSTREAM_CACHE **bitstream_caches; + uint32_t num_decs; + int16_t *pcm_conversion_buffer; + uint8_t *scratch; + LC3PLUS_CONFIG config; +} * ISAR_LC3PLUS_DEC_HANDLE; + +ivas_error ISAR_LC3PLUS_DEC_Open( + const LC3PLUS_CONFIG config, /* i : decoder configuration */ + ISAR_LC3PLUS_DEC_HANDLE *handle /* o : decoder handle */ +); + +ivas_error ISAR_LC3PLUS_DEC_GetDelay( + ISAR_LC3PLUS_DEC_HANDLE handle, /* i : decoder handle */ + int32_t *delayInSamples /* o : algorithmic delay of encoding and decoding in number of samples per channel */ +); + +void ISAR_LC3PLUS_DEC_Close( + ISAR_LC3PLUS_DEC_HANDLE *handle /* i/o: pointer to decoder handle */ +); + + +ivas_error ISAR_LC3PLUS_DEC_Decode( + ISAR_LC3PLUS_DEC_HANDLE handle, /* i : decoder handle */ + uint8_t *bitstream_in, /* i : pointer to input bitstream */ + const int32_t bitstream_in_size, /* i : size of bitstream_in */ + Word32 **pcm_out /* o : decoded samples */ +); + +ivas_error ISAR_LC3PLUS_DEC_Conceal( + ISAR_LC3PLUS_DEC_HANDLE handle, /* i : decoder handle */ + Word32 **pcm_out /* o : decoded samples */ +); + + +#endif /* ISAR_LC3PLUS_DEC_H */ diff --git a/lib_isar/isar_lc3plus_enc.c b/lib_isar/isar_lc3plus_enc.c new file mode 100644 index 0000000000000000000000000000000000000000..7b11084af7aa0c9d056a6b34c3a4212f2fcb6852 --- /dev/null +++ b/lib_isar/isar_lc3plus_enc.c @@ -0,0 +1,583 @@ +/****************************************************************************************************** + + (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 "isar_lc3plus_enc.h" +#include "isar_lc3plus_common.h" +#include "lc3.h" +#include "ivas_error_utils.h" +#include "prot_fx.h" +#include "wmc_auto.h" +#include "options.h" + +static const LC3PLUS_RTP_FDL s_fdl_request = LC3PLUS_RTP_FDL_NO_REQ_OR_NO_DATA; + +static int32_t limit_per_channel_bitrate( LC3PLUS_CONFIG config, + int32_t per_channel_bitrate ) +{ + if ( config.high_res_mode_enabled ) + { + switch ( config.lc3plus_frame_duration_us ) + { + case 10000: + return min( per_channel_bitrate, 500000 ); + case 5000: + return min( per_channel_bitrate, 600000 ); + case 2500: + return min( per_channel_bitrate, 672000 ); + default: + assert( false && "unreachable" ); + } + } + + switch ( config.samplerate ) + { + case 48000: + case 32000: + return min( per_channel_bitrate, 320000 ); + case 24000: + return min( per_channel_bitrate, 314400 ); + case 16000: + return min( per_channel_bitrate, 221600 ); + case 8000: + return min( per_channel_bitrate, 114400 ); + default: + assert( false && "unreachable" ); + } + + assert( false && "unreachable" ); + return -1; +} + +/*-------------------------------------------------------------------* + * Function ISAR_LC3PLUS_ENC_Open() + * + * + *-------------------------------------------------------------------*/ +ivas_error ISAR_LC3PLUS_ENC_Open( + const LC3PLUS_CONFIG config, /* i : LC3plus encoder configuration */ + const UWord32 bitsPerSecond, /* i : bit rate */ + ISAR_LC3PLUS_ENC_HANDLE *handle /* o : encoder handle */ +) +{ + int32_t num_lc3plus_media_times_per_ivas_frame; + bool is_last_media_time, is_last_channel; + ivas_error ivas_err; + Word32 scratch_size; + int32_t encoder_size; + LC3PLUS_Error err; + int32_t lfeChans[1]; + int16_t i; + + lfeChans[0] = 0; + + if ( 0U == config.channels ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "Invalid number of channels\n" ); + } + 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" ); + } + if ( config.isar_frame_duration_us != 20000 && config.isar_frame_duration_us != 10000 && config.isar_frame_duration_us != 5000 ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "Invalid isar_frame_duration_us\n" ); + } + encoder_size = lc3plus_enc_get_size( config.samplerate, 1 ); + if ( 0 == encoder_size ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "lc3plus_enc_get_size failed\n" ); + } + + if ( ( *handle = malloc( sizeof( struct ISAR_LC3PLUS_ENC_HANDLE ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus wrapper handle\n" ); + } + ( *handle )->config = config; + ( *handle )->frame_type_descriptors = NULL; + + ( *handle )->pcm_conversion_buffer = NULL; + ( *handle )->scratch = NULL; + ( *handle )->num_encs = 0; + if ( ( ( *handle )->handles = malloc( config.channels * sizeof( ISAR_LC3PLUS_ENC_HANDLE ) ) ) == NULL ) + { + ISAR_LC3PLUS_ENC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus wrapper handle\n" ); + } + + for ( i = 0; i < config.channels; ++i ) + { + ( *handle )->handles[i] = NULL; + } + ( *handle )->num_encs = config.channels; + 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; + ( *handle )->frame_type_descriptors = malloc( ( *handle )->num_ftds * sizeof( LC3PLUS_RTP_FTD ) ); + if ( NULL == ( *handle )->frame_type_descriptors ) + { + ISAR_LC3PLUS_ENC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus frame_type_descriptors\n" ); + } + + for ( int32_t iCh = 0; iCh < config.channels; iCh++ ) + { + if ( ( ( *handle )->handles[iCh] = malloc( encoder_size ) ) == NULL ) + { + ISAR_LC3PLUS_ENC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus encoder\n" ); + } + + err = lc3plus_enc_init( ( *handle )->handles[iCh], config.samplerate, 1, config.high_res_mode_enabled, lfeChans ); + if ( err != LC3PLUS_OK ) + { + ISAR_LC3PLUS_ENC_Close( handle ); + return IVAS_ERROR( ISAR_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_enc_init failed\n" ); + } + + err = lc3plus_enc_set_frame_dms( ( *handle )->handles[iCh], config.lc3plus_frame_duration_us / 100 ); + if ( err != LC3PLUS_OK ) + { + ISAR_LC3PLUS_ENC_Close( handle ); + return IVAS_ERROR( ISAR_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_enc_set_frame_dms failed\n" ); + } + } + + if ( config.isar_frame_duration_us < config.lc3plus_frame_duration_us || config.isar_frame_duration_us % config.lc3plus_frame_duration_us != 0 ) + { + ISAR_LC3PLUS_ENC_Close( handle ); + 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" ); + } + + ( *handle )->pcm_conversion_buffer = malloc( sizeof( int16_t ) * config.samplerate * config.lc3plus_frame_duration_us / 1000000 ); + if ( NULL == ( *handle )->pcm_conversion_buffer ) + { + ISAR_LC3PLUS_ENC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus encoder wrapper pcm_conversion_buffer\n" ); + } + + /* 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; + ( *handle )->frame_type_descriptors[ftd_index].frame_data_length = 0; /* will be set to the correct value in IVAS_LC3PLUS_ENC_SetBitrate */ + 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 ); + return IVAS_ERROR( IVAS_ERR_INTERNAL, "LC3PLUS_RTP_ftd_bwr_from_samplerate failed\n" ); + } + if ( 0 != LC3PLUS_RTP_ftd_fdi_from_frame_duration_us( &( *handle )->frame_type_descriptors[ftd_index].fdi, config.lc3plus_frame_duration_us ) ) + { + ISAR_LC3PLUS_ENC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_INTERNAL, "LC3PLUS_RTP_ftd_fdi_from_frame_duration_us failed\n" ); + } + ( *handle )->frame_type_descriptors[ftd_index].h = LC3PLUS_RTP_FTD_H_PRIMARY; + ( *handle )->frame_type_descriptors[ftd_index].frame_data = NULL; + + /* The FTDs in the ToC are included in the following order: + * 1) First the FTD for the first channel of the first FDB (oldest frame) + * 2) Then the FTDs for the remaining channels for the first FDB in increasing CC order + * 3) Then the FTD for the first channel of the second FDB + * 4) Then the FTDs for the remaining channels for the second FDB + * 5) Etc. to the last FDB */ + is_last_media_time = num_lc3plus_media_times_per_ivas_frame - 1 == iMediaTime; + is_last_channel = ( *handle )->num_encs - 1 == iEnc; + if ( is_last_media_time && is_last_channel ) + { + ( *handle )->frame_type_descriptors[ftd_index].fc = LC3PLUS_RTP_FTD_FC_LAST_OVERALL; + } + else if ( !is_last_media_time && is_last_channel ) + { + ( *handle )->frame_type_descriptors[ftd_index].fc = LC3PLUS_RTP_FTD_FC_LAST_IN_MEDIATIME; + } + else + { + ( *handle )->frame_type_descriptors[ftd_index].fc = LC3PLUS_RTP_FTD_FC_SUBSEQUENT_CHANNEL; + } + } + } + + ivas_err = IVAS_LC3PLUS_ENC_SetBitrate( *handle, bitsPerSecond ); + if ( ivas_err != IVAS_ERR_OK ) + { + ISAR_LC3PLUS_ENC_Close( handle ); + return ivas_err; + } + scratch_size = lc3plus_enc_get_scratch_size( ( *handle )->handles[0] ); + ( *handle )->scratch = malloc( sizeof( uint8_t ) * scratch_size ); + IF( NULL == ( *handle )->scratch ) + { + ISAR_LC3PLUS_ENC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus encoder wrapper scratch\n" ); + } + + return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------* + * Function IVAS_LC3PLUS_ENC_SetBitrate() + * + * + *-------------------------------------------------------------------*/ + +ivas_error IVAS_LC3PLUS_ENC_SetBitrate( + ISAR_LC3PLUS_ENC_HANDLE handle, /* o : LC3plus encoder handle */ + const uint32_t bitsPerSecond /* i : new target bit rate */ +) +{ + int32_t numLc3plusMediaTimesPerIvasFrame; + int32_t lc3plus_num_bytes_per_frame; + int32_t availableOctetsPerIsarFrame; + int32_t actualOctetsPerFrame; + LC3PLUS_Error err; + int32_t iFtd; + int32_t fdrLength; + int32_t lc3plusPacketRate; + int32_t numSubframes; + int32_t minPayloadOverhead; + int32_t targetLc3PlusBitratePerChannel; + int32_t targetLc3PlusOctetCount; + int32_t lc3plusFdlLength; + + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3PLUS_Enc_Wrap_Handle is NULL\n" ); + } + + availableOctetsPerIsarFrame = bitsPerSecond / ( 1000000 / handle->config.isar_frame_duration_us ) / 8; + lc3plusPacketRate = 1000 * 1000 / handle->config.lc3plus_frame_duration_us; + numLc3plusMediaTimesPerIvasFrame = handle->config.isar_frame_duration_us / handle->config.lc3plus_frame_duration_us; + numSubframes = numLc3plusMediaTimesPerIvasFrame * handle->config.channels; + + /* subtract minimum required payload bytes & calculate a first per-channel target bit rate */ + if ( LC3PLUS_RTP_frame_data_length_get_size( &fdrLength, s_fdl_request ) != LC3PLUS_RTP_ERR_NO_ERROR ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "LC3PLUS_RTP_frame_data_length_get_size failed\n" ); + } + minPayloadOverhead = fdrLength + ( numSubframes * LC3PLUS_RTP_FTD_MIN_SIZE ); + targetLc3PlusBitratePerChannel = ( availableOctetsPerIsarFrame - minPayloadOverhead ) / handle->config.channels * 8 * lc3plusPacketRate / numLc3plusMediaTimesPerIvasFrame; + if ( targetLc3PlusBitratePerChannel <= 0 ) + { + return IVAS_ERROR( IVAS_ERR_LC3PLUS_INVALID_BITRATE, "available LC3plus bitrate <= 0\n" ); + } + 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 */ + if ( LC3PLUS_RTP_frame_data_length_get_size( &lc3plusFdlLength, targetLc3PlusOctetCount ) != LC3PLUS_RTP_ERR_NO_ERROR ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "LC3PLUS_RTP_frame_data_length_get_size failed\n" ); + } + if ( lc3plusFdlLength != LC3PLUS_RTP_FDL_MIN_LENGTH ) + { + /* reduce bitrate to allow for the required fdl field */ + targetLc3PlusBitratePerChannel = ( targetLc3PlusOctetCount - ( lc3plusFdlLength - LC3PLUS_RTP_FDL_MIN_LENGTH ) ) / handle->config.channels * 8 * lc3plusPacketRate; + } + + for ( int32_t iCh = 0; iCh < handle->config.channels; iCh++ ) + { + err = lc3plus_enc_set_bitrate( handle->handles[iCh], targetLc3PlusBitratePerChannel ); + if ( err != LC3PLUS_OK ) + { + return IVAS_ERROR( ISAR_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_enc_set_bitrate failed\n" ); + } + } + + // update FTD settings after bitrate change + for ( int32_t iMediaTime = 0; iMediaTime < numLc3plusMediaTimesPerIvasFrame; ++iMediaTime ) + { + for ( uint32_t iEnc = 0; iEnc < handle->num_encs; ++iEnc ) + { + iFtd = iEnc + iMediaTime * handle->num_encs; + lc3plus_num_bytes_per_frame = lc3plus_enc_get_num_bytes( handle->handles[iEnc] ); + if ( lc3plus_num_bytes_per_frame <= 0 ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "lc3plus_enc_get_num_bytes reported invalid result failed\n" ); + } + handle->frame_type_descriptors[iFtd].frame_data_length = lc3plus_num_bytes_per_frame; + } + } + + // TODO: remove sanity checks? + if ( ISAR_LC3PLUS_ENC_GetOutputBitstreamSize( handle, &actualOctetsPerFrame ) != IVAS_ERR_OK ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "ISAR_LC3PLUS_ENC_GetOutputBitstreamSize failed\n" ); + } + if ( actualOctetsPerFrame > availableOctetsPerIsarFrame ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "Bitrate reduction logic failed\n" ); + } + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * Function ISAR_LC3PLUS_ENC_GetDelay() + * + * + *-------------------------------------------------------------------*/ + +ivas_error ISAR_LC3PLUS_ENC_GetDelay( + ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ + int32_t *delayInSamples /* o : encoder delay in number of samples per channel */ +) +{ + int32_t tmpDelayInSamples; + + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3PLUS_Enc_Wrap_Handle is NULL\n" ); + } + if ( NULL == delayInSamples ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "delayInSamples is NULL\n" ); + } + + *delayInSamples = 0; + /* sanity check whether all encoders are actually configured identically */ + 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" ); + } + + tmpDelayInSamples = lc3plus_enc_get_delay( handle->handles[iEnc] ); + if ( 0 != *delayInSamples && tmpDelayInSamples != *delayInSamples ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "Not all mono LC3plus encoders are configured identically\n" ); + } + *delayInSamples = tmpDelayInSamples; + } + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * Function ISAR_LC3PLUS_ENC_GetOutputBitstreamSize() + * + * + *-------------------------------------------------------------------*/ + +ivas_error ISAR_LC3PLUS_ENC_GetOutputBitstreamSize( + ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ + Word32 *bsSize /* o : size of each bitstream frame in bytes */ +) +{ + 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; + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3PLUS_Enc_Wrap_Handle is NULL\n" ); + } + if ( NULL == bsSize ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "bsSize is NULL\n" ); + } + + if ( 0 == handle->config.lc3plus_frame_duration_us ) + { + return IVAS_ERROR( IVAS_ERR_INIT_ERROR, "lc3plus_frame_duration_us is 0\n" ); + } + 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" ); + } + + num_lc3plus_media_times_per_ivas_frame = handle->config.isar_frame_duration_us / handle->config.lc3plus_frame_duration_us; + *bsSize = 0; + 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 ) + { + return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Invalid LC3plus frame_data_length request\n" ); + } + *bsSize += fdl_request_length; + 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" ); + } + lc3plus_frame_data_length = lc3plus_enc_get_num_bytes( handle->handles[iEnc] ); + for ( iMediaTime = 0; iMediaTime < num_lc3plus_media_times_per_ivas_frame; ++iMediaTime ) + { + ftd_index = iEnc + iMediaTime * handle->num_encs; + if ( lc3plus_frame_data_length != (int32_t) handle->frame_type_descriptors[ftd_index].frame_data_length ) + { + return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "LC3plus FTD data not synchronised with encoder bitrate\n" ); + } + rtp_err = LC3PLUS_RTP_frame_data_length_get_size( &ftd_frame_data_length_size, handle->frame_type_descriptors[ftd_index].frame_data_length ); + if ( rtp_err != LC3PLUS_RTP_ERR_NO_ERROR ) + { + return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Invalid LC3plus frame_data_length\n" ); + } + *bsSize += LC3PLUS_RTP_FTD_LENGTH_EXCLUDING_FDL; + *bsSize += handle->frame_type_descriptors[ftd_index].frame_data_length; + *bsSize += ftd_frame_data_length_size; + } + } + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * Function ISAR_LC3PLUS_ENC_Close() + * + * + *-------------------------------------------------------------------*/ + +void ISAR_LC3PLUS_ENC_Close( + ISAR_LC3PLUS_ENC_HANDLE *handle /* i/o: pointer to LC3plus encoder handle */ +) +{ + if ( NULL == handle || NULL == *handle ) + { + return; + } + if ( NULL != ( *handle )->frame_type_descriptors ) + { + free( ( *handle )->frame_type_descriptors ); + } + for ( uint32_t iEnc = 0; iEnc < ( *handle )->num_encs; iEnc++ ) + { + if ( NULL != ( *handle )->handles[iEnc] ) + { + free( ( *handle )->handles[iEnc] ); + } + } + if ( NULL != ( *handle )->pcm_conversion_buffer ) + { + free( ( *handle )->pcm_conversion_buffer ); + } + + if ( NULL != ( *handle )->scratch ) + { + free( ( *handle )->scratch ); + } + + free( ( *handle )->handles ); + free( *handle ); + + *handle = NULL; + + return; +} + + +/*-------------------------------------------------------------------* + * Function ISAR_LC3PLUS_ENC_Encode() + * + * + *-------------------------------------------------------------------*/ +ivas_error ISAR_LC3PLUS_ENC_Encode( + 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. */ + Word16 q_in[16] ) +{ + int32_t ftdIndex; + LC3PLUS_RTP_ERR rtpErr; + uint32_t num_media_times; + uint32_t numSamplesPerLC3plusChannel; + int32_t ivasSampleIndex; + int32_t num_bytes = 0; + LC3PLUS_Error err; + + push_wmops( "ISAR_LC3PLUS_ENC_Encode" ); + + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3PLUS_Enc_Wrap_Handle is NULL\n" ); + } + if ( NULL == pcm_in ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "pcm_in is NULL\n" ); + } + if ( NULL == bitstream_out ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "bitstream_out is NULL\n" ); + } + + 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" ); + } + 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; + + size_t actual_size; + rtpErr = LC3PLUS_RTP_payload_serialize( bitstream_out, bitstream_out_size, &actual_size, s_fdl_request, handle->frame_type_descriptors, handle->num_ftds ); + if ( rtpErr != LC3PLUS_RTP_ERR_NO_ERROR ) + { + return IVAS_ERROR( IVAS_LC3PLUS_LC3plusRtpErrToIvasErr( rtpErr ), "LC3PLUS_RTP_payload_serialize failed\n" ); + } + for ( uint32_t iEnc = 0; iEnc < handle->num_encs; iEnc++ ) + { + for ( uint32_t iMediaTime = 0; iMediaTime < num_media_times; iMediaTime++ ) + { + for ( uint32_t iSampleInt16 = 0; iSampleInt16 < numSamplesPerLC3plusChannel; iSampleInt16++ ) + { + ivasSampleIndex = iSampleInt16 + iMediaTime * numSamplesPerLC3plusChannel; + handle->pcm_conversion_buffer[iSampleInt16] = (Word16) max( INT16_MIN, min( L_shr( pcm_in[iEnc][ivasSampleIndex], q_in[iEnc] ), INT16_MAX ) ); + } + + ftdIndex = iMediaTime * handle->num_encs + iEnc; + num_bytes = 0; + push_wmops( "lc3plus_enc16" ); + err = lc3plus_enc16( handle->handles[iEnc], &handle->pcm_conversion_buffer, handle->frame_type_descriptors[ftdIndex].frame_data, &num_bytes, handle->scratch ); + pop_wmops(); + if ( err != LC3PLUS_OK ) + { + return IVAS_ERROR( ISAR_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_enc16 failed\n" ); + } + if ( 0 == num_bytes ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "lc3plus_enc16 did not produce output\n" ); + } + 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" ); + } + } + } + + pop_wmops(); + + return IVAS_ERR_OK; +} diff --git a/lib_isar/isar_lc3plus_enc.h b/lib_isar/isar_lc3plus_enc.h new file mode 100644 index 0000000000000000000000000000000000000000..f0c37afc8592509ff35ddc3f0e2e05dd28c1f296 --- /dev/null +++ b/lib_isar/isar_lc3plus_enc.h @@ -0,0 +1,88 @@ +/****************************************************************************************************** + + (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 ISAR_LC3PLUS_ENC_H +#define ISAR_LC3PLUS_ENC_H + +#include +#include "ivas_error.h" +#include "lc3.h" +#include "isar_lc3plus_common.h" +#include "typedef.h" +#include "isar_lc3plus_payload.h" + +/* encoder wrapper */ +typedef struct ISAR_LC3PLUS_ENC_HANDLE +{ + LC3PLUS_CONFIG config; + LC3PLUS_Enc **handles; + uint32_t num_encs; + int16_t *pcm_conversion_buffer; + LC3PLUS_RTP_FTD *frame_type_descriptors; + int32_t num_ftds; + LC3PLUS_RTP_FDL fdl_request; + uint8_t *scratch; +} * ISAR_LC3PLUS_ENC_HANDLE; + +ivas_error ISAR_LC3PLUS_ENC_Open( + const LC3PLUS_CONFIG config, /* i : encoder configuration */ + const uint32_t initialBitsPerSecond, /* i : initial target bit rate */ + ISAR_LC3PLUS_ENC_HANDLE *handle /* o : LC3plus encoder handle */ +); + +ivas_error IVAS_LC3PLUS_ENC_SetBitrate( + ISAR_LC3PLUS_ENC_HANDLE handle, /* o : LC3plus encoder handle */ + const uint32_t bitsPerSecond /* i : new target bit rate */ +); + +ivas_error ISAR_LC3PLUS_ENC_GetDelay( + ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ + int32_t *delayInSamples /* o : algorithmic delay of encoding and decoding in number of samples per channel */ +); + +ivas_error ISAR_LC3PLUS_ENC_GetOutputBitstreamSize( + ISAR_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ + int32_t *bsSize /* o : size of next bitstream frame in bytes */ +); + +void ISAR_LC3PLUS_ENC_Close( + ISAR_LC3PLUS_ENC_HANDLE *handle /* i/o: pointer to LC3plus encoder handle */ +); + +ivas_error ISAR_LC3PLUS_ENC_Encode( + 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. */ + Word16 q_in[16] ); + +#endif /* ISAR_LC3PLUS_ENC_H */ diff --git a/lib_isar/isar_lc3plus_payload.c b/lib_isar/isar_lc3plus_payload.c new file mode 100644 index 0000000000000000000000000000000000000000..2493aa6a30eb9ca3ab8f493dc1dad4e057666b98 --- /dev/null +++ b/lib_isar/isar_lc3plus_payload.c @@ -0,0 +1,818 @@ +/****************************************************************************************************** + + (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 "isar_lc3plus_payload.h" +#include "options.h" + +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 ) + { + return LC3PLUS_RTP_ERR_NULL_PTR; + } + switch ( fdi ) + { + case LC3PLUS_RTP_FTD_FDI_2500_US: + *frame_duration_us = 2500; + break; + case LC3PLUS_RTP_FTD_FDI_5000_US: + *frame_duration_us = 5000; + break; + case LC3PLUS_RTP_FTD_FDI_10000_US: + *frame_duration_us = 10000; + break; + case LC3PLUS_RTP_FTD_FDI_RESERVED: + default: + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; + } + return LC3PLUS_RTP_ERR_NO_ERROR; +} + +static LC3PLUS_RTP_ERR s_sampling_rate_hz_from_bwr( int32_t *sample_rate_hz, const LC3PLUS_RTP_FTD_BWR bwr ) +{ + if ( NULL == sample_rate_hz ) + { + return LC3PLUS_RTP_ERR_NULL_PTR; + } + switch ( bwr ) + { + case LC3PLUS_RTP_FTD_BWR_NB: + *sample_rate_hz = 8000; + break; + case LC3PLUS_RTP_FTD_BWR_WB: + *sample_rate_hz = 16000; + break; + case LC3PLUS_RTP_FTD_BWR_SSWB: + *sample_rate_hz = 24000; + break; + case LC3PLUS_RTP_FTD_BWR_SWB: + *sample_rate_hz = 32000; + break; + case LC3PLUS_RTP_FTD_BWR_FBCD: + *sample_rate_hz = 44100; + break; + case LC3PLUS_RTP_FTD_BWR_FB: + *sample_rate_hz = 48000; + break; + case LC3PLUS_RTP_FTD_BWR_FBHR: + *sample_rate_hz = 48000; + break; + case LC3PLUS_RTP_FTD_BWR_UBHR: + *sample_rate_hz = 96000; + break; + default: + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; + } + return LC3PLUS_RTP_ERR_NO_ERROR; +} + +static LC3PLUS_RTP_ERR s_high_resolution_flag_from_bwr( int16_t *high_resolution_flag, const LC3PLUS_RTP_FTD_BWR bwr ) +{ + if ( NULL == high_resolution_flag ) + { + return LC3PLUS_RTP_ERR_NULL_PTR; + } + switch ( bwr ) + { + case LC3PLUS_RTP_FTD_BWR_NB: + *high_resolution_flag = 0; + break; + case LC3PLUS_RTP_FTD_BWR_WB: + *high_resolution_flag = 0; + break; + case LC3PLUS_RTP_FTD_BWR_SSWB: + *high_resolution_flag = 0; + break; + case LC3PLUS_RTP_FTD_BWR_SWB: + *high_resolution_flag = 0; + break; + case LC3PLUS_RTP_FTD_BWR_FBCD: + *high_resolution_flag = 0; + break; + case LC3PLUS_RTP_FTD_BWR_FB: + *high_resolution_flag = 0; + break; + case LC3PLUS_RTP_FTD_BWR_FBHR: + *high_resolution_flag = 1; + break; + case LC3PLUS_RTP_FTD_BWR_UBHR: + *high_resolution_flag = 1; + break; + default: + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; + } + return LC3PLUS_RTP_ERR_NO_ERROR; +} + +LC3PLUS_RTP_ERR LC3PLUS_RTP_frame_data_length_get_size( int32_t *length, const LC3PLUS_RTP_FDL frameDataLengthValue ) +{ + if ( frameDataLengthValue == LC3PLUS_RTP_FDL_NO_REQ_OR_NO_DATA || frameDataLengthValue == LC3PLUS_RTP_FDL_SPEECH_BAD || frameDataLengthValue == LC3PLUS_RTP_FDL_SPEECH_SID ) + { + *length = 1; + } + else if ( frameDataLengthValue >= LC3PLUS_RTP_FDL_LENGTH_1_MIN && frameDataLengthValue <= LC3PLUS_RTP_FDL_LENGTH_1_MAX ) + { + *length = 1; + } + else if ( frameDataLengthValue >= LC3PLUS_RTP_FDL_LENGTH_2_MIN && frameDataLengthValue <= LC3PLUS_RTP_FDL_LENGTH_2_MAX ) + { + *length = 2; + } + else if ( frameDataLengthValue >= LC3PLUS_RTP_FDL_LENGTH_3_MIN && frameDataLengthValue <= LC3PLUS_RTP_FDL_LENGTH_3_MAX ) + { + *length = 3; + } + else + { + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; + } + return LC3PLUS_RTP_ERR_NO_ERROR; +} + +static LC3PLUS_RTP_ERR s_frame_data_length_pack( const LC3PLUS_RTP_FDL frameDataLengthValue, uint8_t *dst ) +{ + int32_t frame_data_length_size; + LC3PLUS_RTP_ERR err; + + if ( NULL == dst ) + { + return LC3PLUS_RTP_ERR_NULL_PTR; + } + + err = LC3PLUS_RTP_frame_data_length_get_size( &frame_data_length_size, frameDataLengthValue ); + if ( err != LC3PLUS_RTP_ERR_NO_ERROR ) + { + return err; + } + if ( 1 == frame_data_length_size ) + { + *dst++ = frameDataLengthValue >> 0 & LC3PLUS_RTP_FDL_EXTENSION_VALUE; + } + else if ( 2 == frame_data_length_size ) + { + const int32_t frameDataLengthValueToWrite = frameDataLengthValue - LC3PLUS_RTP_FDL_EXTENSION_VALUE; + *dst++ = LC3PLUS_RTP_FDL_EXTENSION_VALUE; + *dst = frameDataLengthValueToWrite >> 0 & LC3PLUS_RTP_FDL_EXTENSION_VALUE; + } + else if ( 3 == frame_data_length_size ) + { + const int32_t frameDataLengthValueToWrite = frameDataLengthValue - ( 2 * LC3PLUS_RTP_FDL_EXTENSION_VALUE ); + *dst++ = LC3PLUS_RTP_FDL_EXTENSION_VALUE; + *dst++ = LC3PLUS_RTP_FDL_EXTENSION_VALUE; + *dst = frameDataLengthValueToWrite >> 0 & LC3PLUS_RTP_FDL_EXTENSION_VALUE; + } + return LC3PLUS_RTP_ERR_NO_ERROR; +} + +static int32_t s_get_size_from_fdl( const LC3PLUS_RTP_FDL fdl ) +{ + if ( fdl >= LC3PLUS_RTP_FDL_LENGTH_1_MIN && fdl <= LC3PLUS_RTP_FDL_LENGTH_3_MAX ) + { + return fdl; + } + return 0; +} + +static bool s_fdl_is_magic_value( const LC3PLUS_RTP_FDL fdl ) +{ + if ( fdl == LC3PLUS_RTP_FDL_NO_REQ_OR_NO_DATA || fdl == LC3PLUS_RTP_FDL_SPEECH_SID || fdl == LC3PLUS_RTP_FDL_SPEECH_BAD ) + { + return true; + } + return false; +} + +static bool s_fdl_value_is_valid_request( const LC3PLUS_RTP_FDL fdl_request ) +{ + /* LC3PLUS_RTP_FDL_SPEECH_SID && LC3PLUS_RTP_FDL_SPEECH_SID are not valid values for the FDL request */ + if ( fdl_request == LC3PLUS_RTP_FDL_NO_REQ_OR_NO_DATA || ( fdl_request >= LC3PLUS_RTP_FDL_LENGTH_1_MIN && fdl_request <= LC3PLUS_RTP_FDL_LENGTH_3_MAX ) ) + { + return true; + } + return false; +} + +static LC3PLUS_RTP_ERR s_frame_data_length_parse( LC3PLUS_RTP_FDL *frame_data_length_value, const uint8_t *src, const size_t remaining_capacity ) +{ + int32_t frame_data_length_size; + LC3PLUS_RTP_ERR err; + if ( NULL == src || NULL == frame_data_length_value || remaining_capacity < 1 ) + { + return LC3PLUS_RTP_ERR_NULL_PTR; + } + + if ( remaining_capacity > 2 && LC3PLUS_RTP_FDL_EXTENSION_VALUE == *src && LC3PLUS_RTP_FDL_EXTENSION_VALUE == *( src + 1 ) ) + { + *frame_data_length_value = *( src + 2 ) + 2 * LC3PLUS_RTP_FDL_EXTENSION_VALUE; + } + else if ( remaining_capacity > 1 && LC3PLUS_RTP_FDL_EXTENSION_VALUE == *src ) + { + *frame_data_length_value = *( src + 1 ) + 1 * LC3PLUS_RTP_FDL_EXTENSION_VALUE; + } + else if ( remaining_capacity > 0 ) + { + *frame_data_length_value = *src << 0; + } + else + { + return LC3PLUS_RTP_ERR_INVALID_BITSTREAM_SIZE; + } + + /* sanity check */ + err = LC3PLUS_RTP_frame_data_length_get_size( &frame_data_length_size, *frame_data_length_value ); + if ( err != LC3PLUS_RTP_ERR_NO_ERROR ) + { + return err; + } + return LC3PLUS_RTP_ERR_NO_ERROR; +} + +static LC3PLUS_RTP_ERR s_parse_ftd( const uint8_t *p_read, LC3PLUS_RTP_FTD *receiver_ftd, int32_t *num_bytes_read, const size_t remaining_capacity ) +{ + int32_t frame_data_block_size; + LC3PLUS_RTP_FDL fdl; + LC3PLUS_RTP_ERR err; + if ( NULL == p_read || NULL == receiver_ftd || NULL == num_bytes_read || remaining_capacity < LC3PLUS_RTP_FTD_MIN_SIZE ) + { + return LC3PLUS_RTP_ERR_NULL_PTR; + } + + *num_bytes_read = 0; + receiver_ftd->fc = 0; + receiver_ftd->fdi = 0; + receiver_ftd->bwr = 0; + receiver_ftd->h = 0; + receiver_ftd->fc |= *p_read & LC3PLUS_RTP_FTD_FC_MASK; + receiver_ftd->fdi |= ( *p_read & LC3PLUS_RTP_FTD_FDI_MASK ); + receiver_ftd->bwr |= ( *p_read & LC3PLUS_RTP_FTD_BWR_MASK ); + receiver_ftd->h |= ( *p_read & LC3PLUS_RTP_FTD_H_MASK ); + p_read++; + *num_bytes_read = 1; + + err = s_frame_data_length_parse( &fdl, p_read, remaining_capacity - *num_bytes_read ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != err ) + { + return err; + } + frame_data_block_size = s_get_size_from_fdl( fdl ); + + receiver_ftd->frame_data_length = frame_data_block_size; + int32_t length_field_size; + err = LC3PLUS_RTP_frame_data_length_get_size( &length_field_size, receiver_ftd->frame_data_length ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != err ) + { + return err; + } + *num_bytes_read += length_field_size; + return LC3PLUS_RTP_ERR_NO_ERROR; +} + +LC3PLUS_RTP_ERR LC3PLUS_RTP_payload_serialize( + uint8_t *serialized_buffer, + const size_t serialized_buffer_capacity, + size_t *packed_buffer_actual_size, + const LC3PLUS_RTP_FDL fdl_request, + LC3PLUS_RTP_FTD *sender_ftds, + const size_t sender_ftds_num ) +{ + LC3PLUS_RTP_ERR err; + uint8_t *p_write = serialized_buffer; + uint32_t i; + int32_t bytes_written = 0; + int32_t lc3plus_frame_size_sum; + uint8_t *p_frame_data; + int32_t fdl_request_length; + + if ( NULL == serialized_buffer || NULL == packed_buffer_actual_size || NULL == sender_ftds ) + { + return LC3PLUS_RTP_ERR_NULL_PTR; + } + + *packed_buffer_actual_size = 0; + err = LC3PLUS_RTP_frame_data_length_get_size( &fdl_request_length, fdl_request ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != err ) + { + return err; + } + if ( !s_fdl_value_is_valid_request( fdl_request ) ) + { + return LC3PLUS_RTP_ERR_INVALID_FDL_REQUEST; + } + if ( (int32_t) serialized_buffer_capacity < bytes_written + fdl_request_length ) + { + return LC3PLUS_RTP_ERR_INVALID_BITSTREAM_SIZE; + } + err = s_frame_data_length_pack( fdl_request, p_write ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != err ) + { + return err; + } + bytes_written += fdl_request_length; + p_write += bytes_written; + + for ( i = 0; i < sender_ftds_num; ++i ) + { + /* only the last ftd may have the LC3PLUS_RTP_FTD_FC_LAST_OVERALL value */ + if ( sender_ftds[i].fc == LC3PLUS_RTP_FTD_FC_LAST_OVERALL && i != ( sender_ftds_num - 1 ) ) + { + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; + } + /* the last ftd must have the LC3PLUS_RTP_FTD_FC_LAST_OVERALL value */ + if ( sender_ftds[i].fc != LC3PLUS_RTP_FTD_FC_LAST_OVERALL && i == ( sender_ftds_num - 1 ) ) + { + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; + } + if ( (int32_t) serialized_buffer_capacity < bytes_written + LC3PLUS_RTP_FTD_LENGTH_EXCLUDING_FDL ) + { + return LC3PLUS_RTP_ERR_INVALID_BITSTREAM_SIZE; + } + *p_write = 0x00; + *p_write |= LC3PLUS_RTP_FTD_FC_MASK & (uint8_t) sender_ftds[i].fc; + *p_write |= LC3PLUS_RTP_FTD_FDI_MASK & (uint8_t) sender_ftds[i].fdi; + *p_write |= LC3PLUS_RTP_FTD_BWR_MASK & (uint8_t) sender_ftds[i].bwr; + *p_write |= LC3PLUS_RTP_FTD_H_MASK & (uint8_t) sender_ftds[i].h; + p_write++; + bytes_written += LC3PLUS_RTP_FTD_LENGTH_EXCLUDING_FDL; + + int32_t fdl_length; + err = LC3PLUS_RTP_frame_data_length_get_size( &fdl_length, sender_ftds[i].frame_data_length ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != err ) + { + return err; + } + if ( (int32_t) serialized_buffer_capacity < bytes_written + fdl_length ) + { + return LC3PLUS_RTP_ERR_INVALID_BITSTREAM_SIZE; + } + err = s_frame_data_length_pack( sender_ftds[i].frame_data_length, p_write ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != err ) + { + return err; + } + p_write += fdl_length; + bytes_written += fdl_length; + } + + lc3plus_frame_size_sum = 0; + p_frame_data = serialized_buffer + bytes_written; + for ( i = 0; i < sender_ftds_num; ++i ) + { + sender_ftds[i].frame_data = p_frame_data; + p_frame_data += sender_ftds[i].frame_data_length; + lc3plus_frame_size_sum += sender_ftds[i].frame_data_length; + } + *packed_buffer_actual_size = bytes_written + lc3plus_frame_size_sum; + assert( *packed_buffer_actual_size <= serialized_buffer_capacity ); + return LC3PLUS_RTP_ERR_NO_ERROR; +} + +static LC3PLUS_RTP_ERR s_ftds_parse( + LC3PLUS_RTP_FTD *receiver_ftds, + const int32_t receiver_ftds_num_max, + int16_t *receiver_ftds_num, + uint8_t *serialized_buffer, + const size_t serialized_buffer_size ) +{ + int32_t diff; + uint8_t *p_read; + uint32_t ftds_offset_sum = 0; + int16_t i; + LC3PLUS_RTP_ERR error; + int32_t frame_offset_counter; + int32_t size; + + p_read = serialized_buffer; + if ( NULL == receiver_ftds || NULL == receiver_ftds_num || NULL == serialized_buffer ) + { + return LC3PLUS_RTP_ERR_NULL_PTR; + } + if ( 0 == serialized_buffer_size ) + { + return LC3PLUS_RTP_ERR_EMPTY_TOC; + } + if ( receiver_ftds_num_max <= 0 ) + { + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; + } + { + int32_t num_bytes_read_sum = 0; + const int32_t min_num_bytes_per_ftd = 2; + int16_t receiver_ftds_index = 0; + bool another_ftd = true; + int32_t num_bytes_read_per_ftd; + + while ( another_ftd ) + { + if ( (int32_t) serialized_buffer_size < min_num_bytes_per_ftd ) + { + return LC3PLUS_RTP_ERR_INVALID_BITSTREAM_SIZE; + } + if ( num_bytes_read_sum >= (int32_t) serialized_buffer_size - min_num_bytes_per_ftd ) + { + return LC3PLUS_RTP_ERR_INVALID_BITSTREAM_SIZE; + } + num_bytes_read_per_ftd = 0; + error = s_parse_ftd( p_read, &receiver_ftds[receiver_ftds_index], &num_bytes_read_per_ftd, serialized_buffer_size - num_bytes_read_sum ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != error ) + { + return error; + } + p_read += num_bytes_read_per_ftd; + num_bytes_read_sum += num_bytes_read_per_ftd; + + if ( receiver_ftds[receiver_ftds_index].fc == LC3PLUS_RTP_FTD_FC_RESERVED ) + { + return LC3PLUS_RTP_ERR_INVALID_BITSTREAM; + } + else if ( receiver_ftds[receiver_ftds_index].fc == LC3PLUS_RTP_FTD_FC_LAST_OVERALL ) + { + another_ftd = false; + } + + if ( another_ftd ) + { + if ( receiver_ftds_index >= receiver_ftds_num_max ) + { + return LC3PLUS_RTP_ERR_NOT_ENOUGH_FTDS_ALLOCATED; + } + ( receiver_ftds_index )++; + } + } + *receiver_ftds_num = receiver_ftds_index + 1; + } + + /* set frame-data pointers into serialized_buffer */ + for ( i = 0; i < *receiver_ftds_num; ++i ) + { + error = LC3PLUS_RTP_frame_data_length_get_size( &size, receiver_ftds[i].frame_data_length ); + if ( error != LC3PLUS_RTP_ERR_NO_ERROR ) + { + return error; + } + ftds_offset_sum += LC3PLUS_RTP_FTD_LENGTH_EXCLUDING_FDL + size; + } + + frame_offset_counter = 0; + for ( i = 0; i < *receiver_ftds_num; ++i ) + { + if ( s_fdl_is_magic_value( receiver_ftds[i].frame_data_length ) ) + { + receiver_ftds[i].frame_data = NULL; + } + else + { + receiver_ftds[i].frame_data = serialized_buffer + ftds_offset_sum + frame_offset_counter; + frame_offset_counter += receiver_ftds[i].frame_data_length; + } + } + + if ( ftds_offset_sum + frame_offset_counter != serialized_buffer_size ) + { + /* parsed content & size n bytes of input buffer do not line up */ + /* if the buffer capacity is larger and the remaining bytes are zero, we don't treat this as an error since it's due to the IVAS-Split rendering zero padding */ + diff = serialized_buffer_size - ( ftds_offset_sum + frame_offset_counter ); + if ( diff < 0 ) + { + return LC3PLUS_RTP_ERR_INVALID_BITSTREAM_SIZE; + } + /* verify that all bytes are zero */ + p_read += frame_offset_counter; + for ( i = 0; i < diff; ++i ) + { + if ( *p_read != 0 ) + { + /* non-zero byte in padding region */ + return LC3PLUS_RTP_ERR_NONZERO_PADDING_BYTES; + } + p_read++; + } + } + return LC3PLUS_RTP_ERR_NO_ERROR; +} + +LC3PLUS_RTP_ERR LC3PLUS_RTP_payload_deserialize( + LC3PLUS_RTP_PAYLOAD *payload, + uint8_t *serialized_buffer, + const size_t serialized_buffer_size ) +{ + int32_t new_frame_duration_us; + int32_t new_sampling_rate_hz; + int16_t new_high_resolution_flag; + int16_t i = 0; + int16_t channel_id = 0; + int16_t media_time_id = 0; + const int16_t invalid_value = -1; + int16_t media_times_per_channel[LC3PLUS_RTP_PAYLOAD_MAX_NUM_CHANNELS]; + int16_t channels_per_media_time[LC3PLUS_RTP_PAYLOAD_MAX_NUM_MEDIA_TIMES]; + LC3PLUS_RTP_ERR err; + + if ( NULL == payload || NULL == serialized_buffer ) + { + return LC3PLUS_RTP_ERR_NULL_PTR; + } + if ( 0 == serialized_buffer_size ) + { + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; + } + + for ( media_time_id = 0; media_time_id < LC3PLUS_RTP_PAYLOAD_MAX_NUM_MEDIA_TIMES; ++media_time_id ) + { + channels_per_media_time[media_time_id] = invalid_value; + } + media_time_id = 0; + for ( channel_id = 0; channel_id < LC3PLUS_RTP_PAYLOAD_MAX_NUM_CHANNELS; ++channel_id ) + { + media_times_per_channel[channel_id] = invalid_value; + } + channel_id = 0; + + err = s_frame_data_length_parse( &payload->fdl_request, serialized_buffer, serialized_buffer_size ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != err ) + { + return err; + } + int32_t fdl_request_length; + err = LC3PLUS_RTP_frame_data_length_get_size( &fdl_request_length, payload->fdl_request ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != err ) + { + return err; + } + if ( !s_fdl_value_is_valid_request( payload->fdl_request ) ) + { + return LC3PLUS_RTP_ERR_INVALID_FDL_REQUEST; + } + + err = s_ftds_parse( payload->ftds, sizeof( payload->ftds ) / sizeof( LC3PLUS_RTP_FTD ), &payload->num_ftds, serialized_buffer + fdl_request_length, serialized_buffer_size - fdl_request_length ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != err ) + { + return err; + } + if ( 0 == payload->num_ftds ) + { + return LC3PLUS_RTP_ERR_GENERIC_ERROR; + } + /* verify shared setting between all FTDs [samplerate, frame_duration, channel count] */ + + /* initialize on the first FTD, use this as reference */ + err = s_frame_duration_ms_from_fdi( &payload->frame_duration_us, payload->ftds[0].fdi ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != err ) + { + return err; + } + err = s_sampling_rate_hz_from_bwr( &payload->sampling_rate_hz, payload->ftds[0].bwr ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != err ) + { + return err; + } + err = s_high_resolution_flag_from_bwr( &payload->high_resolution_enabled, payload->ftds[0].bwr ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != err ) + { + return err; + } + payload->num_channels = 0; + payload->num_media_times = 0; + for ( i = 0; i < payload->num_ftds; ++i ) + { + if ( payload->ftds[i].h != LC3PLUS_RTP_FTD_H_PRIMARY ) + { + /* not implemented */ + return LC3PLUS_RTP_ERR_NOT_IMPLEMENTED; + } + + err = s_frame_duration_ms_from_fdi( &new_frame_duration_us, payload->ftds[i].fdi ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != err ) + { + return err; + } + if ( payload->frame_duration_us != new_frame_duration_us ) + { + /* mixed frame durations not supported */ + return LC3PLUS_RTP_ERR_UNSUPPORTED_CONFIGURATION; + } + + err = s_sampling_rate_hz_from_bwr( &new_sampling_rate_hz, payload->ftds[i].bwr ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != err ) + { + return err; + } + if ( payload->sampling_rate_hz != new_sampling_rate_hz ) + { + /* mixed sampling frequencies not supported */ + return LC3PLUS_RTP_ERR_UNSUPPORTED_CONFIGURATION; + } + + + err = s_high_resolution_flag_from_bwr( &new_high_resolution_flag, payload->ftds[i].bwr ); + if ( LC3PLUS_RTP_ERR_NO_ERROR != err ) + { + return err; + } + if ( payload->high_resolution_enabled != new_high_resolution_flag ) + { + /* mixed high resolution mode not supported */ + return LC3PLUS_RTP_ERR_UNSUPPORTED_CONFIGURATION; + } + + switch ( payload->ftds[i].fc ) + { + case LC3PLUS_RTP_FTD_FC_LAST_OVERALL: + channels_per_media_time[media_time_id]++; + media_times_per_channel[channel_id]++; + channel_id = 0; + media_time_id = 0; + break; + case LC3PLUS_RTP_FTD_FC_SUBSEQUENT_CHANNEL: + media_times_per_channel[channel_id]++; + channels_per_media_time[media_time_id]++; + channel_id++; + break; + case LC3PLUS_RTP_FTD_FC_LAST_IN_MEDIATIME: + media_times_per_channel[channel_id]++; + channels_per_media_time[media_time_id]++; + channel_id = 0; + media_time_id++; + break; + case LC3PLUS_RTP_FTD_FC_RESERVED: + default: + return LC3PLUS_RTP_ERR_INVALID_BITSTREAM; + } + } + + { + int32_t valid_num_media_times_per_channel; + int32_t iCh; + /* check whether all channels exist for each media time */ + if ( media_times_per_channel[0] == invalid_value ) + { + return LC3PLUS_RTP_ERR_NOT_IMPLEMENTED; + } + valid_num_media_times_per_channel = media_times_per_channel[0]; + for ( iCh = 0; iCh < LC3PLUS_RTP_PAYLOAD_MAX_NUM_CHANNELS; ++iCh ) + { + if ( media_times_per_channel[iCh] == invalid_value ) + { + break; + } + if ( valid_num_media_times_per_channel != media_times_per_channel[iCh] ) + { + return LC3PLUS_RTP_ERR_NOT_IMPLEMENTED; + } + } + } + { + /* whether all media times exist for each channel */ + int32_t iMediaTime; + int32_t valid_num_channels_per_media_time; + if ( channels_per_media_time[0] == invalid_value ) + { + return LC3PLUS_RTP_ERR_NOT_IMPLEMENTED; + } + valid_num_channels_per_media_time = channels_per_media_time[0]; + for ( iMediaTime = 0; iMediaTime < LC3PLUS_RTP_PAYLOAD_MAX_NUM_MEDIA_TIMES; ++iMediaTime ) + { + if ( channels_per_media_time[iMediaTime] == invalid_value ) + { + break; + } + if ( valid_num_channels_per_media_time != channels_per_media_time[iMediaTime] ) + { + return LC3PLUS_RTP_ERR_NOT_IMPLEMENTED; + } + } + } + + /* convert zero-index to count */ + payload->num_channels = channels_per_media_time[0] + 1; + payload->num_media_times = media_times_per_channel[0] + 1; + + /* verify that all media times have the same number of channels, partial packets are not supported */ + if ( payload->num_ftds != payload->num_channels * payload->num_media_times ) + { + return LC3PLUS_RTP_ERR_GENERIC_ERROR; + } + return LC3PLUS_RTP_ERR_NO_ERROR; +} + +LC3PLUS_RTP_ERR LC3PLUS_RTP_ftd_bwr_from_samplerate( LC3PLUS_RTP_FTD_BWR *bwr, const int32_t sampling_rate, const int32_t high_res_enabled ) +{ + if ( NULL == bwr ) + { + return LC3PLUS_RTP_ERR_NULL_PTR; + } + switch ( sampling_rate ) + { + case 8000: + if ( high_res_enabled ) + { + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; + } + *bwr = LC3PLUS_RTP_FTD_BWR_NB; + return LC3PLUS_RTP_ERR_NO_ERROR; + case 16000: + if ( high_res_enabled ) + { + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; + } + *bwr = LC3PLUS_RTP_FTD_BWR_WB; + return LC3PLUS_RTP_ERR_NO_ERROR; + case 24000: + if ( high_res_enabled ) + { + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; + } + *bwr = LC3PLUS_RTP_FTD_BWR_SSWB; + return LC3PLUS_RTP_ERR_NO_ERROR; + case 32000: + if ( high_res_enabled ) + { + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; + } + *bwr = LC3PLUS_RTP_FTD_BWR_SWB; + return LC3PLUS_RTP_ERR_NO_ERROR; + case 44100: + if ( high_res_enabled ) + { + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; + } + *bwr = LC3PLUS_RTP_FTD_BWR_FBCD; + return LC3PLUS_RTP_ERR_NO_ERROR; + case 48000: + if ( 0 == high_res_enabled ) + { + *bwr = LC3PLUS_RTP_FTD_BWR_FB; + return LC3PLUS_RTP_ERR_NO_ERROR; + } + else + { + *bwr = LC3PLUS_RTP_FTD_BWR_FBHR; + return LC3PLUS_RTP_ERR_NO_ERROR; + } + case 96000: + if ( 0 == high_res_enabled ) + { + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; + } + *bwr = LC3PLUS_RTP_FTD_BWR_UBHR; + return LC3PLUS_RTP_ERR_NO_ERROR; + default: + break; + } + + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; +} + +LC3PLUS_RTP_ERR LC3PLUS_RTP_ftd_fdi_from_frame_duration_us( LC3PLUS_RTP_FTD_FDI *fdi, const int32_t frame_duration_us ) +{ + if ( NULL == fdi ) + { + return LC3PLUS_RTP_ERR_NULL_PTR; + } + switch ( frame_duration_us ) + { + case 2500: + *fdi = LC3PLUS_RTP_FTD_FDI_2500_US; + return LC3PLUS_RTP_ERR_NO_ERROR; + case 5000: + *fdi = LC3PLUS_RTP_FTD_FDI_5000_US; + return LC3PLUS_RTP_ERR_NO_ERROR; + case 10000: + *fdi = LC3PLUS_RTP_FTD_FDI_10000_US; + return LC3PLUS_RTP_ERR_NO_ERROR; + default: + break; + } + + return LC3PLUS_RTP_ERR_INVALID_PARAMETERS; +} diff --git a/lib_isar/isar_lc3plus_payload.h b/lib_isar/isar_lc3plus_payload.h new file mode 100644 index 0000000000000000000000000000000000000000..e95128578493f5561fdcb2292aef37f0c202e428 --- /dev/null +++ b/lib_isar/isar_lc3plus_payload.h @@ -0,0 +1,212 @@ +/****************************************************************************************************** + + (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 ISAR_LC3PLUS_PAYLOAD_H +#define ISAR_LC3PLUS_PAYLOAD_H + +#include +#include +#include "lc3.h" +#include "options.h" + + +/* Implementation of the "B.2.6 Table of contents" part of the RTP payload format + * for LC3plus as specified in ETSI TS 103 634. */ + +typedef enum LC3PLUS_RTP_ERR +{ + LC3PLUS_RTP_ERR_NO_ERROR, + LC3PLUS_RTP_ERR_NULL_PTR, + LC3PLUS_RTP_ERR_INVALID_PARAMETERS, + LC3PLUS_RTP_ERR_EMPTY_TOC, + LC3PLUS_RTP_ERR_NOT_IMPLEMENTED, + LC3PLUS_RTP_ERR_UNSUPPORTED_CONFIGURATION, + LC3PLUS_RTP_ERR_INVALID_BITSTREAM, + LC3PLUS_RTP_ERR_INVALID_BITSTREAM_SIZE, + LC3PLUS_RTP_ERR_NOT_ENOUGH_FTDS_ALLOCATED, + LC3PLUS_RTP_ERR_INVALID_FDL_REQUEST, + LC3PLUS_RTP_ERR_NONZERO_PADDING_BYTES, + LC3PLUS_RTP_ERR_GENERIC_ERROR +} LC3PLUS_RTP_ERR; + +/* + * The content of the FTD is shown in Figure B.6. + * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * |FC |FDI| BWR |H| FDL1 | (FDL2) | (FDL3) | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ + +/* FC (2 bits): + * Frame and Channel (FC) indicator for subsequent frame data (if available). The meaning of the FC + * indicator is shown in Table B.2. The FC value defines the media time stamp (in integer increments + * of TSI) and the channel counter (CC, starting from 1 for the first channel) for the subsequent + * FTD (if available). */ +typedef enum LC3PLUS_RTP_FTD_FC +{ + LC3PLUS_RTP_FTD_FC_LAST_OVERALL = 0x00, /* Last FDL in ToC, no FDL follows the current FDL */ + LC3PLUS_RTP_FTD_FC_SUBSEQUENT_CHANNEL = 0x01, /* The next FDL is for the next channel for the same media time */ + LC3PLUS_RTP_FTD_FC_LAST_IN_MEDIATIME = 0x02, /* The next FDL is for first channel for next media time, channel counter is reset */ + LC3PLUS_RTP_FTD_FC_RESERVED = 0x03, /* Reserved */ +} LC3PLUS_RTP_FTD_FC; +#define LC3PLUS_RTP_FTD_FC_MASK 0x03 + +/* FDI (2 bits): + * Frame Duration Index, with encoding as shown in Table B.3. The FDI shall be static for a given + * payload type during the session. The FDI also dictates the TSI, needed for deriving the media + * time in case of more than one frame in the payload. */ +typedef enum LC3PLUS_RTP_FTD_FDI +{ + LC3PLUS_RTP_FTD_FDI_2500_US = 0x00, + LC3PLUS_RTP_FTD_FDI_5000_US = 0x04, + LC3PLUS_RTP_FTD_FDI_10000_US = 0x08, + LC3PLUS_RTP_FTD_FDI_RESERVED = 0x0C, +} LC3PLUS_RTP_FTD_FDI; +#define LC3PLUS_RTP_FTD_FDI_MASK 0x0C +LC3PLUS_RTP_ERR LC3PLUS_RTP_ftd_fdi_from_frame_duration_us( LC3PLUS_RTP_FTD_FDI *fdi, const int32_t frame_duration_us ); + +/* BWR (3 bits): + * Bandwidth and resolution combination used by the codec is jointly encoded into a bandwidth and + * resolution (BWR) index. The BWR index is encoded as shown in Table B.4. The BWR encoding is + * defined in Table B.4. The BWR index shall be static for a given payload type during the session. */ +typedef enum LC3PLUS_RTP_FTD_BWR +{ + LC3PLUS_RTP_FTD_BWR_NB = 0x00, + LC3PLUS_RTP_FTD_BWR_WB = 0x10, + LC3PLUS_RTP_FTD_BWR_SSWB = 0x20, + LC3PLUS_RTP_FTD_BWR_SWB = 0x30, + LC3PLUS_RTP_FTD_BWR_FBCD = 0x40, + LC3PLUS_RTP_FTD_BWR_FB = 0x50, + LC3PLUS_RTP_FTD_BWR_FBHR = 0x60, + LC3PLUS_RTP_FTD_BWR_UBHR = 0x70, +} LC3PLUS_RTP_FTD_BWR; +#define LC3PLUS_RTP_FTD_BWR_MASK 0x70 +LC3PLUS_RTP_ERR LC3PLUS_RTP_ftd_bwr_from_samplerate( LC3PLUS_RTP_FTD_BWR *bwr, const int32_t sampling_rate, const int32_t high_res_enabled ); + +/* H (1 bit): + * Indicates whether the corresponding frame is a normal frame (primary encoding) or a helper frame + * (secondary encoding). 0 indicates a primary frame, 1 indicates secondary (redundant) frame */ +typedef enum LC3PLUS_RTP_FTD_H +{ + LC3PLUS_RTP_FTD_H_PRIMARY = 0x00, + LC3PLUS_RTP_FTD_H_SECONDARY = 0x80, +} LC3PLUS_RTP_FTD_H; +#define LC3PLUS_RTP_FTD_H_MASK 0x80 + +typedef enum LC3PLUS_RTP_FDL +{ + LC3PLUS_RTP_FDL_NO_REQ_OR_NO_DATA = 0, + LC3PLUS_RTP_FDL_SPEECH_BAD = 1, + LC3PLUS_RTP_FDL_SPEECH_SID = 2, + LC3PLUS_RTP_FDL_RESERVED_MIN = 3, + LC3PLUS_RTP_FDL_RESERVED_MAX = 19, + LC3PLUS_RTP_FDL_LENGTH_1_MIN = 20, + LC3PLUS_RTP_FDL_LENGTH_1_MAX = 254, + LC3PLUS_RTP_FDL_LENGTH_2_MIN = 255, + LC3PLUS_RTP_FDL_LENGTH_2_MAX = 509, + LC3PLUS_RTP_FDL_LENGTH_3_MIN = 510, + LC3PLUS_RTP_FDL_LENGTH_3_MAX = 765 +} LC3PLUS_RTP_FDL; +/* value used to indicate that the Frame Data Length (FDL) extends to the next byte */ +#define LC3PLUS_RTP_FDL_EXTENSION_VALUE 0xFF + +typedef struct LC3PLUS_RTP_FTD +{ + LC3PLUS_RTP_FTD_FC fc; + LC3PLUS_RTP_FTD_FDI fdi; + LC3PLUS_RTP_FTD_BWR bwr; + LC3PLUS_RTP_FTD_H h; + uint8_t *frame_data; + LC3PLUS_RTP_FDL frame_data_length; +} LC3PLUS_RTP_FTD; +#define LC3PLUS_RTP_FTD_LENGTH_EXCLUDING_FDL 1 +#define LC3PLUS_RTP_FDL_MIN_LENGTH 1 +#define LC3PLUS_RTP_FTD_MIN_SIZE ( LC3PLUS_RTP_FTD_LENGTH_EXCLUDING_FDL + LC3PLUS_RTP_FDL_MIN_LENGTH ) + +/*! Serialize the sender_ftds structs and fdl_request into a linear compact buffer + * @param[out] serialized_buffer pointer to the start of the memory location where the serialized buffer will be written to + * @param[in] serialized_buffer_capacity capacity of the serialized_buffer in bytes + * @param[out] packed_buffer_actual_size actually used size of in bytes of the packed_buffer (<=serialized_buffer_capacity) + * @param[in] fdl_request frame data length request + * @param[in,out] sender_ftds the function will overwrite the frame_data pointer with the correct memory location in + * the packed_buffer (so it can subsequently be used as input for the LC3plus encode call) + * @param[in] sender_ftds_num number of sender_ftds + * @return LC3PLUS_RTP_ERR_NO_ERROR in case of success */ +LC3PLUS_RTP_ERR LC3PLUS_RTP_payload_serialize( + uint8_t *serialized_buffer, + const size_t serialized_buffer_capacity, + size_t *packed_buffer_actual_size, + const LC3PLUS_RTP_FDL fdl_request, + LC3PLUS_RTP_FTD *sender_ftds, + const size_t sender_ftds_num ); + +/*! Get size of the frame data length field for a certain frame data length value in bytes. + * @param[out] length size of the frame data length field in bytes [1,2,3] + * @param[in] frameDataLengthValue frame data length value + * @return LC3PLUS_RTP_ERR_NO_ERROR in case of success */ +LC3PLUS_RTP_ERR LC3PLUS_RTP_frame_data_length_get_size( int32_t *length, const LC3PLUS_RTP_FDL frameDataLengthValue ); + +#define LC3PLUS_RTP_PAYLOAD_MAX_NUM_CHANNELS 16 +#define LC3PLUS_RTP_PAYLOAD_MAX_NUM_MEDIA_TIMES 8 /* max ivas frame duration/min lc3plus frame duration: 20000/2500 */ +#define LC3PLUS_RTP_PAYLOAD_MAX_NUM_FTDS LC3PLUS_RTP_PAYLOAD_MAX_NUM_CHANNELS *LC3PLUS_RTP_PAYLOAD_MAX_NUM_MEDIA_TIMES + +typedef struct LC3PLUS_RTP_PAYLOAD_CONFIG +{ + /* frame duration in us shared among all FTDs */ + int32_t frame_duration_us; + /* high resolution flag shared among all FTDs */ + int16_t high_resolution_enabled; + /* sampling frequency shared among all FTDs */ + int32_t sampling_rate_hz; + /* number of individual channels in the payload */ + int16_t num_channels; + /* number of individual media times in the payload */ + int16_t num_media_times; + /* frame data length request */ + LC3PLUS_RTP_FDL fdl_request; + /* FTD data with pointer to raw frame data */ + LC3PLUS_RTP_FTD ftds[LC3PLUS_RTP_PAYLOAD_MAX_NUM_FTDS]; + /* actual number of ftds */ + int16_t num_ftds; +} LC3PLUS_RTP_PAYLOAD; + +/*! Deserialized a serialized buffer into a LC3PLUS_RTP_PAYLOAD struct + * @param payload pointer to target LC3PLUS_RTP_PAYLOAD object. Note: frame_data pointers in the struct will point to the respective memory locations in the serialized_buffer. + * @param serialized_buffer pointer to the start of the serialized input buffer + * @param serialized_buffer_size size of the serialized input buffer in bytes + * @return LC3PLUS_RTP_ERR_NO_ERROR in case of success */ +LC3PLUS_RTP_ERR LC3PLUS_RTP_payload_deserialize( + LC3PLUS_RTP_PAYLOAD *payload, + uint8_t *serialized_buffer, + const size_t serialized_buffer_size ); + +#endif /* ISAR_LC3PLUS_PAYLOAD_H */ diff --git a/lib_isar/isar_lcld_decoder.c b/lib_isar/isar_lcld_decoder.c new file mode 100644 index 0000000000000000000000000000000000000000..ce517a492ef8c296aa6eb2a9a689d82ad225c05e --- /dev/null +++ b/lib_isar/isar_lcld_decoder.c @@ -0,0 +1,1992 @@ +/****************************************************************************************************** + + (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 "isar_lcld_prot.h" +#include "isar_lcld_rom_tables.h" +#include "prot_fx.h" +#include +#include "isar_prot.h" +#include "wmc_auto.h" +#include "basop_util.h" +#include "prot_fx.h" +// #define DEBUG_WRITE +#include "debug.h" +#include "enh64.h" + +/*------------------------------------------------------------------------------------------* + * Local constants + *------------------------------------------------------------------------------------------*/ + +#define HUFF_READ_SIZE ( 4 ) + +/*------------------------------------------------------------------------------------------* + * Local structures + *------------------------------------------------------------------------------------------*/ + +typedef struct TableNode +{ + struct TableNode **ppoNextTable; + struct TableNode *poOrderedNext; + + Word32 *piCodeIndex; + Word32 *piDifference; + Word32 *piLength; +} TableNode; + +typedef struct TableList +{ + TableNode *poOrderedTop; + TableNode *poOrderedBottom; + +} TableList; + +struct LCLD_DECODER +{ + Word32 iSampleRate; + Word32 iChannels; + Word32 iNumBlocks; + + Word32 iNumBands; + const Word32 *piBandwidths; + + Word32 iMSMode; + Word32 *piMSFlags; + TableList *ptable_list; + UWord32 ( *c_apauiHuffDecTable_RAM[2 * ALLOC_TABLE_SIZE] )[HUFF_DEC_TABLE_SIZE]; + UWord32 num_decode_table[2 * ALLOC_TABLE_SIZE]; + Word32 piMSPredCoefs[MAX_BANDS]; + Word32 piLRPhaseDiffs[MAX_BANDS]; + Word32 iCommonGrouping; + Word32 *piNumGroups; + Word32 **ppiGroupLengths; + + Word32 ***pppiRMSEnvelope; + Word32 ***pppiSMR; + Word32 ***pppiExcitation; + Word32 ***pppiAlloc; + + Word32 iAllocOffset; + Word32 iRealOnlyOut; + + Word32 ***pppiLCLDSignReal; + Word32 ***pppiLCLDSignImag; + Word32 ***pppiQLCLDReal; + Word32 ***pppiQLCLDImag; + + PredictionDecoder *psPredictionDecoder; + + + NoiseGen *psNoiseGen; +}; + +static void CreateDecodeTable( LCLDDecoder *psLCLDDecoder, Word32 num, const UWord16 ( *ppuiEncTable )[2], Word32 iSize, Word32 iReadLength, UWord32 *iTables ); +static TableNode *CreateTableList( Word32 iReadLength ); +static void DeleteTableList( TableList *ptable_list, Word32 iTables ); +static TableNode *GetNextTable( Word32 iIndex, TableList *table_list, TableNode *poParent, Word32 iReadLength, UWord32 *iTablesCreated ); +static void AddcodeTableList( TableList *ptable_list, Word32 iLength, Word32 iCode, Word32 iCodeIndex, Word32 iReadLength, UWord32 *iTables ); +static void CompleteTables( LCLDDecoder *psLCLDDecoder, Word32 n, TableList *ptable_list, Word32 iReadLength, Word32 iTablesCreated ); + +static TableNode *CreateTableList( Word32 iReadLength ) +{ + Word32 n; + Word32 iMaxTables; + TableNode *ptable_top; + iMaxTables = L_shl( 1, (Word16) iReadLength ); + ptable_top = (TableNode *) malloc( sizeof( TableNode ) ); + ptable_top->ppoNextTable = + (TableNode **) malloc( iMaxTables * sizeof( TableNode * ) ); + ptable_top->piCodeIndex = (Word32 *) malloc( iMaxTables * sizeof( Word32 ) ); + ptable_top->piDifference = (Word32 *) malloc( iMaxTables * sizeof( Word32 ) ); + ptable_top->piLength = (Word32 *) malloc( iMaxTables * sizeof( Word32 ) ); + FOR( n = 0; n < iMaxTables; n++ ) + { + ptable_top->ppoNextTable[n] = NULL; + ptable_top->piCodeIndex[n] = 0xffff; + move32(); + ptable_top->piDifference[n] = 0; + move32(); + ptable_top->piLength[n] = 0; + move32(); + } + + return ptable_top; +} + +static void DeleteTableList( TableList *ptable_list, Word32 iTables ) +{ + + TableNode *node; + node = ptable_list->poOrderedTop; + + WHILE( ( iTables ) ) + { + + TableNode *node1 = node; + node = node1->poOrderedNext; + IF( node1->piCodeIndex != NULL ) + { + free( node1->piCodeIndex ); + } + IF( node1->piLength != NULL ) + { + free( node1->piLength ); + } + IF( node1->piDifference != NULL ) + { + free( node1->piDifference ); + } + IF( node1->ppoNextTable != NULL ) + { + free( node1->ppoNextTable ); + } + IF( node1 != NULL ) + { + free( node1 ); + } + iTables--; + } + IF( ptable_list != NULL ) + { + free( ptable_list ); + } +} + +static TableNode *GetNextTable( Word32 iIndex, TableList *table_list, TableNode *poParent, Word32 iReadLength, UWord32 *iTablesCreated ) +{ + TableNode *poNextNode; + + IF( poParent->ppoNextTable[iIndex] == NULL ) + { + poNextNode = CreateTableList( iReadLength ); + poParent->ppoNextTable[iIndex] = poNextNode; + poParent->piDifference[iIndex] = *iTablesCreated; /* this is a link to the next table rather than the difference */ + move32(); + table_list->poOrderedBottom->poOrderedNext = poNextNode; + table_list->poOrderedBottom = poNextNode; + + ( *iTablesCreated )++; + } + ELSE + { + poNextNode = poParent->ppoNextTable[iIndex]; + } + + return poNextNode; +} + +static void CompleteTables( LCLDDecoder *psLCLDDecoder, Word32 n, TableList *ptable_list, Word32 iReadLength, Word32 iTablesCreated ) +{ + + Word32 iMaxTables; + Word32 j; + TableNode *poNode; + + iMaxTables = L_shl( 1, (Word16) iReadLength ); + psLCLDDecoder->c_apauiHuffDecTable_RAM[n] = + malloc( iTablesCreated * iMaxTables * sizeof( UWord32 * ) ); + + poNode = ptable_list->poOrderedTop; + FOR( j = 0; j < iTablesCreated; j++ ) + { + Word32 k; + IF( poNode != NULL ) + { + FOR( k = 0; k < iMaxTables; k++ ) + { + UWord32 uiCode; + uiCode = poNode->piDifference[k]; + move32(); + uiCode = (UWord32) L_shl( (Word32) uiCode, 16 ); + uiCode = (UWord32) L_or( (Word32) uiCode, poNode->piCodeIndex[k] ); + psLCLDDecoder->c_apauiHuffDecTable_RAM[n][j][k] = uiCode; + move32(); + } + } + poNode = poNode->poOrderedNext; + } +} + +static void AddcodeTableList( TableList *ptable_list, Word32 iLength, Word32 iCode, Word32 iCodeIndex, Word32 iReadLength, UWord32 *iTables ) +{ + Word32 iDifference; + Word32 iMask; + Word32 iCurrentLength; + Word32 iIndex; + Word32 iCodeLow; + Word32 iCodeHigh; + + TableNode *poNode; + poNode = ptable_list->poOrderedTop; + iMask = L_sub( L_shl( 1, (Word16) iReadLength ), 1 ); + iCurrentLength = iLength; + move32(); + WHILE( GT_32( iCurrentLength, iReadLength ) ) + { + iDifference = L_sub( iCurrentLength, iReadLength ); + iIndex = L_shr( iCode, (Word16) iDifference ); + iIndex = L_and( iIndex, iMask ); + poNode = GetNextTable( iIndex, ptable_list, poNode, iReadLength, iTables ); + iCurrentLength = L_sub( iCurrentLength, iReadLength ); + } + + iMask = L_sub( L_shl( 1, (Word16) iCurrentLength ), 1 ); + iDifference = L_sub( iReadLength, iCurrentLength ); + iCodeLow = L_shl( L_and( iCode, iMask ), (Word16) iDifference ); + iMask = L_sub( L_shl( 1, (Word16) iDifference ), 1 ); + iCodeHigh = L_or( iCodeLow, iMask ); + FOR( iIndex = iCodeLow; iIndex <= iCodeHigh; iIndex++ ) + { + poNode->piCodeIndex[iIndex] = iCodeIndex; + move32(); + poNode->piDifference[iIndex] = iDifference; + move32(); + poNode->piLength[iIndex] = iLength; + move32(); + } +} + +static void CreateDecodeTable( LCLDDecoder *psLCLDDecoder, Word32 num, const UWord16 ( *ppuiEncTable )[2], Word32 iSize, Word32 iReadLength, UWord32 *iTables ) +{ + Word32 n; + UWord32 **ppsort_enc_table; + TableList *ptable_list; + ptable_list = (TableList *) malloc( sizeof( TableList ) ); + + ppsort_enc_table = (UWord32 **) malloc( iSize * sizeof( Word32 * ) ); + FOR( n = 0; n < iSize; n++ ) + { + ppsort_enc_table[n] = (UWord32 *) malloc( 3 * sizeof( Word32 ) ); + ppsort_enc_table[n][0] = (UWord32) ppuiEncTable[n][0]; + move32(); + ppsort_enc_table[n][1] = (UWord32) ppuiEncTable[n][1]; + move32(); + ppsort_enc_table[n][2] = (UWord32) n; + move32(); + } + + FOR( n = 0; n < iSize; n++ ) + { + UWord32 iMin; + Word32 iMinIndex; + Word32 k; + + iMin = ppsort_enc_table[n][0]; + move32(); + iMinIndex = n; + move32(); + FOR( k = n; k < iSize; k++ ) + { + IF( ppsort_enc_table[k][0] < iMin ) + { + iMin = ppsort_enc_table[k][0]; + move32(); + iMinIndex = k; + move32(); + } + } + + IF( NE_32( iMinIndex, n ) ) + { + UWord32 uiLength; + UWord32 uiCode; + UWord32 uiCodeIndex; + + uiLength = ppsort_enc_table[n][0]; + move32(); + uiCode = ppsort_enc_table[n][1]; + move32(); + uiCodeIndex = ppsort_enc_table[n][2]; + move32(); + + ppsort_enc_table[n][0] = ppsort_enc_table[iMinIndex][0]; + move32(); + ppsort_enc_table[n][1] = ppsort_enc_table[iMinIndex][1]; + move32(); + ppsort_enc_table[n][2] = ppsort_enc_table[iMinIndex][2]; + move32(); + + ppsort_enc_table[iMinIndex][0] = uiLength; + move32(); + ppsort_enc_table[iMinIndex][1] = uiCode; + move32(); + ppsort_enc_table[iMinIndex][2] = uiCodeIndex; + move32(); + } + } + ptable_list->poOrderedTop = CreateTableList( iReadLength ); + ptable_list->poOrderedBottom = ptable_list->poOrderedTop; + FOR( n = 0; n < iSize; n++ ) + { + Word32 iLength; + Word32 iCode; + Word32 iCodeIndex; + + iLength = ppsort_enc_table[n][0]; + move32(); + iCode = ppsort_enc_table[n][1]; + move32(); + iCodeIndex = ppsort_enc_table[n][2]; + move32(); + AddcodeTableList( ptable_list, iLength, iCode, iCodeIndex, iReadLength, + iTables ); + } + + CompleteTables( psLCLDDecoder, num, ptable_list, iReadLength, *iTables ); + DeleteTableList( ptable_list, *iTables ); + FOR( n = 0; n < iSize; n++ ) + { + free( ppsort_enc_table[n] ); + } + free( ppsort_enc_table ); +} + + +/*------------------------------------------------------------------------------------------* + * Function CreateLCLDDecoder() + * + * + *------------------------------------------------------------------------------------------*/ + +ivas_error CreateLCLDDecoder( + LCLDDecoder **psLCLDDecoder_out, + const Word32 iSampleRate, + const Word32 iChannels, + const Word32 iNumBlocks, + const Word32 iRealOnlyOut ) +{ + Word32 n; + Word32 read_length; + ivas_error error; + LCLDDecoder *psLCLDDecoder = NULL; + + assert( iSampleRate == 48000 ); + assert( iNumBlocks == 16 || iNumBlocks == 8 || iNumBlocks == 4 ); + IF( ( psLCLDDecoder = (LCLDDecoder *) malloc( sizeof( LCLDDecoder ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + psLCLDDecoder->iSampleRate = iSampleRate; + move32(); + psLCLDDecoder->iChannels = iChannels; + psLCLDDecoder->iAllocOffset = 0; + psLCLDDecoder->iRealOnlyOut = iRealOnlyOut; + if ( iRealOnlyOut == 1 ) + { + psLCLDDecoder->iNumBlocks = L_shr( iNumBlocks, 1 ); + } + else + { + psLCLDDecoder->iNumBlocks = iNumBlocks; + } + psLCLDDecoder->iNumBands = 0; /* read from bitstream*/ + move32(); + psLCLDDecoder->piBandwidths = c_aiBandwidths48; + + psLCLDDecoder->iMSMode = 0; + move32(); + IF( ( psLCLDDecoder->piMSFlags = (Word32 *) malloc( MAX_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + FOR( n = 0; n < MAX_BANDS; n++ ) + { + psLCLDDecoder->piLRPhaseDiffs[n] = 0; + move32(); + psLCLDDecoder->piMSPredCoefs[n] = 0; + move32(); + } + + psLCLDDecoder->iCommonGrouping = 1; /* Common grouping always on only impacts stereo */ + move32(); + IF( ( psLCLDDecoder->piNumGroups = (Word32 *) malloc( psLCLDDecoder->iChannels * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->ppiGroupLengths = (Word32 **) malloc( psLCLDDecoder->iChannels * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiRMSEnvelope = (Word32 ***) malloc( psLCLDDecoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiSMR = (Word32 ***) malloc( psLCLDDecoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiExcitation = (Word32 ***) malloc( psLCLDDecoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiAlloc = (Word32 ***) malloc( psLCLDDecoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDDecoder->pppiLCLDSignReal = (Word32 ***) malloc( psLCLDDecoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiLCLDSignImag = (Word32 ***) malloc( psLCLDDecoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiQLCLDReal = (Word32 ***) malloc( psLCLDDecoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiQLCLDImag = (Word32 ***) malloc( psLCLDDecoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + FOR( n = 0; n < iChannels; n++ ) + { + Word16 k; + IF( ( psLCLDDecoder->ppiGroupLengths[n] = (Word32 *) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiRMSEnvelope[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiSMR[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiExcitation[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiAlloc[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDDecoder->pppiLCLDSignReal[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiLCLDSignImag[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiQLCLDReal[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiQLCLDImag[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + IF( ( psLCLDDecoder->pppiRMSEnvelope[n][k] = (Word32 *) malloc( MAX_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiSMR[n][k] = (Word32 *) malloc( MAX_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiExcitation[n][k] = (Word32 *) malloc( MAX_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiAlloc[n][k] = (Word32 *) malloc( MAX_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDDecoder->pppiLCLDSignReal[n][k] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiLCLDSignImag[n][k] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiQLCLDReal[n][k] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( psLCLDDecoder->pppiQLCLDImag[n][k] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + } + } + + read_length = READ_LENGTH; + move32(); + FOR( n = 0; n < shl( ALLOC_TABLE_SIZE, 1 ); n++ ) + { + psLCLDDecoder->num_decode_table[n] = 1; + move32(); + IF( c_apauiHuffEncTabels[n] != NULL ) + { + CreateDecodeTable( psLCLDDecoder, n, c_apauiHuffEncTabels[n], num_row_aauiLCLDHuff[n], read_length, &psLCLDDecoder->num_decode_table[n] ); + } + ELSE + { + psLCLDDecoder->c_apauiHuffDecTable_RAM[n] = NULL; + } + } + + IF( ( error = CreatePredictionDecoder_fx( &psLCLDDecoder->psPredictionDecoder, iChannels, psLCLDDecoder->iNumBlocks ) ) != IVAS_ERR_OK ) + { + return error; + } + psLCLDDecoder->psNoiseGen = NULL; /* CreateNoiseGen(); No noise fill for now*/ + *psLCLDDecoder_out = psLCLDDecoder; + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------------------------* + * Function DeleteLCLDDecoder() + * + * + *------------------------------------------------------------------------------------------*/ + +void DeleteLCLDDecoder( LCLDDecoder *psLCLDDecoder ) +{ + Word32 k, n; + + IF( psLCLDDecoder != NULL ) + { + IF( psLCLDDecoder->piMSFlags != NULL ) + { + free( psLCLDDecoder->piMSFlags ); + } + + IF( psLCLDDecoder->piNumGroups != NULL ) + { + free( psLCLDDecoder->piNumGroups ); + } + + IF( psLCLDDecoder->ppiGroupLengths != NULL ) + { + FOR( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + free( psLCLDDecoder->ppiGroupLengths[n] ); + } + free( psLCLDDecoder->ppiGroupLengths ); + } + + IF( psLCLDDecoder->pppiRMSEnvelope != NULL ) + { + FOR( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiRMSEnvelope[n][k] ); + } + free( psLCLDDecoder->pppiRMSEnvelope[n] ); + } + free( psLCLDDecoder->pppiRMSEnvelope ); + } + + IF( psLCLDDecoder->pppiSMR != NULL ) + { + FOR( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiSMR[n][k] ); + } + free( psLCLDDecoder->pppiSMR[n] ); + } + free( psLCLDDecoder->pppiSMR ); + } + + IF( psLCLDDecoder->pppiExcitation != NULL ) + { + FOR( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiExcitation[n][k] ); + } + free( psLCLDDecoder->pppiExcitation[n] ); + } + free( psLCLDDecoder->pppiExcitation ); + } + + + IF( psLCLDDecoder->pppiAlloc != NULL ) + { + FOR( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiAlloc[n][k] ); + } + free( psLCLDDecoder->pppiAlloc[n] ); + } + free( psLCLDDecoder->pppiAlloc ); + } + + IF( psLCLDDecoder->pppiLCLDSignReal != NULL ) + { + FOR( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiLCLDSignReal[n][k] ); + } + free( psLCLDDecoder->pppiLCLDSignReal[n] ); + } + free( psLCLDDecoder->pppiLCLDSignReal ); + } + + IF( psLCLDDecoder->pppiLCLDSignImag != NULL ) + { + FOR( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiLCLDSignImag[n][k] ); + } + free( psLCLDDecoder->pppiLCLDSignImag[n] ); + } + free( psLCLDDecoder->pppiLCLDSignImag ); + } + + IF( psLCLDDecoder->pppiQLCLDReal != NULL ) + { + FOR( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiQLCLDReal[n][k] ); + } + free( psLCLDDecoder->pppiQLCLDReal[n] ); + } + free( psLCLDDecoder->pppiQLCLDReal ); + } + + IF( psLCLDDecoder->pppiQLCLDImag != NULL ) + { + FOR( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiQLCLDImag[n][k] ); + } + free( psLCLDDecoder->pppiQLCLDImag[n] ); + } + free( psLCLDDecoder->pppiQLCLDImag ); + } + + FOR( n = 0; n < ALLOC_TABLE_SIZE * 2; n++ ) + { + IF( psLCLDDecoder->num_decode_table[n] > 1 ) + { + + IF( psLCLDDecoder->c_apauiHuffDecTable_RAM[n] != NULL ) + { + free( psLCLDDecoder->c_apauiHuffDecTable_RAM[n] ); + } + } + } + + IF( psLCLDDecoder->psPredictionDecoder != NULL ) + { + DeletePredictionDecoder_fx( psLCLDDecoder->psPredictionDecoder ); + psLCLDDecoder->psPredictionDecoder = NULL; + } + + IF( psLCLDDecoder->psNoiseGen != NULL ) + { + DeleteNoiseGen( psLCLDDecoder->psNoiseGen ); + } + + free( psLCLDDecoder ); + } +} + +/*------------------------------------------------------------------------------------------* + * Local function declarations + * + * + *------------------------------------------------------------------------------------------*/ + +static void ApplyRMSEnvelope_fx( const int32_t iNumBands, const int32_t *piBandwidths, const int32_t iNumGroups, const int32_t *piGroupLengths, int32_t **ppiRMSEnvelope, Word32 **ppfReal_fx, Word32 **ppfImag_fx ); +static void ReplaceSign_fx( const Word32 iNumBlocks, const Word32 iNumLCLDBands, Word32 **ppiSignReal, Word32 **ppiSignImag, Word32 **ppfReal, Word32 **ppfImag, const Word32 *piBandwidths ); + +static void InvQuantizeSpectrum_fx( const Word32 iNumGroups, const Word32 *piGroupLengths, const Word32 iNumBands, const Word32 *piBandwidths, Word32 **ppiAlloc, Word32 **ppiQReal, Word32 **ppiQImag, Word32 **ppfReal, Word32 **ppfImag, NoiseGen *psNoiseGen ); +static void InvMSCoding_fx( const Word32 iNumBlocks, const Word32 iNumBands, const Word32 *piBandwidths, const Word32 iMSMode, const Word32 *piMSFlags, const Word32 *piLRPhaseDiffs, const Word32 *piMSPredCoefs, Word32 ***pppfReal, Word32 ***pppfImag ); +// static void InvMSCoding_fx( const int32_t iNumBlocks, const int32_t iNumBands, const int32_t *piBandwidths, const int32_t iMSMode, const int32_t *piMSFlags, const int32_t *piLRPhaseDiffs, const int32_t *piMSPredCoefs, float ***pppfReal, float ***pppfImag, Word32 ***pppfReal_fx, Word32 ***pppfImag_fx,Word16 exp ); + +static Word32 ReadHeaderInformation( Word32 *piNumBands, ISAR_SPLIT_REND_BITS_HANDLE pBits ); + +static Word32 ReadMSInformation( const Word32 iNumBands, Word32 *piMSMode, Word32 *piMSFlags, Word32 *piLRPhaseDiffs, Word32 *piMSPredCoefs, ISAR_SPLIT_REND_BITS_HANDLE pBits ); + +static Word32 ReadGroupInformation( const Word32 iChannels, const Word32 iNumBlocks, Word32 *piCommonGrouping, Word32 *piNumGroups, Word32 **ppiGroupLengths, ISAR_SPLIT_REND_BITS_HANDLE pBits ); + +static Word32 ReadHuff( const UWord32 ( *pauiHuffDecTable )[HUFF_DEC_TABLE_SIZE], Word32 *piSymbol, ISAR_SPLIT_REND_BITS_HANDLE pBits ); + +static Word32 ReadRMSEnvelope( const Word32 iChannels, const Word32 *piNumGroups, const Word32 iNumBands, Word32 ***pppiRMSEnvelope, ISAR_SPLIT_REND_BITS_HANDLE pBits ); + +static Word32 ReadAllocInformation( Word32 *piAllocOffset, ISAR_SPLIT_REND_BITS_HANDLE pBits ); + +// static int32_t +// ReadLCLDData( const int32_t iNumGroups, const int32_t *piGroupLengths, const int32_t iNumBands, const int32_t *piBandwidths, const int32_t *piPredEnable, int32_t **ppiAlloc, int32_t **ppiSignReal, int32_t **ppiSignImag, int32_t **ppiQReal, int32_t **ppiQImag, ISAR_SPLIT_REND_BITS_HANDLE pBits, uint32_t ( *c_apauiHuffDecTables[2 * ALLOC_TABLE_SIZE] )[HUFF_DEC_TABLE_SIZE] ); +static Word32 ReadLCLDData_fx( const Word32 *piNumGroups, Word32 **ppiGroupLengths, const Word32 iNumBands, const Word32 iNumChannels, Word32 **ppiDecodingUnresolved, Word32 **ppiPredEnable, const Word32 iNumSubSets, const Word32 iSubSetId, Word32 ***pppiAlloc, Word32 ***pppiSignReal, Word32 ***pppiSignImag, Word32 ***pppiQReal, Word32 ***pppiQImag, Word32 **ppiDecodingFailed, ISAR_SPLIT_REND_BITS_HANDLE pBits, UWord32 ( *c_apauiHuffDecTables[2 * ALLOC_TABLE_SIZE] )[HUFF_DEC_TABLE_SIZE] ); +static void ComputeAllocation( const Word32 iChannels, const Word32 *piNumGroups, const Word32 iNumBands, Word32 ***pppiSMR, const Word32 iAllocOffset, Word32 ***pppiAlloc ); + +void SetDecodingUnresolved( LCLDDecoder *psLCLDDecoder ) +{ + int32_t n, ch; + PredictionDecoder *psPredictionDecoder = psLCLDDecoder->psPredictionDecoder; + for ( ch = 0; ch < psPredictionDecoder->iChannels; ch++ ) + { + for ( n = 0; n < psPredictionDecoder->iNumSubSets; n++ ) + { + psPredictionDecoder->ppiDecodingUnresolved[ch][n] = 1; + psPredictionDecoder->ppiDecodingFailed[ch][n] = 1; + psPredictionDecoder->ppiDecodingFailedPrev[ch][n] = 1; + } + } +} + +int32_t AnyDecodingFailedPrev( LCLDDecoder *psLCLDDecoder ) +{ + int32_t n, ch; + PredictionDecoder *psPredictionDecoder = psLCLDDecoder->psPredictionDecoder; + for ( ch = 0; ch < psPredictionDecoder->iChannels; ch++ ) + { + for ( n = 0; n < psPredictionDecoder->iNumSubSets; n++ ) + { + if ( psPredictionDecoder->ppiDecodingFailedPrev[ch][n] == 1 ) + { + return 1; + } + } + } + return 0; +} + +int32_t AnyDecodingFailed( LCLDDecoder *psLCLDDecoder ) +{ + int32_t n, ch; + PredictionDecoder *psPredictionDecoder = psLCLDDecoder->psPredictionDecoder; + for ( ch = 0; ch < psPredictionDecoder->iChannels; ch++ ) + { + for ( n = 0; n < psPredictionDecoder->iNumSubSets; n++ ) + { + if ( psPredictionDecoder->ppiDecodingFailed[ch][n] == 1 ) + { + return 1; + } + } + } + return 0; +} + +int32_t **GetDecodingFailedStatus( LCLDDecoder *psLCLDDecoder ) +{ + return psLCLDDecoder->psPredictionDecoder->ppiDecodingFailed; +} + +int16_t GetNumSubSets( LCLDDecoder *psLCLDDecoder ) +{ + return (int16_t) psLCLDDecoder->psPredictionDecoder->iNumSubSets; +} + +int32_t **GetDecodingFailedPrevStatus( LCLDDecoder *psLCLDDecoder ) +{ + return psLCLDDecoder->psPredictionDecoder->ppiDecodingFailedPrev; +} + +static void UnpackReal_fx( + const Word32 iChannels, + const Word32 iNumBlocks, + Word32 ***pppfReal_fx, + Word32 ***pppfImag_fx ) +{ + Word32 ch, b, n; + FOR( ch = 0; ch < iChannels; ch++ ) + { + FOR( b = 0; b < LCLD_BANDS; b++ ) + { + Word32 iRealBlock = iNumBlocks - 1; + FOR( n = iNumBlocks / 2 - 1; n >= 0; n-- ) + { + pppfReal_fx[ch][iRealBlock][b] = L_shl( pppfImag_fx[ch][n][b], 1 ); + pppfReal_fx[ch][iRealBlock - 1][b] = L_shl( pppfReal_fx[ch][n][b], 1 ); + pppfImag_fx[ch][iRealBlock][b] = 0; + pppfImag_fx[ch][iRealBlock - 1][b] = 0; + iRealBlock -= 2; + } + } + } +} +/*------------------------------------------------------------------------------------------* + * Function DecodeLCLDFrame() + * + * + *------------------------------------------------------------------------------------------*/ + +Word32 DecodeLCLDFrame( + LCLDDecoder *psLCLDDecoder, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + Word32 ***pppfLCLDReal_fx, + Word32 ***pppfLCLDImag_fx, + Word16 Q_in, + Word16 *Q_out ) +{ + Word32 k, n; + // FILE *ptr = fopen( "cldfb_real.txt", "ab+" ); + // FILE *ptr1 = fopen( "cldfb_imag.txt", "ab+" ); + ReadHeaderInformation( &psLCLDDecoder->iNumBands, pBits ); + + IF( EQ_32( psLCLDDecoder->iChannels, 2 ) ) + { + ReadMSInformation( psLCLDDecoder->iNumBands, &psLCLDDecoder->iMSMode, psLCLDDecoder->piMSFlags, psLCLDDecoder->piLRPhaseDiffs, psLCLDDecoder->piMSPredCoefs, pBits ); + } + + Word16 i, j; + + ReadPredictors_fx( psLCLDDecoder->psPredictionDecoder, pBits ); + + UpdateDecodingUnresolved( psLCLDDecoder->psPredictionDecoder ); + UpdateDecodingFailedStatus( psLCLDDecoder->psPredictionDecoder ); + + ReadGroupInformation( psLCLDDecoder->iChannels, psLCLDDecoder->iNumBlocks, &psLCLDDecoder->iCommonGrouping, psLCLDDecoder->piNumGroups, psLCLDDecoder->ppiGroupLengths, pBits ); + + ReadRMSEnvelope( psLCLDDecoder->iChannels, (const Word32 *) psLCLDDecoder->piNumGroups, psLCLDDecoder->iNumBands, psLCLDDecoder->pppiRMSEnvelope, pBits ); + + + ReadAllocInformation( &psLCLDDecoder->iAllocOffset, pBits ); + + IF( EQ_32( psLCLDDecoder->iChannels, 2 ) && EQ_32( psLCLDDecoder->iCommonGrouping, 1 ) ) + { /* MS Mode? */ + FOR( k = 0; k < psLCLDDecoder->piNumGroups[0]; k++ ) + { + PerceptualModelStereo_fx( psLCLDDecoder->iNumBands, psLCLDDecoder->piMSFlags, + psLCLDDecoder->pppiRMSEnvelope[0][k], + psLCLDDecoder->pppiRMSEnvelope[1][k], + psLCLDDecoder->pppiExcitation[0][k], + psLCLDDecoder->pppiExcitation[1][k], + psLCLDDecoder->pppiSMR[0][k], + psLCLDDecoder->pppiSMR[1][k] ); + } + } + ELSE + { + FOR( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { /* This will be updated to support multiple sample rates*/ + FOR( k = 0; k < psLCLDDecoder->piNumGroups[n]; k++ ) + { + PerceptualModel_fx( (Word16) psLCLDDecoder->iNumBands, psLCLDDecoder->pppiRMSEnvelope[n][k], psLCLDDecoder->pppiExcitation[n][k], psLCLDDecoder->pppiSMR[n][k] ); + } + } + } + + ComputeAllocation( psLCLDDecoder->iChannels, (const Word32 *) psLCLDDecoder->piNumGroups, psLCLDDecoder->iNumBands, psLCLDDecoder->pppiSMR, psLCLDDecoder->iAllocOffset, psLCLDDecoder->pppiAlloc ); + + ReadLCLDData_fx( + psLCLDDecoder->piNumGroups, + psLCLDDecoder->ppiGroupLengths, + psLCLDDecoder->iNumBands, + psLCLDDecoder->iChannels, + psLCLDDecoder->psPredictionDecoder->ppiDecodingUnresolved, + psLCLDDecoder->psPredictionDecoder->ppiPredBandEnable, + psLCLDDecoder->psPredictionDecoder->iNumSubSets, + psLCLDDecoder->psPredictionDecoder->iSubSetId, + psLCLDDecoder->pppiAlloc, + psLCLDDecoder->pppiLCLDSignReal, + psLCLDDecoder->pppiLCLDSignImag, + psLCLDDecoder->pppiQLCLDReal, + psLCLDDecoder->pppiQLCLDImag, + psLCLDDecoder->psPredictionDecoder->ppiDecodingFailed, + pBits, + psLCLDDecoder->c_apauiHuffDecTable_RAM ); + Word16 q_LCLD = Q_in; + + FOR( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + InvQuantizeSpectrum_fx( psLCLDDecoder->piNumGroups[n], + (const Word32 *) psLCLDDecoder->ppiGroupLengths[n], + psLCLDDecoder->iNumBands, psLCLDDecoder->piBandwidths, + psLCLDDecoder->pppiAlloc[n], + psLCLDDecoder->pppiQLCLDReal[n], + psLCLDDecoder->pppiQLCLDImag[n], + pppfLCLDReal_fx[n], pppfLCLDImag_fx[n], + psLCLDDecoder->psNoiseGen ); + + ReplaceSign_fx( psLCLDDecoder->iNumBlocks, psLCLDDecoder->iNumBands, + psLCLDDecoder->pppiLCLDSignReal[n], + psLCLDDecoder->pppiLCLDSignImag[n], + pppfLCLDReal_fx[n], pppfLCLDImag_fx[n], psLCLDDecoder->piBandwidths ); + } +#ifdef DEBUG_WRITE_PREDICTORS + { + static FILE *fid; + if ( !fid ) + fid = fopen( "pred_dec.txt", "wt" ); + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + int16_t b; + for ( b = 0; b < 60; b++ ) + fprintf( fid, "%.5f ", (float) psLCLDDecoder->psPredictionDecoder->ppiPredBandEnable[n][b] * psLCLDDecoder->psPredictionDecoder->ppfA1Imag[n][b] ); + } + fprintf( fid, "%d %d\n", psLCLDDecoder->psPredictionDecoder->iSubSetId, psLCLDDecoder->psPredictionDecoder->piPredChanEnable[n] ); + } +#endif + + ApplyInversePredictors_fx( psLCLDDecoder->psPredictionDecoder, pppfLCLDReal_fx, pppfLCLDImag_fx ); + +#ifdef DEBUG_WRITE + FOR( n = 0; n < psLCLDDecoder->psPredictionDecoder->iChannels; ++n ) + { + FOR( Word16 i = 0; i < psLCLDDecoder->iNumBlocks; i++ ) + { + dbgwrite_txt( pppfLCLDReal[n][i], LCLD_BANDS, "LCLD_real_ApplyInversePredictors_fix.txt", NULL ); + dbgwrite_txt( pppfLCLDImag[n][i], LCLD_BANDS, "LCLD_imag_ApplyInversePredictors_fix.txt", NULL ); + } + } + + FOR( i = 0; i < psLCLDDecoder->psPredictionDecoder->iChannels; ++i ) + { + dbgwrite_txt( psLCLDDecoder->psPredictionDecoder->ppfPredStateReal[i], LCLD_BANDS, "LCLD_Pred_stat_real_ApplyInversePredictors_fix.txt", NULL ); + dbgwrite_txt( psLCLDDecoder->psPredictionDecoder->ppfPredStateImag[i], LCLD_BANDS, "LCLD_Pred_stat_imag_ApplyInversePredictors_fix.txt", NULL ); + } + +#endif + + Word16 Q = 7; + *Q_out = Q; + FOR( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + FOR( i = 0; i < psLCLDDecoder->iNumBlocks; i++ ) + { + FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) + { + pppfLCLDReal_fx[n][i][j] = L_shl( pppfLCLDReal_fx[n][i][j], Q - q_LCLD ); + pppfLCLDImag_fx[n][i][j] = L_shl( pppfLCLDImag_fx[n][i][j], Q - q_LCLD ); + } + } + ApplyRMSEnvelope_fx( psLCLDDecoder->iNumBands, psLCLDDecoder->piBandwidths, + psLCLDDecoder->piNumGroups[n], + (const Word32 *) psLCLDDecoder->ppiGroupLengths[n], + psLCLDDecoder->pppiRMSEnvelope[n], + pppfLCLDReal_fx[n], pppfLCLDImag_fx[n] ); + } + + IF( EQ_32( psLCLDDecoder->iChannels, 2 ) && GT_32( psLCLDDecoder->iMSMode, 0 ) ) + { + Word16 exp1 = Q31 - *Q_out; + Word16 exp2 = Q31 - *Q_out; + Word32 real_max = 0; + Word32 imag_max = 0; + Word16 exp; + FOR( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + FOR( i = 0; i < psLCLDDecoder->iNumBlocks; i++ ) + { + FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) + { + real_max = L_max( real_max, L_abs( pppfLCLDReal_fx[n][i][j] ) ); + imag_max = L_max( imag_max, L_abs( pppfLCLDImag_fx[n][i][j] ) ); + } + } + } + IF( NE_32( real_max, 0 ) ) + { + exp1 = s_min( exp1, norm_l( real_max ) ); + } + IF( NE_32( imag_max, 0 ) ) + { + exp2 = s_min( exp2, norm_l( imag_max ) ); + } + IF( NE_32( real_max, 0 ) || NE_32( imag_max, 0 ) ) + { + exp = min( exp2, exp1 ); + *Q_out = add( *Q_out, sub( exp, 3 ) ); + FOR( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + FOR( i = 0; i < psLCLDDecoder->iNumBlocks; i++ ) + { + FOR( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) + { + pppfLCLDReal_fx[n][i][j] = L_shl( pppfLCLDReal_fx[n][i][j], exp - 3 ); + pppfLCLDImag_fx[n][i][j] = L_shl( pppfLCLDImag_fx[n][i][j], exp - 3 ); + } + } + } + } + InvMSCoding_fx( psLCLDDecoder->iNumBlocks, psLCLDDecoder->iNumBands, + psLCLDDecoder->piBandwidths, psLCLDDecoder->iMSMode, + (const Word32 *) psLCLDDecoder->piMSFlags, + (const Word32 *) psLCLDDecoder->piLRPhaseDiffs, + (const Word32 *) psLCLDDecoder->piMSPredCoefs, + pppfLCLDReal_fx, pppfLCLDImag_fx ); + +#ifdef DEBUG_WRITE + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + Word32 pppfLCLDReal_dbg[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + Word32 pppfLCLDImag_dbg[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + for ( i = 0; i < psLCLDDecoder->iNumBlocks; i++ ) + { + for ( j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) + { + pppfLCLDReal_dbg[n][i][j] = (float) pppfLCLDReal_fx[n][i][j] / ( 1 << ( exp - 3 ) ); + pppfLCLDImag_dbg[n][i][j] = (float) pppfLCLDImag_fx[n][i][j] / ( 1 << ( exp - 3 ) ); + } + } + { + for ( Word16 i = 0; i < psLCLDDecoder->iNumBlocks; i++ ) + { + dbgwrite_txt( pppfLCLDReal_dbg[n][i], CLDFB_NO_CHANNELS_MAX, "LCLD_real_Inv_MS.txt", NULL ); + dbgwrite_txt( pppfLCLDImag_dbg[n][i], CLDFB_NO_CHANNELS_MAX, "LCLD_imag_Inv_MS.txt", NULL ); + } + } + } +#endif + } + IF( EQ_32( psLCLDDecoder->iRealOnlyOut, 1 ) ) + { + UnpackReal_fx( psLCLDDecoder->iChannels, + psLCLDDecoder->iNumBlocks * 2, + pppfLCLDReal_fx, + pppfLCLDImag_fx ); + } + + return AnyDecodingUnresolved( psLCLDDecoder->psPredictionDecoder ); +} +/*------------------------------------------------------------------------------------------* + * Local functions + * + * + *------------------------------------------------------------------------------------------*/ +static void ApplyRMSEnvelope_fx( + const Word32 iNumBands, + const Word32 *piBandwidths, + const Word32 iNumGroups, + const Word32 *piGroupLengths, + Word32 **ppiRMSEnvelope, + Word32 **ppfReal_fx, + Word32 **ppfImag_fx ) +{ + Word32 b, k, n; + +#ifdef DEBUG + FILE *fp_real, *fp_imag, *fp_real_fx, *fp_imag_fx, *fp_real_inp, *fp_imag_inp, *fp_real_inp_fx, *fp_imag_inp_fx; + fp_real = fopen( "Float_code_real1.txt", "ab+" ); + fp_imag = fopen( "Float_code_imag1.txt", "ab+" ); + fp_real_fx = fopen( "Fixed_code_real1.txt", "ab+" ); + fp_imag_fx = fopen( "Fixed_code_imag1.txt", "ab+" ); + fp_real_inp = fopen( "real_input.txt", "ab+" ); + fp_imag_inp = fopen( "imag_input.txt", "ab+" ); +#endif + + Word32 iBlockOffset, iFBOffset; + + iBlockOffset = 0; + FOR( n = 0; n < iNumGroups; n++ ) + { + FOR( k = 0; k < piGroupLengths[n]; k++ ) + { + iFBOffset = 0; + FOR( b = 0; b < iNumBands; b++ ) + { + Word32 m; + Word32 iRMSEnv; + Word32 fGain_fx; + Word16 fGain_exp; + + iRMSEnv = ppiRMSEnvelope[n][b]; + IF( ( ENV_RECONSTRUCT_TABLE_CENTER + iRMSEnv ) % 2 == 0 ) + { + fGain_fx = 1073741824; // 2 ^ 30 + } + ELSE + { + fGain_fx = 1518500249; // sqrt(2) * 2 ^ 30 + } + fGain_exp = c_afRMSEnvReconstructTable_exp[ENV_RECONSTRUCT_TABLE_CENTER + iRMSEnv]; + FOR( m = 0; m < piBandwidths[b]; m++ ) + { + Word64 tmp; +#ifdef DEBUG + fprintf( fp_real_inp, "%.6f\n", ppfReal[iBlockOffset][iFBOffset] ); + fprintf( fp_imag_inp, "%.6f\n", ppfImag[iBlockOffset][iFBOffset] ); +#endif + +#ifdef DEBUG + fprintf( fp_real, "%.6f\n", ppfReal[iBlockOffset][iFBOffset] ); + fprintf( fp_imag, "%.6f\n", ppfImag[iBlockOffset][iFBOffset] ); +#endif + tmp = W_mult_32_32( fGain_fx, ppfReal_fx[iBlockOffset][iFBOffset] ); + tmp = W_shr( tmp, fGain_exp + 1 ); + ppfReal_fx[iBlockOffset][iFBOffset] = W_extract_l( tmp ); + + tmp = W_mult_32_32( fGain_fx, ppfImag_fx[iBlockOffset][iFBOffset] ); + tmp = W_shr( tmp, fGain_exp + 1 ); + ppfImag_fx[iBlockOffset][iFBOffset] = W_extract_l( tmp ); + +#ifdef DEBUG + fprintf( fp_real_fx, "%.6f\n", (float) ppfReal_fx[iBlockOffset][iFBOffset] / ( 1 << Q ) ); + fprintf( fp_imag_fx, "%.6f\n", (float) ppfImag_fx[iBlockOffset][iFBOffset] / ( 1 << Q ) ); +#endif + + iFBOffset++; + } + } + iBlockOffset++; + } + } +#ifdef DEBUG + fclose( fp_real ); + fclose( fp_imag ); + fclose( fp_imag_fx ); + fclose( fp_real_fx ); + fclose( fp_real_inp ); + fclose( fp_imag_inp ); +#endif + + return; +} + +static void ReplaceSign_fx( + const Word32 iNumBlocks, + const Word32 iNumLCLDBands, + Word32 **ppiSignReal, + Word32 **ppiSignImag, + Word32 **ppfReal, + Word32 **ppfImag, + const Word32 *piBandwidths ) +{ + Word32 b, n; + Word32 m, idx; + + FOR( n = 0; n < iNumBlocks; n++ ) + { + idx = 0; + move32(); + FOR( b = 0; b < iNumLCLDBands; b++ ) + { + FOR( m = 0; m < piBandwidths[b]; m++ ) + { + IF( EQ_32( ppiSignReal[n][idx], 1 ) ) + { + ppfReal[n][idx] = L_negate( ppfReal[n][idx] ); + move32(); + } + + IF( EQ_32( ppiSignImag[n][idx], 1 ) ) + { + ppfImag[n][idx] = L_negate( ppfImag[n][idx] ); + move32(); + } + idx++; + } + } + } + return; +} + +static void InvQuantizeSpectrum_fx( + const Word32 iNumGroups, + const Word32 *piGroupLengths, + const Word32 iNumBands, + const Word32 *piBandwidths, + Word32 **ppiAlloc, + Word32 **ppiQReal, + Word32 **ppiQImag, + Word32 **ppfReal, + Word32 **ppfImag, + NoiseGen *psNoiseGen /* Pass in NULL to switch off noise gen */ +) +{ + Word32 b, k, n; + Word32 iBlockOffest, iFBOffset; + + iBlockOffest = 0; + move32(); + FOR( n = 0; n < iNumGroups; n++ ) + { + FOR( k = 0; k < piGroupLengths[n]; k++ ) + { + iFBOffset = 0; + FOR( b = 0; b < iNumBands; b++ ) + { + Word32 m; + Word32 iAlloc; + Word32 fInvSCFGain; + + iAlloc = ppiAlloc[n][b]; + move32(); + fInvSCFGain = c_afInvScaleFactor_fx[iAlloc]; // Q29 + move32(); + IF( GT_32( iAlloc, 0 ) ) + { + FOR( m = 0; m < piBandwidths[b]; m++ ) + { + Word16 iQuantValue; + + iQuantValue = (Word16) ppiQReal[iBlockOffest][iFBOffset]; + move16(); + ppfReal[iBlockOffest][iFBOffset] = Mpy_32_16_1( fInvSCFGain, iQuantValue ); // Q14 + move32(); + iQuantValue = (Word16) ppiQImag[iBlockOffest][iFBOffset]; + move16(); + ppfImag[iBlockOffest][iFBOffset] = Mpy_32_16_1( fInvSCFGain, iQuantValue ); // Q14 + move32(); + iFBOffset++; + } + } + ELSE IF( psNoiseGen != NULL ) + { + FOR( m = 0; m < piBandwidths[b]; m++ ) + { + ppfReal[iBlockOffest][iFBOffset] = Mpy_32_16_1( GetNoise_fx( psNoiseGen ), 22938 ); // Q(14 + 15 -15 )=Q14 + move32(); + ppfImag[iBlockOffest][iFBOffset] = Mpy_32_16_1( GetNoise_fx( psNoiseGen ), 22938 ); // Q(14+ 15 -15 )=Q14 + move32(); + iFBOffset++; + } + } + ELSE + { + iFBOffset = L_add( iFBOffset, piBandwidths[b] ); + move32(); + } + } + + iBlockOffest++; + } + } + + return; +} + +static void InvMSCoding_fx( + const Word32 iNumBlocks, + const Word32 iNumBands, + const Word32 *piBandwidths, + const Word32 iMSMode, + const Word32 *piMSFlags, + const Word32 *piLRPhaseDiffs, + const Word32 *piMSPredCoefs, + Word32 ***pppfReal, + Word32 ***pppfImag ) +{ + + IF( GT_32( iMSMode, 0 ) ) + { + Word32 b; + Word32 iFBOffset; + Word32 bMSPred = 0; + move32(); + + iFBOffset = 0; + move32(); + FOR( b = 0; b < iNumBands; b++ ) + { + IF( EQ_32( piMSFlags[b], 1 ) ) + { + Word32 n; + Word32 phaseIdx; + + Word32 fPred; + + phaseIdx = piLRPhaseDiffs[bMSPred] - PHASE_MIN_VAL; + move32(); + fPred = dequantPred_fx( piMSPredCoefs[bMSPred] ); + move32(); + FOR( n = 0; n < piBandwidths[b]; n++ ) + { + Word32 k; + FOR( k = 0; k < iNumBlocks; k++ ) + { + Word32 fLeftReal; + Word32 fLeftImag; + Word32 fRightReal; + Word32 fRightImag; + + IF( EQ_32( iMSMode, 3 ) ) + { + pppfReal[1][k][iFBOffset] = L_add( pppfReal[1][k][iFBOffset], Mpy_32_32( fPred, pppfReal[0][k][iFBOffset] ) ); + move32(); + pppfImag[1][k][iFBOffset] = L_add( pppfImag[1][k][iFBOffset], Mpy_32_32( fPred, pppfImag[0][k][iFBOffset] ) ); + move32(); + } + + fLeftReal = L_add( pppfReal[0][k][iFBOffset], pppfReal[1][k][iFBOffset] ); + fLeftImag = L_add( pppfImag[0][k][iFBOffset], pppfImag[1][k][iFBOffset] ); + fRightReal = L_sub( pppfReal[0][k][iFBOffset], pppfReal[1][k][iFBOffset] ); + fRightImag = L_sub( pppfImag[0][k][iFBOffset], pppfImag[1][k][iFBOffset] ); + + IF( EQ_32( iMSMode, 3 ) ) + { + cplxmult_fx( &fRightReal, &fRightImag, c_afRotRealImag_fx[phaseIdx][0], -c_afRotRealImag_fx[phaseIdx][1] ); + } + + pppfReal[0][k][iFBOffset] = fLeftReal; + move32(); + pppfReal[1][k][iFBOffset] = fRightReal; + move32(); + pppfImag[0][k][iFBOffset] = fLeftImag; + move32(); + pppfImag[1][k][iFBOffset] = fRightImag; + move32(); + } + iFBOffset++; + } + bMSPred++; + } + ELSE + { + iFBOffset = L_add( iFBOffset, piBandwidths[b] ); + move32(); + } + } + } + + return; +} + +/* Currently only the number of bands in frame */ +static Word32 ReadHeaderInformation( + Word32 *piNumBands, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word32 iBitsRead; + + iBitsRead = 0; + move32(); + *piNumBands = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 5 ); + iBitsRead = L_add( iBitsRead, 5 ); + + return iBitsRead; +} + + +static Word32 ReadMSInformation( + const Word32 iNumBands, + Word32 *piMSMode, + Word32 *piMSFlags, + Word32 *piLRPhaseDiffs, + Word32 *piMSPredCoefs, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word32 iBitsRead; + + iBitsRead = 0; + move32(); + *piMSMode = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 2 ); + iBitsRead = L_add( iBitsRead, 2 ); + + IF( EQ_32( *piMSMode, 0 ) ) + { + Word32 n; + FOR( n = 0; n < iNumBands; n++ ) + { + piMSFlags[n] = 0; + move32(); + } + } + ELSE IF( EQ_32( *piMSMode, 1 ) ) + { + Word32 n; + FOR( n = 0; n < iNumBands; n++ ) + { + piMSFlags[n] = 1; + move32(); + } + } + ELSE IF( EQ_32( *piMSMode, 2 ) ) + { + Word32 n; + FOR( n = 0; n < iNumBands; n++ ) + { + piMSFlags[n] = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 1 ); + move32(); + iBitsRead = L_add( iBitsRead, 1 ); + } + } + ELSE IF( EQ_32( *piMSMode, 3 ) ) + { + Word32 n; + Word32 iMSPredAll; + Word32 iNumMSPredBands = 0; + Word32 anyNonZero; + move32(); + iMSPredAll = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 1 ); + iBitsRead = L_add( iBitsRead, 1 ); + IF( iMSPredAll ) + { + iNumMSPredBands = iNumBands; + move32(); + FOR( n = 0; n < iNumBands; n++ ) + { + piMSFlags[n] = 1; + move32(); + } + } + ELSE + { + FOR( n = 0; n < iNumBands; n++ ) + { + piMSFlags[n] = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 1 ); + move32(); + iBitsRead = L_add( iBitsRead, 1 ); + IF( piMSFlags[n] ) + { + iNumMSPredBands++; + } + } + } + anyNonZero = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 1 ); + IF( anyNonZero ) + { + piLRPhaseDiffs[0] = ISAR_SPLIT_REND_BITStream_read_int32( pBits, PHASE_BAND0_BITS ); + move32(); + piLRPhaseDiffs[0] = L_add( piLRPhaseDiffs[0], PHASE_MIN_VAL ); + move32(); + iBitsRead = L_add( iBitsRead, PHASE_BAND0_BITS ); + FOR( n = 1; n < iNumMSPredBands; n++ ) + { + Word32 tabIdx; + iBitsRead = L_add( iBitsRead, ReadHuff( c_aaiRMSEnvHuffDec, &tabIdx, pBits ) ); + piLRPhaseDiffs[n] = L_add( tabIdx, ENV_DELTA_MIN ); + move32(); + } + DecodePhase( piLRPhaseDiffs, iNumMSPredBands, PHASE_DIFF_DIM ); + } + ELSE + { + FOR( n = 0; n < iNumMSPredBands; n++ ) + { + piLRPhaseDiffs[n] = 0; + move32(); + } + } + anyNonZero = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 1 ); + IF( anyNonZero ) + { + piMSPredCoefs[0] = ISAR_SPLIT_REND_BITStream_read_int32( pBits, PRED_BAND0_BITS ); + move32(); + piMSPredCoefs[0] = L_add( piMSPredCoefs[0], PRED_MIN_VAL ); + move32(); + iBitsRead = L_add( iBitsRead, PRED_BAND0_BITS ); + FOR( n = 1; n < iNumMSPredBands; n++ ) + { + Word32 tabIdx; + iBitsRead = L_add( iBitsRead, ReadHuff( c_aaiRMSEnvHuffDec, &tabIdx, pBits ) ); + piMSPredCoefs[n] = L_add( tabIdx, ENV_DELTA_MIN ); + move32(); + } + DecodePredCoef( piMSPredCoefs, iNumMSPredBands ); + } + ELSE + { + FOR( n = 0; n < iNumMSPredBands; n++ ) + { + piMSPredCoefs[n] = 0; + move32(); + } + } +#ifdef DEBUG_WRITE_MS_PRED + { + static FILE *fid; + IF( !fid ) + fid = fopen( "ms_pred_dec.txt", "wt" ); + writeMSPred( piLRPhaseDiffs, piMSPredCoefs, *piMSMode, iNumMSPredBands, iNumBands, fid, piMSFlags ); + } +#endif + } + ELSE + { + printf( "ERROR UNSUPPORTED MS MODE\n" ); + } + + return iBitsRead; +} + +static Word32 ReadGroupInformation( + const Word32 iChannels, + const Word32 iNumBlocks, + Word32 *piCommonGrouping, + Word32 *piNumGroups, + Word32 **ppiGroupLengths, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word32 c, k, iBitsRead; + + iBitsRead = 0; + move32(); + IF( EQ_32( iChannels, 2 ) ) + { + *piCommonGrouping = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 1 ); + move32(); + iBitsRead = L_add( iBitsRead, 1 ); + + IF( EQ_32( *piCommonGrouping, 1 ) ) + { + piNumGroups[0] = 0; + move32(); + ppiGroupLengths[0][piNumGroups[0]] = 1; + move32(); + FOR( k = 0; k < L_sub( iNumBlocks, 1 ); k++ ) + { + Word32 iGroupStart; + + iGroupStart = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 1 ); + iBitsRead = L_add( iBitsRead, 1 ); + + IF( EQ_32( iGroupStart, 1 ) ) + { + piNumGroups[0] = L_add( piNumGroups[0], 1 ); + move32(); + ppiGroupLengths[0][piNumGroups[0]] = 1; + move32(); + } + ELSE + { + ppiGroupLengths[0][piNumGroups[0]] = L_add( ppiGroupLengths[0][piNumGroups[0]], 1 ); + move32(); + } + } + piNumGroups[0] = L_add( piNumGroups[0], 1 ); + move32(); + + piNumGroups[1] = piNumGroups[0]; + move32(); + FOR( k = 0; k < piNumGroups[1]; k++ ) + { + ppiGroupLengths[1][k] = ppiGroupLengths[0][k]; + move32(); + } + } + ELSE + { + FOR( c = 0; c < iChannels; c++ ) + { + piNumGroups[c] = 0; + move32(); + ppiGroupLengths[c][piNumGroups[c]] = 1; + move32(); + FOR( k = 0; k < L_sub( iNumBlocks, 1 ); k++ ) + { + Word32 iGroupStart; + + iGroupStart = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 1 ); + iBitsRead = L_add( iBitsRead, 1 ); + + IF( EQ_32( iGroupStart, 1 ) ) + { + piNumGroups[c] = L_add( piNumGroups[c], 1 ); + move32(); + ppiGroupLengths[c][piNumGroups[c]] = 1; + move32(); + } + ELSE + { + ppiGroupLengths[c][piNumGroups[c]] = L_add( ppiGroupLengths[c][piNumGroups[c]], 1 ); + move32(); + } + } + piNumGroups[c] = L_add( piNumGroups[c], 1 ); + move32(); + } + } + } + ELSE + { + FOR( c = 0; c < iChannels; c++ ) + { + piNumGroups[c] = 0; + move32(); + ppiGroupLengths[c][piNumGroups[c]] = 1; + move32(); + FOR( k = 0; k < L_sub( iNumBlocks, 1 ); k++ ) + { + Word32 iGroupStart; + + iGroupStart = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 1 ); + iBitsRead = L_add( iBitsRead, 1 ); + + IF( EQ_32( iGroupStart, 1 ) ) + { + piNumGroups[c] = L_add( piNumGroups[c], 1 ); + move32(); + ppiGroupLengths[c][piNumGroups[c]] = 1; + move32(); + } + ELSE + { + ppiGroupLengths[c][piNumGroups[c]] = L_add( ppiGroupLengths[c][piNumGroups[c]], 1 ); + } + } + piNumGroups[c] = L_add( piNumGroups[c], 1 ); + } + } + + return iBitsRead; +} + +static Word32 BSForceBack( + ISAR_SPLIT_REND_BITS_HANDLE pBits, + Word32 iValue, + Word32 iBitCount ) +{ + pBits->bits_read = L_sub( pBits->bits_read, iBitCount ); + + return ( L_shr( iValue, (Word16) iBitCount ) ); +} + + +static Word32 ReadHuff( + const UWord32 ( *pauiHuffDecTable )[HUFF_DEC_TABLE_SIZE], + Word32 *piSymbol, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word32 iBitsRead; + Word32 iSymbol; + Word32 iIndex; + Word32 iVal; + + iVal = 0; + move32(); + iIndex = 0; + move32(); + iSymbol = 0xFFFF; + move32(); + iBitsRead = 0; + move32(); + WHILE( iSymbol == 0xFFFF ) + { + iIndex = ISAR_SPLIT_REND_BITStream_read_int32( pBits, HUFF_READ_SIZE ); + iBitsRead = L_add( iBitsRead, HUFF_READ_SIZE ); + + iIndex = pauiHuffDecTable[iVal][iIndex]; + iSymbol = ( L_and( iIndex, 0xFFFF ) ); + + iVal = ( L_shr( iIndex, 16 ) ); + } + + IF( iVal ) + { + BSForceBack( pBits, iIndex, iVal ); + iBitsRead = L_sub( iBitsRead, iVal ); + } + + *piSymbol = iSymbol; + move32(); + + return iBitsRead; +} + + +static Word32 ReadRMSEnvelope( + const Word32 iChannels, + const Word32 *piNumGroups, + const Word32 iNumBands, + Word32 ***pppiRMSEnvelope, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word32 b, k, n; + Word32 iBitsRead, iLastRMSVal; + + iBitsRead = 0; + move32(); + FOR( n = 0; n < iChannels; n++ ) + { + FOR( k = 0; k < piNumGroups[n]; k++ ) + { + iLastRMSVal = ISAR_SPLIT_REND_BITStream_read_int32( pBits, ENV0_BITS ); + iBitsRead = L_add( iBitsRead, ENV0_BITS ); + + iLastRMSVal = L_add( iLastRMSVal, ENV_MIN ); + pppiRMSEnvelope[n][k][0] = iLastRMSVal; + move32(); + FOR( b = 1; b < iNumBands; b++ ) + { + Word32 iDelta; + + iBitsRead = L_add( iBitsRead, ReadHuff( c_aaiRMSEnvHuffDec, &iDelta, pBits ) ); + + iDelta = L_add( iDelta, ENV_DELTA_MIN ); + iLastRMSVal = L_add( iDelta, iLastRMSVal ); + pppiRMSEnvelope[n][k][b] = iLastRMSVal; + move32(); + } + } + } + + return iBitsRead; +} + + +static Word32 ReadAllocInformation( + Word32 *piAllocOffset, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word32 iBitsRead; + + iBitsRead = 0; + move32(); + *piAllocOffset = ISAR_SPLIT_REND_BITStream_read_int32( pBits, ALLOC_OFFSET_BITS ); + *piAllocOffset = L_add( *piAllocOffset, MIN_ALLOC_OFFSET ); + iBitsRead = L_add( iBitsRead, ALLOC_OFFSET_BITS ); + + return iBitsRead; +} + +static Word32 ReadLCLDData_fx( + const Word32 *piNumGroups, + Word32 **ppiGroupLengths, + const Word32 iNumBands, + const Word32 iNumChannels, + Word32 **ppiDecodingUnresolved, + Word32 **ppiPredEnable, + const Word32 iNumSubSets, + const Word32 iSubSetId, + Word32 ***pppiAlloc, + Word32 ***pppiSignReal, + Word32 ***pppiSignImag, + Word32 ***pppiQReal, + Word32 ***pppiQImag, + Word32 **ppiDecodingFailed, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + UWord32 ( *c_apauiHuffDecTables[2 * ALLOC_TABLE_SIZE] )[HUFF_DEC_TABLE_SIZE] ) +{ + Word32 iBitsRead; + Word32 iDecodingStopped = 0; + Word32 iNumLcldBands = c_aiNumLcldBandsPerBand[iNumBands - 1]; + Word32 s; + Word32 iSet = iSubSetId; + Word16 tmp, tmp_e; + iBitsRead = 0; + for ( s = 0; s < iNumSubSets; s++, iSet-- ) + { + Word32 ch; + + IF( LT_32( iSet, 0 ) ) + { + iSet = L_sub( iNumSubSets, 1 ); + } + + FOR( ch = 0; ch < iNumChannels; ch++ ) + { + Word32 n; + Word32 iBlockOffest; + + IF( EQ_32( ppiDecodingUnresolved[ch][iSet], 1 ) ) + { + iDecodingStopped = 1; + ppiDecodingFailed[ch][iSet] = 1; /* mark as not decoded (is also initialized like that when a frame is lost */ + } + ELSE + { + ppiDecodingFailed[ch][iSet] = 0; /* mark as correctly decoded */ + } + iBlockOffest = 0; + FOR( n = 0; n < piNumGroups[ch]; n++ ) + { + Word32 k; + FOR( k = 0; k < ppiGroupLengths[ch][n]; k++ ) + { + Word32 iFBOffset; + + FOR( iFBOffset = iSet; iFBOffset < iNumLcldBands; iFBOffset += iNumSubSets ) + { + Word32 b; + Word32 iAlloc; + Word32 iHuffDim; + Word32 iHuffMod; + + b = c_aiBandIdPerLcldBand[iFBOffset]; + + iAlloc = pppiAlloc[ch][n][b]; + + iHuffDim = c_aiHuffmanDim_fx[iAlloc]; + iHuffMod = c_aiHuffmanMod_fx[iAlloc]; + + IF( EQ_32( iDecodingStopped, 1 ) ) + { + pppiQReal[ch][iBlockOffest][iFBOffset] = 0; + pppiQImag[ch][iBlockOffest][iFBOffset] = 0; + pppiSignReal[ch][iBlockOffest][iFBOffset] = 0; + pppiSignImag[ch][iBlockOffest][iFBOffset] = 0; + } + ELSE IF( GT_32( iAlloc, 0 ) ) + { + const UWord32( *pauiHuffmanTable )[HUFF_DEC_TABLE_SIZE] = NULL; + const UWord32( *pauiHuffmanTableDPCM )[HUFF_DEC_TABLE_SIZE] = NULL; + Word32 iQuantValue1 = 0; + Word32 iQuantValue2 = 0; +#ifdef USE_DEMOD_TABLES + const int32_t( *paiDemodTable )[2] = NULL; +#endif +#define WMC_TOOL_SKIP + pauiHuffmanTable = (const UWord32( * )[HUFF_DEC_TABLE_SIZE]) c_apauiHuffDecTables[iAlloc]; + pauiHuffmanTableDPCM = (const UWord32( * )[HUFF_DEC_TABLE_SIZE]) c_apauiHuffDecTables[ALLOC_TABLE_SIZE + iAlloc]; +#undef WMC_TOOL_SKIP +#ifdef USE_DEMOD_TABLES + paiDemodTable = c_apaiDemodTables[iAlloc]; +#endif +#ifdef LCLD_HANDLE_PRED_START_SAMPLE + if ( ppiPredEnable[ch][iFBOffset] == 1 && ( iBlockOffest > 0 || iSet != iSubSetId ) ) +#else + IF( EQ_32( ppiPredEnable[ch][iFBOffset], 1 ) ) +#endif + { + IF( EQ_32( iHuffDim, 2 ) ) + { + Word32 iSymbol; + iBitsRead = L_add( iBitsRead, ReadHuff( pauiHuffmanTableDPCM, &iSymbol, pBits ) ); +#ifdef USE_DEMOD_TABLES + iQuantValue1 = paiDemodTable[iSymbol][0]; + iQuantValue2 = paiDemodTable[iSymbol][1]; +#else + tmp = BASOP_Util_Divide1616_Scale( (Word16) iSymbol, (Word16) iHuffMod, &tmp_e ); + iQuantValue1 = L_deposit_l( shr( tmp, add( 15, negate( tmp_e ) ) ) ); + // iQuantValue1 = iSymbol / iHuffMod; + iQuantValue2 = iSymbol % iHuffMod; +#endif + } + ELSE + { + iBitsRead = L_add( iBitsRead, ReadHuff( pauiHuffmanTableDPCM, &iQuantValue1, pBits ) ); + iBitsRead = L_add( iBitsRead, ReadHuff( pauiHuffmanTableDPCM, &iQuantValue2, pBits ) ); + } + } + ELSE + { + IF( EQ_32( iHuffDim, 2 ) ) + { + Word32 iSymbol; + + iBitsRead = L_add( iBitsRead, ReadHuff( pauiHuffmanTable, &iSymbol, pBits ) ); +#ifdef USE_DEMOD_TABLES + iQuantValue1 = paiDemodTable[iSymbol][0]; + iQuantValue2 = paiDemodTable[iSymbol][1]; +#else + tmp = BASOP_Util_Divide1616_Scale( (Word16) iSymbol, (Word16) iHuffMod, &tmp_e ); + iQuantValue1 = L_deposit_l( shr( tmp, add( 15, negate( tmp_e ) ) ) ); + iQuantValue2 = iSymbol % iHuffMod; +#endif + } + ELSE + { + iBitsRead = L_add( iBitsRead, ReadHuff( pauiHuffmanTable, &iQuantValue1, pBits ) ); + move32(); + iBitsRead = L_add( iBitsRead, ReadHuff( pauiHuffmanTable, &iQuantValue2, pBits ) ); + move32(); + /*iBitsRead += ReadHuff( pauiHuffmanTable, &iQuantValue1, pBits ); + iBitsRead += ReadHuff( pauiHuffmanTable, &iQuantValue2, pBits );*/ + } + } + + pppiQReal[ch][iBlockOffest][iFBOffset] = iQuantValue1; + move32(); + pppiQImag[ch][iBlockOffest][iFBOffset] = iQuantValue2; + move32(); + IF( GT_32( iQuantValue1, 0 ) ) + { + pppiSignReal[ch][iBlockOffest][iFBOffset] = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 1 ); + move32(); + iBitsRead = L_add( iBitsRead, 1 ); + move32(); + } + ELSE + { + pppiSignReal[ch][iBlockOffest][iFBOffset] = 0; + } + IF( GT_32( iQuantValue2, 0 ) ) + { + pppiSignImag[ch][iBlockOffest][iFBOffset] = ISAR_SPLIT_REND_BITStream_read_int32( pBits, 1 ); + move32(); + iBitsRead = L_add( iBitsRead, 1 ); + move32(); + } + ELSE + { + pppiSignImag[ch][iBlockOffest][iFBOffset] = 0; + } + } + ELSE + { + pppiSignReal[ch][iBlockOffest][iFBOffset] = 0; + move32(); + pppiSignImag[ch][iBlockOffest][iFBOffset] = 0; + move32(); + } + } + iBlockOffest++; + } + } + } + } + + return iBitsRead; +} + +static void ComputeAllocation( + const Word32 iChannels, + const Word32 *piNumGroups, + const Word32 iNumBands, + Word32 ***pppiSMR, + const Word32 iAllocOffset, + Word32 ***pppiAlloc ) +{ + Word32 b, k, n, iAlloc; + + FOR( n = 0; n < iChannels; n++ ) + { + FOR( k = 0; k < piNumGroups[n]; k++ ) + { + FOR( b = 0; b < iNumBands; b++ ) + { + iAlloc = L_shr( L_add( pppiSMR[n][k][b], L_mult0( (Word16) iAllocOffset, ALLOC_OFFSET_SCALE ) ), 5 ); + iAlloc = ( iAlloc > MIN_ALLOC ) ? iAlloc : MIN_ALLOC; + iAlloc = ( iAlloc < MAX_ALLOC ) ? iAlloc : MAX_ALLOC; + pppiAlloc[n][k][b] = iAlloc; + move32(); + } + } + } + + return; +} diff --git a/lib_isar/isar_lcld_encoder.c b/lib_isar/isar_lcld_encoder.c new file mode 100644 index 0000000000000000000000000000000000000000..327edb6ad3aed00682d86685ded5e61991568be8 --- /dev/null +++ b/lib_isar/isar_lcld_encoder.c @@ -0,0 +1,2140 @@ +/****************************************************************************************************** + + (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 +#include +#include "isar_lcld_prot.h" +#include "isar_lcld_rom_tables.h" +#include "prot_fx.h" +#include "prot_fx.h" +#include "isar_prot.h" +#include "wmc_auto.h" +#include "basop_util.h" +#include "enh64.h" +#include "basop32.h" + +#define LOG10_2_FX ( 646456993 ) +/*------------------------------------------------------------------------------------------* + * Local structures + *------------------------------------------------------------------------------------------*/ +struct LCLD_ENCODER +{ + Word32 iSampleRate; + Word32 iChannels; + Word32 iNumBlocks; + + Word32 iTargetBitRate; + + Word32 iNumBands; + const Word32 *piBandwidths; + + Word32 iMSMode; + Word32 *piMSFlags; + Word32 piMSPredCoefs[MAX_BANDS]; + Word32 piLRPhaseDiffs[MAX_BANDS]; + Word32 iAllowSidePred; + + Word32 iRealOnlyOut; + + RMSEnvelopeGrouping *psRMSEnvelopeGrouping; + + Word32 iCommonGrouping; + Word32 *piNumGroups; + Word32 **ppiGroupLengths; + + Word32 ***pppiRMSEnvelope; + Word32 ***pppiSMR; + Word32 ***pppiExcitation; + Word32 ***pppiAlloc; + + Word32 iAllocOffset; + + Word32 ***pppiLCLDSignReal; + Word32 ***pppiLCLDSignImag; + Word32 ***pppiQLCLDReal; + Word32 ***pppiQLCLDImag; + + + PredictionEncoder *psPredictionEncoder; +}; +/*------------------------------------------------------------------------------------------* + * Function Quantize() + * + * + *------------------------------------------------------------------------------------------*/ +static Word32 Quantize_fx( + const Word32 fVal_fx, + const Word32 fScale_fx, + Word32 *iSign, + const Word32 iMaxVal ) +{ + Word32 iVal_fx; + IF( GT_32( fVal_fx, 0 ) ) + { + iVal_fx = (Word32) L_add( Mpy_32_32( fScale_fx, fVal_fx ), ONE_IN_Q20 ); + *iSign = 0; + } + ELSE + { + iVal_fx = (Word32) L_add( Mpy_32_32( -fScale_fx, fVal_fx ), ONE_IN_Q20 ); + *iSign = 1; + } + iVal_fx = ( iVal_fx < iMaxVal ) ? iVal_fx : iMaxVal; + + return iVal_fx; +} +/*------------------------------------------------------------------------------------------* + * Function UnQuantize() + * + * + *------------------------------------------------------------------------------------------*/ +static Word32 UnQuantize_fx( + const Word32 iVal_fx, + const Word32 fScale_fx, + const Word32 iSign ) +{ + + Word32 fVal_fx; + IF( EQ_32( iSign, 0 ) ) + { + fVal_fx = Mpy_32_32( fScale_fx, iVal_fx ); // Q19 + } + ELSE + { + fVal_fx = Mpy_32_32( -fScale_fx, iVal_fx ); // Q19 + } + return fVal_fx; +} +static void PackReal( + const Word32 iChannels, + const Word32 iNumBlocks, + Word32 ***pppfReal, + Word32 ***pppfImag ) +{ + Word32 ch, b, n; + FOR( ch = 0; ch < iChannels; ch++ ) + { + FOR( b = 0; b < LCLD_BANDS; b++ ) + { + Word32 iRealBlock = 0; + move32(); + FOR( n = 0; n < iNumBlocks; n += 2 ) + { + pppfImag[ch][iRealBlock][b] = pppfReal[ch][n + 1][b]; + move32(); + pppfReal[ch][iRealBlock][b] = pppfReal[ch][n][b]; + move32(); + iRealBlock++; + } + } + } +} +/*------------------------------------------------------------------------------------------* + * Function CreateLCLDEncoder() + * + * + *------------------------------------------------------------------------------------------*/ + +ivas_error CreateLCLDEncoder( + LCLDEncoder **psLCLDEncoder_out, + const Word32 iSampleRate, + const Word32 iChannels, + const Word32 iTargetBitRate, + const Word32 iAllowSidePred, + const Word16 iNumBlocks, + const Word16 iNumSubSets, + const Word32 iRealOnlyOut ) +{ + Word32 n; + LCLDEncoder *psLCLDEncoder; + ivas_error error; + Word32 iMaxNumPredBands = 0; + move32(); + + assert( iSampleRate == 48000 ); // Fix + assert( iNumBlocks == 16 || iNumBlocks == 8 || iNumBlocks == 4 ); + assert( iNumSubSets > 0 && iNumSubSets <= LCLD_MAX_NUM_PRED_SUBSETS ); + + IF( ( psLCLDEncoder = (LCLDEncoder *) malloc( sizeof( LCLDEncoder ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + psLCLDEncoder->iSampleRate = iSampleRate; + move32(); + psLCLDEncoder->iChannels = iChannels; + move32(); + psLCLDEncoder->iRealOnlyOut = iRealOnlyOut; + move32(); + psLCLDEncoder->iAllocOffset = 0; + move32(); + + psLCLDEncoder->iTargetBitRate = iTargetBitRate; + move32(); + + psLCLDEncoder->piBandwidths = c_aiBandwidths48; + psLCLDEncoder->iNumBands = DEF_BANDS_48; /* 22 bands = 50 CLDFB bands (rather than 23 bands) */ + move32(); + iMaxNumPredBands = L_min( c_aiNumLcldBandsPerBand[psLCLDEncoder->iNumBands - 1], 50 ); + IF( EQ_32( iRealOnlyOut, 1 ) ) + { + iMaxNumPredBands = 0; + move32(); + assert( iNumSubSets == 1 ); + psLCLDEncoder->iNumBlocks = L_deposit_l( shr( iNumBlocks, 1 ) ); + } + ELSE + { + psLCLDEncoder->iNumBlocks = iNumBlocks; + move32(); + } + + psLCLDEncoder->iMSMode = 0; + move32(); + IF( ( psLCLDEncoder->piMSFlags = (Word32 *) malloc( MAX_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + FOR( n = 0; n < MAX_BANDS; n++ ) + { + psLCLDEncoder->piLRPhaseDiffs[n] = 0; + move32(); + psLCLDEncoder->piMSPredCoefs[n] = 0; + move32(); + } + psLCLDEncoder->iAllowSidePred = iAllowSidePred; + move32(); + + psLCLDEncoder->psRMSEnvelopeGrouping = CreateRMSEnvelopeGrouping( psLCLDEncoder->iNumBlocks ); + + psLCLDEncoder->iCommonGrouping = 1; //*Common grouping always on only impacts stereo */ + move32(); + IF( ( psLCLDEncoder->piNumGroups = (Word32 *) malloc( psLCLDEncoder->iChannels * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->ppiGroupLengths = (Word32 **) malloc( psLCLDEncoder->iChannels * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiRMSEnvelope = (Word32 ***) malloc( psLCLDEncoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiSMR = (Word32 ***) malloc( psLCLDEncoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiExcitation = (Word32 ***) malloc( psLCLDEncoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiAlloc = (Word32 ***) malloc( psLCLDEncoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + + IF( ( psLCLDEncoder->pppiLCLDSignReal = (Word32 ***) malloc( psLCLDEncoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiLCLDSignImag = (Word32 ***) malloc( psLCLDEncoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiQLCLDReal = (Word32 ***) malloc( psLCLDEncoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiQLCLDImag = (Word32 ***) malloc( psLCLDEncoder->iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + + FOR( n = 0; n < iChannels; n++ ) + { + Word32 k; + IF( ( psLCLDEncoder->ppiGroupLengths[n] = (Word32 *) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiRMSEnvelope[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiSMR[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiExcitation[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiAlloc[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + + IF( ( psLCLDEncoder->pppiLCLDSignReal[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiLCLDSignImag[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiQLCLDReal[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiQLCLDImag[n] = (Word32 **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + IF( ( psLCLDEncoder->pppiRMSEnvelope[n][k] = (Word32 *) malloc( MAX_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiSMR[n][k] = (Word32 *) malloc( MAX_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiExcitation[n][k] = (Word32 *) malloc( MAX_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiAlloc[n][k] = (Word32 *) malloc( MAX_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + + IF( ( psLCLDEncoder->pppiLCLDSignReal[n][k] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiLCLDSignImag[n][k] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiQLCLDReal[n][k] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + IF( ( psLCLDEncoder->pppiQLCLDImag[n][k] = (Word32 *) malloc( LCLD_BANDS * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + } + } + + IF( ( error = CreatePredictionEncoder_fx( &( psLCLDEncoder->psPredictionEncoder ), iChannels, psLCLDEncoder->iNumBlocks, L_deposit_l( iNumSubSets ), iMaxNumPredBands ) ) != IVAS_ERR_OK ) + { + return error; + } + + *psLCLDEncoder_out = psLCLDEncoder; + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------------------------* + * Function DeleteLCLDEncoder() + * + * + *------------------------------------------------------------------------------------------*/ + +void DeleteLCLDEncoder( + LCLDEncoder *psLCLDEncoder ) +{ + Word32 k, n; + + IF( psLCLDEncoder != NULL ) + { + + IF( psLCLDEncoder->piMSFlags != NULL ) + { + free( psLCLDEncoder->piMSFlags ); + } + + IF( psLCLDEncoder->piNumGroups != NULL ) + { + free( psLCLDEncoder->piNumGroups ); + } + + IF( psLCLDEncoder->psRMSEnvelopeGrouping != NULL ) + { + DeleteRMSEnvelopeGrouping( psLCLDEncoder->psRMSEnvelopeGrouping ); + } + + IF( psLCLDEncoder->ppiGroupLengths != NULL ) + { + FOR( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + free( psLCLDEncoder->ppiGroupLengths[n] ); + } + free( psLCLDEncoder->ppiGroupLengths ); + } + IF( psLCLDEncoder->pppiRMSEnvelope != NULL ) + { + FOR( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiRMSEnvelope[n][k] ); + } + free( psLCLDEncoder->pppiRMSEnvelope[n] ); + } + free( psLCLDEncoder->pppiRMSEnvelope ); + } + + IF( psLCLDEncoder->pppiSMR != NULL ) + { + FOR( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiSMR[n][k] ); + } + free( psLCLDEncoder->pppiSMR[n] ); + } + free( psLCLDEncoder->pppiSMR ); + } + + IF( psLCLDEncoder->pppiExcitation != NULL ) + { + FOR( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiExcitation[n][k] ); + } + free( psLCLDEncoder->pppiExcitation[n] ); + } + free( psLCLDEncoder->pppiExcitation ); + } + + IF( psLCLDEncoder->pppiAlloc != NULL ) + { + FOR( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiAlloc[n][k] ); + } + free( psLCLDEncoder->pppiAlloc[n] ); + } + free( psLCLDEncoder->pppiAlloc ); + } + + IF( psLCLDEncoder->pppiLCLDSignReal != NULL ) + { + FOR( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiLCLDSignReal[n][k] ); + } + free( psLCLDEncoder->pppiLCLDSignReal[n] ); + } + free( psLCLDEncoder->pppiLCLDSignReal ); + } + + IF( psLCLDEncoder->pppiLCLDSignImag != NULL ) + { + FOR( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiLCLDSignImag[n][k] ); + } + free( psLCLDEncoder->pppiLCLDSignImag[n] ); + } + free( psLCLDEncoder->pppiLCLDSignImag ); + } + + IF( psLCLDEncoder->pppiQLCLDReal != NULL ) + { + FOR( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiQLCLDReal[n][k] ); + } + free( psLCLDEncoder->pppiQLCLDReal[n] ); + } + free( psLCLDEncoder->pppiQLCLDReal ); + } + + IF( psLCLDEncoder->pppiQLCLDImag != NULL ) + { + FOR( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + FOR( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiQLCLDImag[n][k] ); + } + free( psLCLDEncoder->pppiQLCLDImag[n] ); + } + free( psLCLDEncoder->pppiQLCLDImag ); + } + + DeletePredictionEncoder_fx( psLCLDEncoder->psPredictionEncoder ); + free( psLCLDEncoder ); + } + + return; +} + +/*------------------------------------------------------------------------------------------* + * Local function declarations + *------------------------------------------------------------------------------------------*/ + +static Word32 MSModeCalculation_fx( const Word32 iNumBlocks, const Word32 iNumBands, const Word32 *piBandwidths, Word32 ***pppfReal_fx, Word32 ***pppfImag_fx, Word16 Q_in, Word32 *piMSMode, Word32 *piLRPhaseDiff, Word32 *piMSPredCoef, const Word32 iAllowSidePred, const Word32 iRealOnlyOut, Word32 *piMSFlags ); +static void RemoveRMSEnvelope( const Word32 iNumBands, const Word32 *piBandwidths, const Word32 iNumGroups, const Word32 *piGroupLengths, Word32 **ppiRMSEnvelope, Word32 **ppfReal_fx, Word32 **ppfImag_fx ); +static Word32 CountLCLDBits( const Word32 iNumGroups, const Word32 *piGroupLengths, const Word32 iNumBands, const Word32 *piBandwidths, const Word32 *piPredEnable, Word32 **ppiAlloc, Word32 **ppiQReal, Word32 **ppiQImag ); + +static Word32 WriteHeaderInformation( const Word32 iNumBands, ISAR_SPLIT_REND_BITS_HANDLE pBits ); + +static Word32 WriteMSInformation( const Word32 iNumBands, const Word32 iMSMode, const Word32 *piMSFlags, const Word32 *piLRPhaseDiff, const Word32 *piMSPredCoef, Word32 iNumMSPredBands, ISAR_SPLIT_REND_BITS_HANDLE pBits ); + +static Word32 WriteGroupInformation( const Word32 iChannels, const Word32 iCommonGrouping, const Word32 *piNumGroups, Word32 **ppiGroupLengths, ISAR_SPLIT_REND_BITS_HANDLE pBits ); + +static Word32 WriteRMSEnvelope( const Word32 iChannels, const Word32 *piNumGroups, const Word32 iNumBands, Word32 ***pppiRMSEnvelope, ISAR_SPLIT_REND_BITS_HANDLE pBits ); + +static Word32 WriteAllocInformation( const Word32 iAllocOffset, ISAR_SPLIT_REND_BITS_HANDLE pBits ); + +static Word32 WriteLCLDData( const Word32 *piNumGroups, Word32 **ppiGroupLengths, const Word32 iNumBands, const Word32 iNumChannels, Word32 **ppiPredEnable, const Word32 iNumSubSets, const Word32 iSubSetId, Word32 ***pppiAlloc, Word32 ***pppiSignReal, Word32 ***pppiSignImag, Word32 ***pppiQReal, Word32 ***pppiQImag, ISAR_SPLIT_REND_BITS_HANDLE pBits ); +static Word32 ComputeAllocation( const Word32 iChannels, const Word32 *piNumGroups, Word32 **ppiGroupLengths, const Word32 iNumBands, const Word32 *piBandwidths, Word32 ***pppfReal_fx, Word32 ***pppfImag_fx, Word16 q_final, Word32 ***pppiSMR, const Word32 iAvailableBits, Word32 *piAllocOffset, Word32 ***pppiAlloc, Word32 ***pppiQReal, Word32 ***pppiQImag, Word32 ***pppiSignReal, Word32 ***pppiSignImag, PredictionEncoder *psPredictionEncoder ); +/*------------------------------------------------------------------------------------------* + * Function EncodeLCLDFrame() + * + * + *------------------------------------------------------------------------------------------*/ +Word32 EncodeLCLDFrame( + LCLDEncoder *psLCLDEncoder, + Word32 ***pppfLCLDReal_fx, + Word32 ***pppfLCLDImag_fx, + Word32 *piBitsWritten, + const Word32 available_bits, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + Word16 *q_final ) +{ + Word32 n; + Word32 iAvailableBits, iBitsWritten; + Word32 iNumMSBands = 0; + Word32 iAudioBitsWritten; + + iAvailableBits = available_bits; // HCBR for now + iBitsWritten = 0; + assert( available_bits <= pBits->buf_len * 8 ); + IF( EQ_32( psLCLDEncoder->iRealOnlyOut, 1 ) ) + { + PackReal( psLCLDEncoder->iChannels, psLCLDEncoder->iNumBlocks * 2, pppfLCLDReal_fx, pppfLCLDImag_fx ); + } + /* Do MS calc here */ + IF( EQ_32( psLCLDEncoder->iChannels, 2 ) ) + { + iNumMSBands = MSModeCalculation_fx( psLCLDEncoder->iNumBlocks, + psLCLDEncoder->iNumBands, + psLCLDEncoder->piBandwidths, + pppfLCLDReal_fx, + pppfLCLDImag_fx, + *q_final, + &psLCLDEncoder->iMSMode, + psLCLDEncoder->piLRPhaseDiffs, + psLCLDEncoder->piMSPredCoefs, + psLCLDEncoder->iAllowSidePred, + psLCLDEncoder->iRealOnlyOut, + psLCLDEncoder->piMSFlags ); + IF( GT_32( psLCLDEncoder->iMSMode, 0 ) ) + { + psLCLDEncoder->iCommonGrouping = 1; // Make sure common grouping is enabled when MS is in use + } + } + /* Compute Grouping and RMS Envelopes */ + IF( EQ_32( psLCLDEncoder->iChannels, 2 ) && EQ_32( psLCLDEncoder->iCommonGrouping, 1 ) ) + { + ComputeEnvelopeGrouping( psLCLDEncoder->psRMSEnvelopeGrouping, + psLCLDEncoder->iChannels, + psLCLDEncoder->iNumBands, + psLCLDEncoder->piBandwidths, + pppfLCLDReal_fx, + pppfLCLDImag_fx, + &psLCLDEncoder->piNumGroups[0], + psLCLDEncoder->ppiGroupLengths[0], + psLCLDEncoder->pppiRMSEnvelope, + *q_final ); + psLCLDEncoder->piNumGroups[1] = psLCLDEncoder->piNumGroups[0]; + FOR( n = 0; n < psLCLDEncoder->piNumGroups[0]; n++ ) + { + psLCLDEncoder->ppiGroupLengths[1][n] = psLCLDEncoder->ppiGroupLengths[0][n]; + move32(); + } + } + ELSE + { + FOR( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + ComputeEnvelopeGrouping( psLCLDEncoder->psRMSEnvelopeGrouping, + psLCLDEncoder->iChannels, + psLCLDEncoder->iNumBands, + psLCLDEncoder->piBandwidths, + &pppfLCLDReal_fx[n], + &pppfLCLDImag_fx[n], + &psLCLDEncoder->piNumGroups[n], + psLCLDEncoder->ppiGroupLengths[n], + &psLCLDEncoder->pppiRMSEnvelope[n], *q_final ); + } + } + + FOR( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + RemoveRMSEnvelope( psLCLDEncoder->iNumBands, + psLCLDEncoder->piBandwidths, + psLCLDEncoder->piNumGroups[n], + (const Word32 *) psLCLDEncoder->ppiGroupLengths[n], + psLCLDEncoder->pppiRMSEnvelope[n], + pppfLCLDReal_fx[n], + pppfLCLDImag_fx[n] ); + } + *q_final = add( *q_final, 9 ); // Increasing the Q as it has changed inside the RemoveRMSEnvelope + + ComputePredictors_fx( psLCLDEncoder->psPredictionEncoder, pppfLCLDReal_fx, pppfLCLDImag_fx ); + + iBitsWritten = L_add( iBitsWritten, WriteHeaderInformation( psLCLDEncoder->iNumBands, pBits ) ); + + IF( EQ_32( psLCLDEncoder->iChannels, 2 ) ) + { + iBitsWritten = L_add( iBitsWritten, WriteMSInformation( psLCLDEncoder->iNumBands, + psLCLDEncoder->iMSMode, + (const Word32 *) psLCLDEncoder->piMSFlags, + (const Word32 *) psLCLDEncoder->piLRPhaseDiffs, + (const Word32 *) psLCLDEncoder->piMSPredCoefs, + iNumMSBands, + pBits ) ); + } + + + iBitsWritten = L_add( iBitsWritten, WritePredictors( psLCLDEncoder->psPredictionEncoder, pBits ) ); + + iBitsWritten = L_add( iBitsWritten, WriteGroupInformation( psLCLDEncoder->iChannels, psLCLDEncoder->iCommonGrouping, (const Word32 *) psLCLDEncoder->piNumGroups, psLCLDEncoder->ppiGroupLengths, pBits ) ); + + iBitsWritten = L_add( iBitsWritten, WriteRMSEnvelope( psLCLDEncoder->iChannels, (const Word32 *) psLCLDEncoder->piNumGroups, psLCLDEncoder->iNumBands, psLCLDEncoder->pppiRMSEnvelope, pBits ) ); + + + IF( EQ_32( psLCLDEncoder->iChannels, 2 ) && EQ_32( psLCLDEncoder->iCommonGrouping, 1 ) ) + { + Word32 k; + FOR( k = 0; k < psLCLDEncoder->piNumGroups[0]; k++ ) + { + PerceptualModelStereo_fx( psLCLDEncoder->iNumBands, + psLCLDEncoder->piMSFlags, + psLCLDEncoder->pppiRMSEnvelope[0][k], + psLCLDEncoder->pppiRMSEnvelope[1][k], + psLCLDEncoder->pppiExcitation[0][k], + psLCLDEncoder->pppiExcitation[1][k], + psLCLDEncoder->pppiSMR[0][k], + psLCLDEncoder->pppiSMR[1][k] ); + } + } + ELSE + { + FOR( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + Word32 k; + FOR( k = 0; k < psLCLDEncoder->piNumGroups[n]; k++ ) + { + PerceptualModel_fx( psLCLDEncoder->iNumBands, + psLCLDEncoder->pppiRMSEnvelope[n][k], + psLCLDEncoder->pppiExcitation[n][k], + psLCLDEncoder->pppiSMR[n][k] ); + } + } + } +#ifdef DEBUG_WRITE_PREDICTORS + { + static FILE *fid; + if ( !fid ) + fid = fopen( "pred_enc.txt", "wt" ); + for ( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + int16_t b; + for ( b = 0; b < 60; b++ ) + fprintf( fid, "%.5f ", (float) psLCLDEncoder->psPredictionEncoder->ppiPredBandEnable[n][b] * psLCLDEncoder->psPredictionEncoder->ppfA1Imag[n][b] ); + } + fprintf( fid, "%d %d\n", psLCLDEncoder->psPredictionEncoder->iSubSetId, psLCLDEncoder->psPredictionEncoder->piPredChanEnable[n] ); + } +#endif + iAvailableBits = L_sub( iAvailableBits, iBitsWritten ); + + ComputeAllocation( psLCLDEncoder->iChannels, + (const Word32 *) psLCLDEncoder->piNumGroups, + psLCLDEncoder->ppiGroupLengths, + psLCLDEncoder->iNumBands, + psLCLDEncoder->piBandwidths, + pppfLCLDReal_fx, + pppfLCLDImag_fx, + *q_final, + psLCLDEncoder->pppiSMR, + iAvailableBits, + &psLCLDEncoder->iAllocOffset, + psLCLDEncoder->pppiAlloc, + psLCLDEncoder->pppiQLCLDReal, + psLCLDEncoder->pppiQLCLDImag, + psLCLDEncoder->pppiLCLDSignReal, + psLCLDEncoder->pppiLCLDSignImag, + psLCLDEncoder->psPredictionEncoder ); + + iBitsWritten = L_add( iBitsWritten, WriteAllocInformation( psLCLDEncoder->iAllocOffset, + pBits ) ); + iAudioBitsWritten = iBitsWritten; + iBitsWritten = L_add( iBitsWritten, WriteLCLDData( psLCLDEncoder->piNumGroups, + psLCLDEncoder->ppiGroupLengths, + psLCLDEncoder->iNumBands, + psLCLDEncoder->iChannels, + psLCLDEncoder->psPredictionEncoder->ppiPredBandEnable, + psLCLDEncoder->psPredictionEncoder->iNumSubSets, + psLCLDEncoder->psPredictionEncoder->iSubSetId, + psLCLDEncoder->pppiAlloc, + psLCLDEncoder->pppiLCLDSignReal, + psLCLDEncoder->pppiLCLDSignImag, + psLCLDEncoder->pppiQLCLDReal, + psLCLDEncoder->pppiQLCLDImag, + pBits ) ); + *piBitsWritten = iBitsWritten; + move32(); + iAudioBitsWritten = L_sub( iBitsWritten, iAudioBitsWritten ); + + UpdatePredictionSubSetId( psLCLDEncoder->psPredictionEncoder ); + + return 0; +} + +/*------------------------------------------------------------------------------------------* + * Function GetNumGroups() + * + * + *------------------------------------------------------------------------------------------*/ + +Word32 GetNumGroups( LCLDEncoder *psLCLDEncoder ) +{ + return psLCLDEncoder->piNumGroups[0]; +} + + +/*------------------------------------------------------------------------------------------* + * Local functions + * + * + *------------------------------------------------------------------------------------------*/ + +enum MSPred_Types +{ + MS_PHASE_AND_PRED = 0, /* LR phase alignment + real-valued M/S prediction */ + MS_PRED_ONLY = 1, /* real-valued M/S prediction */ + MS_PHASE_ONLY = 2 /* LR phase alignment + M/S */ +}; + +enum MS_BS_TYPES +{ + MS_OFF = 0, + MS_ALL = 1, + MS_SOME = 2, + MS_PRED = 3 +}; +static Word32 MSModeCalculation_fx( + const Word32 iNumBlocks, + const Word32 iNumBands, + const Word32 *piBandwidths, + /*float ***pppfReal, + float ***pppfImag,*/ + Word32 ***pppfReal_fx, + Word32 ***pppfImag_fx, + Word16 Q_in, + Word32 *piMSMode, + Word32 *piLRPhaseDiffs, + Word32 *piMSPredCoefs, + const Word32 iAllowSidePred, + const Word32 iRealOnlyOut, + Word32 *piMSFlags ) +{ + Word32 b; + Word32 iFBOffset; + Word32 iNumMSBands; + Word32 iMSPredType; + /*float fMSBitGain = 0.0f; + float pfMSPredBitGain[3] = { 0.0f }; + float fPred;*/ + Word32 fMSBitGain_fx = 0; + Word32 pfMSPredBitGain_fx[3] = { 0 }; + Word32 fPred_fx; + Word32 piMSPredFlags0[MAX_BANDS] = { 0 }; + Word32 piMSPredFlags1[MAX_BANDS] = { 0 }; + Word32 piMSPredFlags2[MAX_BANDS] = { 0 }; + Word32 *ppiMSPredFlags[3]; + Word32 piMSPredCoefs0[MAX_BANDS] = { 0 }; + Word32 piMSPredCoefs1[MAX_BANDS] = { 0 }; + Word32 piMSPredCoefs2[MAX_BANDS] = { 0 }; + Word32 *ppiMSPredCoefs[3]; + Word32 piMSPredPhase0[MAX_BANDS] = { 0 }; + Word32 piMSPredPhase1[MAX_BANDS] = { 0 }; + Word32 piMSPredPhase2[MAX_BANDS] = { 0 }; + Word32 *ppiMSPredPhase[3]; + Word32 iMsInfoBits; + Word32 piMsPredInfoBits[3] = { 0 }; + + // const float feps = 1e-12f; + // float fBitsFactor = 3.32192809488736f; /* = 1/log10(2), from dB/10 to bits assuming 1 bit per log2(SNR) or 1 bit per 3dB SNR */ + const Word32 feps_fx = 1; // is this correct? + move32(); + Word32 fBitsFactor_fx = 1783446565; /* = 1/log10(2) (Q29), from dB/10 to bits assuming 1 bit per log2(SNR) or 1 bit per 3dB SNR */ + move32(); + IF( LT_32( iNumBlocks, LCLD_BLOCKS_PER_FRAME ) ) + { + // fBitsFactor *= ( 0.7f + (float) ( iNumBlocks - 4 ) / (float) ( LCLD_BLOCKS_PER_FRAME - 4 ) * ( 1.0f - 0.7f ) ); /* Tuning for relatively higher side rate due to shorter frame length */ + fBitsFactor_fx = Mpy_32_32( fBitsFactor_fx, L_add( 1503238553, W_extract_l( W_mult0_32_32( L_sub( iNumBlocks, 4 ), 596523235 ) ) ) ); /* Tuning for relatively higher side rate due to shorter frame length */ + } + + ppiMSPredFlags[0] = piMSPredFlags0; + move32(); + ppiMSPredFlags[1] = piMSPredFlags1; + move32(); + ppiMSPredFlags[2] = piMSPredFlags2; + move32(); + ppiMSPredCoefs[0] = piMSPredCoefs0; + move32(); + ppiMSPredCoefs[1] = piMSPredCoefs1; + move32(); + ppiMSPredCoefs[2] = piMSPredCoefs2; + move32(); + ppiMSPredPhase[0] = piMSPredPhase0; + move32(); + ppiMSPredPhase[1] = piMSPredPhase1; + move32(); + ppiMSPredPhase[2] = piMSPredPhase2; + move32(); + *piMSMode = MS_OFF; + move32(); + iFBOffset = 0; + move32(); + iNumMSBands = 0; + move32(); + FOR( b = 0; b < iNumBands; b++ ) + { + Word32 n; + /*float fLeftEnergy; + float fRightEnergy; + float fMidEnergy; + float fSideEnergy; + float fLRRatio; + float fMSRatio; + float pfMSPredRatio[3] = { 0.0f }; + float fMidEnergyPred; + float fSideEnergyPred; + float fLRCovReal = 0.0f; + float fLRCovImag = 0.0f;*/ + Word32 fLeftEnergy_fx; + Word32 fRightEnergy_fx; + Word32 fMidEnergy_fx; + Word32 fSideEnergy_fx; + Word64 fLeftEnergy_fx64; + Word64 fRightEnergy_fx64; + Word64 fMidEnergy_fx64; + Word64 fSideEnergy_fx64; + Word32 fLRRatio_fx; + Word32 fMSRatio_fx; + Word32 pfMSPredRatio_fx[3] = { 0 }; + Word32 fMidEnergyPred_fx; + Word32 fSideEnergyPred_fx; + Word32 fLRCovReal_fx = 0; + Word32 fLRCovImag_fx = 0; + Word64 fLRCovReal_fx64 = 0; + Word64 fLRCovImag_fx64 = 0; + Word32 iPhase; + Word32 iPred; + Word32 tabIdx = 0; + // float fNumLines = (float)(iRealOnlyOut == 1 ? iNumBlocks * piBandwidths[b] * 4 : iNumBlocks * piBandwidths[b] * 2); /* per band per channel */ + // float fLevelToSMRdBFactor = (float) c_aiDefaultTheta48[b] / (float) ( 1 << PERCEPTUAL_MODEL_SLGAIN_SHIFT ); /* frequency dependent SMR slope in psy model */ + Word32 fNumLines_fx = iRealOnlyOut == 1 ? L_shl( iNumBlocks * piBandwidths[b], 2 ) : L_shl( iNumBlocks * piBandwidths[b], 1 ); /* per band per channel */ + Word32 fLevelToSMRdBFactor_fx = L_shl( c_aiDefaultTheta48[b], 23 ); /* frequency dependent SMR slope in psy model Q23:sub(Q31, PERCEPTUAL_MODEL_SLGAIN_SHIFT) */ + fLeftEnergy_fx = 0; + fRightEnergy_fx = 0; + fMidEnergy_fx = 0; + fSideEnergy_fx = 0; + fLeftEnergy_fx64 = 0; + fRightEnergy_fx64 = 0; + fMidEnergy_fx64 = 0; + fSideEnergy_fx64 = 0; + Word16 Q_en_tmp = 63; + + FOR( n = 0; n < piBandwidths[b]; n++ ) + { + Word32 k; + FOR( k = 0; k < iNumBlocks; k++ ) + { + /*float fMidReal; + float fMidImag; + float fSideReal; + float fSideImag;*/ + Word32 fMidReal_fx; + Word32 fMidImag_fx; + Word32 fSideReal_fx; + Word32 fSideImag_fx; + + // fMidReal = 0.5f * ( pppfReal[0][k][iFBOffset] + pppfReal[1][k][iFBOffset] ); + fMidReal_fx = L_shr( L_add( pppfReal_fx[0][k][iFBOffset], pppfReal_fx[1][k][iFBOffset] ), 1 ); + // fMidImag = 0.5f * ( pppfImag[0][k][iFBOffset] + pppfImag[1][k][iFBOffset] ); + fMidImag_fx = L_shr( L_add( pppfImag_fx[0][k][iFBOffset], pppfImag_fx[1][k][iFBOffset] ), 1 ); + // fSideReal = 0.5f * ( pppfReal[0][k][iFBOffset] - pppfReal[1][k][iFBOffset] ); + fSideReal_fx = L_shr( L_sub( pppfReal_fx[0][k][iFBOffset], pppfReal_fx[1][k][iFBOffset] ), 1 ); + // fSideImag = 0.5f * ( pppfImag[0][k][iFBOffset] - pppfImag[1][k][iFBOffset] ); + fSideImag_fx = L_shr( L_sub( pppfImag_fx[0][k][iFBOffset], pppfImag_fx[1][k][iFBOffset] ), 1 ); + + // fLeftEnergy += ( pppfReal[0][k][iFBOffset] * pppfReal[0][k][iFBOffset] + pppfImag[0][k][iFBOffset] * pppfImag[0][k][iFBOffset] ); + fLeftEnergy_fx64 = W_add( fLeftEnergy_fx64, W_add( W_mult0_32_32( pppfReal_fx[0][k][iFBOffset], pppfReal_fx[0][k][iFBOffset] ), W_mult0_32_32( pppfImag_fx[0][k][iFBOffset], pppfImag_fx[0][k][iFBOffset] ) ) ); + // fRightEnergy += ( pppfReal[1][k][iFBOffset] * pppfReal[1][k][iFBOffset] + pppfImag[1][k][iFBOffset] * pppfImag[1][k][iFBOffset] ); + fRightEnergy_fx64 = W_add( fRightEnergy_fx64, W_add( W_mult0_32_32( pppfReal_fx[1][k][iFBOffset], pppfReal_fx[1][k][iFBOffset] ), W_mult0_32_32( pppfImag_fx[1][k][iFBOffset], pppfImag_fx[1][k][iFBOffset] ) ) ); + // fMidEnergy += ( fMidReal * fMidReal + fMidImag * fMidImag ); + fMidEnergy_fx64 = W_add( fMidEnergy_fx64, W_add( W_mult0_32_32( fMidReal_fx, fMidReal_fx ), W_mult0_32_32( fMidImag_fx, fMidImag_fx ) ) ); + // fSideEnergy += ( fSideReal * fSideReal + fSideImag * fSideImag ); + fSideEnergy_fx64 = W_add( fSideEnergy_fx64, W_add( W_mult0_32_32( fSideReal_fx, fSideReal_fx ), W_mult0_32_32( fSideImag_fx, fSideImag_fx ) ) ); + + // fLRCovReal += ( pppfReal[0][k][iFBOffset] * pppfReal[1][k][iFBOffset] + pppfImag[0][k][iFBOffset] * pppfImag[1][k][iFBOffset] ); + fLRCovReal_fx64 = W_add( fLRCovReal_fx64, W_add( W_mult0_32_32( pppfReal_fx[0][k][iFBOffset], pppfReal_fx[1][k][iFBOffset] ), W_mult0_32_32( pppfImag_fx[0][k][iFBOffset], pppfImag_fx[1][k][iFBOffset] ) ) ); + // fLRCovImag += ( pppfImag[0][k][iFBOffset] * pppfReal[1][k][iFBOffset] - pppfImag[1][k][iFBOffset] * pppfReal[0][k][iFBOffset] ); + fLRCovImag_fx64 = W_add( fLRCovImag_fx64, W_sub( W_mult0_32_32( pppfImag_fx[0][k][iFBOffset], pppfReal_fx[1][k][iFBOffset] ), W_mult0_32_32( pppfImag_fx[1][k][iFBOffset], pppfReal_fx[0][k][iFBOffset] ) ) ); + } + + iFBOffset++; + } + Q_en_tmp = min( Q_en_tmp, W_norm( fLeftEnergy_fx64 ) ); + Q_en_tmp = min( Q_en_tmp, W_norm( fRightEnergy_fx64 ) ); + Q_en_tmp = min( Q_en_tmp, W_norm( fMidEnergy_fx64 ) ); + Q_en_tmp = min( Q_en_tmp, W_norm( fSideEnergy_fx64 ) ); + Q_en_tmp = min( Q_en_tmp, W_norm( fLRCovReal_fx64 ) ); + Q_en_tmp = min( Q_en_tmp, W_norm( fLRCovImag_fx64 ) ); + Q_en_tmp = sub( Q_en_tmp, 2 ); + fLeftEnergy_fx = W_extract_h( W_shl( fLeftEnergy_fx64, Q_en_tmp ) ); + fRightEnergy_fx = W_extract_h( W_shl( fRightEnergy_fx64, Q_en_tmp ) ); + fMidEnergy_fx = W_extract_h( W_shl( fMidEnergy_fx64, Q_en_tmp ) ); + fSideEnergy_fx = W_extract_h( W_shl( fSideEnergy_fx64, Q_en_tmp ) ); + fLRCovReal_fx = W_extract_h( W_shl( fLRCovReal_fx64, Q_en_tmp ) ); + fLRCovImag_fx = W_extract_h( W_shl( fLRCovImag_fx64, Q_en_tmp ) ); + Word16 Q_en = add( shl( Q_in, 1 ), sub( Q_en_tmp, 32 ) ) /*2 * Q_in - 31 - 2*/; + /* M/S prediction without phase alignment*/ + // fPred = 0.25f * ( fLeftEnergy - fRightEnergy ) / ( fMidEnergy + feps ); + // iPred = quantPred(fPred); + // fPred = dequantPred(iPred); + Word16 exp; + fPred_fx = BASOP_Util_Divide3232_Scale( L_sub( fLeftEnergy_fx, fRightEnergy_fx ), L_add( fMidEnergy_fx, feps_fx ), &exp ); + exp = sub( exp, 2 ); //*0.25f + fPred_fx = L_shl( fPred_fx, 16 ); + iPred = quantPred_fx( fPred_fx, exp ); + fPred_fx = dequantPred_fx( iPred ); // Q31 + // fSideEnergyPred = fSideEnergy + ( fPred * fPred * fMidEnergy - 2.0f * fPred * 0.25f * ( fLeftEnergy - fRightEnergy ) ); + fSideEnergyPred_fx = L_add( fSideEnergy_fx, + L_sub( Mpy_32_32( Mpy_32_32( fPred_fx, fPred_fx ), fMidEnergy_fx ), + L_shr( Mpy_32_32( fPred_fx, L_sub( fLeftEnergy_fx, fRightEnergy_fx ) ), 1 ) ) ); + fSideEnergyPred_fx = max( fSideEnergyPred_fx, 0 ); + + ppiMSPredCoefs[MS_PRED_ONLY][b] = iPred; + move32(); + ppiMSPredPhase[MS_PRED_ONLY][b] = 0; + move32(); + // pfMSPredRatio[MS_PRED_ONLY] = log10f( ( fMidEnergy + feps ) / ( fSideEnergyPred + feps ) ); + pfMSPredRatio_fx[MS_PRED_ONLY] = Mpy_32_32( L_sub( BASOP_Util_Log2( L_add( fMidEnergy_fx, feps_fx ) ), BASOP_Util_Log2( L_add( fSideEnergyPred_fx, feps_fx ) ) ), LOG10_2_FX ); // Q25 + // printf("%f ", (float)pfMSPredRatio_fx[MS_PRED_ONLY] / (1 << 25)); + + /* Phase alignment*/ + iPhase = 0; + move32(); + // if ( fLRCovReal * fLRCovReal + fLRCovImag * fLRCovImag > 0.5f * fLeftEnergy * fRightEnergy ) + IF( GT_32( L_add( Mpy_32_32( fLRCovReal_fx, fLRCovReal_fx ), Mpy_32_32( fLRCovImag_fx, fLRCovImag_fx ) ), L_shr( Mpy_32_32( fLeftEnergy_fx, fRightEnergy_fx ), 1 ) ) ) + { + // float fPhase = atan2f( fLRCovImag, fLRCovReal ); + Word32 fPhase_fx = BASOP_util_atan2( fLRCovImag_fx, fLRCovReal_fx, 0 ); + exp = sub( 18, norm_l( fPhase_fx ) ); + fPhase_fx = L_shl( fPhase_fx, norm_l( fPhase_fx ) ); // Q31 + // iPhase = quantPhase( fPhase ); + iPhase = quantPhase_fx( fPhase_fx, exp ); + } + + /* adjust covariance */ + tabIdx = L_sub( iPhase, PHASE_MIN_VAL ); + // cplxmult( &fLRCovReal, &fLRCovImag, c_afRotRealImag[tabIdx][0], -c_afRotRealImag[tabIdx][1] ); + cplxmult_fx( &fLRCovReal_fx, &fLRCovImag_fx, c_afRotRealImag_fx[tabIdx][0], -c_afRotRealImag_fx[tabIdx][1] ); + + /* compute MS prediction coefficient based on adjusted covariance */ + // fMidEnergyPred = 0.25f * ( fLeftEnergy + fRightEnergy + 2.0f * fLRCovReal ); + fMidEnergyPred_fx = L_add( L_add( L_shr_r( fLeftEnergy_fx, 2 ), L_shr_r( fRightEnergy_fx, 2 ) ), L_shr( fLRCovReal_fx, 1 ) ); // Q_en + // fSideEnergyPred = 0.25f * ( fLeftEnergy + fRightEnergy - 2.0f * fLRCovReal ); + fSideEnergyPred_fx = L_sub( L_add( L_shr_r( fLeftEnergy_fx, 2 ), L_shr_r( fRightEnergy_fx, 2 ) ), L_shr( fLRCovReal_fx, 1 ) ); // Q_en + fSideEnergyPred_fx = L_max( fSideEnergyPred_fx, 0 ); + + /* M/S with LR phase alignment but without prediction */ + ppiMSPredCoefs[MS_PHASE_ONLY][b] = 0; + move32(); + ppiMSPredPhase[MS_PHASE_ONLY][b] = iPhase; + move32(); + // pfMSPredRatio[MS_PHASE_ONLY] = log10f( ( fMidEnergyPred + feps ) / ( fSideEnergyPred + feps ) ); + pfMSPredRatio_fx[MS_PHASE_ONLY] = Mpy_32_32( L_sub( BASOP_Util_Log2( L_add( fMidEnergyPred_fx, feps_fx ) ), BASOP_Util_Log2( L_add( fSideEnergyPred_fx, feps_fx ) ) ), LOG10_2_FX ); // Q25 + // printf("%f ", (float)pfMSPredRatio_fx[MS_PHASE_ONLY] / (1 << 25)); + + /* M/S with LR phase alignment and prediction */ + // fPred = fMidEnergyPred == 0.0f ? 0.0f : 0.25f * ( fLeftEnergy - fRightEnergy ) / fMidEnergyPred; + fPred_fx = fMidEnergyPred_fx == 0 ? 0 : BASOP_Util_Divide3232_Scale( L_sub( fLeftEnergy_fx, fRightEnergy_fx ), fMidEnergyPred_fx, &exp ); + exp = sub( exp, 2 ); //*0.25f + fPred_fx = L_shl( fPred_fx, 16 ); + // iPred = quantPred( fPred ); + iPred = quantPred_fx( fPred_fx, exp ); + // fPred = dequantPred( iPred ); + fPred_fx = dequantPred_fx( iPred ); + // fSideEnergyPred += ( fPred * fPred * fMidEnergyPred - 2.0f * fPred * 0.25f * ( fLeftEnergy - fRightEnergy ) ); + fSideEnergyPred_fx = L_add( fSideEnergyPred_fx, + L_sub( Mpy_32_32( Mpy_32_32( fPred_fx, fPred_fx ), fMidEnergyPred_fx ), + L_shr( Mpy_32_32( fPred_fx, L_sub( fLeftEnergy_fx, fRightEnergy_fx ) ), 1 ) ) ); + fSideEnergyPred_fx = max( fSideEnergyPred_fx, 0 ); + /* -= fPred * fPred * fMidEnergyPred doesn't work because fPred is quantized and does not match MS/MM exactly */ + ppiMSPredCoefs[MS_PHASE_AND_PRED][b] = iPred; + move32(); + ppiMSPredPhase[MS_PHASE_AND_PRED][b] = iPhase; + move32(); + // pfMSPredRatio[MS_PHASE_AND_PRED] = log10f( ( fMidEnergyPred + feps ) / ( fSideEnergyPred + feps ) ); + pfMSPredRatio_fx[MS_PHASE_AND_PRED] = Mpy_32_32( L_sub( BASOP_Util_Log2( L_add( fMidEnergyPred_fx, feps_fx ) ), BASOP_Util_Log2( L_add( fSideEnergyPred_fx, feps_fx ) ) ), LOG10_2_FX ); // Q25 + // printf("%f ", (float)pfMSPredRatio_fx[MS_PHASE_AND_PRED] / (1 << 25)); + + /* Plain M/S */ + // fLeftEnergy = log10f( fLeftEnergy + feps ); + exp = sub( 31, Q_en ); // 31 - Q + fLeftEnergy_fx = Mpy_32_32( L_add( BASOP_Util_Log2( L_add( fLeftEnergy_fx, feps_fx ) ), L_shl( exp, 25 ) ), LOG10_2_FX ); // Q25 + // fRightEnergy = log10f( fRightEnergy + feps ); + fRightEnergy_fx = Mpy_32_32( L_add( BASOP_Util_Log2( L_add( fRightEnergy_fx, feps_fx ) ), L_shl( exp, 25 ) ), LOG10_2_FX ); // Q25 + // fMidEnergy = log10f( fMidEnergy + feps ); + fMidEnergy_fx = Mpy_32_32( L_add( BASOP_Util_Log2( L_add( fMidEnergy_fx, feps_fx ) ), L_shl( exp, 25 ) ), LOG10_2_FX ); // Q25 + // fSideEnergy = log10f( fSideEnergy + feps ); + fSideEnergy_fx = Mpy_32_32( L_add( BASOP_Util_Log2( L_add( fSideEnergy_fx, feps_fx ) ), L_shl( exp, 25 ) ), LOG10_2_FX ); // Q25 + + // fLRRatio = ( fLeftEnergy > fRightEnergy ? fLeftEnergy - fRightEnergy : fRightEnergy - fLeftEnergy ); + fLRRatio_fx = ( fLeftEnergy_fx > fRightEnergy_fx ? L_sub( fLeftEnergy_fx, fRightEnergy_fx ) : L_sub( fRightEnergy_fx, fLeftEnergy_fx ) ); // Q25 + // fMSRatio = ( fMidEnergy > fSideEnergy ? fMidEnergy - fSideEnergy : fSideEnergy - fMidEnergy ); + fMSRatio_fx = ( fMidEnergy_fx > fSideEnergy_fx ? L_sub( fMidEnergy_fx, fSideEnergy_fx ) : L_sub( fSideEnergy_fx, fMidEnergy_fx ) ); // Q25 + + // if ( fMSRatio > fLRRatio ) + IF( GT_32( fMSRatio_fx, fLRRatio_fx ) ) + { + iNumMSBands++; + piMSFlags[b] = 1; + move32(); + // fMSBitGain += fNumLines * ( fMSRatio - fLRRatio ) * fLevelToSMRdBFactor * fBitsFactor; + fMSBitGain_fx = L_add( fMSBitGain_fx, W_extract_l( W_shr( W_mult0_32_32( fNumLines_fx, Mpy_32_32( Mpy_32_32( L_sub( fMSRatio_fx, fLRRatio_fx ), fLevelToSMRdBFactor_fx ), fBitsFactor_fx ) ), 7 ) ) ); // Q16 + } + ELSE + { + piMSFlags[b] = 0; + move32(); + } + piLRPhaseDiffs[b] = 0; + move32(); + piMSPredCoefs[b] = 0; + move32(); + + /* MSPred bit gains based on increase of level ratio compared to L/R ratio and the level dependent psy-model */ + FOR( iMSPredType = 0; iMSPredType < 3; iMSPredType++ ) + { + // if ( pfMSPredRatio[iMSPredType] > fLRRatio ) + IF( GT_32( pfMSPredRatio_fx[iMSPredType], fLRRatio_fx ) ) + { + ppiMSPredFlags[iMSPredType][b] = 1; + move32(); + // pfMSPredBitGain[iMSPredType] += fNumLines * ( pfMSPredRatio[iMSPredType] - fLRRatio ) * fLevelToSMRdBFactor * fBitsFactor; + pfMSPredBitGain_fx[iMSPredType] = L_add( pfMSPredBitGain_fx[iMSPredType], + W_extract_l( W_shr( W_mult0_32_32( fNumLines_fx, + Mpy_32_32( Mpy_32_32( L_sub( pfMSPredRatio_fx[iMSPredType], fLRRatio_fx ), fLevelToSMRdBFactor_fx ), + fBitsFactor_fx ) ), + 7 ) ) ); // Q16 + } + } + } + Word16 q_fMSBitGain_fx = Q16; + move16(); + Word16 q_pfMSPredBitGain_fx = Q16; // Q23-7 + move16(); + /* remove signalling cost from bit gains */ + FOR( iMSPredType = 0; iMSPredType < 3; iMSPredType++ ) + { + piMsPredInfoBits[iMSPredType] = CountMSBits( iNumBands, MS_PRED, ppiMSPredFlags[iMSPredType], ppiMSPredPhase[iMSPredType], ppiMSPredCoefs[iMSPredType] ); + // pfMSPredBitGain[iMSPredType] = max( pfMSPredBitGain[iMSPredType] - piMsPredInfoBits[iMSPredType], 0.0f ); + pfMSPredBitGain_fx[iMSPredType] = max( pfMSPredBitGain_fx[iMSPredType] - L_shl( piMsPredInfoBits[iMSPredType], q_pfMSPredBitGain_fx ), 0 ); + } + + /* find the best M/S Pred type */ + IF( EQ_32( iRealOnlyOut, 1 ) ) + { + iMSPredType = MS_PRED_ONLY; + move32(); + } + ELSE + { + iMSPredType = MS_PHASE_AND_PRED; + move32(); + // iMSPredType = ( pfMSPredBitGain[MS_PRED_ONLY] > pfMSPredBitGain[iMSPredType] ? MS_PRED_ONLY : iMSPredType ); + iMSPredType = ( pfMSPredBitGain_fx[MS_PRED_ONLY] > pfMSPredBitGain_fx[iMSPredType] ? MS_PRED_ONLY : iMSPredType ); + // iMSPredType = ( pfMSPredBitGain[MS_PHASE_ONLY] > pfMSPredBitGain[iMSPredType] ? MS_PHASE_ONLY : iMSPredType ); + iMSPredType = ( pfMSPredBitGain_fx[MS_PHASE_ONLY] > pfMSPredBitGain_fx[iMSPredType] ? MS_PHASE_ONLY : iMSPredType ); + } + + /* plain M/S */ + iMsInfoBits = CountMSBits( iNumBands, MS_SOME, piMSFlags, NULL, NULL ); + // fMSBitGain = max( fMSBitGain - iMsInfoBits, 0.0f ); + fMSBitGain_fx = L_max( L_sub( fMSBitGain_fx, L_shl( iMsInfoBits, q_fMSBitGain_fx ) ), 0 ); // Q_en -2 + // if ( iAllowSidePred && pfMSPredBitGain[iMSPredType] > 1.1f * fMSBitGain ) + test(); + IF( iAllowSidePred && GT_32( L_shr_r( pfMSPredBitGain_fx[iMSPredType], sub( q_pfMSPredBitGain_fx, q_fMSBitGain_fx ) ), L_add( fMSBitGain_fx, Mpy_32_32( fMSBitGain_fx, 214748364 ) ) ) ) + { + *piMSMode = MS_PRED; + move32(); + iNumMSBands = 0; + move32(); + FOR( b = 0; b < iNumBands; b++ ) + { + piMSFlags[b] = ppiMSPredFlags[iMSPredType][b]; + IF( EQ_32( piMSFlags[b], 1 ) ) + { + piMSPredCoefs[b] = ppiMSPredCoefs[iMSPredType][b]; + move32(); + piLRPhaseDiffs[b] = ppiMSPredPhase[iMSPredType][b]; + move32(); + iNumMSBands++; + } + ELSE + { + piMSPredCoefs[b] = 0; + move32(); + piLRPhaseDiffs[b] = 0; + move32(); + } + } + } + ELSE IF( EQ_32( iNumMSBands, iNumBands ) ) + { + *piMSMode = MS_ALL; + move32(); + } + ELSE IF( GT_32( iNumMSBands, 0 ) ) + { + *piMSMode = MS_SOME; + move32(); + } + ELSE + { + *piMSMode = MS_OFF; + move32(); + } +#ifdef DEBUG_WRITE_MS_PRED + { + static FILE *fid; + int32_t iActualInfoBits = CountMSBits( iNumBands, *piMSMode, piMSFlags, piLRPhaseDiffs, piMSPredCoefs ); + if ( !fid ) + fid = fopen( "ms_info_bits.txt", "wt" ); + fprintf( fid, "%d %d %d %d %d\n", iMsInfoBits, piMsPredInfoBits[MS_PHASE_AND_PRED], piMsPredInfoBits[MS_PRED_ONLY], piMsPredInfoBits[MS_PHASE_ONLY], iActualInfoBits ); + } +#endif + IF( NE_32( *piMSMode, MS_OFF ) ) + { + iFBOffset = 0; + move32(); + FOR( b = 0; b < iNumBands; b++ ) + { + IF( EQ_32( piMSFlags[b], 1 ) ) + { + Word32 n; + Word32 phaseIdx; + phaseIdx = L_sub( piLRPhaseDiffs[b], PHASE_MIN_VAL ); + // fPred = dequantPred( piMSPredCoefs[b] ); + fPred_fx = dequantPred_fx( piMSPredCoefs[b] ); // Q31 + FOR( n = 0; n < piBandwidths[b]; n++ ) + { + Word32 k; + FOR( k = 0; k < iNumBlocks; k++ ) + { + /*float fMidReal; + float fMidImag; + float fSideReal; + float fSideImag;*/ + Word32 fMidReal_fx; + Word32 fMidImag_fx; + Word32 fSideReal_fx; + Word32 fSideImag_fx; + + IF( EQ_32( *piMSMode, MS_PRED ) ) + { + // cplxmult( &pppfReal[1][k][iFBOffset], &pppfImag[1][k][iFBOffset], c_afRotRealImag[phaseIdx][0], c_afRotRealImag[phaseIdx][1] ); + cplxmult_fx( &pppfReal_fx[1][k][iFBOffset], &pppfImag_fx[1][k][iFBOffset], c_afRotRealImag_fx[phaseIdx][0], c_afRotRealImag_fx[phaseIdx][1] ); + } + + // fMidReal = 0.5f * ( pppfReal[0][k][iFBOffset] + pppfReal[1][k][iFBOffset] ); + fMidReal_fx = L_shr( L_add( pppfReal_fx[0][k][iFBOffset], pppfReal_fx[1][k][iFBOffset] ), 1 ); + // fMidImag = 0.5f * ( pppfImag[0][k][iFBOffset] + pppfImag[1][k][iFBOffset] ); + fMidImag_fx = L_shr( L_add( pppfImag_fx[0][k][iFBOffset], pppfImag_fx[1][k][iFBOffset] ), 1 ); + // fSideReal = 0.5f * ( pppfReal[0][k][iFBOffset] - pppfReal[1][k][iFBOffset] ); + fSideReal_fx = L_shr( L_sub( pppfReal_fx[0][k][iFBOffset], pppfReal_fx[1][k][iFBOffset] ), 1 ); + // fSideImag = 0.5f * ( pppfImag[0][k][iFBOffset] - pppfImag[1][k][iFBOffset] ); + fSideImag_fx = L_shr( L_sub( pppfImag_fx[0][k][iFBOffset], pppfImag_fx[1][k][iFBOffset] ), 1 ); + + IF( EQ_32( *piMSMode, MS_PRED ) ) + { + // fSideReal -= fPred * fMidReal; + fSideReal_fx = L_sub( fSideReal_fx, Mpy_32_32( fPred_fx, fMidReal_fx ) ); + // fSideImag -= fPred * fMidImag; + fSideImag_fx = L_sub( fSideImag_fx, Mpy_32_32( fPred_fx, fMidImag_fx ) ); + } + + pppfReal_fx[0][k][iFBOffset] = fMidReal_fx; + move32(); + pppfReal_fx[1][k][iFBOffset] = fSideReal_fx; + move32(); + pppfImag_fx[0][k][iFBOffset] = fMidImag_fx; + move32(); + pppfImag_fx[1][k][iFBOffset] = fSideImag_fx; + move32(); + } + iFBOffset++; + } + } + ELSE + { + iFBOffset = L_add( iFBOffset, piBandwidths[b] ); + } + } + } +#ifdef DEBUG_WRITE_MS_PRED + { + static FILE *fid; + if ( !fid ) + fid = fopen( "ms_enc.txt", "wt" ); + writeMSPred( piLRPhaseDiffs, piMSPredCoefs, *piMSMode, iNumMSBands, iNumBands, fid, piMSFlags ); + } +#endif + IF( EQ_32( *piMSMode, MS_PRED ) ) + { + /* Differential Coding of Phase Data*/ + PrepEncode( piLRPhaseDiffs, piMSFlags, iNumBands ); + PrepEncode( piMSPredCoefs, piMSFlags, iNumBands ); +#ifdef DEBUG_WRITE_MS_PRED + { + static FILE *fid; + if ( !fid ) + fid = fopen( "ms_pred_enc.txt", "wt" ); + writeMSPred( piLRPhaseDiffs, piMSPredCoefs, *piMSMode, iNumMSBands, iNumBands, fid, piMSFlags ); + } +#endif + /* Differential Coding*/ + EncodePhase( piLRPhaseDiffs, iNumMSBands, PHASE_DIFF_DIM ); + EncodePredCoef( piMSPredCoefs, iNumMSBands ); + } + + return iNumMSBands; +} +static void RemoveRMSEnvelope( + const Word32 iNumBands, + const Word32 *piBandwidths, + const Word32 iNumGroups, + const Word32 *piGroupLengths, + Word32 **ppiRMSEnvelope, + Word32 **ppfReal_fx, + Word32 **ppfImag_fx ) +{ + Word32 k, n, b, iFBOffset, m, iRMSEnv; + Word32 iBlockOffset; + Word32 fGain_fx; + Word16 fGain_exp; + iBlockOffset = 0; + move32(); + Word64 tmp; + FOR( n = 0; n < iNumGroups; n++ ) + { + FOR( k = 0; k < piGroupLengths[n]; k++ ) + { + iFBOffset = 0; + move32(); + FOR( b = 0; b < iNumBands; b++ ) + { + iRMSEnv = ppiRMSEnvelope[n][b]; + IF( EQ_32( L_add( ENV_RECONSTRUCT_TABLE_CENTER, iRMSEnv ) % 2, 0 ) ) + { + fGain_fx = 1073741824; // 2 ^ 30 + move32(); + } + ELSE + { + fGain_fx = 1518500249; // sqrt(2) * 2 ^ 30 + move32(); + } + fGain_exp = c_afRMSEnvReconstructTable_exp[ENV_RECONSTRUCT_TABLE_CENTER - iRMSEnv]; + move16(); + FOR( m = 0; m < piBandwidths[b]; m++ ) + { + tmp = W_mult_32_32( fGain_fx, ppfReal_fx[iBlockOffset][iFBOffset] ); + tmp = W_shr( tmp, sub( fGain_exp, 8 ) ); // Q to (input_q -9) + ppfReal_fx[iBlockOffset][iFBOffset] = W_extract_l( tmp ); + move32(); + tmp = W_mult_32_32( fGain_fx, ppfImag_fx[iBlockOffset][iFBOffset] ); + tmp = W_shr( tmp, sub( fGain_exp, 8 ) ); // Q to (input_q -9) + ppfImag_fx[iBlockOffset][iFBOffset] = W_extract_l( tmp ); + move32(); + iFBOffset++; + } + } + iBlockOffset++; + } + } + + return; +} +static void QuantizeSpectrumDPCM_Opt( + const Word32 iNumGroups, + const Word32 *piGroupLengths, + const Word32 iNumBands, + const Word32 *piBandwidths, + Word32 **ppiAlloc, + Word32 **ppfReal_fx, + Word32 **ppfImag_fx, + Word16 q_final, + Word32 **ppiQReal, + Word32 **ppiQImag, + Word32 **ppiSignReal, + Word32 **ppiSignImag, + Word32 iNumSubSets, + Word32 iSubSetId, + Word32 *piPredEnable, + Word32 *pfA1Real_fx, + Word32 *pfA1Imag_fx, + Word32 *pfPredStateReal_fx, + Word32 *pfPredStateImag_fx ) +{ + Word32 b, n; + Word32 iFBOffset; + Word32 k, iAlloc; + Word32 iMaxQuantVal_fx; + Word32 fSCFGain_fx, fInvSCFGain_fx; + iFBOffset = 0; + Word32 ppiQReal_fx, ppiQImag_fx; + FOR( b = 0; b < iNumBands; b++ ) + { + Word32 m; + FOR( m = 0; m < piBandwidths[b]; m++ ) + { + Word32 iBlockOffset = 0; + IF( EQ_32( piPredEnable[iFBOffset], 1 ) ) + { + Word32 fReal_fx; + Word32 fImag_fx; + Word32 iSubset = iFBOffset % iNumSubSets; + Word32 fPrevReal_fx = 0; + Word32 fPrevImag_fx = 0; + IF( NE_32( iSubset, iSubSetId ) ) + { + /* run predictors across sub-frames */ + fPrevReal_fx = pfPredStateReal_fx[iFBOffset]; + move32(); + fPrevImag_fx = pfPredStateImag_fx[iFBOffset]; + move32(); + } + FOR( n = 0; n < iNumGroups; n++ ) + { + iAlloc = ppiAlloc[n][b]; + iMaxQuantVal_fx = c_aiQuantMaxValues_fx[iAlloc]; + fSCFGain_fx = c_afScaleFactor_fx[iAlloc]; + fInvSCFGain_fx = c_afInvScaleFactor_fx[iAlloc]; + FOR( k = 0; k < piGroupLengths[n]; k++ ) + { + /* prediction */ + fReal_fx = L_sub( Mpy_32_32( pfA1Real_fx[iFBOffset], fPrevReal_fx ), Mpy_32_32( pfA1Imag_fx[iFBOffset], fPrevImag_fx ) ); + fImag_fx = L_add( Mpy_32_32( pfA1Real_fx[iFBOffset], fPrevImag_fx ), Mpy_32_32( pfA1Imag_fx[iFBOffset], fPrevReal_fx ) ); + ppiQReal_fx = Quantize_fx( L_add_sat( L_shr_r_sat( ppfReal_fx[iBlockOffset][iFBOffset], sub( q_final, Q28 ) ), fReal_fx ), /* quantize residual */ + fSCFGain_fx, + &ppiSignReal[iBlockOffset][iFBOffset], + iMaxQuantVal_fx ); + ppiQImag_fx = Quantize_fx( L_add_sat( L_shr_r_sat( ppfImag_fx[iBlockOffset][iFBOffset], sub( q_final, Q28 ) ), fImag_fx ), + fSCFGain_fx, + &ppiSignImag[iBlockOffset][iFBOffset], + iMaxQuantVal_fx ); + ppiQReal[iBlockOffset][iFBOffset] = L_shr( ppiQReal_fx, 21 ); + + ppiQImag[iBlockOffset][iFBOffset] = L_shr( ppiQImag_fx, 21 ); + + ppiQReal_fx = L_shl( ppiQReal[iBlockOffset][iFBOffset], 21 ); + fPrevReal_fx = L_sub( L_shl( UnQuantize_fx( ppiQReal_fx, + fInvSCFGain_fx, + ppiSignReal[iBlockOffset][iFBOffset] ), + 9 ), + fReal_fx ); + /* add prediction to quantized residual = reconstructed sample */ + + ppiQImag_fx = L_shl( ppiQImag[iBlockOffset][iFBOffset], 21 ); + fPrevImag_fx = L_sub( L_shl( UnQuantize_fx( ppiQImag_fx, + fInvSCFGain_fx, + ppiSignImag[iBlockOffset][iFBOffset] ), + 9 ), + fImag_fx ); + iBlockOffset++; + } /* group length */ + } /* groups */ + pfPredStateReal_fx[iFBOffset] = fPrevReal_fx; + move32(); + pfPredStateImag_fx[iFBOffset] = fPrevImag_fx; + move32(); + } /* predEnable */ + ELSE + { /* no prediction */ + FOR( n = 0; n < iNumGroups; n++ ) + { + iAlloc = ppiAlloc[n][b]; + move32(); + iMaxQuantVal_fx = c_aiQuantMaxValues_fx[iAlloc]; + move32(); + fSCFGain_fx = c_afScaleFactor_fx[iAlloc]; + move32(); + fInvSCFGain_fx = c_afInvScaleFactor_fx[iAlloc]; + move32(); + FOR( k = 0; k < piGroupLengths[n]; k++ ) + { + ppiQReal_fx = Quantize_fx( L_shr_r_sat( ppfReal_fx[iBlockOffset][iFBOffset], sub( q_final, Q28 ) ), + fSCFGain_fx, + &ppiSignReal[iBlockOffset][iFBOffset], + iMaxQuantVal_fx ); + ppiQImag_fx = Quantize_fx( L_shr_r_sat( ppfImag_fx[iBlockOffset][iFBOffset], sub( q_final, Q28 ) ), + fSCFGain_fx, + &ppiSignImag[iBlockOffset][iFBOffset], + iMaxQuantVal_fx ); + + ppiQReal[iBlockOffset][iFBOffset] = L_shr( ppiQReal_fx, 21 ); + + ppiQImag[iBlockOffset][iFBOffset] = L_shr( ppiQImag_fx, 21 ); + + iBlockOffset++; + } /* group length */ + } /* groups */ + } /* predEnable */ + iFBOffset++; + } /* bandwidth */ + } +} +static Word32 CountLCLDBits( + const Word32 iNumGroups, + const Word32 *piGroupLengths, + const Word32 iNumBands, + const Word32 *piBandwidths, + const Word32 *piPredEnable, + Word32 **ppiAlloc, + Word32 **ppiQReal, + Word32 **ppiQImag ) +{ + Word32 k, n, b, iFBOffset; + Word32 iBits, iBlockOffest; + Word32 m, iAlloc, iHuffDim, iHuffMod; + + iBits = 0; + move32(); + iBlockOffest = 0; + move32(); + FOR( n = 0; n < iNumGroups; n++ ) + { + FOR( k = 0; k < piGroupLengths[n]; k++ ) + { + iFBOffset = 0; + move32(); + FOR( b = 0; b < iNumBands; b++ ) + { + iAlloc = ppiAlloc[n][b]; + move32(); + + iHuffDim = c_aiHuffmanDim[iAlloc]; + move32(); + iHuffMod = c_aiHuffmanMod[iAlloc]; + move32(); + + IF( GT_32( iAlloc, 0 ) ) + { + const UWord16( *pauiHuffmanTable )[2] = NULL; + const UWord16( *pauiHuffmanTableDPCM )[2] = NULL; + pauiHuffmanTable = c_apauiHuffEncTabels[iAlloc]; + pauiHuffmanTableDPCM = c_apauiHuffEncTabels[ALLOC_TABLE_SIZE + iAlloc]; + FOR( m = 0; m < piBandwidths[b]; m++ ) + { + Word32 iQuantValue1; + Word32 iQuantValue2; + + iQuantValue1 = ppiQReal[iBlockOffest][iFBOffset]; + move32(); + iQuantValue2 = ppiQImag[iBlockOffest][iFBOffset]; + move32(); + + iBits = L_add( iBits, GT_32( iQuantValue1, 0 ) ? 1 : 0 ); /* Sign bit for vals > 0 */ + iBits = L_add( iBits, GT_32( iQuantValue2, 0 ) ? 1 : 0 ); /* Sign bit for vals > 0 */ + + IF( EQ_32( piPredEnable[iFBOffset], 1 ) ) + { + IF( EQ_32( iHuffDim, 2 ) ) + { + iQuantValue1 *= iHuffMod; + iQuantValue1 = L_add( iQuantValue1, iQuantValue2 ); + iBits = L_add( iBits, pauiHuffmanTableDPCM[iQuantValue1][0] ); + } + ELSE + { + iBits = L_add( iBits, pauiHuffmanTableDPCM[iQuantValue1][0] ); + iBits = L_add( iBits, pauiHuffmanTableDPCM[iQuantValue2][0] ); + } + } + ELSE + { + IF( EQ_32( iHuffDim, 2 ) ) + { + iQuantValue1 *= iHuffMod; + iQuantValue1 = L_add( iQuantValue1, iQuantValue2 ); + iBits = L_add( iBits, pauiHuffmanTable[iQuantValue1][0] ); + } + ELSE + { + iBits = L_add( iBits, pauiHuffmanTable[iQuantValue1][0] ); + iBits = L_add( iBits, pauiHuffmanTable[iQuantValue2][0] ); + } + } + + iFBOffset++; + } + } + ELSE + { + iFBOffset = L_add( iFBOffset, piBandwidths[b] ); + } + } + + iBlockOffest++; + } + } + + return iBits; +} + + +/* Currently only the number of bands in frame */ +static Word32 WriteHeaderInformation( + const Word32 iNumBands, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word32 iBitsWritten; + + iBitsWritten = 0; + move32(); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, iNumBands, 5 ); + iBitsWritten = L_add( iBitsWritten, 5 ); + + return iBitsWritten; +} + + +static Word32 WriteMSInformation( + const Word32 iNumBands, + const Word32 iMSMode, + const Word32 *piMSFlags, + const Word32 *piLRPhaseDiff, + const Word32 *piMSPredCoef, + Word32 iNumMSPredBands, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word32 iBitsWritten; + Word32 iMSPredAll = (Word32) EQ_32( iNumMSPredBands, iNumBands ); + move32(); +#ifdef DEBUG_WRITE_MS_PRED + Word32 iBitsWrittenTmp = 0; + move32(); +#endif + iBitsWritten = 0; + move32(); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, iMSMode, 2 ); + iBitsWritten = L_add( iBitsWritten, 2 ); + + IF( EQ_32( iMSMode, 3 ) ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, iMSPredAll, 1 ); + iBitsWritten = L_add( iBitsWritten, 1 ); + } + + test(); + test(); + IF( EQ_32( iMSMode, 2 ) || ( EQ_32( iMSMode, 3 ) && !iMSPredAll ) ) + { + Word32 n; + FOR( n = 0; n < iNumBands; n++ ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, piMSFlags[n], 1 ); + iBitsWritten = L_add( iBitsWritten, 1 ); + } + } + +#ifdef DEBUG_WRITE_MS_PRED + iBitsWrittenTmp = iBitsWritten; +#endif + IF( EQ_32( iMSMode, 3 ) ) + { + Word32 b; + Word32 anyNonZero; + anyNonZero = 0; + move32(); + FOR( b = 0; b < iNumMSPredBands; b++ ) + { + IF( NE_32( piLRPhaseDiff[b], 0 ) ) + { + anyNonZero = 1; + move32(); + BREAK; + } + } + ISAR_SPLIT_REND_BITStream_write_int32( pBits, anyNonZero, 1 ); + iBitsWritten++; + + IF( anyNonZero ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, L_sub( piLRPhaseDiff[0], PHASE_MIN_VAL ), PHASE_BAND0_BITS ); + iBitsWritten = L_add( iBitsWritten, PHASE_BAND0_BITS ); + FOR( b = 1; b < iNumMSPredBands; b++ ) + { + Word32 tabIdx = L_sub( piLRPhaseDiff[b], ENV_DELTA_MIN ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, c_aaiRMSEnvHuffEnc[tabIdx][1], c_aaiRMSEnvHuffEnc[tabIdx][0] ); + iBitsWritten = L_add( iBitsWritten, c_aaiRMSEnvHuffEnc[tabIdx][0] ); + } + } + + anyNonZero = 0; + move32(); + FOR( b = 0; b < iNumMSPredBands; b++ ) + { + IF( NE_32( piMSPredCoef[b], 0 ) ) + { + anyNonZero = 1; + move32(); + BREAK; + } + } + + ISAR_SPLIT_REND_BITStream_write_int32( pBits, anyNonZero, 1 ); + iBitsWritten++; + + IF( anyNonZero ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, L_sub( piMSPredCoef[0], PRED_MIN_VAL ), PRED_BAND0_BITS ); + iBitsWritten = L_add( iBitsWritten, PRED_BAND0_BITS ); + FOR( b = 1; b < iNumMSPredBands; b++ ) + { + Word32 tabIdx = L_sub( piMSPredCoef[b], ENV_DELTA_MIN ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, c_aaiRMSEnvHuffEnc[tabIdx][1], c_aaiRMSEnvHuffEnc[tabIdx][0] ); + iBitsWritten = L_add( iBitsWritten, c_aaiRMSEnvHuffEnc[tabIdx][0] ); + } + } + } +#ifdef DEBUG_WRITE_MS_PRED + { + static FILE *fid = 0; + IF( !fid ) + { + fid = fopen( "ms_pred_bitrate.txt", "wt" ); + } + fprintf( fid, "%f\n", (float) ( ( iBitsWritten - iBitsWrittenTmp ) * ( iMSMode == 3 ) * 50 ) / 1000.0f ); /*kb/s*/ + } +#endif + + return iBitsWritten; +} + + +static Word32 WriteGroupInformation( + const Word32 iChannels, + const Word32 iCommonGrouping, + const Word32 *piNumGroups, + Word32 **ppiGroupLengths, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word32 c, k, n, iBitsWritten; + + iBitsWritten = 0; + move32(); + test(); + IF( EQ_32( iChannels, 2 ) && EQ_32( iCommonGrouping, 1 ) ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, iCommonGrouping, 1 ); + iBitsWritten = L_add( iBitsWritten, 1 ); + + FOR( n = 0; n < piNumGroups[0]; n++ ) + { + FOR( k = 1; k < ppiGroupLengths[0][n]; k++ ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, 0, 1 ); + iBitsWritten = L_add( iBitsWritten, 1 ); + } + IF( LT_32( n, L_sub( piNumGroups[0], 1 ) ) ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, 1, 1 ); + iBitsWritten = L_add( iBitsWritten, 1 ); + } + } + } + ELSE IF( EQ_32( iChannels, 2 ) ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, iCommonGrouping, 1 ); + iBitsWritten = L_add( iBitsWritten, 1 ); + + FOR( c = 0; c < iChannels; c++ ) + { + FOR( n = 0; n < piNumGroups[c]; n++ ) + { + FOR( k = 1; k < ppiGroupLengths[c][n]; k++ ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, 0, 1 ); + iBitsWritten = L_add( iBitsWritten, 1 ); + } + IF( LT_32( n, L_sub( piNumGroups[c], 1 ) ) ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, 1, 1 ); + iBitsWritten = L_add( iBitsWritten, 1 ); + } + } + } + } + ELSE + { + FOR( c = 0; c < iChannels; c++ ) + { + FOR( n = 0; n < piNumGroups[c]; n++ ) + { + FOR( k = 1; k < ppiGroupLengths[c][n]; k++ ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, 0, 1 ); + iBitsWritten = L_add( iBitsWritten, 1 ); + } + + IF( LT_32( n, L_sub( piNumGroups[c], 1 ) ) ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, 1, 1 ); + iBitsWritten = L_add( iBitsWritten, 1 ); + } + } + } + } + + return iBitsWritten; +} + + +static Word32 WriteRMSEnvelope( + const Word32 iChannels, + const Word32 *piNumGroups, + const Word32 iNumBands, + Word32 ***pppiRMSEnvelope, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word32 k, n; + Word32 iBitsWritten; + + iBitsWritten = 0; + move32(); + FOR( n = 0; n < iChannels; n++ ) + { + FOR( k = 0; k < piNumGroups[n]; k++ ) + { + Word32 b; + Word32 iLastRMSVal; + + iLastRMSVal = pppiRMSEnvelope[n][k][0]; + move32(); + iLastRMSVal = GT_32( iLastRMSVal, ENV_MIN ) ? iLastRMSVal : ENV_MIN; + move32(); + iLastRMSVal = LT_32( iLastRMSVal, ENV_MAX ) ? iLastRMSVal : ENV_MAX; + move32(); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, L_sub( iLastRMSVal, ENV_MIN ), ENV0_BITS ); + iBitsWritten = L_add( iBitsWritten, ENV0_BITS ); + + FOR( b = 1; b < iNumBands; b++ ) + { + Word32 iDelta; + + iDelta = L_sub( pppiRMSEnvelope[n][k][b], iLastRMSVal ); + iDelta = GT_32( iDelta, ENV_DELTA_MIN ) ? iDelta : ENV_DELTA_MIN; + move32(); + iDelta = LT_32( iDelta, ENV_DELTA_MAX ) ? iDelta : ENV_DELTA_MAX; + move32(); + iDelta = L_sub( iDelta, ENV_DELTA_MIN ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, c_aaiRMSEnvHuffEnc[iDelta][1], c_aaiRMSEnvHuffEnc[iDelta][0] ); + iBitsWritten = L_add( iBitsWritten, c_aaiRMSEnvHuffEnc[iDelta][0] ); + + iLastRMSVal = pppiRMSEnvelope[n][k][b]; + move32(); + } + } + } + + return iBitsWritten; +} + + +static Word32 WriteAllocInformation( + const Word32 iAllocOffset, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word32 iBitsWritten; + + iBitsWritten = 0; + move32(); + + IF( LT_32( iAllocOffset, MIN_ALLOC_OFFSET ) || GT_32( iAllocOffset, MAX_ALLOC_OFFSET ) ) + { + printf( "Serious error\n" ); + } + + ISAR_SPLIT_REND_BITStream_write_int32( pBits, L_sub( iAllocOffset, MIN_ALLOC_OFFSET ), ALLOC_OFFSET_BITS ); + iBitsWritten = L_add( iBitsWritten, ALLOC_OFFSET_BITS ); + + return iBitsWritten; +} + + +static Word32 WriteLCLDData( + const Word32 *piNumGroups, + Word32 **ppiGroupLengths, + const Word32 iNumBands, + const Word32 iNumChannels, + Word32 **ppiPredEnable, + const Word32 iNumSubSets, + const Word32 iSubSetId, + Word32 ***pppiAlloc, + Word32 ***pppiSignReal, + Word32 ***pppiSignImag, + Word32 ***pppiQReal, + Word32 ***pppiQImag, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word32 iBitsWritten; + Word32 iNumLcldBands = c_aiNumLcldBandsPerBand[iNumBands - 1]; + Word32 s; + Word32 iSet = iSubSetId; + + iBitsWritten = 0; + move32(); + FOR( s = 0; s < iNumSubSets; ( s++, iSet-- ) ) + { + Word32 ch; + IF( LT_32( iSet, 0 ) ) + { + iSet = L_sub( iNumSubSets, 1 ); + } + + FOR( ch = 0; ch < iNumChannels; ch++ ) + { + Word32 iBlockOffest = 0; + move32(); + Word32 n; + FOR( n = 0; n < piNumGroups[ch]; n++ ) + { + Word32 k; + FOR( k = 0; k < ppiGroupLengths[ch][n]; k++ ) + { + Word32 iFBOffset; + FOR( iFBOffset = iSet; iFBOffset < iNumLcldBands; iFBOffset += iNumSubSets ) + { + Word32 b; + Word32 iAlloc; + Word32 iHuffDim; + Word32 iHuffMod; + + b = c_aiBandIdPerLcldBand[iFBOffset]; + move32(); + + iAlloc = pppiAlloc[ch][n][b]; + move32(); + + iHuffDim = c_aiHuffmanDim[iAlloc]; + move32(); + iHuffMod = c_aiHuffmanMod[iAlloc]; + move32(); + + IF( GT_32( iAlloc, 0 ) ) + { + const UWord16( *pauiHuffmanTable )[2] = NULL; + const UWord16( *pauiHuffmanTableDPCM )[2] = NULL; + Word32 iQuantValue1; + Word32 iQuantValue2; + pauiHuffmanTable = c_apauiHuffEncTabels[iAlloc]; + pauiHuffmanTableDPCM = c_apauiHuffEncTabels[ALLOC_TABLE_SIZE + iAlloc]; + + iQuantValue1 = pppiQReal[ch][iBlockOffest][iFBOffset]; + move32(); + iQuantValue2 = pppiQImag[ch][iBlockOffest][iFBOffset]; + move32(); +#ifdef LCLD_HANDLE_PRED_START_SAMPLE + IF( ppiPredEnable[ch][iFBOffset] == 1 && ( iBlockOffest > 0 || iSet != iSubSetId ) ) +#else + IF( EQ_32( ppiPredEnable[ch][iFBOffset], 1 ) ) +#endif + { + IF( EQ_32( iHuffDim, 2 ) ) + { + Word32 iSymbol; + iSymbol = iQuantValue1; + move32(); + iSymbol *= iHuffMod; + iSymbol = L_add( iSymbol, iQuantValue2 ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, pauiHuffmanTableDPCM[iSymbol][1], pauiHuffmanTableDPCM[iSymbol][0] ); + iBitsWritten = L_add( iBitsWritten, pauiHuffmanTableDPCM[iSymbol][0] ); + } + ELSE + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, pauiHuffmanTableDPCM[iQuantValue1][1], pauiHuffmanTableDPCM[iQuantValue1][0] ); + iBitsWritten = L_add( iBitsWritten, pauiHuffmanTableDPCM[iQuantValue1][0] ); + + ISAR_SPLIT_REND_BITStream_write_int32( pBits, pauiHuffmanTableDPCM[iQuantValue2][1], pauiHuffmanTableDPCM[iQuantValue2][0] ); + iBitsWritten = L_add( iBitsWritten, pauiHuffmanTableDPCM[iQuantValue2][0] ); + } + } + ELSE + { + IF( EQ_32( iHuffDim, 2 ) ) + { + Word32 iSymbol; + iSymbol = iQuantValue1; + move32(); + iSymbol *= iHuffMod; + iSymbol = L_add( iSymbol, iQuantValue2 ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, pauiHuffmanTable[iSymbol][1], pauiHuffmanTable[iSymbol][0] ); + iBitsWritten = L_add( iBitsWritten, pauiHuffmanTable[iSymbol][0] ); + } + ELSE + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, pauiHuffmanTable[iQuantValue1][1], pauiHuffmanTable[iQuantValue1][0] ); + iBitsWritten = L_add( iBitsWritten, pauiHuffmanTable[iQuantValue1][0] ); + + ISAR_SPLIT_REND_BITStream_write_int32( pBits, pauiHuffmanTable[iQuantValue2][1], pauiHuffmanTable[iQuantValue2][0] ); + iBitsWritten = L_add( iBitsWritten, pauiHuffmanTable[iQuantValue2][0] ); + } + } + + IF( GT_32( iQuantValue1, 0 ) ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, pppiSignReal[ch][iBlockOffest][iFBOffset], 1 ); + iBitsWritten = L_add( iBitsWritten, 1 ); + } + IF( GT_32( iQuantValue2, 0 ) ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, pppiSignImag[ch][iBlockOffest][iFBOffset], 1 ); + iBitsWritten = L_add( iBitsWritten, 1 ); + } + } + } + iBlockOffest++; + } + } + } + } + + return iBitsWritten; +} +static Word32 ComputeAllocation( + const Word32 iChannels, + const Word32 *piNumGroups, + Word32 **ppiGroupLengths, + const Word32 iNumBands, + const Word32 *piBandwidths, + Word32 ***pppfReal_fx, + Word32 ***pppfImag_fx, + Word16 q_final, + Word32 ***pppiSMR, + const Word32 iAvailableBits, + Word32 *piAllocOffset, + Word32 ***pppiAlloc, + Word32 ***pppiQReal, + Word32 ***pppiQImag, + Word32 ***pppiSignReal, + Word32 ***pppiSignImag, + PredictionEncoder *psPredictionEncoder ) +{ + Word32 iBitsUsed, iDone, iDelta; + Word32 b, k, n; + Word32 iLimitAllocOffset; + + iBitsUsed = ALLOC_OFFSET_BITS; /* Bits used for Alloc Offset */ + move32(); + iDone = 0; + move32(); + iDelta = -MIN_ALLOC_OFFSET; + move32(); + *piAllocOffset = 0; + move32(); + WHILE( EQ_32( iDone, 0 ) ) + { + iBitsUsed = ALLOC_OFFSET_BITS; + move32(); + iLimitAllocOffset = *piAllocOffset; + move32(); + iLimitAllocOffset = GT_32( iLimitAllocOffset, MIN_ALLOC_OFFSET ) ? iLimitAllocOffset : MIN_ALLOC_OFFSET; + iLimitAllocOffset = LT_32( iLimitAllocOffset, MAX_ALLOC_OFFSET ) ? iLimitAllocOffset : MAX_ALLOC_OFFSET; + + FOR( n = 0; n < iChannels; n++ ) + { + FOR( k = 0; k < piNumGroups[n]; k++ ) + { + FOR( b = 0; b < iNumBands; b++ ) + { + Word32 iAlloc; + iAlloc = ( L_shr( L_add( pppiSMR[n][k][b], L_mult0( extract_l( iLimitAllocOffset ), ALLOC_OFFSET_SCALE ) ), 5 ) ); + iAlloc = GT_32( iAlloc, MIN_ALLOC ) ? iAlloc : MIN_ALLOC; + iAlloc = LT_32( iAlloc, MAX_ALLOC ) ? iAlloc : MAX_ALLOC; + pppiAlloc[n][k][b] = iAlloc; + move32(); + } + } + IF( psPredictionEncoder->iNumSubSets > 1 ) + { + mvl2l( psPredictionEncoder->ppfPredStateReal_fx[n], psPredictionEncoder->ppfPredStateRealTmp_fx[n], LCLD_BANDS ); + mvl2l( psPredictionEncoder->ppfPredStateImag_fx[n], psPredictionEncoder->ppfPredStateImagTmp_fx[n], LCLD_BANDS ); + } + + QuantizeSpectrumDPCM_Opt( piNumGroups[n], + (const Word32 *) ppiGroupLengths[n], + iNumBands, + piBandwidths, + pppiAlloc[n], + pppfReal_fx[n], + pppfImag_fx[n], + q_final, + pppiQReal[n], + pppiQImag[n], + pppiSignReal[n], + pppiSignImag[n], + psPredictionEncoder->iNumSubSets, + psPredictionEncoder->iSubSetId, + psPredictionEncoder->ppiPredBandEnable[n], + psPredictionEncoder->ppfA1Real_fx[n], + psPredictionEncoder->ppfA1Imag_fx[n], + psPredictionEncoder->ppfPredStateRealTmp_fx[n], + psPredictionEncoder->ppfPredStateImagTmp_fx[n] ); + iBitsUsed = L_add( iBitsUsed, CountLCLDBits( piNumGroups[n], + (const Word32 *) ppiGroupLengths[n], + iNumBands, + piBandwidths, + (const Word32 *) psPredictionEncoder->ppiPredBandEnable[n], + pppiAlloc[n], + pppiQReal[n], + pppiQImag[n] ) ); + } + + IF( LE_32( *piAllocOffset, MIN_ALLOC_OFFSET ) && GT_32( iBitsUsed, iAvailableBits ) ) + { +#ifdef DEBUG_VERBOSE + printf( "Frame can not be coded with the number of bits available\n" ); +#endif + // iLastError = ENC_ERROR_STREAM_FAILURE; + return -1; + } + ELSE IF( GE_32( *piAllocOffset, MAX_ALLOC_OFFSET ) && LT_32( iBitsUsed, iAvailableBits ) ) + { + *piAllocOffset = MAX_ALLOC_OFFSET; + iDone++; + } + ELSE + { + IF( EQ_32( iDelta, 0 ) && GT_32( iBitsUsed, iAvailableBits ) ) + { + iDelta = 1; + } + ELSE IF( EQ_32( iDelta, 0 ) && LT_32( iBitsUsed, iAvailableBits ) ) + { + iDone++; + } + ELSE IF( EQ_32( iBitsUsed, iAvailableBits ) ) + { + iDone++; + } + + IF( GT_32( iBitsUsed, iAvailableBits ) ) + { + *piAllocOffset -= iDelta; + iDelta = L_shr( iDelta, 1 ); + } + ELSE IF( LT_32( iBitsUsed, iAvailableBits ) ) + { + *piAllocOffset += iDelta; + iDelta = L_shr( iDelta, 1 ); + } + } + } + IF( GT_32( psPredictionEncoder->iNumSubSets, 1 ) ) + { + FOR( n = 0; n < iChannels; n++ ) + { + mvl2l( psPredictionEncoder->ppfPredStateRealTmp_fx[n], psPredictionEncoder->ppfPredStateReal_fx[n], LCLD_BANDS ); + mvl2l( psPredictionEncoder->ppfPredStateImagTmp_fx[n], psPredictionEncoder->ppfPredStateImag_fx[n], LCLD_BANDS ); + } + } + return iBitsUsed; +} diff --git a/lib_isar/isar_lcld_prot.h b/lib_isar/isar_lcld_prot.h new file mode 100644 index 0000000000000000000000000000000000000000..3f79a2c120386746bd93f3b739750a1c17a7ee3d --- /dev/null +++ b/lib_isar/isar_lcld_prot.h @@ -0,0 +1,454 @@ +/****************************************************************************************************** + + (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 ISAR_LCLD_PROT_H +#define ISAR_LCLD_PROT_H + +#include "options.h" +#include "typedef.h" +#include "common_api_types.h" +#include "isar_lcld_rom_tables.h" +/* clang-format off */ + +typedef struct LCLD_ENCODER LCLDEncoder; + +ivas_error CreateLCLDEncoder( + LCLDEncoder **psLCLDEncoder_out, + const Word32 iSampleRate, + const Word32 iChannels, + const Word32 iTargetBitRate, + const Word32 iAllowSidePred, + const Word16 iNumBlocks, + const Word16 iNumSubSets, + const Word32 iRealOnlyOut); +void DeleteLCLDEncoder( + LCLDEncoder *psLCLDEncoder +); + +Word32 EncodeLCLDFrame( + LCLDEncoder *psLCLDEncoder, + Word32 ***pppfLCLDReal_fx, + Word32 ***pppfLCLDImag_fx, + Word32 *piNumiBites, + const Word32 available_bits, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + Word16 *q_final); + +Word32 GetNumGroups( + LCLDEncoder *psLCLDEncoder +); + + +typedef struct LCLD_DECODER LCLDDecoder; + +ivas_error CreateLCLDDecoder( + LCLDDecoder **psLCLDDecoder_out, + const Word32 iSampleRate, + const Word32 iChannels, + const Word32 iNumBlocks, + const Word32 iRealOnlyOut); + + +void DeleteLCLDDecoder( + LCLDDecoder *psLCLDDecoder +); + +Word32 DecodeLCLDFrame( + LCLDDecoder *psLCLDDecoder, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + Word32 ***pppfLCLDReal_fx, + Word32 ***pppfLCLDImag_fx, + Word16 Q_in, + Word16 *Q_out +); + +/*----------------------------------------------------------------------------------* + * MSPred prototypes + *----------------------------------------------------------------------------------*/ +Word32 quantPhase_fx( + Word32 phase, + Word16 exp); + +int32_t quantPhase( + float phase +); + +void cplxmult( + float *pr1, + float *pi1, + float r2, + float i2 +); +void cplxmult_fx( + Word32 *pr1, + Word32 *pi1, + Word32 r2, + Word32 i2 +); + +Word32 requantPhase( + Word32 phaseQ +); + +Word32 quantPred_fx( + const Word32 pred, + Word16 exp); +int32_t quantPred( + const float pred +); + +float dequantPhase( + const int32_t phaseQ +); + +float dequantPred( + int32_t predQ +); +Word32 dequantPred_fx( + Word32 predQ +); +Word32 PrepEncode( + Word32 *piQuant, + const Word32 *piMSFlags, + const Word32 numBands +); + +void EncodePhase( + Word32 *phaseQuant, + const Word32 numMSBands, + const Word32 diffDim +); + +void DecodePhase( + Word32 *phaseQuant, + const Word32 numMSBands, + const Word32 diffDim +); + +Word32 EncodePredCoef( + Word32 *predQuant, + const Word32 numMSBands +); + +void DecodePredCoef( + Word32 *phaseQuant, + const Word32 numMSBands +); + +void writeMSPred( + int32_t *phaseQuant, + int32_t *predQuant, + const int32_t MSMode, + const int32_t numMSBands, + int32_t numBands, + void *fid, + int32_t *piMsFlags +); + +Word32 CountMSBits( + Word32 iNumBands, + const Word32 iMSMode, + const Word32 *piMSFlags, + const Word32 *piLRPhaseDiff, + const Word32 *piMSPredCoef +); + + +/*----------------------------------------------------------------------------------* + * NoiseGen prototypes + *----------------------------------------------------------------------------------*/ + +typedef struct NOISE_GEN +{ + int32_t iNoiseBufferLength; + int32_t iNoiseBufferMask; + int32_t iNoiseBufferIndex; + float *pfNoiseBuffer; +} NoiseGen; + +void DeleteNoiseGen( + NoiseGen *psNoiseGen +); + +inline float GetNoise( NoiseGen *psNoiseGen ) +{ + float fNoiseSample; + + fNoiseSample = psNoiseGen->pfNoiseBuffer[psNoiseGen->iNoiseBufferIndex]; + psNoiseGen->iNoiseBufferIndex++; + psNoiseGen->iNoiseBufferIndex &= psNoiseGen->iNoiseBufferMask; + + return fNoiseSample; +} +inline Word32 GetNoise_fx( NoiseGen *psNoiseGen ) +{ + Word32 fNoiseSample; + + fNoiseSample = (Word32) (psNoiseGen->pfNoiseBuffer[psNoiseGen->iNoiseBufferIndex]* (1<<14)); + psNoiseGen->iNoiseBufferIndex++; + psNoiseGen->iNoiseBufferIndex &= psNoiseGen->iNoiseBufferMask; + + return fNoiseSample; +} + +/*----------------------------------------------------------------------------------* + * PereptualModel prototypes + *----------------------------------------------------------------------------------*/ + +extern void PerceptualModel( + const int32_t iMaxQuantBands, + const int32_t *piRMSEnvelope, + int32_t *piExcitation, + int32_t *piSMR +); +extern void PerceptualModel_fx( + const Word32 iMaxQuantBands, + const Word32 *piRMSEnvelope, + Word32 *piExcitation, + Word32 *piSMR +); + +extern void PerceptualModelStereo_fx( + const Word32 iMaxQuantBands, + const Word32 *piMSFlags, + const Word32 *piRMSEnvelope0, + const Word32 *piRMSEnvelope1, + Word32 *piExcitation0, + Word32 *piExcitation1, + Word32 *piSMR0, + Word32 *piSMR1 +); +extern void PerceptualModelStereo( + const int32_t iMaxQuantBands, + const int32_t *piMSFlags, + const int32_t *piRMSEnvelope0, + const int32_t *piRMSEnvelope1, + int32_t *piExcitation0, + int32_t *piExcitation1, + int32_t *piSMR0, + int32_t *piSMR1 +); + + +/*----------------------------------------------------------------------------------* + * PredEncoder/PredDecoder prototypes + *----------------------------------------------------------------------------------*/ + +typedef struct PREDICTION_ENCODER +{ + int32_t iChannels; + int32_t iNumBlocks; + + int32_t iSubSetId; + int32_t iNumSubSets; + int32_t iMaxNumPredBands; + Word32 ***pppfInpBufReal_fx; /* channels, LCLD_PRED_WIN_LEN, bands */ + Word32 ***pppfInpBufImag_fx; + Word32 **ppfPredStateReal_fx; /* channels, bands */ + Word32 **ppfPredStateImag_fx; + Word32 **ppfPredStateRealTmp_fx; + Word32 **ppfPredStateImagTmp_fx; + Word32 **ppfInpPrevReal_fx; /* channels, bands */ + Word32 **ppfInpPrevImag_fx; + float ***pppfInpBufReal; /* channels, LCLD_PRED_WIN_LEN, bands */ + float ***pppfInpBufImag; + float **ppfPredStateReal; /* channels, bands */ + float **ppfPredStateImag; + float **ppfPredStateRealTmp; + float **ppfPredStateImagTmp; + float **ppfInpPrevReal; /* channels, bands */ + float **ppfInpPrevImag; + Word32 pfRxxReal_fx[2]; + Word32 pfRxxImag_fx[2]; + float pfRxxReal[2]; + float pfRxxImag[2]; + + int32_t *piPredChanEnable; + int32_t *piNumPredBands; + int32_t **ppiPredBandEnable; + + Word32 **ppfA1Real_fx; + Word32 **ppfA1Imag_fx; + float **ppfA1Real; + float **ppfA1Imag; + + int32_t **ppiA1Mag; + int32_t **ppiA1Phase; +} PredictionEncoder; + +ivas_error CreatePredictionEncoder_fx( + PredictionEncoder **psPredictionEncoder_out, + const Word32 iChannels, + const Word32 iNumBlocks, + const Word32 iNumSubSets, + const Word32 iMaxNumPredBands ); + +void DeletePredictionEncoder_fx( + PredictionEncoder *psPredictionEncoder ); +ivas_error CreatePredictionEncoder( + PredictionEncoder **psPredictionEncoder_out, + const int32_t iChannels, + const int32_t iNumBlocks, + const int32_t iNumSubSets, + const int32_t iMaxNumPredBands +); + +void DeletePredictionEncoder( + PredictionEncoder *psPredictionEncoder +); + +void ComputePredictors( + PredictionEncoder *psPredictionEncoder, + float ***pppfReal, + float ***pppfImag +); +void ComputePredictors_fx( + PredictionEncoder *psPredictionEncoder, + Word32 ***pppfReal_fx, //Q12? + Word32 ***pppfImag_fx); //Q12? + + +Word32 WritePredictors( + PredictionEncoder *psPredictionEncoder, + ISAR_SPLIT_REND_BITS_HANDLE pBits ); + +typedef struct PREDICTION_DECODER +{ + int32_t iChannels; + int32_t iNumBlocks; + int32_t iSubSetId; + int32_t iNumSubSets; + Word32 **ppfPredStateReal_fx; + Word32 **ppfPredStateImag_fx; + + int32_t *piPredChanEnable; + int32_t **ppiPredBandEnable; + /* PLC_IMPROVEMENT */ + int32_t **ppiDecodingUnresolved; + int32_t **ppiDecodingFailed; + int32_t **ppiDecodingFailedPrev; + Word32 **ppfA1Real_fx; /* Q31 */ + Word32 **ppfA1Imag_fx; /* Q31 */ + + int32_t **ppiA1Mag; + int32_t **ppiA1Phase; + + Word32 pfMagLUT_fx[1 << PRED_QUNAT_FILTER_MAG_BITS]; /* Q31 */ + Word32 pfP2RRealLUT_fx[1 << PRED_QUANT_FILTER_PHASE_BITS]; /* Q31 */ + Word32 pfP2RImagLUT_fx[1 << PRED_QUANT_FILTER_PHASE_BITS]; /* Q31 */ + +} PredictionDecoder; + + +ivas_error CreatePredictionDecoder_fx( + PredictionDecoder **psPredictionDecoder_out, + const Word32 iChannels, + const Word32 iNumBlocks ); + +void DeletePredictionDecoder_fx( + PredictionDecoder *psPredictionDecoder ); + +Word32 ReadPredictors_fx( + PredictionDecoder *psPredictionDecoder, + ISAR_SPLIT_REND_BITS_HANDLE pBits +); + +/* PLC_IMPROVEMENT */ +void UpdatePredictionSubSetId( + PredictionEncoder *psPredictionEncoder); + +void SetDecodingUnresolved( + LCLDDecoder *psLCLDDecoder); + +int32_t AnyDecodingFailedPrev( + LCLDDecoder *psLCLDDecoder); + +int32_t AnyDecodingFailed( + LCLDDecoder *psLCLDDecoder); + +int32_t **GetDecodingFailedStatus( + LCLDDecoder *psLCLDDecoder); + +int16_t GetNumSubSets( + LCLDDecoder *psLCLDDecoder); + +int32_t **GetDecodingFailedPrevStatus( + LCLDDecoder *psLCLDDecoder); + +void SetDecodingPassed( + PredictionDecoder *psPredictionDecoder); + +void UpdateDecodingUnresolved( + PredictionDecoder *psPredictionDecoder); + +void UpdateDecodingFailedStatus( + PredictionDecoder *psPredictionDecoder); + +int32_t AnyDecodingUnresolved( + PredictionDecoder *psPredictionDecoder); + +void ApplyInversePredictors_fx( + PredictionDecoder *psPredictionDecoder, + Word32 ***pppfReal, + Word32 ***pppfImag +); + + +/*----------------------------------------------------------------------------------* + * RMSEnvGrouping prototypes + *----------------------------------------------------------------------------------*/ + +typedef struct RMS_ENVELOPE_GROUPING RMSEnvelopeGrouping; + +RMSEnvelopeGrouping *CreateRMSEnvelopeGrouping( + const int32_t iNumBlocks +); + +void DeleteRMSEnvelopeGrouping( + RMSEnvelopeGrouping *psRMSEnvelopeGrouping +); +void ComputeEnvelopeGrouping( + RMSEnvelopeGrouping *psRMSEnvelopeGrouping, + const int32_t iChannels, + const int32_t iNumBands, + const int32_t *piBandwidths, + Word32 ***pppfReal_fx, + Word32 ***pppfImag_fx, + int32_t *piNumGroups, + int32_t *piGroupLengths, + int32_t ***pppiRMSEnvelope , + Word16 q_final +); + +/* 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 new file mode 100644 index 0000000000000000000000000000000000000000..42554611f84607cf59e98b094c8a4e326d3eff1a --- /dev/null +++ b/lib_isar/isar_lcld_rom_tables.c @@ -0,0 +1,21205 @@ +/****************************************************************************************************** + + (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 "isar_lcld_rom_tables.h" +#include "options.h" +#include "wmc_auto.h" +#include "prot_fx.h" +#include "isar_lcld_prot.h" +#include + +/* clang-format off */ +const int32_t c_aiNumLcldBandsPerBand[MAX_BANDS_48] = { + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 21, 24, 27, 31, 37, 43, 50, 60 +}; + +const int32_t c_aiBandIdPerLcldBand[LCLD_BANDS] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, + 18, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22 +}; +/* phi = (-12:12)'/12 *pi; tmp = [cos(phi),sin(phi)]; tmp = tmp';sprintf('{%.8ff, %.8ff},\n',tmp(:)) */ +const float c_afRotRealImag[PHASE_MAX_VAL - PHASE_MIN_VAL + 1][2] = +{ + { -1.00000000f, -0.00000000f }, + { -0.96592583f, -0.25881905f }, + { -0.86602540f, -0.50000000f }, + { -0.70710678f, -0.70710678f }, + { -0.50000000f, -0.86602540f }, + { -0.25881905f, -0.96592583f }, + { 0.00000000f, -1.00000000f }, + { 0.25881905f, -0.96592583f }, + { 0.50000000f, -0.86602540f }, + { 0.70710678f, -0.70710678f }, + { 0.86602540f, -0.50000000f }, + { 0.96592583f, -0.25881905f }, + { 1.00000000f, 0.00000000f }, + { 0.96592583f, 0.25881905f }, + { 0.86602540f, 0.50000000f }, + { 0.70710678f, 0.70710678f }, + { 0.50000000f, 0.86602540f }, + { 0.25881905f, 0.96592583f }, + { 0.00000000f, 1.00000000f }, + { -0.25881905f, 0.96592583f }, + { -0.50000000f, 0.86602540f }, + { -0.70710678f, 0.70710678f }, + { -0.86602540f, 0.50000000f }, + { -0.96592583f, 0.25881905f }, + { -1.00000000f, 0.00000000f } +}; + +const Word32 c_afRotRealImag_fx[PHASE_MAX_VAL - PHASE_MIN_VAL + 1][2] = /*Q31*/ +{ + {-2147483647,0,}, + {-2074309888,-555809664,}, + {-1859775360,-1073741824,}, + {-1518500224,-1518500224,}, + {-1073741824,-1859775360,}, + {-555809664,-2074309888,}, + {0,-2147483647,}, + {555809664,-2074309888,}, + {1073741824,-1859775360,}, + {1518500224,-1518500224,}, + {1859775360,-1073741824,}, + {2074309888,-555809664,}, + {2147483647,0,}, + {2074309888,555809664,}, + {1859775360,1073741824,}, + {1518500224,1518500224,}, + {1073741824,1859775360,}, + {555809664,2074309888,}, + {0,2147483647,}, + {-555809664,2074309888,}, + {-1073741824,1859775360,}, + {-1518500224,1518500224,}, + {-1859775360,1073741824,}, + {-2074309888,555809664,}, + {-2147483647,0,}, + +}; +/* Move this to perceptual model ? */ +const int32_t c_aiBandwidths48[MAX_BANDS_48] = +{ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 4, + 6, + 6, + 7, + 10, +}; + + +const float c_afScaleFactor[ALLOC_TABLE_SIZE] = { + 0.0f, + 0.353553390593f, + 0.420448207627f, + 0.500000000000f, + 0.594603557501f, + 0.707106781187f, + 0.840896415254f, + 1.000000000000f, + 1.189207115003f, + 1.414213562373f, + 1.681792830507f, + 2.000000000000f, + 2.378414230005f, + 2.828427124746f, + 3.363585661015f, + 4.0f, + 4.756828460011f, + 5.656854249492f, + 6.727171322030f, + 8.0f, + 9.513656920022f, + 11.31370849898f, + 13.45434264406f, + 16.00000000000f, + 19.02731384004f, + 22.62741699797f, + 26.90868528812f, + 32.000000000000000f, + 38.054627680087073f, + 45.254833995939038f, + 53.817370576237735f, + 64.000000000000000f, +}; +const Word32 c_afScaleFactor_fx[ALLOC_TABLE_SIZE] = { + //Q24 + 0, + 5931641, + 7053950, + 8388608, + 9975792, + 11863283, + 14107901, + 16777216, + 19951584, + 23726566, + 28215802, + 33554432, + 39903168, + 47453132, + 56431604, + 67108864, + 79806336, + 94906264, + 112863208, + 134217728, + 159612672, + 189812528, + 225726416, + 268435456, + 319225344, + 379625056, + 451452832, + 536870912, + 638450688, + 759250112, + 902905664, + 1073741824, +}; +const float c_afInvScaleFactor[ALLOC_TABLE_SIZE] = { + 0.0f, + 2.367513562373095f, + 2.046407115002721f, + 1.775900000000000f, + 1.536446415253715f, + 1.323056781186548f, + 1.132903557501360f, + 0.965800000000000f, + 0.821348207626857f, + 0.695103390593274f, + 0.587801778750680f, + 0.495800000000000f, + 0.418124103813429f, + 0.352176695296637f, + 0.296200889375340f, + 0.249400000000000f, + 0.209812051906714f, + 0.176538347648318f, + 0.148525444687670f, + 0.124900000000000f, + 0.105056025953357f, + 0.088388347648318f, + 0.074325444687670f, + 0.062500000000000f, + 0.052556025953357f, + 0.044194173824159f, + 0.037162722343835f, + 0.031250000000000f, + 0.026278012976679f, + 0.022097086912080f, + 0.018581361171918f, + 0.015625000000000f, +}; +const Word32 c_afInvScaleFactor_fx[ALLOC_TABLE_SIZE] = { + //Q29 + 0, + 1271049216, + 1098656512, + 953429056, + 824873408, + 710310720, + 608222976, + 518509920, + 440957952, + 373180800, + 315573664, + 266180592, + 224478672, + 189073424, + 159021648, + 133895608, + 112641984, + 94778304, + 79738992, + 67055176, + 56401524, + 47453132, + 39903168, + 33554432, + 28215802, + 23726566, + 19951584, + 16777216, + 14107901, + 11863283, + 9975792, + 8388608, +}; +const float c_afRMSEnvReconstructTable[ENV_RECONSTRUCT_TABLE_SIZE] = { + 2.32830644e-10f, + 3.29272254e-10f, + 4.65661287e-10f, + 6.58544508e-10f, + 9.31322575e-10f, + 1.31708902e-09f, + 1.86264515e-09f, + 2.63417803e-09f, + 3.72529030e-09f, + 5.26835606e-09f, + 7.45058060e-09f, + 1.05367121e-08f, + 1.49011612e-08f, + 2.10734243e-08f, + 2.98023224e-08f, + 4.21468485e-08f, + 5.96046448e-08f, + 8.42936970e-08f, + 1.19209290e-07f, + 1.68587394e-07f, + 2.38418579e-07f, + 3.37174788e-07f, + 4.76837158e-07f, + 6.74349576e-07f, + 9.53674316e-07f, + 1.34869915e-06f, + 1.90734863e-06f, + 2.69739830e-06f, + 3.81469727e-06f, + 5.39479661e-06f, + 7.62939453e-06f, + 1.07895932e-05f, + 1.52587891e-05f, + 2.15791864e-05f, + 3.05175781e-05f, + 4.31583729e-05f, + 6.10351562e-05f, + 8.63167458e-05f, + 1.22070312e-04f, + 1.72633492e-04f, + 2.44140625e-04f, + 3.45266983e-04f, + 4.88281250e-04f, + 6.90533966e-04f, + 9.76562500e-04f, + 1.38106793e-03f, + 1.95312500e-03f, + 2.76213586e-03f, + 3.90625000e-03f, + 5.52427173e-03f, + 7.81250000e-03f, + 1.10485435e-02f, + 1.56250000e-02f, + 2.20970869e-02f, + 3.12500000e-02f, + 4.41941738e-02f, + 6.25000000e-02f, + 8.83883476e-02f, + 1.25000000e-01f, + 1.76776695e-01f, + 2.50000000e-01f, + 3.53553391e-01f, + 5.00000000e-01f, + 7.07106781e-01f, + 1.00000000e+00f, + 1.41421356e+00f, + 2.00000000e+00f, + 2.82842712e+00f, + 4.00000000e+00f, + 5.65685425e+00f, + 8.00000000e+00f, + 1.13137085e+01f, + 1.60000000e+01f, + 2.26274170e+01f, + 3.20000000e+01f, + 4.52548340e+01f, + 6.40000000e+01f, + 9.05096680e+01f, + 1.28000000e+02f, + 1.81019336e+02f, + 2.56000000e+02f, + 3.62038672e+02f, + 5.12000000e+02f, + 7.24077344e+02f, + 1.02400000e+03f, + 1.44815469e+03f, + 2.04800000e+03f, + 2.89630938e+03f, + 4.09600000e+03f, + 5.79261875e+03f, + 8.19200000e+03f, + 1.15852375e+04f, + 1.63840000e+04f, + 2.31704750e+04f, + 3.27680000e+04f, + 4.63409500e+04f, + 6.55360000e+04f, + 9.26819000e+04f, + 1.31072000e+05f, + 1.85363800e+05f, + 2.62144000e+05f, + 3.70727600e+05f, + 5.24288000e+05f, + 7.41455200e+05f, + 1.04857600e+06f, + 1.48291040e+06f, + 2.09715200e+06f, + 2.96582080e+06f, + 4.19430400e+06f, + 5.93164160e+06f, + 8.38860800e+06f, + 1.18632832e+07f, + 1.67772160e+07f, + 2.37265664e+07f, + 3.35544320e+07f, + 4.74531328e+07f, + 6.71088640e+07f, + 9.49062656e+07f, + 1.34217728e+08f, + 1.89812531e+08f, + 2.68435456e+08f, + 3.79625062e+08f, + 5.36870912e+08f, + 7.59250125e+08f, + 1.07374182e+09f, + 1.51850025e+09f, + 2.14748365e+09f, + 3.03700050e+09f, + 4.29496730e+09f, +}; + +const int16_t c_afRMSEnvReconstructTable_exp[ENV_RECONSTRUCT_TABLE_SIZE] = +{ + 62, 62, 61, 61, 60, 60, 59, 59, 58, 58, 57, 57, 56, 56, 55, 55, 54, 54, 53, 53, 52, 52, 51, 51, 50, 50, 49, 49, 48, 48, 47, 47, 46, 46, 45, 45, 44, 44, 43, 43, 42, 42, 41, 41, 40, 40, 39, 39, 38, 38, 37, 37, 36, 36, 35, 35, 34, 34, 33, 33, 32, 32, 31, 31, 30, 30, 29, 29, 28, 28, 27, 27, 26, 26, 25, 25, 24, 24, 23, 23, 22, 22, 21, 21, 20, 20, 19, 19, 18, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 13, 12, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -2 +}; +const Word32 c_aiQuantMaxValues_fx[ALLOC_TABLE_SIZE] = { + //Q21 + 0, +6291456, +6291456, +8388608, +10485760, +10485760, +12582912, +14680064, +16777216, +18874368, +25165824, +27262976, +33554432, +35651584, +39845888, +48234496, +54525952, +54525952, +56623104, +58720256, +65011712, +75497472, +79691776, +94371840, +113246208, +134217728, +159383552, +188743680, +226492416, +268435456, +318767104, +377487360, +}; +const int32_t c_aiQuantMaxValues[ALLOC_TABLE_SIZE] = { + 0, + 3, + 3, + 4, + 5, + 5, + 6, + 7, + 8, + 9, + 12, + 13, + 16, + 17, + 19, + 23, + 26, + 26, + 27, + 28, + 31, + 36, + 38, + 45, + 54, + 64, + 76, + 90, + 108, + 128, + 152, + 180, +}; +const Word32 c_aiHuffmanDim_fx[ALLOC_TABLE_SIZE] = { + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, +}; + +const Word32 c_aiHuffmanMod_fx[ALLOC_TABLE_SIZE] = { + 0, + 4, + 4, + 5, + 6, + 6, + 7, + 8, + 9, + 10, + 13, + 14, + 17, + 18, + 20, + 24, + 27, + 27, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, +}; + +const int32_t c_aiHuffmanDim[ALLOC_TABLE_SIZE] = { + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, +}; + +const int32_t c_aiHuffmanMod[ALLOC_TABLE_SIZE] = { + 0, + 4, + 4, + 5, + 6, + 6, + 7, + 8, + 9, + 10, + 13, + 14, + 17, + 18, + 20, + 24, + 27, + 27, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, +}; +const int32_t c_aiHuffmanSize[ALLOC_TABLE_SIZE] = { + 1, + 16, + 16, + 25, + 36, + 36, + 49, + 64, + 81, + 100, + 169, + 196, + 289, + 324, + 400, + 576, + 729, + 729, + 28, + 29, + 32, + 37, + 39, + 46, + 55, + 65, + 77, + 91, + 109, + 129, + 153, + 181, +}; + +const uint32_t c_aaiRMSEnvHuffEnc[64][2] = { + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0012, 0x000b }, + { 0x000d, 0x0002 }, + { 0x000e, 0x0001 }, + { 0x000e, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x000b, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0007, 0x0004 }, + { 0x0006, 0x0003 }, + { 0x0006, 0x0004 }, + { 0x0005, 0x0003 }, + { 0x0004, 0x0002 }, + { 0x0003, 0x0002 }, + { 0x0002, 0x0002 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0003 }, + { 0x0004, 0x0003 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0005 }, + { 0x0008, 0x0007 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000e, 0x0003 }, + { 0x0010, 0x0003 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, +}; + +const uint32_t c_aaiRMSEnvHuffDec[13][HUFF_DEC_TABLE_SIZE] = { + { + 0x0002ffff, + 0x0001ffff, + 0x0000001d, + 0x00000022, + 0x0001001e, + 0x0001001e, + 0x00010021, + 0x00010021, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + }, + { + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020023, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + }, + { + 0x0006ffff, + 0x0007ffff, + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x00000017, + 0x00000018, + 0x00000025, + 0x00010019, + 0x00010019, + 0x00010024, + 0x00010024, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + }, + { + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + }, + { + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + }, + { + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + }, + { + 0x0009ffff, + 0x0008ffff, + 0x0000002c, + 0x0000002d, + 0x00010010, + 0x00010010, + 0x0001002b, + 0x0001002b, + 0x0001002e, + 0x0001002e, + 0x0001002f, + 0x0001002f, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + }, + { + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020029, + 0x00020029, + 0x00020029, + 0x00020029, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002002a, + }, + { + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + }, + { + 0x000bffff, + 0x000cffff, + 0x000affff, + 0x00000031, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x00020030, + 0x00020030, + 0x00020030, + 0x00020030, + }, + { + 0x0001003a, + 0x0001003a, + 0x0001003b, + 0x0001003b, + 0x0001003c, + 0x0001003c, + 0x0001003d, + 0x0001003d, + 0x0001003e, + 0x0001003e, + 0x0001003f, + 0x0001003f, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + }, + { + 0x00000000, + 0x00000001, + 0x00000002, + 0x00000003, + 0x00000004, + 0x00000005, + 0x00010006, + 0x00010006, + 0x00010007, + 0x00010007, + 0x00010008, + 0x00010008, + 0x00010009, + 0x00010009, + 0x0001000a, + 0x0001000a, + }, + { + 0x00010032, + 0x00010032, + 0x00010033, + 0x00010033, + 0x00010034, + 0x00010034, + 0x00010035, + 0x00010035, + 0x00010036, + 0x00010036, + 0x00010037, + 0x00010037, + 0x00010038, + 0x00010038, + 0x00010039, + 0x00010039, + }, +}; + +const uint16_t c_aauiLCLDHuffEnc1[16][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0005, 0x0001 }, + { 0x000b, 0x0000 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x000b, 0x0002 }, + { 0x000b, 0x0003 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + }; + +const uint16_t c_aauiLCLDHuffEnc2[16][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0005, 0x0001 }, + { 0x000c, 0x0000 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000b, 0x0003 }, + }; + +const uint16_t c_aauiLCLDHuffEnc3[25][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000d, 0x0000 }, + { 0x000d, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000d, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x0009, 0x0001 }, + { 0x000c, 0x0007 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000d, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x000d, 0x000a }, + { 0x000d, 0x000b }, + { 0x000d, 0x000c }, + { 0x000d, 0x000d }, + + }; + +const uint16_t c_aauiLCLDHuffEnc4[36][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x0010, 0x0000 }, + { 0x0010, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x0010, 0x0002 }, + { 0x0010, 0x0003 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x000e, 0x0006 }, + { 0x0010, 0x0004 }, + { 0x0010, 0x0005 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000e, 0x0007 }, + { 0x0010, 0x0006 }, + { 0x0010, 0x0007 }, + { 0x0010, 0x0008 }, + { 0x0010, 0x0009 }, + { 0x0010, 0x000a }, + { 0x0010, 0x000b }, + { 0x0010, 0x000c }, + { 0x0010, 0x000d }, + { 0x0010, 0x000e }, + { 0x0010, 0x000f }, + { 0x0010, 0x0010 }, + { 0x0010, 0x0011 }, + { 0x000f, 0x0009 }, + { 0x000f, 0x000a }, + { 0x000f, 0x000b }, + + }; + +const uint16_t c_aauiLCLDHuffEnc5[36][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000f, 0x0003 }, + { 0x0012, 0x0000 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x0011, 0x0008 }, + { 0x0012, 0x0001 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000d, 0x0001 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0011, 0x0009 }, + { 0x0011, 0x000a }, + { 0x0012, 0x0007 }, + { 0x0012, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0012, 0x000a }, + { 0x0012, 0x000b }, + { 0x0012, 0x000c }, + { 0x0012, 0x000d }, + { 0x0012, 0x000e }, + { 0x0012, 0x000f }, + { 0x0011, 0x000b }, + + }; + +const uint16_t c_aauiLCLDHuffEnc6[49][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x0010, 0x0003 }, + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000a, 0x0002 }, + { 0x0010, 0x0004 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x000d, 0x0001 }, + { 0x0012, 0x0007 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x000a, 0x0003 }, + { 0x000b, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x0011, 0x0004 }, + { 0x0014, 0x0006 }, + { 0x0014, 0x0007 }, + { 0x0014, 0x0008 }, + { 0x0010, 0x0005 }, + { 0x000f, 0x0003 }, + { 0x0011, 0x0005 }, + { 0x0014, 0x0009 }, + { 0x0014, 0x000a }, + { 0x0014, 0x000b }, + { 0x0014, 0x000c }, + { 0x0014, 0x000d }, + { 0x0013, 0x000d }, + { 0x0014, 0x000e }, + { 0x0014, 0x000f }, + { 0x0014, 0x0010 }, + { 0x0014, 0x0011 }, + { 0x0014, 0x0012 }, + { 0x0014, 0x0013 }, + { 0x0014, 0x0014 }, + { 0x0014, 0x0015 }, + { 0x0014, 0x0016 }, + { 0x0014, 0x0017 }, + { 0x0014, 0x0018 }, + { 0x0014, 0x0019 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc7[64][2] = + { + { 0x0002, 0x0001 }, + { 0x0002, 0x0002 }, + { 0x0005, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000f, 0x0002 }, + { 0x0015, 0x0000 }, + { 0x0015, 0x0001 }, + { 0x0015, 0x0002 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0009, 0x0002 }, + { 0x000f, 0x0003 }, + { 0x0014, 0x0011 }, + { 0x0015, 0x0003 }, + { 0x0015, 0x0004 }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0007, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x0010, 0x0002 }, + { 0x0015, 0x0005 }, + { 0x0015, 0x0006 }, + { 0x0015, 0x0007 }, + { 0x000a, 0x0001 }, + { 0x0009, 0x0003 }, + { 0x000c, 0x0001 }, + { 0x000f, 0x0004 }, + { 0x0012, 0x0006 }, + { 0x0015, 0x0008 }, + { 0x0015, 0x0009 }, + { 0x0015, 0x000a }, + { 0x000f, 0x0005 }, + { 0x000e, 0x0003 }, + { 0x0010, 0x0003 }, + { 0x0012, 0x0007 }, + { 0x0014, 0x0012 }, + { 0x0015, 0x000b }, + { 0x0015, 0x000c }, + { 0x0015, 0x000d }, + { 0x0014, 0x0013 }, + { 0x0014, 0x0014 }, + { 0x0013, 0x000b }, + { 0x0014, 0x0015 }, + { 0x0015, 0x000e }, + { 0x0015, 0x000f }, + { 0x0015, 0x0010 }, + { 0x0015, 0x0011 }, + { 0x0015, 0x0012 }, + { 0x0015, 0x0013 }, + { 0x0015, 0x0014 }, + { 0x0015, 0x0015 }, + { 0x0015, 0x0016 }, + { 0x0015, 0x0017 }, + { 0x0015, 0x0018 }, + { 0x0015, 0x0019 }, + { 0x0015, 0x001a }, + { 0x0015, 0x001b }, + { 0x0015, 0x001c }, + { 0x0015, 0x001d }, + { 0x0015, 0x001e }, + { 0x0015, 0x001f }, + { 0x0015, 0x0020 }, + { 0x0015, 0x0021 }, + }; + +const uint16_t c_aauiLCLDHuffEnc8[81][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000f, 0x0002 }, + { 0x0014, 0x0008 }, + { 0x0017, 0x0000 }, + { 0x0017, 0x0001 }, + { 0x0017, 0x0002 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000f, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0015, 0x000d }, + { 0x0017, 0x0003 }, + { 0x0017, 0x0004 }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0007, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x0010, 0x0002 }, + { 0x0013, 0x0005 }, + { 0x0017, 0x0005 }, + { 0x0017, 0x0006 }, + { 0x0017, 0x0007 }, + { 0x0009, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x000b, 0x0001 }, + { 0x000f, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0016, 0x0015 }, + { 0x0017, 0x0008 }, + { 0x0017, 0x0009 }, + { 0x0017, 0x000a }, + { 0x000f, 0x0005 }, + { 0x000e, 0x0003 }, + { 0x0010, 0x0003 }, + { 0x0012, 0x0006 }, + { 0x0014, 0x0009 }, + { 0x0017, 0x000b }, + { 0x0017, 0x000c }, + { 0x0017, 0x000d }, + { 0x0017, 0x000e }, + { 0x0013, 0x0006 }, + { 0x0012, 0x0007 }, + { 0x0013, 0x0007 }, + { 0x0015, 0x000e }, + { 0x0017, 0x000f }, + { 0x0017, 0x0010 }, + { 0x0017, 0x0011 }, + { 0x0017, 0x0012 }, + { 0x0017, 0x0013 }, + { 0x0016, 0x0016 }, + { 0x0016, 0x0017 }, + { 0x0015, 0x000f }, + { 0x0016, 0x0018 }, + { 0x0017, 0x0014 }, + { 0x0017, 0x0015 }, + { 0x0017, 0x0016 }, + { 0x0017, 0x0017 }, + { 0x0017, 0x0018 }, + { 0x0017, 0x0019 }, + { 0x0017, 0x001a }, + { 0x0017, 0x001b }, + { 0x0017, 0x001c }, + { 0x0017, 0x001d }, + { 0x0017, 0x001e }, + { 0x0017, 0x001f }, + { 0x0017, 0x0020 }, + { 0x0017, 0x0021 }, + { 0x0017, 0x0022 }, + { 0x0017, 0x0023 }, + { 0x0017, 0x0024 }, + { 0x0017, 0x0025 }, + { 0x0017, 0x0026 }, + { 0x0017, 0x0027 }, + { 0x0017, 0x0028 }, + { 0x0017, 0x0029 }, + { 0x0016, 0x0019 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc9[100][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000d, 0x0002 }, + { 0x0011, 0x0004 }, + { 0x0014, 0x000a }, + { 0x0017, 0x0000 }, + { 0x0017, 0x0001 }, + { 0x0017, 0x0002 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0001 }, + { 0x0009, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x0010, 0x0004 }, + { 0x0013, 0x0007 }, + { 0x0016, 0x0018 }, + { 0x0017, 0x0003 }, + { 0x0017, 0x0004 }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0008, 0x0002 }, + { 0x000b, 0x0002 }, + { 0x000e, 0x0002 }, + { 0x0011, 0x0005 }, + { 0x0014, 0x000b }, + { 0x0016, 0x0019 }, + { 0x0017, 0x0005 }, + { 0x0017, 0x0006 }, + { 0x0009, 0x0003 }, + { 0x0008, 0x0003 }, + { 0x000b, 0x0003 }, + { 0x000d, 0x0004 }, + { 0x0010, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0015, 0x000f }, + { 0x0017, 0x0007 }, + { 0x0017, 0x0008 }, + { 0x0017, 0x0009 }, + { 0x000d, 0x0005 }, + { 0x000c, 0x0003 }, + { 0x000e, 0x0003 }, + { 0x0010, 0x0006 }, + { 0x0012, 0x0007 }, + { 0x0014, 0x000c }, + { 0x0017, 0x000a }, + { 0x0016, 0x001a }, + { 0x0017, 0x000b }, + { 0x0017, 0x000c }, + { 0x0011, 0x0006 }, + { 0x0010, 0x0007 }, + { 0x0011, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0015, 0x0010 }, + { 0x0017, 0x000d }, + { 0x0017, 0x000e }, + { 0x0017, 0x000f }, + { 0x0017, 0x0010 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0014, 0x000d }, + { 0x0015, 0x0011 }, + { 0x0017, 0x0011 }, + { 0x0016, 0x001b }, + { 0x0017, 0x0012 }, + { 0x0017, 0x0013 }, + { 0x0017, 0x0014 }, + { 0x0017, 0x0015 }, + { 0x0017, 0x0016 }, + { 0x0015, 0x0012 }, + { 0x0015, 0x0013 }, + { 0x0017, 0x0017 }, + { 0x0016, 0x001c }, + { 0x0017, 0x0018 }, + { 0x0017, 0x0019 }, + { 0x0017, 0x001a }, + { 0x0017, 0x001b }, + { 0x0017, 0x001c }, + { 0x0017, 0x001d }, + { 0x0017, 0x001e }, + { 0x0017, 0x001f }, + { 0x0017, 0x0020 }, + { 0x0017, 0x0021 }, + { 0x0017, 0x0022 }, + { 0x0017, 0x0023 }, + { 0x0017, 0x0024 }, + { 0x0017, 0x0025 }, + { 0x0017, 0x0026 }, + { 0x0017, 0x0027 }, + { 0x0017, 0x0028 }, + { 0x0017, 0x0029 }, + { 0x0017, 0x002a }, + { 0x0017, 0x002b }, + { 0x0017, 0x002c }, + { 0x0017, 0x002d }, + { 0x0017, 0x002e }, + { 0x0017, 0x002f }, + { 0x0016, 0x001d }, + + }; + +const uint16_t c_aauiLCLDHuffEnc10[169][2] = + { + { 0x0001, 0x0001 }, + { 0x0004, 0x0002 }, + { 0x0005, 0x0002 }, + { 0x0007, 0x0002 }, + { 0x000a, 0x0002 }, + { 0x000e, 0x0004 }, + { 0x0011, 0x0007 }, + { 0x0013, 0x0012 }, + { 0x0016, 0x0000 }, + { 0x0016, 0x0001 }, + { 0x0016, 0x0002 }, + { 0x0016, 0x0003 }, + { 0x0016, 0x0004 }, + { 0x0004, 0x0003 }, + { 0x0003, 0x0003 }, + { 0x0004, 0x0004 }, + { 0x0007, 0x0003 }, + { 0x000a, 0x0003 }, + { 0x000d, 0x0004 }, + { 0x0010, 0x0007 }, + { 0x0013, 0x0013 }, + { 0x0015, 0x0035 }, + { 0x0016, 0x0005 }, + { 0x0016, 0x0006 }, + { 0x0016, 0x0007 }, + { 0x0016, 0x0008 }, + { 0x0005, 0x0003 }, + { 0x0004, 0x0005 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0002 }, + { 0x000b, 0x0002 }, + { 0x000e, 0x0005 }, + { 0x0010, 0x0008 }, + { 0x0013, 0x0014 }, + { 0x0014, 0x001d }, + { 0x0016, 0x0009 }, + { 0x0016, 0x000a }, + { 0x0016, 0x000b }, + { 0x0016, 0x000c }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0008, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000f, 0x0005 }, + { 0x0011, 0x0008 }, + { 0x0014, 0x001e }, + { 0x0014, 0x001f }, + { 0x0016, 0x000d }, + { 0x0016, 0x000e }, + { 0x0016, 0x000f }, + { 0x0016, 0x0010 }, + { 0x000a, 0x0005 }, + { 0x0009, 0x0003 }, + { 0x000b, 0x0003 }, + { 0x000d, 0x0006 }, + { 0x000f, 0x0006 }, + { 0x0011, 0x0009 }, + { 0x0013, 0x0015 }, + { 0x0014, 0x0020 }, + { 0x0016, 0x0011 }, + { 0x0016, 0x0012 }, + { 0x0016, 0x0013 }, + { 0x0016, 0x0014 }, + { 0x0016, 0x0015 }, + { 0x000e, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000e, 0x0007 }, + { 0x000f, 0x0007 }, + { 0x0011, 0x000a }, + { 0x0012, 0x000c }, + { 0x0016, 0x0016 }, + { 0x0016, 0x0017 }, + { 0x0016, 0x0018 }, + { 0x0016, 0x0019 }, + { 0x0016, 0x001a }, + { 0x0016, 0x001b }, + { 0x0016, 0x001c }, + { 0x0011, 0x000b }, + { 0x0010, 0x0009 }, + { 0x0011, 0x000c }, + { 0x0011, 0x000d }, + { 0x0013, 0x0016 }, + { 0x0016, 0x001d }, + { 0x0016, 0x001e }, + { 0x0016, 0x001f }, + { 0x0016, 0x0020 }, + { 0x0016, 0x0021 }, + { 0x0016, 0x0022 }, + { 0x0016, 0x0023 }, + { 0x0016, 0x0024 }, + { 0x0014, 0x0021 }, + { 0x0014, 0x0022 }, + { 0x0012, 0x000d }, + { 0x0013, 0x0017 }, + { 0x0016, 0x0025 }, + { 0x0016, 0x0026 }, + { 0x0016, 0x0027 }, + { 0x0016, 0x0028 }, + { 0x0016, 0x0029 }, + { 0x0016, 0x002a }, + { 0x0016, 0x002b }, + { 0x0016, 0x002c }, + { 0x0016, 0x002d }, + { 0x0015, 0x0036 }, + { 0x0015, 0x0037 }, + { 0x0014, 0x0023 }, + { 0x0015, 0x0038 }, + { 0x0016, 0x002e }, + { 0x0016, 0x002f }, + { 0x0016, 0x0030 }, + { 0x0016, 0x0031 }, + { 0x0016, 0x0032 }, + { 0x0016, 0x0033 }, + { 0x0016, 0x0034 }, + { 0x0016, 0x0035 }, + { 0x0016, 0x0036 }, + { 0x0016, 0x0037 }, + { 0x0016, 0x0038 }, + { 0x0016, 0x0039 }, + { 0x0016, 0x003a }, + { 0x0016, 0x003b }, + { 0x0016, 0x003c }, + { 0x0016, 0x003d }, + { 0x0016, 0x003e }, + { 0x0016, 0x003f }, + { 0x0016, 0x0040 }, + { 0x0016, 0x0041 }, + { 0x0016, 0x0042 }, + { 0x0016, 0x0043 }, + { 0x0016, 0x0044 }, + { 0x0016, 0x0045 }, + { 0x0016, 0x0046 }, + { 0x0016, 0x0047 }, + { 0x0016, 0x0048 }, + { 0x0016, 0x0049 }, + { 0x0016, 0x004a }, + { 0x0016, 0x004b }, + { 0x0016, 0x004c }, + { 0x0016, 0x004d }, + { 0x0016, 0x004e }, + { 0x0016, 0x004f }, + { 0x0016, 0x0050 }, + { 0x0016, 0x0051 }, + { 0x0016, 0x0052 }, + { 0x0016, 0x0053 }, + { 0x0016, 0x0054 }, + { 0x0016, 0x0055 }, + { 0x0016, 0x0056 }, + { 0x0016, 0x0057 }, + { 0x0016, 0x0058 }, + { 0x0016, 0x0059 }, + { 0x0016, 0x005a }, + { 0x0016, 0x005b }, + { 0x0016, 0x005c }, + { 0x0016, 0x005d }, + { 0x0016, 0x005e }, + { 0x0016, 0x005f }, + { 0x0016, 0x0060 }, + { 0x0016, 0x0061 }, + { 0x0016, 0x0062 }, + { 0x0016, 0x0063 }, + { 0x0016, 0x0064 }, + { 0x0016, 0x0065 }, + { 0x0016, 0x0066 }, + { 0x0016, 0x0067 }, + { 0x0016, 0x0068 }, + { 0x0016, 0x0069 }, + { 0x0015, 0x0039 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc11[196][2] = + { + { 0x0001, 0x0001 }, + { 0x0004, 0x0003 }, + { 0x0005, 0x0003 }, + { 0x0007, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x0012, 0x000d }, + { 0x0014, 0x001f }, + { 0x0016, 0x0000 }, + { 0x0016, 0x0001 }, + { 0x0016, 0x0002 }, + { 0x0016, 0x0003 }, + { 0x0016, 0x0004 }, + { 0x0004, 0x0004 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0006, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x000b, 0x0004 }, + { 0x000e, 0x0005 }, + { 0x0010, 0x0007 }, + { 0x0012, 0x000e }, + { 0x0014, 0x0020 }, + { 0x0016, 0x0005 }, + { 0x0016, 0x0006 }, + { 0x0016, 0x0007 }, + { 0x0016, 0x0008 }, + { 0x0005, 0x0005 }, + { 0x0004, 0x0005 }, + { 0x0006, 0x0004 }, + { 0x0007, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000e, 0x0006 }, + { 0x0011, 0x000a }, + { 0x0012, 0x000f }, + { 0x0015, 0x003b }, + { 0x0016, 0x0009 }, + { 0x0016, 0x000a }, + { 0x0016, 0x000b }, + { 0x0016, 0x000c }, + { 0x0007, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0005 }, + { 0x0009, 0x0005 }, + { 0x000b, 0x0005 }, + { 0x000d, 0x0005 }, + { 0x000f, 0x0006 }, + { 0x0012, 0x0010 }, + { 0x0014, 0x0021 }, + { 0x0016, 0x000d }, + { 0x0016, 0x000e }, + { 0x0016, 0x000f }, + { 0x0016, 0x0010 }, + { 0x0016, 0x0011 }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x000a, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000d, 0x0006 }, + { 0x000f, 0x0007 }, + { 0x0011, 0x000b }, + { 0x0013, 0x0017 }, + { 0x0014, 0x0022 }, + { 0x0016, 0x0012 }, + { 0x0016, 0x0013 }, + { 0x0016, 0x0014 }, + { 0x0016, 0x0015 }, + { 0x0016, 0x0016 }, + { 0x000c, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000c, 0x0007 }, + { 0x000d, 0x0007 }, + { 0x000e, 0x0007 }, + { 0x0010, 0x0008 }, + { 0x0012, 0x0011 }, + { 0x0014, 0x0023 }, + { 0x0015, 0x003c }, + { 0x0016, 0x0017 }, + { 0x0016, 0x0018 }, + { 0x0016, 0x0019 }, + { 0x0016, 0x001a }, + { 0x0016, 0x001b }, + { 0x000f, 0x0008 }, + { 0x000e, 0x0008 }, + { 0x000e, 0x0009 }, + { 0x000f, 0x0009 }, + { 0x0011, 0x000c }, + { 0x0013, 0x0018 }, + { 0x0014, 0x0024 }, + { 0x0016, 0x001c }, + { 0x0016, 0x001d }, + { 0x0016, 0x001e }, + { 0x0016, 0x001f }, + { 0x0016, 0x0020 }, + { 0x0016, 0x0021 }, + { 0x0016, 0x0022 }, + { 0x0011, 0x000d }, + { 0x0010, 0x0009 }, + { 0x0012, 0x0012 }, + { 0x0012, 0x0013 }, + { 0x0014, 0x0025 }, + { 0x0015, 0x003d }, + { 0x0014, 0x0026 }, + { 0x0016, 0x0023 }, + { 0x0016, 0x0024 }, + { 0x0016, 0x0025 }, + { 0x0016, 0x0026 }, + { 0x0016, 0x0027 }, + { 0x0016, 0x0028 }, + { 0x0016, 0x0029 }, + { 0x0014, 0x0027 }, + { 0x0013, 0x0019 }, + { 0x0014, 0x0028 }, + { 0x0014, 0x0029 }, + { 0x0014, 0x002a }, + { 0x0016, 0x002a }, + { 0x0016, 0x002b }, + { 0x0016, 0x002c }, + { 0x0016, 0x002d }, + { 0x0016, 0x002e }, + { 0x0016, 0x002f }, + { 0x0016, 0x0030 }, + { 0x0016, 0x0031 }, + { 0x0016, 0x0032 }, + { 0x0014, 0x002b }, + { 0x0014, 0x002c }, + { 0x0014, 0x002d }, + { 0x0016, 0x0033 }, + { 0x0016, 0x0034 }, + { 0x0016, 0x0035 }, + { 0x0016, 0x0036 }, + { 0x0016, 0x0037 }, + { 0x0016, 0x0038 }, + { 0x0016, 0x0039 }, + { 0x0016, 0x003a }, + { 0x0016, 0x003b }, + { 0x0016, 0x003c }, + { 0x0016, 0x003d }, + { 0x0016, 0x003e }, + { 0x0016, 0x003f }, + { 0x0016, 0x0040 }, + { 0x0016, 0x0041 }, + { 0x0016, 0x0042 }, + { 0x0016, 0x0043 }, + { 0x0016, 0x0044 }, + { 0x0016, 0x0045 }, + { 0x0016, 0x0046 }, + { 0x0016, 0x0047 }, + { 0x0016, 0x0048 }, + { 0x0016, 0x0049 }, + { 0x0016, 0x004a }, + { 0x0016, 0x004b }, + { 0x0016, 0x004c }, + { 0x0016, 0x004d }, + { 0x0016, 0x004e }, + { 0x0016, 0x004f }, + { 0x0016, 0x0050 }, + { 0x0016, 0x0051 }, + { 0x0016, 0x0052 }, + { 0x0016, 0x0053 }, + { 0x0016, 0x0054 }, + { 0x0016, 0x0055 }, + { 0x0016, 0x0056 }, + { 0x0016, 0x0057 }, + { 0x0016, 0x0058 }, + { 0x0016, 0x0059 }, + { 0x0016, 0x005a }, + { 0x0016, 0x005b }, + { 0x0016, 0x005c }, + { 0x0016, 0x005d }, + { 0x0016, 0x005e }, + { 0x0016, 0x005f }, + { 0x0016, 0x0060 }, + { 0x0016, 0x0061 }, + { 0x0016, 0x0062 }, + { 0x0016, 0x0063 }, + { 0x0016, 0x0064 }, + { 0x0016, 0x0065 }, + { 0x0016, 0x0066 }, + { 0x0016, 0x0067 }, + { 0x0016, 0x0068 }, + { 0x0016, 0x0069 }, + { 0x0016, 0x006a }, + { 0x0016, 0x006b }, + { 0x0016, 0x006c }, + { 0x0016, 0x006d }, + { 0x0016, 0x006e }, + { 0x0016, 0x006f }, + { 0x0016, 0x0070 }, + { 0x0016, 0x0071 }, + { 0x0016, 0x0072 }, + { 0x0016, 0x0073 }, + { 0x0016, 0x0074 }, + { 0x0016, 0x0075 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc12[289][2] = + { + { 0x0001, 0x0001 }, + { 0x0004, 0x0004 }, + { 0x0005, 0x0004 }, + { 0x0007, 0x0004 }, + { 0x0008, 0x0002 }, + { 0x000b, 0x0004 }, + { 0x000e, 0x0006 }, + { 0x0010, 0x0009 }, + { 0x0012, 0x0014 }, + { 0x0013, 0x001f }, + { 0x0016, 0x0000 }, + { 0x0016, 0x0001 }, + { 0x0016, 0x0002 }, + { 0x0016, 0x0003 }, + { 0x0016, 0x0004 }, + { 0x0016, 0x0005 }, + { 0x0016, 0x0006 }, + { 0x0004, 0x0005 }, + { 0x0004, 0x0006 }, + { 0x0005, 0x0005 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000d, 0x0006 }, + { 0x000f, 0x0008 }, + { 0x0011, 0x000c }, + { 0x0013, 0x0020 }, + { 0x0016, 0x0007 }, + { 0x0015, 0x0063 }, + { 0x0016, 0x0008 }, + { 0x0016, 0x0009 }, + { 0x0016, 0x000a }, + { 0x0016, 0x000b }, + { 0x0016, 0x000c }, + { 0x0005, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0005, 0x0007 }, + { 0x0006, 0x0004 }, + { 0x0008, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000d, 0x0007 }, + { 0x0010, 0x000a }, + { 0x0012, 0x0015 }, + { 0x0015, 0x0064 }, + { 0x0016, 0x000d }, + { 0x0016, 0x000e }, + { 0x0016, 0x000f }, + { 0x0016, 0x0010 }, + { 0x0016, 0x0011 }, + { 0x0016, 0x0012 }, + { 0x0016, 0x0013 }, + { 0x0006, 0x0005 }, + { 0x0006, 0x0006 }, + { 0x0006, 0x0007 }, + { 0x0008, 0x0005 }, + { 0x000a, 0x0005 }, + { 0x000c, 0x0005 }, + { 0x000e, 0x0007 }, + { 0x0010, 0x000b }, + { 0x0012, 0x0016 }, + { 0x0014, 0x0037 }, + { 0x0015, 0x0065 }, + { 0x0016, 0x0014 }, + { 0x0016, 0x0015 }, + { 0x0016, 0x0016 }, + { 0x0016, 0x0017 }, + { 0x0016, 0x0018 }, + { 0x0016, 0x0019 }, + { 0x0008, 0x0006 }, + { 0x0007, 0x0005 }, + { 0x0008, 0x0007 }, + { 0x000a, 0x0006 }, + { 0x000c, 0x0006 }, + { 0x000e, 0x0008 }, + { 0x0010, 0x000c }, + { 0x0011, 0x000d }, + { 0x0013, 0x0021 }, + { 0x0015, 0x0066 }, + { 0x0016, 0x001a }, + { 0x0016, 0x001b }, + { 0x0016, 0x001c }, + { 0x0016, 0x001d }, + { 0x0016, 0x001e }, + { 0x0016, 0x001f }, + { 0x0016, 0x0020 }, + { 0x000b, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000b, 0x0007 }, + { 0x000c, 0x0007 }, + { 0x000e, 0x0009 }, + { 0x000f, 0x0009 }, + { 0x0011, 0x000e }, + { 0x0013, 0x0022 }, + { 0x0015, 0x0067 }, + { 0x0015, 0x0068 }, + { 0x0016, 0x0021 }, + { 0x0016, 0x0022 }, + { 0x0016, 0x0023 }, + { 0x0016, 0x0024 }, + { 0x0016, 0x0025 }, + { 0x0016, 0x0026 }, + { 0x0016, 0x0027 }, + { 0x000e, 0x000a }, + { 0x000d, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x000e, 0x000b }, + { 0x000f, 0x000a }, + { 0x0011, 0x000f }, + { 0x0013, 0x0023 }, + { 0x0014, 0x0038 }, + { 0x0016, 0x0028 }, + { 0x0016, 0x0029 }, + { 0x0016, 0x002a }, + { 0x0016, 0x002b }, + { 0x0016, 0x002c }, + { 0x0016, 0x002d }, + { 0x0016, 0x002e }, + { 0x0016, 0x002f }, + { 0x0016, 0x0030 }, + { 0x0010, 0x000d }, + { 0x000f, 0x000b }, + { 0x0010, 0x000e }, + { 0x0010, 0x000f }, + { 0x0012, 0x0017 }, + { 0x0013, 0x0024 }, + { 0x0014, 0x0039 }, + { 0x0016, 0x0031 }, + { 0x0016, 0x0032 }, + { 0x0016, 0x0033 }, + { 0x0016, 0x0034 }, + { 0x0016, 0x0035 }, + { 0x0016, 0x0036 }, + { 0x0016, 0x0037 }, + { 0x0016, 0x0038 }, + { 0x0016, 0x0039 }, + { 0x0016, 0x003a }, + { 0x0013, 0x0025 }, + { 0x0011, 0x0010 }, + { 0x0011, 0x0011 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0014, 0x003a }, + { 0x0014, 0x003b }, + { 0x0016, 0x003b }, + { 0x0016, 0x003c }, + { 0x0016, 0x003d }, + { 0x0016, 0x003e }, + { 0x0016, 0x003f }, + { 0x0016, 0x0040 }, + { 0x0016, 0x0041 }, + { 0x0016, 0x0042 }, + { 0x0016, 0x0043 }, + { 0x0016, 0x0044 }, + { 0x0015, 0x0069 }, + { 0x0014, 0x003c }, + { 0x0014, 0x003d }, + { 0x0015, 0x006a }, + { 0x0015, 0x006b }, + { 0x0015, 0x006c }, + { 0x0016, 0x0045 }, + { 0x0016, 0x0046 }, + { 0x0016, 0x0047 }, + { 0x0016, 0x0048 }, + { 0x0016, 0x0049 }, + { 0x0016, 0x004a }, + { 0x0016, 0x004b }, + { 0x0016, 0x004c }, + { 0x0016, 0x004d }, + { 0x0016, 0x004e }, + { 0x0016, 0x004f }, + { 0x0016, 0x0050 }, + { 0x0016, 0x0051 }, + { 0x0015, 0x006d }, + { 0x0016, 0x0052 }, + { 0x0016, 0x0053 }, + { 0x0016, 0x0054 }, + { 0x0016, 0x0055 }, + { 0x0016, 0x0056 }, + { 0x0016, 0x0057 }, + { 0x0016, 0x0058 }, + { 0x0016, 0x0059 }, + { 0x0016, 0x005a }, + { 0x0016, 0x005b }, + { 0x0016, 0x005c }, + { 0x0016, 0x005d }, + { 0x0016, 0x005e }, + { 0x0016, 0x005f }, + { 0x0016, 0x0060 }, + { 0x0016, 0x0061 }, + { 0x0016, 0x0062 }, + { 0x0016, 0x0063 }, + { 0x0016, 0x0064 }, + { 0x0016, 0x0065 }, + { 0x0016, 0x0066 }, + { 0x0016, 0x0067 }, + { 0x0016, 0x0068 }, + { 0x0016, 0x0069 }, + { 0x0016, 0x006a }, + { 0x0016, 0x006b }, + { 0x0016, 0x006c }, + { 0x0016, 0x006d }, + { 0x0016, 0x006e }, + { 0x0016, 0x006f }, + { 0x0016, 0x0070 }, + { 0x0016, 0x0071 }, + { 0x0016, 0x0072 }, + { 0x0016, 0x0073 }, + { 0x0016, 0x0074 }, + { 0x0016, 0x0075 }, + { 0x0016, 0x0076 }, + { 0x0016, 0x0077 }, + { 0x0016, 0x0078 }, + { 0x0016, 0x0079 }, + { 0x0016, 0x007a }, + { 0x0016, 0x007b }, + { 0x0016, 0x007c }, + { 0x0016, 0x007d }, + { 0x0016, 0x007e }, + { 0x0016, 0x007f }, + { 0x0016, 0x0080 }, + { 0x0016, 0x0081 }, + { 0x0016, 0x0082 }, + { 0x0016, 0x0083 }, + { 0x0016, 0x0084 }, + { 0x0016, 0x0085 }, + { 0x0016, 0x0086 }, + { 0x0016, 0x0087 }, + { 0x0016, 0x0088 }, + { 0x0016, 0x0089 }, + { 0x0016, 0x008a }, + { 0x0016, 0x008b }, + { 0x0016, 0x008c }, + { 0x0016, 0x008d }, + { 0x0016, 0x008e }, + { 0x0016, 0x008f }, + { 0x0016, 0x0090 }, + { 0x0016, 0x0091 }, + { 0x0016, 0x0092 }, + { 0x0016, 0x0093 }, + { 0x0016, 0x0094 }, + { 0x0016, 0x0095 }, + { 0x0016, 0x0096 }, + { 0x0016, 0x0097 }, + { 0x0016, 0x0098 }, + { 0x0016, 0x0099 }, + { 0x0016, 0x009a }, + { 0x0016, 0x009b }, + { 0x0016, 0x009c }, + { 0x0016, 0x009d }, + { 0x0016, 0x009e }, + { 0x0016, 0x009f }, + { 0x0016, 0x00a0 }, + { 0x0016, 0x00a1 }, + { 0x0016, 0x00a2 }, + { 0x0016, 0x00a3 }, + { 0x0016, 0x00a4 }, + { 0x0016, 0x00a5 }, + { 0x0016, 0x00a6 }, + { 0x0016, 0x00a7 }, + { 0x0016, 0x00a8 }, + { 0x0016, 0x00a9 }, + { 0x0016, 0x00aa }, + { 0x0016, 0x00ab }, + { 0x0016, 0x00ac }, + { 0x0016, 0x00ad }, + { 0x0016, 0x00ae }, + { 0x0016, 0x00af }, + { 0x0016, 0x00b0 }, + { 0x0016, 0x00b1 }, + { 0x0016, 0x00b2 }, + { 0x0016, 0x00b3 }, + { 0x0016, 0x00b4 }, + { 0x0016, 0x00b5 }, + { 0x0016, 0x00b6 }, + { 0x0016, 0x00b7 }, + { 0x0016, 0x00b8 }, + { 0x0016, 0x00b9 }, + { 0x0016, 0x00ba }, + { 0x0016, 0x00bb }, + { 0x0016, 0x00bc }, + { 0x0016, 0x00bd }, + { 0x0016, 0x00be }, + { 0x0016, 0x00bf }, + { 0x0016, 0x00c0 }, + { 0x0016, 0x00c1 }, + { 0x0016, 0x00c2 }, + { 0x0016, 0x00c3 }, + { 0x0016, 0x00c4 }, + { 0x0016, 0x00c5 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc13[324][2] = + { + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0006, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x000a, 0x0005 }, + { 0x000c, 0x0007 }, + { 0x000e, 0x000b }, + { 0x0010, 0x0011 }, + { 0x0012, 0x002d }, + { 0x0015, 0x0000 }, + { 0x0014, 0x0035 }, + { 0x0015, 0x0001 }, + { 0x0015, 0x0002 }, + { 0x0015, 0x0003 }, + { 0x0015, 0x0004 }, + { 0x0015, 0x0005 }, + { 0x0004, 0x0008 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0009 }, + { 0x0004, 0x000a }, + { 0x0006, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0009, 0x0006 }, + { 0x000c, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x0010, 0x0012 }, + { 0x0011, 0x001a }, + { 0x0015, 0x0006 }, + { 0x0015, 0x0007 }, + { 0x0015, 0x0008 }, + { 0x0015, 0x0009 }, + { 0x0015, 0x000a }, + { 0x0015, 0x000b }, + { 0x0015, 0x000c }, + { 0x0005, 0x0007 }, + { 0x0004, 0x000b }, + { 0x0004, 0x000c }, + { 0x0005, 0x0008 }, + { 0x0006, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x000a, 0x0006 }, + { 0x000c, 0x0009 }, + { 0x000e, 0x000c }, + { 0x0010, 0x0013 }, + { 0x0012, 0x002e }, + { 0x0015, 0x000d }, + { 0x0015, 0x000e }, + { 0x0015, 0x000f }, + { 0x0015, 0x0010 }, + { 0x0015, 0x0011 }, + { 0x0015, 0x0012 }, + { 0x0015, 0x0013 }, + { 0x0005, 0x0009 }, + { 0x0004, 0x000d }, + { 0x0005, 0x000a }, + { 0x0006, 0x0007 }, + { 0x0007, 0x0005 }, + { 0x0009, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000d, 0x000a }, + { 0x000f, 0x000e }, + { 0x0010, 0x0014 }, + { 0x0011, 0x001b }, + { 0x0014, 0x0036 }, + { 0x0015, 0x0014 }, + { 0x0015, 0x0015 }, + { 0x0015, 0x0016 }, + { 0x0015, 0x0017 }, + { 0x0015, 0x0018 }, + { 0x0015, 0x0019 }, + { 0x0006, 0x0008 }, + { 0x0005, 0x000b }, + { 0x0006, 0x0009 }, + { 0x0007, 0x0006 }, + { 0x0009, 0x0008 }, + { 0x000a, 0x0007 }, + { 0x000c, 0x000a }, + { 0x000e, 0x000d }, + { 0x0010, 0x0015 }, + { 0x0011, 0x001c }, + { 0x0013, 0x0053 }, + { 0x0015, 0x001a }, + { 0x0015, 0x001b }, + { 0x0015, 0x001c }, + { 0x0015, 0x001d }, + { 0x0015, 0x001e }, + { 0x0015, 0x001f }, + { 0x0015, 0x0020 }, + { 0x0008, 0x0008 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0009 }, + { 0x0009, 0x0009 }, + { 0x000a, 0x0008 }, + { 0x000c, 0x000b }, + { 0x000d, 0x000b }, + { 0x000f, 0x000f }, + { 0x0010, 0x0016 }, + { 0x0011, 0x001d }, + { 0x0014, 0x0037 }, + { 0x0015, 0x0021 }, + { 0x0015, 0x0022 }, + { 0x0015, 0x0023 }, + { 0x0015, 0x0024 }, + { 0x0015, 0x0025 }, + { 0x0015, 0x0026 }, + { 0x0015, 0x0027 }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000b, 0x0009 }, + { 0x000c, 0x000c }, + { 0x000d, 0x000c }, + { 0x000f, 0x0010 }, + { 0x0010, 0x0017 }, + { 0x0012, 0x002f }, + { 0x0015, 0x0028 }, + { 0x0015, 0x0029 }, + { 0x0015, 0x002a }, + { 0x0015, 0x002b }, + { 0x0015, 0x002c }, + { 0x0015, 0x002d }, + { 0x0015, 0x002e }, + { 0x0015, 0x002f }, + { 0x0015, 0x0030 }, + { 0x000c, 0x000d }, + { 0x000c, 0x000e }, + { 0x000c, 0x000f }, + { 0x000d, 0x000d }, + { 0x000e, 0x000e }, + { 0x000f, 0x0011 }, + { 0x0010, 0x0018 }, + { 0x0011, 0x001e }, + { 0x0014, 0x0038 }, + { 0x0015, 0x0031 }, + { 0x0015, 0x0032 }, + { 0x0015, 0x0033 }, + { 0x0015, 0x0034 }, + { 0x0015, 0x0035 }, + { 0x0015, 0x0036 }, + { 0x0015, 0x0037 }, + { 0x0015, 0x0038 }, + { 0x0015, 0x0039 }, + { 0x000f, 0x0012 }, + { 0x000e, 0x000f }, + { 0x000e, 0x0010 }, + { 0x000e, 0x0011 }, + { 0x000f, 0x0013 }, + { 0x0010, 0x0019 }, + { 0x0011, 0x001f }, + { 0x0013, 0x0054 }, + { 0x0015, 0x003a }, + { 0x0014, 0x0039 }, + { 0x0015, 0x003b }, + { 0x0015, 0x003c }, + { 0x0015, 0x003d }, + { 0x0015, 0x003e }, + { 0x0015, 0x003f }, + { 0x0015, 0x0040 }, + { 0x0015, 0x0041 }, + { 0x0015, 0x0042 }, + { 0x0010, 0x001a }, + { 0x000f, 0x0014 }, + { 0x000f, 0x0015 }, + { 0x0010, 0x001b }, + { 0x0011, 0x0020 }, + { 0x0012, 0x0030 }, + { 0x0013, 0x0055 }, + { 0x0015, 0x0043 }, + { 0x0015, 0x0044 }, + { 0x0014, 0x003a }, + { 0x0015, 0x0045 }, + { 0x0015, 0x0046 }, + { 0x0015, 0x0047 }, + { 0x0015, 0x0048 }, + { 0x0015, 0x0049 }, + { 0x0015, 0x004a }, + { 0x0015, 0x004b }, + { 0x0015, 0x004c }, + { 0x0012, 0x0031 }, + { 0x0011, 0x0021 }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0012, 0x0032 }, + { 0x0015, 0x004d }, + { 0x0015, 0x004e }, + { 0x0015, 0x004f }, + { 0x0015, 0x0050 }, + { 0x0015, 0x0051 }, + { 0x0015, 0x0052 }, + { 0x0015, 0x0053 }, + { 0x0015, 0x0054 }, + { 0x0015, 0x0055 }, + { 0x0015, 0x0056 }, + { 0x0015, 0x0057 }, + { 0x0015, 0x0058 }, + { 0x0015, 0x0059 }, + { 0x0015, 0x005a }, + { 0x0014, 0x003b }, + { 0x0012, 0x0033 }, + { 0x0013, 0x0058 }, + { 0x0013, 0x0059 }, + { 0x0015, 0x005b }, + { 0x0015, 0x005c }, + { 0x0015, 0x005d }, + { 0x0015, 0x005e }, + { 0x0015, 0x005f }, + { 0x0015, 0x0060 }, + { 0x0015, 0x0061 }, + { 0x0015, 0x0062 }, + { 0x0015, 0x0063 }, + { 0x0015, 0x0064 }, + { 0x0015, 0x0065 }, + { 0x0015, 0x0066 }, + { 0x0015, 0x0067 }, + { 0x0015, 0x0068 }, + { 0x0015, 0x0069 }, + { 0x0014, 0x003c }, + { 0x0014, 0x003d }, + { 0x0014, 0x003e }, + { 0x0014, 0x003f }, + { 0x0014, 0x0040 }, + { 0x0014, 0x0041 }, + { 0x0014, 0x0042 }, + { 0x0014, 0x0043 }, + { 0x0014, 0x0044 }, + { 0x0014, 0x0045 }, + { 0x0014, 0x0046 }, + { 0x0014, 0x0047 }, + { 0x0014, 0x0048 }, + { 0x0014, 0x0049 }, + { 0x0014, 0x004a }, + { 0x0014, 0x004b }, + { 0x0014, 0x004c }, + { 0x0014, 0x004d }, + { 0x0014, 0x004e }, + { 0x0014, 0x004f }, + { 0x0014, 0x0050 }, + { 0x0014, 0x0051 }, + { 0x0014, 0x0052 }, + { 0x0014, 0x0053 }, + { 0x0014, 0x0054 }, + { 0x0014, 0x0055 }, + { 0x0014, 0x0056 }, + { 0x0014, 0x0057 }, + { 0x0014, 0x0058 }, + { 0x0014, 0x0059 }, + { 0x0014, 0x005a }, + { 0x0014, 0x005b }, + { 0x0014, 0x005c }, + { 0x0014, 0x005d }, + { 0x0014, 0x005e }, + { 0x0014, 0x005f }, + { 0x0014, 0x0060 }, + { 0x0014, 0x0061 }, + { 0x0014, 0x0062 }, + { 0x0014, 0x0063 }, + { 0x0014, 0x0064 }, + { 0x0014, 0x0065 }, + { 0x0014, 0x0066 }, + { 0x0014, 0x0067 }, + { 0x0014, 0x0068 }, + { 0x0014, 0x0069 }, + { 0x0014, 0x006a }, + { 0x0014, 0x006b }, + { 0x0014, 0x006c }, + { 0x0014, 0x006d }, + { 0x0014, 0x006e }, + { 0x0014, 0x006f }, + { 0x0014, 0x0070 }, + { 0x0014, 0x0071 }, + { 0x0014, 0x0072 }, + { 0x0014, 0x0073 }, + { 0x0014, 0x0074 }, + { 0x0014, 0x0075 }, + { 0x0014, 0x0076 }, + { 0x0014, 0x0077 }, + { 0x0014, 0x0078 }, + { 0x0014, 0x0079 }, + { 0x0014, 0x007a }, + { 0x0014, 0x007b }, + { 0x0014, 0x007c }, + { 0x0014, 0x007d }, + { 0x0014, 0x007e }, + { 0x0014, 0x007f }, + { 0x0014, 0x0080 }, + { 0x0014, 0x0081 }, + { 0x0014, 0x0082 }, + { 0x0014, 0x0083 }, + { 0x0014, 0x0084 }, + { 0x0014, 0x0085 }, + { 0x0014, 0x0086 }, + { 0x0014, 0x0087 }, + { 0x0014, 0x0088 }, + { 0x0014, 0x0089 }, + { 0x0014, 0x008a }, + { 0x0014, 0x008b }, + { 0x0014, 0x008c }, + { 0x0014, 0x008d }, + { 0x0014, 0x008e }, + { 0x0014, 0x008f }, + { 0x0014, 0x0090 }, + { 0x0014, 0x0091 }, + { 0x0014, 0x0092 }, + { 0x0014, 0x0093 }, + { 0x0014, 0x0094 }, + { 0x0014, 0x0095 }, + { 0x0014, 0x0096 }, + { 0x0014, 0x0097 }, + { 0x0014, 0x0098 }, + { 0x0014, 0x0099 }, + { 0x0014, 0x009a }, + { 0x0014, 0x009b }, + { 0x0014, 0x009c }, + { 0x0014, 0x009d }, + { 0x0014, 0x009e }, + { 0x0014, 0x009f }, + { 0x0014, 0x00a0 }, + { 0x0014, 0x00a1 }, + { 0x0014, 0x00a2 }, + { 0x0014, 0x00a3 }, + { 0x0014, 0x00a4 }, + { 0x0014, 0x00a5 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc14[400][2] = + { + { 0x0005, 0x0007 }, + { 0x0004, 0x0009 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0006, 0x0006 }, + { 0x0007, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000d, 0x000c }, + { 0x000f, 0x0013 }, + { 0x0010, 0x001b }, + { 0x0013, 0x0082 }, + { 0x0013, 0x0083 }, + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0014, 0x0006 }, + { 0x0004, 0x000a }, + { 0x0004, 0x000b }, + { 0x0004, 0x000c }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0006, 0x0007 }, + { 0x0008, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000c, 0x000a }, + { 0x000e, 0x000e }, + { 0x000f, 0x0014 }, + { 0x0011, 0x002a }, + { 0x0012, 0x004a }, + { 0x0013, 0x0084 }, + { 0x0014, 0x0007 }, + { 0x0014, 0x0008 }, + { 0x0014, 0x0009 }, + { 0x0014, 0x000a }, + { 0x0014, 0x000b }, + { 0x0014, 0x000c }, + { 0x0005, 0x000c }, + { 0x0004, 0x000d }, + { 0x0004, 0x000e }, + { 0x0005, 0x000d }, + { 0x0006, 0x0008 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0007 }, + { 0x000a, 0x0008 }, + { 0x000c, 0x000b }, + { 0x000e, 0x000f }, + { 0x000f, 0x0015 }, + { 0x0012, 0x004b }, + { 0x0013, 0x0085 }, + { 0x0014, 0x000d }, + { 0x0014, 0x000e }, + { 0x0014, 0x000f }, + { 0x0014, 0x0010 }, + { 0x0014, 0x0011 }, + { 0x0014, 0x0012 }, + { 0x0014, 0x0013 }, + { 0x0005, 0x000e }, + { 0x0004, 0x000f }, + { 0x0005, 0x000f }, + { 0x0005, 0x0010 }, + { 0x0006, 0x0009 }, + { 0x0008, 0x0008 }, + { 0x0009, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000d, 0x000d }, + { 0x000e, 0x0010 }, + { 0x0010, 0x001c }, + { 0x0011, 0x002b }, + { 0x0014, 0x0014 }, + { 0x0014, 0x0015 }, + { 0x0014, 0x0016 }, + { 0x0014, 0x0017 }, + { 0x0014, 0x0018 }, + { 0x0014, 0x0019 }, + { 0x0014, 0x001a }, + { 0x0014, 0x001b }, + { 0x0006, 0x000a }, + { 0x0005, 0x0011 }, + { 0x0006, 0x000b }, + { 0x0006, 0x000c }, + { 0x0007, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x000a, 0x0009 }, + { 0x000c, 0x000c }, + { 0x000e, 0x0011 }, + { 0x000f, 0x0016 }, + { 0x0010, 0x001d }, + { 0x0012, 0x004c }, + { 0x0014, 0x001c }, + { 0x0014, 0x001d }, + { 0x0014, 0x001e }, + { 0x0014, 0x001f }, + { 0x0014, 0x0020 }, + { 0x0014, 0x0021 }, + { 0x0014, 0x0022 }, + { 0x0014, 0x0023 }, + { 0x0007, 0x0009 }, + { 0x0006, 0x000d }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0009, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000b, 0x000a }, + { 0x000d, 0x000e }, + { 0x000f, 0x0017 }, + { 0x0011, 0x002c }, + { 0x0010, 0x001e }, + { 0x0014, 0x0024 }, + { 0x0014, 0x0025 }, + { 0x0014, 0x0026 }, + { 0x0014, 0x0027 }, + { 0x0014, 0x0028 }, + { 0x0014, 0x0029 }, + { 0x0014, 0x002a }, + { 0x0014, 0x002b }, + { 0x0014, 0x002c }, + { 0x0009, 0x000a }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0009, 0x000b }, + { 0x000a, 0x000b }, + { 0x000b, 0x000b }, + { 0x000d, 0x000f }, + { 0x000e, 0x0012 }, + { 0x000f, 0x0018 }, + { 0x0011, 0x002d }, + { 0x0011, 0x002e }, + { 0x0013, 0x0086 }, + { 0x0014, 0x002d }, + { 0x0014, 0x002e }, + { 0x0014, 0x002f }, + { 0x0014, 0x0030 }, + { 0x0014, 0x0031 }, + { 0x0014, 0x0032 }, + { 0x0014, 0x0033 }, + { 0x0014, 0x0034 }, + { 0x000b, 0x000c }, + { 0x000a, 0x000c }, + { 0x000a, 0x000d }, + { 0x000b, 0x000d }, + { 0x000c, 0x000d }, + { 0x000d, 0x0010 }, + { 0x000e, 0x0013 }, + { 0x000f, 0x0019 }, + { 0x0010, 0x001f }, + { 0x0013, 0x0087 }, + { 0x0014, 0x0035 }, + { 0x0014, 0x0036 }, + { 0x0013, 0x0088 }, + { 0x0014, 0x0037 }, + { 0x0014, 0x0038 }, + { 0x0014, 0x0039 }, + { 0x0014, 0x003a }, + { 0x0014, 0x003b }, + { 0x0014, 0x003c }, + { 0x0014, 0x003d }, + { 0x000d, 0x0011 }, + { 0x000c, 0x000e }, + { 0x000c, 0x000f }, + { 0x000d, 0x0012 }, + { 0x000d, 0x0013 }, + { 0x000e, 0x0014 }, + { 0x0010, 0x0020 }, + { 0x0010, 0x0021 }, + { 0x0012, 0x004d }, + { 0x0011, 0x002f }, + { 0x0014, 0x003e }, + { 0x0014, 0x003f }, + { 0x0014, 0x0040 }, + { 0x0014, 0x0041 }, + { 0x0014, 0x0042 }, + { 0x0014, 0x0043 }, + { 0x0014, 0x0044 }, + { 0x0014, 0x0045 }, + { 0x0014, 0x0046 }, + { 0x0014, 0x0047 }, + { 0x000f, 0x001a }, + { 0x000e, 0x0015 }, + { 0x000e, 0x0016 }, + { 0x000e, 0x0017 }, + { 0x000f, 0x001b }, + { 0x0011, 0x0030 }, + { 0x0011, 0x0031 }, + { 0x0013, 0x0089 }, + { 0x0013, 0x008a }, + { 0x0013, 0x008b }, + { 0x0014, 0x0048 }, + { 0x0014, 0x0049 }, + { 0x0014, 0x004a }, + { 0x0014, 0x004b }, + { 0x0014, 0x004c }, + { 0x0014, 0x004d }, + { 0x0014, 0x004e }, + { 0x0014, 0x004f }, + { 0x0014, 0x0050 }, + { 0x0014, 0x0051 }, + { 0x0010, 0x0022 }, + { 0x0010, 0x0023 }, + { 0x0010, 0x0024 }, + { 0x0010, 0x0025 }, + { 0x0011, 0x0032 }, + { 0x0011, 0x0033 }, + { 0x0012, 0x004e }, + { 0x0012, 0x004f }, + { 0x0014, 0x0052 }, + { 0x0013, 0x008c }, + { 0x0013, 0x008d }, + { 0x0014, 0x0053 }, + { 0x0014, 0x0054 }, + { 0x0014, 0x0055 }, + { 0x0014, 0x0056 }, + { 0x0014, 0x0057 }, + { 0x0014, 0x0058 }, + { 0x0014, 0x0059 }, + { 0x0014, 0x005a }, + { 0x0014, 0x005b }, + { 0x0011, 0x0034 }, + { 0x0011, 0x0035 }, + { 0x0012, 0x0050 }, + { 0x0012, 0x0051 }, + { 0x0013, 0x008e }, + { 0x0014, 0x005c }, + { 0x0014, 0x005d }, + { 0x0014, 0x005e }, + { 0x0014, 0x005f }, + { 0x0014, 0x0060 }, + { 0x0014, 0x0061 }, + { 0x0014, 0x0062 }, + { 0x0014, 0x0063 }, + { 0x0014, 0x0064 }, + { 0x0014, 0x0065 }, + { 0x0014, 0x0066 }, + { 0x0014, 0x0067 }, + { 0x0014, 0x0068 }, + { 0x0014, 0x0069 }, + { 0x0014, 0x006a }, + { 0x0012, 0x0052 }, + { 0x0013, 0x008f }, + { 0x0013, 0x0090 }, + { 0x0014, 0x006b }, + { 0x0013, 0x0091 }, + { 0x0014, 0x006c }, + { 0x0014, 0x006d }, + { 0x0014, 0x006e }, + { 0x0014, 0x006f }, + { 0x0014, 0x0070 }, + { 0x0014, 0x0071 }, + { 0x0014, 0x0072 }, + { 0x0014, 0x0073 }, + { 0x0014, 0x0074 }, + { 0x0014, 0x0075 }, + { 0x0014, 0x0076 }, + { 0x0014, 0x0077 }, + { 0x0014, 0x0078 }, + { 0x0014, 0x0079 }, + { 0x0014, 0x007a }, + { 0x0014, 0x007b }, + { 0x0014, 0x007c }, + { 0x0013, 0x0092 }, + { 0x0012, 0x0053 }, + { 0x0014, 0x007d }, + { 0x0014, 0x007e }, + { 0x0014, 0x007f }, + { 0x0014, 0x0080 }, + { 0x0014, 0x0081 }, + { 0x0014, 0x0082 }, + { 0x0014, 0x0083 }, + { 0x0014, 0x0084 }, + { 0x0014, 0x0085 }, + { 0x0014, 0x0086 }, + { 0x0014, 0x0087 }, + { 0x0014, 0x0088 }, + { 0x0014, 0x0089 }, + { 0x0014, 0x008a }, + { 0x0014, 0x008b }, + { 0x0014, 0x008c }, + { 0x0014, 0x008d }, + { 0x0014, 0x008e }, + { 0x0013, 0x0093 }, + { 0x0014, 0x008f }, + { 0x0014, 0x0090 }, + { 0x0014, 0x0091 }, + { 0x0014, 0x0092 }, + { 0x0014, 0x0093 }, + { 0x0014, 0x0094 }, + { 0x0014, 0x0095 }, + { 0x0014, 0x0096 }, + { 0x0014, 0x0097 }, + { 0x0014, 0x0098 }, + { 0x0014, 0x0099 }, + { 0x0014, 0x009a }, + { 0x0014, 0x009b }, + { 0x0014, 0x009c }, + { 0x0014, 0x009d }, + { 0x0014, 0x009e }, + { 0x0014, 0x009f }, + { 0x0014, 0x00a0 }, + { 0x0014, 0x00a1 }, + { 0x0014, 0x00a2 }, + { 0x0014, 0x00a3 }, + { 0x0014, 0x00a4 }, + { 0x0014, 0x00a5 }, + { 0x0014, 0x00a6 }, + { 0x0014, 0x00a7 }, + { 0x0014, 0x00a8 }, + { 0x0014, 0x00a9 }, + { 0x0014, 0x00aa }, + { 0x0014, 0x00ab }, + { 0x0014, 0x00ac }, + { 0x0014, 0x00ad }, + { 0x0014, 0x00ae }, + { 0x0014, 0x00af }, + { 0x0014, 0x00b0 }, + { 0x0014, 0x00b1 }, + { 0x0014, 0x00b2 }, + { 0x0014, 0x00b3 }, + { 0x0014, 0x00b4 }, + { 0x0014, 0x00b5 }, + { 0x0014, 0x00b6 }, + { 0x0014, 0x00b7 }, + { 0x0014, 0x00b8 }, + { 0x0014, 0x00b9 }, + { 0x0014, 0x00ba }, + { 0x0014, 0x00bb }, + { 0x0014, 0x00bc }, + { 0x0014, 0x00bd }, + { 0x0014, 0x00be }, + { 0x0014, 0x00bf }, + { 0x0014, 0x00c0 }, + { 0x0014, 0x00c1 }, + { 0x0014, 0x00c2 }, + { 0x0014, 0x00c3 }, + { 0x0014, 0x00c4 }, + { 0x0014, 0x00c5 }, + { 0x0014, 0x00c6 }, + { 0x0014, 0x00c7 }, + { 0x0014, 0x00c8 }, + { 0x0014, 0x00c9 }, + { 0x0014, 0x00ca }, + { 0x0014, 0x00cb }, + { 0x0014, 0x00cc }, + { 0x0014, 0x00cd }, + { 0x0014, 0x00ce }, + { 0x0014, 0x00cf }, + { 0x0014, 0x00d0 }, + { 0x0014, 0x00d1 }, + { 0x0014, 0x00d2 }, + { 0x0014, 0x00d3 }, + { 0x0014, 0x00d4 }, + { 0x0014, 0x00d5 }, + { 0x0014, 0x00d6 }, + { 0x0014, 0x00d7 }, + { 0x0014, 0x00d8 }, + { 0x0014, 0x00d9 }, + { 0x0014, 0x00da }, + { 0x0014, 0x00db }, + { 0x0014, 0x00dc }, + { 0x0014, 0x00dd }, + { 0x0014, 0x00de }, + { 0x0014, 0x00df }, + { 0x0014, 0x00e0 }, + { 0x0014, 0x00e1 }, + { 0x0014, 0x00e2 }, + { 0x0014, 0x00e3 }, + { 0x0014, 0x00e4 }, + { 0x0014, 0x00e5 }, + { 0x0014, 0x00e6 }, + { 0x0014, 0x00e7 }, + { 0x0014, 0x00e8 }, + { 0x0014, 0x00e9 }, + { 0x0014, 0x00ea }, + { 0x0014, 0x00eb }, + { 0x0014, 0x00ec }, + { 0x0014, 0x00ed }, + { 0x0014, 0x00ee }, + { 0x0014, 0x00ef }, + { 0x0014, 0x00f0 }, + { 0x0014, 0x00f1 }, + { 0x0014, 0x00f2 }, + { 0x0014, 0x00f3 }, + { 0x0014, 0x00f4 }, + { 0x0014, 0x00f5 }, + { 0x0014, 0x00f6 }, + { 0x0014, 0x00f7 }, + { 0x0014, 0x00f8 }, + { 0x0014, 0x00f9 }, + { 0x0014, 0x00fa }, + { 0x0014, 0x00fb }, + { 0x0014, 0x00fc }, + { 0x0014, 0x00fd }, + { 0x0014, 0x00fe }, + { 0x0014, 0x00ff }, + { 0x0014, 0x0100 }, + { 0x0014, 0x0101 }, + { 0x0014, 0x0102 }, + { 0x0014, 0x0103 }, + }; + +const uint16_t c_aauiLCLDHuffEnc15[576][2] = + { + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0006, 0x0009 }, + { 0x0006, 0x000a }, + { 0x0007, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0009, 0x0008 }, + { 0x000b, 0x000b }, + { 0x000d, 0x000e }, + { 0x000e, 0x0011 }, + { 0x000f, 0x001a }, + { 0x0012, 0x006e }, + { 0x0014, 0x0000 }, + { 0x0013, 0x00cc }, + { 0x0014, 0x0001 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0014, 0x0006 }, + { 0x0014, 0x0007 }, + { 0x0014, 0x0008 }, + { 0x0014, 0x0009 }, + { 0x0005, 0x000d }, + { 0x0004, 0x000c }, + { 0x0004, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0006, 0x000b }, + { 0x0007, 0x0009 }, + { 0x0008, 0x000a }, + { 0x000a, 0x000a }, + { 0x000c, 0x000c }, + { 0x000d, 0x000f }, + { 0x000f, 0x001b }, + { 0x0011, 0x003d }, + { 0x0011, 0x003e }, + { 0x0013, 0x00cd }, + { 0x0014, 0x000a }, + { 0x0014, 0x000b }, + { 0x0014, 0x000c }, + { 0x0014, 0x000d }, + { 0x0014, 0x000e }, + { 0x0014, 0x000f }, + { 0x0014, 0x0010 }, + { 0x0014, 0x0011 }, + { 0x0014, 0x0012 }, + { 0x0005, 0x0010 }, + { 0x0004, 0x000e }, + { 0x0004, 0x000f }, + { 0x0005, 0x0011 }, + { 0x0005, 0x0012 }, + { 0x0006, 0x000c }, + { 0x0007, 0x000a }, + { 0x0009, 0x0009 }, + { 0x000a, 0x000b }, + { 0x000c, 0x000d }, + { 0x000e, 0x0012 }, + { 0x0010, 0x0027 }, + { 0x0011, 0x003f }, + { 0x0012, 0x006f }, + { 0x0014, 0x0013 }, + { 0x0014, 0x0014 }, + { 0x0014, 0x0015 }, + { 0x0014, 0x0016 }, + { 0x0014, 0x0017 }, + { 0x0014, 0x0018 }, + { 0x0014, 0x0019 }, + { 0x0014, 0x001a }, + { 0x0014, 0x001b }, + { 0x0014, 0x001c }, + { 0x0006, 0x000d }, + { 0x0005, 0x0013 }, + { 0x0005, 0x0014 }, + { 0x0005, 0x0015 }, + { 0x0006, 0x000e }, + { 0x0007, 0x000b }, + { 0x0008, 0x000b }, + { 0x0009, 0x000a }, + { 0x000b, 0x000c }, + { 0x000c, 0x000e }, + { 0x000e, 0x0013 }, + { 0x000f, 0x001c }, + { 0x0011, 0x0040 }, + { 0x0012, 0x0070 }, + { 0x0014, 0x001d }, + { 0x0014, 0x001e }, + { 0x0014, 0x001f }, + { 0x0014, 0x0020 }, + { 0x0014, 0x0021 }, + { 0x0014, 0x0022 }, + { 0x0014, 0x0023 }, + { 0x0014, 0x0024 }, + { 0x0014, 0x0025 }, + { 0x0014, 0x0026 }, + { 0x0006, 0x000f }, + { 0x0005, 0x0016 }, + { 0x0005, 0x0017 }, + { 0x0006, 0x0010 }, + { 0x0006, 0x0011 }, + { 0x0007, 0x000c }, + { 0x0009, 0x000b }, + { 0x000a, 0x000c }, + { 0x000b, 0x000d }, + { 0x000d, 0x0010 }, + { 0x000e, 0x0014 }, + { 0x0010, 0x0028 }, + { 0x0011, 0x0041 }, + { 0x0013, 0x00ce }, + { 0x0014, 0x0027 }, + { 0x0014, 0x0028 }, + { 0x0014, 0x0029 }, + { 0x0014, 0x002a }, + { 0x0014, 0x002b }, + { 0x0014, 0x002c }, + { 0x0014, 0x002d }, + { 0x0014, 0x002e }, + { 0x0014, 0x002f }, + { 0x0014, 0x0030 }, + { 0x0007, 0x000d }, + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0008, 0x000c }, + { 0x0009, 0x000c }, + { 0x000b, 0x000e }, + { 0x000c, 0x000f }, + { 0x000e, 0x0015 }, + { 0x0010, 0x0029 }, + { 0x0011, 0x0042 }, + { 0x0014, 0x0031 }, + { 0x0014, 0x0032 }, + { 0x0014, 0x0033 }, + { 0x0014, 0x0034 }, + { 0x0014, 0x0035 }, + { 0x0014, 0x0036 }, + { 0x0014, 0x0037 }, + { 0x0014, 0x0038 }, + { 0x0014, 0x0039 }, + { 0x0014, 0x003a }, + { 0x0014, 0x003b }, + { 0x0014, 0x003c }, + { 0x0008, 0x000d }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0008, 0x000e }, + { 0x0009, 0x000d }, + { 0x0009, 0x000e }, + { 0x000b, 0x000f }, + { 0x000c, 0x0010 }, + { 0x000d, 0x0011 }, + { 0x000f, 0x001d }, + { 0x0010, 0x002a }, + { 0x0011, 0x0043 }, + { 0x0014, 0x003d }, + { 0x0013, 0x00cf }, + { 0x0014, 0x003e }, + { 0x0014, 0x003f }, + { 0x0014, 0x0040 }, + { 0x0014, 0x0041 }, + { 0x0014, 0x0042 }, + { 0x0014, 0x0043 }, + { 0x0014, 0x0044 }, + { 0x0014, 0x0045 }, + { 0x0014, 0x0046 }, + { 0x0014, 0x0047 }, + { 0x0009, 0x000f }, + { 0x0008, 0x000f }, + { 0x0009, 0x0010 }, + { 0x0009, 0x0011 }, + { 0x000a, 0x000d }, + { 0x000b, 0x0010 }, + { 0x000c, 0x0011 }, + { 0x000d, 0x0012 }, + { 0x000e, 0x0016 }, + { 0x0010, 0x002b }, + { 0x0011, 0x0044 }, + { 0x0012, 0x0071 }, + { 0x0014, 0x0048 }, + { 0x0014, 0x0049 }, + { 0x0014, 0x004a }, + { 0x0014, 0x004b }, + { 0x0014, 0x004c }, + { 0x0014, 0x004d }, + { 0x0014, 0x004e }, + { 0x0014, 0x004f }, + { 0x0014, 0x0050 }, + { 0x0014, 0x0051 }, + { 0x0014, 0x0052 }, + { 0x0014, 0x0053 }, + { 0x000b, 0x0011 }, + { 0x000a, 0x000e }, + { 0x000a, 0x000f }, + { 0x000b, 0x0012 }, + { 0x000b, 0x0013 }, + { 0x000c, 0x0012 }, + { 0x000d, 0x0013 }, + { 0x000e, 0x0017 }, + { 0x0010, 0x002c }, + { 0x0012, 0x0072 }, + { 0x0011, 0x0045 }, + { 0x0013, 0x00d0 }, + { 0x0013, 0x00d1 }, + { 0x0014, 0x0054 }, + { 0x0014, 0x0055 }, + { 0x0014, 0x0056 }, + { 0x0014, 0x0057 }, + { 0x0014, 0x0058 }, + { 0x0014, 0x0059 }, + { 0x0014, 0x005a }, + { 0x0014, 0x005b }, + { 0x0014, 0x005c }, + { 0x0014, 0x005d }, + { 0x0014, 0x005e }, + { 0x000c, 0x0013 }, + { 0x000c, 0x0014 }, + { 0x000c, 0x0015 }, + { 0x000d, 0x0014 }, + { 0x000d, 0x0015 }, + { 0x000e, 0x0018 }, + { 0x000f, 0x001e }, + { 0x0010, 0x002d }, + { 0x0011, 0x0046 }, + { 0x0011, 0x0047 }, + { 0x0011, 0x0048 }, + { 0x0014, 0x005f }, + { 0x0014, 0x0060 }, + { 0x0014, 0x0061 }, + { 0x0014, 0x0062 }, + { 0x0014, 0x0063 }, + { 0x0014, 0x0064 }, + { 0x0014, 0x0065 }, + { 0x0014, 0x0066 }, + { 0x0014, 0x0067 }, + { 0x0014, 0x0068 }, + { 0x0014, 0x0069 }, + { 0x0014, 0x006a }, + { 0x0014, 0x006b }, + { 0x000e, 0x0019 }, + { 0x000d, 0x0016 }, + { 0x000d, 0x0017 }, + { 0x000e, 0x001a }, + { 0x000e, 0x001b }, + { 0x000f, 0x001f }, + { 0x0010, 0x002e }, + { 0x0011, 0x0049 }, + { 0x0012, 0x0073 }, + { 0x0014, 0x006c }, + { 0x0014, 0x006d }, + { 0x0014, 0x006e }, + { 0x0014, 0x006f }, + { 0x0014, 0x0070 }, + { 0x0014, 0x0071 }, + { 0x0014, 0x0072 }, + { 0x0014, 0x0073 }, + { 0x0014, 0x0074 }, + { 0x0014, 0x0075 }, + { 0x0014, 0x0076 }, + { 0x0014, 0x0077 }, + { 0x0014, 0x0078 }, + { 0x0014, 0x0079 }, + { 0x0014, 0x007a }, + { 0x0010, 0x002f }, + { 0x000f, 0x0020 }, + { 0x0010, 0x0030 }, + { 0x000f, 0x0021 }, + { 0x0010, 0x0031 }, + { 0x0011, 0x004a }, + { 0x0011, 0x004b }, + { 0x0012, 0x0074 }, + { 0x0014, 0x007b }, + { 0x0014, 0x007c }, + { 0x0013, 0x00d2 }, + { 0x0014, 0x007d }, + { 0x0014, 0x007e }, + { 0x0014, 0x007f }, + { 0x0014, 0x0080 }, + { 0x0014, 0x0081 }, + { 0x0014, 0x0082 }, + { 0x0014, 0x0083 }, + { 0x0014, 0x0084 }, + { 0x0014, 0x0085 }, + { 0x0014, 0x0086 }, + { 0x0014, 0x0087 }, + { 0x0014, 0x0088 }, + { 0x0014, 0x0089 }, + { 0x0012, 0x0075 }, + { 0x0010, 0x0032 }, + { 0x0010, 0x0033 }, + { 0x0011, 0x004c }, + { 0x0011, 0x004d }, + { 0x0013, 0x00d3 }, + { 0x0013, 0x00d4 }, + { 0x0012, 0x0076 }, + { 0x0013, 0x00d5 }, + { 0x0014, 0x008a }, + { 0x0014, 0x008b }, + { 0x0014, 0x008c }, + { 0x0014, 0x008d }, + { 0x0014, 0x008e }, + { 0x0014, 0x008f }, + { 0x0014, 0x0090 }, + { 0x0014, 0x0091 }, + { 0x0014, 0x0092 }, + { 0x0014, 0x0093 }, + { 0x0014, 0x0094 }, + { 0x0014, 0x0095 }, + { 0x0014, 0x0096 }, + { 0x0014, 0x0097 }, + { 0x0014, 0x0098 }, + { 0x0013, 0x00d6 }, + { 0x0013, 0x00d7 }, + { 0x0012, 0x0077 }, + { 0x0012, 0x0078 }, + { 0x0014, 0x0099 }, + { 0x0014, 0x009a }, + { 0x0013, 0x00d8 }, + { 0x0014, 0x009b }, + { 0x0014, 0x009c }, + { 0x0014, 0x009d }, + { 0x0014, 0x009e }, + { 0x0014, 0x009f }, + { 0x0014, 0x00a0 }, + { 0x0014, 0x00a1 }, + { 0x0014, 0x00a2 }, + { 0x0014, 0x00a3 }, + { 0x0014, 0x00a4 }, + { 0x0014, 0x00a5 }, + { 0x0014, 0x00a6 }, + { 0x0014, 0x00a7 }, + { 0x0014, 0x00a8 }, + { 0x0014, 0x00a9 }, + { 0x0014, 0x00aa }, + { 0x0014, 0x00ab }, + { 0x0014, 0x00ac }, + { 0x0014, 0x00ad }, + { 0x0014, 0x00ae }, + { 0x0014, 0x00af }, + { 0x0012, 0x0079 }, + { 0x0014, 0x00b0 }, + { 0x0014, 0x00b1 }, + { 0x0014, 0x00b2 }, + { 0x0014, 0x00b3 }, + { 0x0014, 0x00b4 }, + { 0x0014, 0x00b5 }, + { 0x0014, 0x00b6 }, + { 0x0014, 0x00b7 }, + { 0x0014, 0x00b8 }, + { 0x0014, 0x00b9 }, + { 0x0014, 0x00ba }, + { 0x0014, 0x00bb }, + { 0x0014, 0x00bc }, + { 0x0014, 0x00bd }, + { 0x0014, 0x00be }, + { 0x0014, 0x00bf }, + { 0x0014, 0x00c0 }, + { 0x0014, 0x00c1 }, + { 0x0014, 0x00c2 }, + { 0x0014, 0x00c3 }, + { 0x0014, 0x00c4 }, + { 0x0014, 0x00c5 }, + { 0x0014, 0x00c6 }, + { 0x0013, 0x00d9 }, + { 0x0013, 0x00da }, + { 0x0014, 0x00c7 }, + { 0x0014, 0x00c8 }, + { 0x0014, 0x00c9 }, + { 0x0014, 0x00ca }, + { 0x0014, 0x00cb }, + { 0x0014, 0x00cc }, + { 0x0014, 0x00cd }, + { 0x0014, 0x00ce }, + { 0x0014, 0x00cf }, + { 0x0014, 0x00d0 }, + { 0x0014, 0x00d1 }, + { 0x0014, 0x00d2 }, + { 0x0014, 0x00d3 }, + { 0x0014, 0x00d4 }, + { 0x0014, 0x00d5 }, + { 0x0014, 0x00d6 }, + { 0x0014, 0x00d7 }, + { 0x0014, 0x00d8 }, + { 0x0014, 0x00d9 }, + { 0x0014, 0x00da }, + { 0x0014, 0x00db }, + { 0x0014, 0x00dc }, + { 0x0014, 0x00dd }, + { 0x0014, 0x00de }, + { 0x0014, 0x00df }, + { 0x0014, 0x00e0 }, + { 0x0014, 0x00e1 }, + { 0x0014, 0x00e2 }, + { 0x0014, 0x00e3 }, + { 0x0014, 0x00e4 }, + { 0x0014, 0x00e5 }, + { 0x0014, 0x00e6 }, + { 0x0014, 0x00e7 }, + { 0x0014, 0x00e8 }, + { 0x0014, 0x00e9 }, + { 0x0014, 0x00ea }, + { 0x0014, 0x00eb }, + { 0x0014, 0x00ec }, + { 0x0014, 0x00ed }, + { 0x0014, 0x00ee }, + { 0x0014, 0x00ef }, + { 0x0014, 0x00f0 }, + { 0x0014, 0x00f1 }, + { 0x0014, 0x00f2 }, + { 0x0014, 0x00f3 }, + { 0x0014, 0x00f4 }, + { 0x0014, 0x00f5 }, + { 0x0014, 0x00f6 }, + { 0x0014, 0x00f7 }, + { 0x0014, 0x00f8 }, + { 0x0014, 0x00f9 }, + { 0x0014, 0x00fa }, + { 0x0014, 0x00fb }, + { 0x0014, 0x00fc }, + { 0x0014, 0x00fd }, + { 0x0014, 0x00fe }, + { 0x0014, 0x00ff }, + { 0x0014, 0x0100 }, + { 0x0014, 0x0101 }, + { 0x0014, 0x0102 }, + { 0x0014, 0x0103 }, + { 0x0014, 0x0104 }, + { 0x0014, 0x0105 }, + { 0x0014, 0x0106 }, + { 0x0014, 0x0107 }, + { 0x0014, 0x0108 }, + { 0x0014, 0x0109 }, + { 0x0014, 0x010a }, + { 0x0014, 0x010b }, + { 0x0014, 0x010c }, + { 0x0014, 0x010d }, + { 0x0014, 0x010e }, + { 0x0014, 0x010f }, + { 0x0014, 0x0110 }, + { 0x0014, 0x0111 }, + { 0x0014, 0x0112 }, + { 0x0014, 0x0113 }, + { 0x0014, 0x0114 }, + { 0x0014, 0x0115 }, + { 0x0014, 0x0116 }, + { 0x0014, 0x0117 }, + { 0x0014, 0x0118 }, + { 0x0014, 0x0119 }, + { 0x0014, 0x011a }, + { 0x0014, 0x011b }, + { 0x0014, 0x011c }, + { 0x0014, 0x011d }, + { 0x0014, 0x011e }, + { 0x0014, 0x011f }, + { 0x0014, 0x0120 }, + { 0x0014, 0x0121 }, + { 0x0014, 0x0122 }, + { 0x0014, 0x0123 }, + { 0x0014, 0x0124 }, + { 0x0014, 0x0125 }, + { 0x0014, 0x0126 }, + { 0x0014, 0x0127 }, + { 0x0014, 0x0128 }, + { 0x0014, 0x0129 }, + { 0x0014, 0x012a }, + { 0x0014, 0x012b }, + { 0x0014, 0x012c }, + { 0x0014, 0x012d }, + { 0x0014, 0x012e }, + { 0x0014, 0x012f }, + { 0x0014, 0x0130 }, + { 0x0014, 0x0131 }, + { 0x0014, 0x0132 }, + { 0x0014, 0x0133 }, + { 0x0014, 0x0134 }, + { 0x0014, 0x0135 }, + { 0x0014, 0x0136 }, + { 0x0014, 0x0137 }, + { 0x0014, 0x0138 }, + { 0x0014, 0x0139 }, + { 0x0014, 0x013a }, + { 0x0014, 0x013b }, + { 0x0014, 0x013c }, + { 0x0014, 0x013d }, + { 0x0014, 0x013e }, + { 0x0014, 0x013f }, + { 0x0014, 0x0140 }, + { 0x0014, 0x0141 }, + { 0x0014, 0x0142 }, + { 0x0014, 0x0143 }, + { 0x0014, 0x0144 }, + { 0x0014, 0x0145 }, + { 0x0014, 0x0146 }, + { 0x0014, 0x0147 }, + { 0x0014, 0x0148 }, + { 0x0014, 0x0149 }, + { 0x0014, 0x014a }, + { 0x0014, 0x014b }, + { 0x0014, 0x014c }, + { 0x0014, 0x014d }, + { 0x0014, 0x014e }, + { 0x0014, 0x014f }, + { 0x0014, 0x0150 }, + { 0x0014, 0x0151 }, + { 0x0014, 0x0152 }, + { 0x0014, 0x0153 }, + { 0x0014, 0x0154 }, + { 0x0014, 0x0155 }, + { 0x0014, 0x0156 }, + { 0x0014, 0x0157 }, + { 0x0014, 0x0158 }, + { 0x0014, 0x0159 }, + { 0x0014, 0x015a }, + { 0x0014, 0x015b }, + { 0x0014, 0x015c }, + { 0x0014, 0x015d }, + { 0x0014, 0x015e }, + { 0x0014, 0x015f }, + { 0x0014, 0x0160 }, + { 0x0014, 0x0161 }, + { 0x0014, 0x0162 }, + { 0x0014, 0x0163 }, + { 0x0014, 0x0164 }, + { 0x0014, 0x0165 }, + { 0x0014, 0x0166 }, + { 0x0014, 0x0167 }, + { 0x0014, 0x0168 }, + { 0x0014, 0x0169 }, + { 0x0014, 0x016a }, + { 0x0014, 0x016b }, + { 0x0014, 0x016c }, + { 0x0014, 0x016d }, + { 0x0014, 0x016e }, + { 0x0014, 0x016f }, + { 0x0014, 0x0170 }, + { 0x0014, 0x0171 }, + { 0x0014, 0x0172 }, + { 0x0014, 0x0173 }, + { 0x0014, 0x0174 }, + { 0x0014, 0x0175 }, + { 0x0014, 0x0176 }, + { 0x0014, 0x0177 }, + { 0x0014, 0x0178 }, + { 0x0014, 0x0179 }, + { 0x0014, 0x017a }, + { 0x0014, 0x017b }, + { 0x0014, 0x017c }, + { 0x0014, 0x017d }, + { 0x0014, 0x017e }, + { 0x0014, 0x017f }, + { 0x0014, 0x0180 }, + { 0x0014, 0x0181 }, + { 0x0014, 0x0182 }, + { 0x0014, 0x0183 }, + { 0x0014, 0x0184 }, + { 0x0014, 0x0185 }, + { 0x0014, 0x0186 }, + { 0x0014, 0x0187 }, + { 0x0014, 0x0188 }, + { 0x0014, 0x0189 }, + { 0x0014, 0x018a }, + { 0x0014, 0x018b }, + { 0x0014, 0x018c }, + { 0x0014, 0x018d }, + { 0x0014, 0x018e }, + { 0x0014, 0x018f }, + { 0x0014, 0x0190 }, + { 0x0014, 0x0191 }, + { 0x0014, 0x0192 }, + { 0x0014, 0x0193 }, + { 0x0014, 0x0194 }, + { 0x0014, 0x0195 }, + { 0x0014, 0x0196 }, + { 0x0014, 0x0197 }, + { 0x0013, 0x00db }, + }; + +const uint16_t c_aauiLCLDHuffEnc16[729][2] = + { + { 0x0006, 0x000d }, + { 0x0005, 0x0010 }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0006, 0x0010 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0008, 0x000a }, + { 0x0009, 0x000b }, + { 0x000b, 0x000d }, + { 0x000c, 0x000e }, + { 0x000e, 0x0016 }, + { 0x0010, 0x002d }, + { 0x0011, 0x0051 }, + { 0x0012, 0x008c }, + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0014, 0x0006 }, + { 0x0014, 0x0007 }, + { 0x0014, 0x0008 }, + { 0x0014, 0x0009 }, + { 0x0014, 0x000a }, + { 0x0014, 0x000b }, + { 0x0005, 0x0011 }, + { 0x0004, 0x000f }, + { 0x0005, 0x0012 }, + { 0x0005, 0x0013 }, + { 0x0005, 0x0014 }, + { 0x0006, 0x0011 }, + { 0x0006, 0x0012 }, + { 0x0007, 0x000c }, + { 0x0008, 0x000b }, + { 0x000a, 0x000c }, + { 0x000b, 0x000e }, + { 0x000d, 0x0010 }, + { 0x000e, 0x0017 }, + { 0x000f, 0x001c }, + { 0x0013, 0x010b }, + { 0x0013, 0x010c }, + { 0x0014, 0x000c }, + { 0x0014, 0x000d }, + { 0x0014, 0x000e }, + { 0x0014, 0x000f }, + { 0x0014, 0x0010 }, + { 0x0014, 0x0011 }, + { 0x0014, 0x0012 }, + { 0x0014, 0x0013 }, + { 0x0014, 0x0014 }, + { 0x0014, 0x0015 }, + { 0x0014, 0x0016 }, + { 0x0006, 0x0013 }, + { 0x0005, 0x0015 }, + { 0x0005, 0x0016 }, + { 0x0005, 0x0017 }, + { 0x0005, 0x0018 }, + { 0x0006, 0x0014 }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0009, 0x000c }, + { 0x000a, 0x000d }, + { 0x000c, 0x000f }, + { 0x000d, 0x0011 }, + { 0x000f, 0x001d }, + { 0x0011, 0x0052 }, + { 0x0012, 0x008d }, + { 0x0012, 0x008e }, + { 0x0014, 0x0017 }, + { 0x0014, 0x0018 }, + { 0x0014, 0x0019 }, + { 0x0014, 0x001a }, + { 0x0014, 0x001b }, + { 0x0014, 0x001c }, + { 0x0014, 0x001d }, + { 0x0014, 0x001e }, + { 0x0014, 0x001f }, + { 0x0014, 0x0020 }, + { 0x0014, 0x0021 }, + { 0x0006, 0x0015 }, + { 0x0005, 0x0019 }, + { 0x0005, 0x001a }, + { 0x0005, 0x001b }, + { 0x0006, 0x0016 }, + { 0x0006, 0x0017 }, + { 0x0007, 0x000f }, + { 0x0008, 0x000c }, + { 0x0009, 0x000d }, + { 0x000b, 0x000f }, + { 0x000c, 0x0010 }, + { 0x000d, 0x0012 }, + { 0x000f, 0x001e }, + { 0x0012, 0x008f }, + { 0x0014, 0x0022 }, + { 0x0014, 0x0023 }, + { 0x0014, 0x0024 }, + { 0x0014, 0x0025 }, + { 0x0014, 0x0026 }, + { 0x0014, 0x0027 }, + { 0x0014, 0x0028 }, + { 0x0014, 0x0029 }, + { 0x0014, 0x002a }, + { 0x0014, 0x002b }, + { 0x0014, 0x002c }, + { 0x0014, 0x002d }, + { 0x0014, 0x002e }, + { 0x0006, 0x0018 }, + { 0x0005, 0x001c }, + { 0x0005, 0x001d }, + { 0x0006, 0x0019 }, + { 0x0006, 0x001a }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0008, 0x000d }, + { 0x000a, 0x000e }, + { 0x000b, 0x0010 }, + { 0x000c, 0x0011 }, + { 0x000e, 0x0018 }, + { 0x0010, 0x002e }, + { 0x0012, 0x0090 }, + { 0x0013, 0x010d }, + { 0x0013, 0x010e }, + { 0x0014, 0x002f }, + { 0x0014, 0x0030 }, + { 0x0014, 0x0031 }, + { 0x0014, 0x0032 }, + { 0x0014, 0x0033 }, + { 0x0014, 0x0034 }, + { 0x0014, 0x0035 }, + { 0x0014, 0x0036 }, + { 0x0014, 0x0037 }, + { 0x0014, 0x0038 }, + { 0x0014, 0x0039 }, + { 0x0007, 0x0012 }, + { 0x0006, 0x001b }, + { 0x0006, 0x001c }, + { 0x0006, 0x001d }, + { 0x0007, 0x0013 }, + { 0x0007, 0x0014 }, + { 0x0008, 0x000e }, + { 0x0009, 0x000e }, + { 0x000b, 0x0011 }, + { 0x000c, 0x0012 }, + { 0x000d, 0x0013 }, + { 0x000e, 0x0019 }, + { 0x0010, 0x002f }, + { 0x0012, 0x0091 }, + { 0x0014, 0x003a }, + { 0x0014, 0x003b }, + { 0x0014, 0x003c }, + { 0x0014, 0x003d }, + { 0x0014, 0x003e }, + { 0x0014, 0x003f }, + { 0x0014, 0x0040 }, + { 0x0014, 0x0041 }, + { 0x0014, 0x0042 }, + { 0x0014, 0x0043 }, + { 0x0014, 0x0044 }, + { 0x0014, 0x0045 }, + { 0x0014, 0x0046 }, + { 0x0007, 0x0015 }, + { 0x0006, 0x001e }, + { 0x0006, 0x001f }, + { 0x0007, 0x0016 }, + { 0x0007, 0x0017 }, + { 0x0008, 0x000f }, + { 0x0009, 0x000f }, + { 0x000a, 0x000f }, + { 0x000b, 0x0012 }, + { 0x000d, 0x0014 }, + { 0x000e, 0x001a }, + { 0x000f, 0x001f }, + { 0x0013, 0x010f }, + { 0x0011, 0x0053 }, + { 0x0014, 0x0047 }, + { 0x0014, 0x0048 }, + { 0x0014, 0x0049 }, + { 0x0014, 0x004a }, + { 0x0014, 0x004b }, + { 0x0014, 0x004c }, + { 0x0014, 0x004d }, + { 0x0014, 0x004e }, + { 0x0014, 0x004f }, + { 0x0014, 0x0050 }, + { 0x0014, 0x0051 }, + { 0x0014, 0x0052 }, + { 0x0014, 0x0053 }, + { 0x0008, 0x0010 }, + { 0x0007, 0x0018 }, + { 0x0007, 0x0019 }, + { 0x0008, 0x0011 }, + { 0x0008, 0x0012 }, + { 0x0009, 0x0010 }, + { 0x000a, 0x0010 }, + { 0x000b, 0x0013 }, + { 0x000c, 0x0013 }, + { 0x000e, 0x001b }, + { 0x000f, 0x0020 }, + { 0x0010, 0x0030 }, + { 0x0012, 0x0092 }, + { 0x0014, 0x0054 }, + { 0x0014, 0x0055 }, + { 0x0014, 0x0056 }, + { 0x0014, 0x0057 }, + { 0x0014, 0x0058 }, + { 0x0014, 0x0059 }, + { 0x0014, 0x005a }, + { 0x0014, 0x005b }, + { 0x0014, 0x005c }, + { 0x0014, 0x005d }, + { 0x0014, 0x005e }, + { 0x0014, 0x005f }, + { 0x0014, 0x0060 }, + { 0x0014, 0x0061 }, + { 0x0009, 0x0011 }, + { 0x0008, 0x0013 }, + { 0x0009, 0x0012 }, + { 0x0009, 0x0013 }, + { 0x000a, 0x0011 }, + { 0x000a, 0x0012 }, + { 0x000b, 0x0014 }, + { 0x000c, 0x0014 }, + { 0x000d, 0x0015 }, + { 0x000e, 0x001c }, + { 0x000f, 0x0021 }, + { 0x0013, 0x0110 }, + { 0x0012, 0x0093 }, + { 0x0012, 0x0094 }, + { 0x0014, 0x0062 }, + { 0x0014, 0x0063 }, + { 0x0014, 0x0064 }, + { 0x0014, 0x0065 }, + { 0x0014, 0x0066 }, + { 0x0014, 0x0067 }, + { 0x0014, 0x0068 }, + { 0x0014, 0x0069 }, + { 0x0014, 0x006a }, + { 0x0014, 0x006b }, + { 0x0014, 0x006c }, + { 0x0014, 0x006d }, + { 0x0014, 0x006e }, + { 0x000b, 0x0015 }, + { 0x000a, 0x0013 }, + { 0x000a, 0x0014 }, + { 0x000a, 0x0015 }, + { 0x000b, 0x0016 }, + { 0x000c, 0x0015 }, + { 0x000d, 0x0016 }, + { 0x000d, 0x0017 }, + { 0x000f, 0x0022 }, + { 0x0010, 0x0031 }, + { 0x0012, 0x0095 }, + { 0x0012, 0x0096 }, + { 0x0014, 0x006f }, + { 0x0013, 0x0111 }, + { 0x0014, 0x0070 }, + { 0x0014, 0x0071 }, + { 0x0014, 0x0072 }, + { 0x0014, 0x0073 }, + { 0x0014, 0x0074 }, + { 0x0014, 0x0075 }, + { 0x0014, 0x0076 }, + { 0x0014, 0x0077 }, + { 0x0014, 0x0078 }, + { 0x0014, 0x0079 }, + { 0x0014, 0x007a }, + { 0x0014, 0x007b }, + { 0x0014, 0x007c }, + { 0x000c, 0x0016 }, + { 0x000b, 0x0017 }, + { 0x000c, 0x0017 }, + { 0x000c, 0x0018 }, + { 0x000c, 0x0019 }, + { 0x000d, 0x0018 }, + { 0x000e, 0x001d }, + { 0x000f, 0x0023 }, + { 0x000f, 0x0024 }, + { 0x0011, 0x0054 }, + { 0x0012, 0x0097 }, + { 0x0014, 0x007d }, + { 0x0014, 0x007e }, + { 0x0014, 0x007f }, + { 0x0014, 0x0080 }, + { 0x0014, 0x0081 }, + { 0x0014, 0x0082 }, + { 0x0014, 0x0083 }, + { 0x0014, 0x0084 }, + { 0x0014, 0x0085 }, + { 0x0014, 0x0086 }, + { 0x0014, 0x0087 }, + { 0x0014, 0x0088 }, + { 0x0014, 0x0089 }, + { 0x0014, 0x008a }, + { 0x0014, 0x008b }, + { 0x0014, 0x008c }, + { 0x000e, 0x001e }, + { 0x000d, 0x0019 }, + { 0x000d, 0x001a }, + { 0x000d, 0x001b }, + { 0x000e, 0x001f }, + { 0x000f, 0x0025 }, + { 0x000f, 0x0026 }, + { 0x0010, 0x0032 }, + { 0x0010, 0x0033 }, + { 0x0012, 0x0098 }, + { 0x0013, 0x0112 }, + { 0x0014, 0x008d }, + { 0x0014, 0x008e }, + { 0x0014, 0x008f }, + { 0x0014, 0x0090 }, + { 0x0014, 0x0091 }, + { 0x0014, 0x0092 }, + { 0x0014, 0x0093 }, + { 0x0014, 0x0094 }, + { 0x0014, 0x0095 }, + { 0x0014, 0x0096 }, + { 0x0014, 0x0097 }, + { 0x0014, 0x0098 }, + { 0x0014, 0x0099 }, + { 0x0014, 0x009a }, + { 0x0014, 0x009b }, + { 0x0014, 0x009c }, + { 0x000f, 0x0027 }, + { 0x000f, 0x0028 }, + { 0x000f, 0x0029 }, + { 0x000f, 0x002a }, + { 0x0010, 0x0034 }, + { 0x000f, 0x002b }, + { 0x0011, 0x0055 }, + { 0x0012, 0x0099 }, + { 0x0012, 0x009a }, + { 0x0012, 0x009b }, + { 0x0014, 0x009d }, + { 0x0013, 0x0113 }, + { 0x0014, 0x009e }, + { 0x0014, 0x009f }, + { 0x0014, 0x00a0 }, + { 0x0014, 0x00a1 }, + { 0x0014, 0x00a2 }, + { 0x0014, 0x00a3 }, + { 0x0014, 0x00a4 }, + { 0x0014, 0x00a5 }, + { 0x0014, 0x00a6 }, + { 0x0014, 0x00a7 }, + { 0x0014, 0x00a8 }, + { 0x0014, 0x00a9 }, + { 0x0014, 0x00aa }, + { 0x0014, 0x00ab }, + { 0x0014, 0x00ac }, + { 0x0011, 0x0056 }, + { 0x0010, 0x0035 }, + { 0x0010, 0x0036 }, + { 0x0010, 0x0037 }, + { 0x0011, 0x0057 }, + { 0x0012, 0x009c }, + { 0x0012, 0x009d }, + { 0x0012, 0x009e }, + { 0x0014, 0x00ad }, + { 0x0014, 0x00ae }, + { 0x0014, 0x00af }, + { 0x0014, 0x00b0 }, + { 0x0014, 0x00b1 }, + { 0x0014, 0x00b2 }, + { 0x0014, 0x00b3 }, + { 0x0014, 0x00b4 }, + { 0x0014, 0x00b5 }, + { 0x0014, 0x00b6 }, + { 0x0014, 0x00b7 }, + { 0x0014, 0x00b8 }, + { 0x0014, 0x00b9 }, + { 0x0014, 0x00ba }, + { 0x0014, 0x00bb }, + { 0x0014, 0x00bc }, + { 0x0014, 0x00bd }, + { 0x0014, 0x00be }, + { 0x0014, 0x00bf }, + { 0x0012, 0x009f }, + { 0x0011, 0x0058 }, + { 0x0012, 0x00a0 }, + { 0x0014, 0x00c0 }, + { 0x0011, 0x0059 }, + { 0x0013, 0x0114 }, + { 0x0012, 0x00a1 }, + { 0x0014, 0x00c1 }, + { 0x0013, 0x0115 }, + { 0x0014, 0x00c2 }, + { 0x0014, 0x00c3 }, + { 0x0014, 0x00c4 }, + { 0x0014, 0x00c5 }, + { 0x0014, 0x00c6 }, + { 0x0014, 0x00c7 }, + { 0x0014, 0x00c8 }, + { 0x0014, 0x00c9 }, + { 0x0014, 0x00ca }, + { 0x0014, 0x00cb }, + { 0x0014, 0x00cc }, + { 0x0014, 0x00cd }, + { 0x0014, 0x00ce }, + { 0x0014, 0x00cf }, + { 0x0014, 0x00d0 }, + { 0x0014, 0x00d1 }, + { 0x0014, 0x00d2 }, + { 0x0014, 0x00d3 }, + { 0x0014, 0x00d4 }, + { 0x0014, 0x00d5 }, + { 0x0014, 0x00d6 }, + { 0x0014, 0x00d7 }, + { 0x0014, 0x00d8 }, + { 0x0014, 0x00d9 }, + { 0x0014, 0x00da }, + { 0x0014, 0x00db }, + { 0x0014, 0x00dc }, + { 0x0014, 0x00dd }, + { 0x0014, 0x00de }, + { 0x0014, 0x00df }, + { 0x0014, 0x00e0 }, + { 0x0014, 0x00e1 }, + { 0x0014, 0x00e2 }, + { 0x0014, 0x00e3 }, + { 0x0014, 0x00e4 }, + { 0x0014, 0x00e5 }, + { 0x0014, 0x00e6 }, + { 0x0014, 0x00e7 }, + { 0x0014, 0x00e8 }, + { 0x0014, 0x00e9 }, + { 0x0014, 0x00ea }, + { 0x0014, 0x00eb }, + { 0x0014, 0x00ec }, + { 0x0014, 0x00ed }, + { 0x0014, 0x00ee }, + { 0x0014, 0x00ef }, + { 0x0014, 0x00f0 }, + { 0x0014, 0x00f1 }, + { 0x0014, 0x00f2 }, + { 0x0014, 0x00f3 }, + { 0x0014, 0x00f4 }, + { 0x0014, 0x00f5 }, + { 0x0014, 0x00f6 }, + { 0x0014, 0x00f7 }, + { 0x0014, 0x00f8 }, + { 0x0014, 0x00f9 }, + { 0x0014, 0x00fa }, + { 0x0014, 0x00fb }, + { 0x0014, 0x00fc }, + { 0x0014, 0x00fd }, + { 0x0014, 0x00fe }, + { 0x0014, 0x00ff }, + { 0x0014, 0x0100 }, + { 0x0014, 0x0101 }, + { 0x0014, 0x0102 }, + { 0x0014, 0x0103 }, + { 0x0014, 0x0104 }, + { 0x0014, 0x0105 }, + { 0x0014, 0x0106 }, + { 0x0014, 0x0107 }, + { 0x0014, 0x0108 }, + { 0x0014, 0x0109 }, + { 0x0014, 0x010a }, + { 0x0014, 0x010b }, + { 0x0014, 0x010c }, + { 0x0014, 0x010d }, + { 0x0014, 0x010e }, + { 0x0014, 0x010f }, + { 0x0014, 0x0110 }, + { 0x0014, 0x0111 }, + { 0x0014, 0x0112 }, + { 0x0014, 0x0113 }, + { 0x0014, 0x0114 }, + { 0x0014, 0x0115 }, + { 0x0014, 0x0116 }, + { 0x0014, 0x0117 }, + { 0x0014, 0x0118 }, + { 0x0014, 0x0119 }, + { 0x0014, 0x011a }, + { 0x0014, 0x011b }, + { 0x0014, 0x011c }, + { 0x0014, 0x011d }, + { 0x0014, 0x011e }, + { 0x0014, 0x011f }, + { 0x0014, 0x0120 }, + { 0x0014, 0x0121 }, + { 0x0014, 0x0122 }, + { 0x0014, 0x0123 }, + { 0x0014, 0x0124 }, + { 0x0014, 0x0125 }, + { 0x0013, 0x0116 }, + { 0x0014, 0x0126 }, + { 0x0014, 0x0127 }, + { 0x0014, 0x0128 }, + { 0x0014, 0x0129 }, + { 0x0014, 0x012a }, + { 0x0014, 0x012b }, + { 0x0014, 0x012c }, + { 0x0014, 0x012d }, + { 0x0014, 0x012e }, + { 0x0014, 0x012f }, + { 0x0014, 0x0130 }, + { 0x0014, 0x0131 }, + { 0x0014, 0x0132 }, + { 0x0014, 0x0133 }, + { 0x0014, 0x0134 }, + { 0x0014, 0x0135 }, + { 0x0014, 0x0136 }, + { 0x0014, 0x0137 }, + { 0x0014, 0x0138 }, + { 0x0014, 0x0139 }, + { 0x0014, 0x013a }, + { 0x0014, 0x013b }, + { 0x0014, 0x013c }, + { 0x0014, 0x013d }, + { 0x0014, 0x013e }, + { 0x0014, 0x013f }, + { 0x0014, 0x0140 }, + { 0x0014, 0x0141 }, + { 0x0014, 0x0142 }, + { 0x0014, 0x0143 }, + { 0x0014, 0x0144 }, + { 0x0014, 0x0145 }, + { 0x0014, 0x0146 }, + { 0x0014, 0x0147 }, + { 0x0014, 0x0148 }, + { 0x0014, 0x0149 }, + { 0x0014, 0x014a }, + { 0x0014, 0x014b }, + { 0x0014, 0x014c }, + { 0x0014, 0x014d }, + { 0x0014, 0x014e }, + { 0x0014, 0x014f }, + { 0x0014, 0x0150 }, + { 0x0014, 0x0151 }, + { 0x0014, 0x0152 }, + { 0x0014, 0x0153 }, + { 0x0014, 0x0154 }, + { 0x0014, 0x0155 }, + { 0x0014, 0x0156 }, + { 0x0014, 0x0157 }, + { 0x0014, 0x0158 }, + { 0x0014, 0x0159 }, + { 0x0014, 0x015a }, + { 0x0014, 0x015b }, + { 0x0014, 0x015c }, + { 0x0014, 0x015d }, + { 0x0014, 0x015e }, + { 0x0014, 0x015f }, + { 0x0014, 0x0160 }, + { 0x0014, 0x0161 }, + { 0x0014, 0x0162 }, + { 0x0014, 0x0163 }, + { 0x0014, 0x0164 }, + { 0x0014, 0x0165 }, + { 0x0014, 0x0166 }, + { 0x0014, 0x0167 }, + { 0x0014, 0x0168 }, + { 0x0014, 0x0169 }, + { 0x0014, 0x016a }, + { 0x0014, 0x016b }, + { 0x0014, 0x016c }, + { 0x0014, 0x016d }, + { 0x0014, 0x016e }, + { 0x0014, 0x016f }, + { 0x0014, 0x0170 }, + { 0x0014, 0x0171 }, + { 0x0014, 0x0172 }, + { 0x0014, 0x0173 }, + { 0x0014, 0x0174 }, + { 0x0014, 0x0175 }, + { 0x0014, 0x0176 }, + { 0x0014, 0x0177 }, + { 0x0014, 0x0178 }, + { 0x0014, 0x0179 }, + { 0x0014, 0x017a }, + { 0x0014, 0x017b }, + { 0x0014, 0x017c }, + { 0x0014, 0x017d }, + { 0x0014, 0x017e }, + { 0x0014, 0x017f }, + { 0x0014, 0x0180 }, + { 0x0014, 0x0181 }, + { 0x0014, 0x0182 }, + { 0x0014, 0x0183 }, + { 0x0014, 0x0184 }, + { 0x0014, 0x0185 }, + { 0x0014, 0x0186 }, + { 0x0014, 0x0187 }, + { 0x0014, 0x0188 }, + { 0x0014, 0x0189 }, + { 0x0014, 0x018a }, + { 0x0014, 0x018b }, + { 0x0014, 0x018c }, + { 0x0014, 0x018d }, + { 0x0014, 0x018e }, + { 0x0014, 0x018f }, + { 0x0014, 0x0190 }, + { 0x0014, 0x0191 }, + { 0x0014, 0x0192 }, + { 0x0014, 0x0193 }, + { 0x0014, 0x0194 }, + { 0x0014, 0x0195 }, + { 0x0014, 0x0196 }, + { 0x0014, 0x0197 }, + { 0x0014, 0x0198 }, + { 0x0014, 0x0199 }, + { 0x0014, 0x019a }, + { 0x0014, 0x019b }, + { 0x0014, 0x019c }, + { 0x0014, 0x019d }, + { 0x0014, 0x019e }, + { 0x0014, 0x019f }, + { 0x0014, 0x01a0 }, + { 0x0014, 0x01a1 }, + { 0x0014, 0x01a2 }, + { 0x0014, 0x01a3 }, + { 0x0014, 0x01a4 }, + { 0x0014, 0x01a5 }, + { 0x0014, 0x01a6 }, + { 0x0014, 0x01a7 }, + { 0x0014, 0x01a8 }, + { 0x0014, 0x01a9 }, + { 0x0014, 0x01aa }, + { 0x0014, 0x01ab }, + { 0x0014, 0x01ac }, + { 0x0014, 0x01ad }, + { 0x0014, 0x01ae }, + { 0x0014, 0x01af }, + { 0x0014, 0x01b0 }, + { 0x0014, 0x01b1 }, + { 0x0014, 0x01b2 }, + { 0x0014, 0x01b3 }, + { 0x0014, 0x01b4 }, + { 0x0014, 0x01b5 }, + { 0x0014, 0x01b6 }, + { 0x0014, 0x01b7 }, + { 0x0014, 0x01b8 }, + { 0x0014, 0x01b9 }, + { 0x0014, 0x01ba }, + { 0x0014, 0x01bb }, + { 0x0014, 0x01bc }, + { 0x0014, 0x01bd }, + { 0x0014, 0x01be }, + { 0x0014, 0x01bf }, + { 0x0014, 0x01c0 }, + { 0x0014, 0x01c1 }, + { 0x0014, 0x01c2 }, + { 0x0014, 0x01c3 }, + { 0x0014, 0x01c4 }, + { 0x0014, 0x01c5 }, + { 0x0014, 0x01c6 }, + { 0x0014, 0x01c7 }, + { 0x0014, 0x01c8 }, + { 0x0014, 0x01c9 }, + { 0x0014, 0x01ca }, + { 0x0014, 0x01cb }, + { 0x0014, 0x01cc }, + { 0x0014, 0x01cd }, + { 0x0014, 0x01ce }, + { 0x0014, 0x01cf }, + { 0x0014, 0x01d0 }, + { 0x0014, 0x01d1 }, + { 0x0014, 0x01d2 }, + { 0x0014, 0x01d3 }, + { 0x0014, 0x01d4 }, + { 0x0014, 0x01d5 }, + { 0x0014, 0x01d6 }, + { 0x0014, 0x01d7 }, + { 0x0014, 0x01d8 }, + { 0x0014, 0x01d9 }, + { 0x0014, 0x01da }, + { 0x0014, 0x01db }, + { 0x0014, 0x01dc }, + { 0x0014, 0x01dd }, + { 0x0014, 0x01de }, + { 0x0014, 0x01df }, + { 0x0014, 0x01e0 }, + { 0x0014, 0x01e1 }, + { 0x0014, 0x01e2 }, + { 0x0014, 0x01e3 }, + { 0x0014, 0x01e4 }, + { 0x0014, 0x01e5 }, + { 0x0014, 0x01e6 }, + { 0x0014, 0x01e7 }, + { 0x0014, 0x01e8 }, + { 0x0014, 0x01e9 }, + { 0x0014, 0x01ea }, + { 0x0014, 0x01eb }, + { 0x0014, 0x01ec }, + { 0x0014, 0x01ed }, + { 0x0014, 0x01ee }, + { 0x0014, 0x01ef }, + { 0x0014, 0x01f0 }, + { 0x0014, 0x01f1 }, + { 0x0014, 0x01f2 }, + { 0x0014, 0x01f3 }, + { 0x0014, 0x01f4 }, + { 0x0014, 0x01f5 }, + { 0x0014, 0x01f6 }, + { 0x0014, 0x01f7 }, + { 0x0014, 0x01f8 }, + { 0x0014, 0x01f9 }, + { 0x0014, 0x01fa }, + { 0x0014, 0x01fb }, + { 0x0014, 0x01fc }, + { 0x0014, 0x01fd }, + { 0x0014, 0x01fe }, + { 0x0014, 0x01ff }, + { 0x0014, 0x0200 }, + { 0x0014, 0x0201 }, + { 0x0014, 0x0202 }, + { 0x0014, 0x0203 }, + { 0x0014, 0x0204 }, + { 0x0014, 0x0205 }, + { 0x0014, 0x0206 }, + { 0x0014, 0x0207 }, + { 0x0014, 0x0208 }, + { 0x0014, 0x0209 }, + { 0x0014, 0x020a }, + { 0x0014, 0x020b }, + { 0x0014, 0x020c }, + { 0x0014, 0x020d }, + { 0x0014, 0x020e }, + { 0x0014, 0x020f }, + { 0x0014, 0x0210 }, + { 0x0014, 0x0211 }, + { 0x0014, 0x0212 }, + { 0x0014, 0x0213 }, + { 0x0014, 0x0214 }, + { 0x0014, 0x0215 }, + { 0x0013, 0x0117 }, + + }; + + +const uint16_t c_aauiLCLDHuffEnc17[729][2] = + { + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0006, 0x0014 }, + { 0x0006, 0x0015 }, + { 0x0007, 0x000f }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0008, 0x000e }, + { 0x0008, 0x000f }, + { 0x0009, 0x000f }, + { 0x000a, 0x000f }, + { 0x000c, 0x0011 }, + { 0x000d, 0x0014 }, + { 0x000e, 0x0017 }, + { 0x0010, 0x002d }, + { 0x0011, 0x004c }, + { 0x0012, 0x008a }, + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0014, 0x0006 }, + { 0x0014, 0x0007 }, + { 0x0014, 0x0008 }, + { 0x0014, 0x0009 }, + { 0x0006, 0x0016 }, + { 0x0005, 0x0018 }, + { 0x0005, 0x0019 }, + { 0x0005, 0x001a }, + { 0x0006, 0x0017 }, + { 0x0006, 0x0018 }, + { 0x0006, 0x0019 }, + { 0x0007, 0x0012 }, + { 0x0007, 0x0013 }, + { 0x0008, 0x0010 }, + { 0x000a, 0x0010 }, + { 0x000b, 0x0011 }, + { 0x000c, 0x0012 }, + { 0x000e, 0x0018 }, + { 0x000f, 0x0020 }, + { 0x0011, 0x004d }, + { 0x0013, 0x00e4 }, + { 0x0014, 0x000a }, + { 0x0014, 0x000b }, + { 0x0014, 0x000c }, + { 0x0014, 0x000d }, + { 0x0014, 0x000e }, + { 0x0014, 0x000f }, + { 0x0014, 0x0010 }, + { 0x0014, 0x0011 }, + { 0x0014, 0x0012 }, + { 0x0014, 0x0013 }, + { 0x0006, 0x001a }, + { 0x0005, 0x001b }, + { 0x0005, 0x001c }, + { 0x0005, 0x001d }, + { 0x0006, 0x001b }, + { 0x0006, 0x001c }, + { 0x0006, 0x001d }, + { 0x0007, 0x0014 }, + { 0x0008, 0x0011 }, + { 0x0009, 0x0010 }, + { 0x000a, 0x0011 }, + { 0x000b, 0x0012 }, + { 0x000c, 0x0013 }, + { 0x000e, 0x0019 }, + { 0x000f, 0x0021 }, + { 0x0010, 0x002e }, + { 0x0013, 0x00e5 }, + { 0x0013, 0x00e6 }, + { 0x0014, 0x0014 }, + { 0x0014, 0x0015 }, + { 0x0014, 0x0016 }, + { 0x0014, 0x0017 }, + { 0x0014, 0x0018 }, + { 0x0014, 0x0019 }, + { 0x0014, 0x001a }, + { 0x0014, 0x001b }, + { 0x0014, 0x001c }, + { 0x0006, 0x001e }, + { 0x0005, 0x001e }, + { 0x0005, 0x001f }, + { 0x0006, 0x001f }, + { 0x0006, 0x0020 }, + { 0x0006, 0x0021 }, + { 0x0006, 0x0022 }, + { 0x0007, 0x0015 }, + { 0x0008, 0x0012 }, + { 0x0009, 0x0011 }, + { 0x000a, 0x0012 }, + { 0x000b, 0x0013 }, + { 0x000c, 0x0014 }, + { 0x000e, 0x001a }, + { 0x000f, 0x0022 }, + { 0x0010, 0x002f }, + { 0x0013, 0x00e7 }, + { 0x0013, 0x00e8 }, + { 0x0014, 0x001d }, + { 0x0014, 0x001e }, + { 0x0014, 0x001f }, + { 0x0014, 0x0020 }, + { 0x0014, 0x0021 }, + { 0x0014, 0x0022 }, + { 0x0014, 0x0023 }, + { 0x0014, 0x0024 }, + { 0x0014, 0x0025 }, + { 0x0006, 0x0023 }, + { 0x0006, 0x0024 }, + { 0x0006, 0x0025 }, + { 0x0006, 0x0026 }, + { 0x0006, 0x0027 }, + { 0x0006, 0x0028 }, + { 0x0007, 0x0016 }, + { 0x0007, 0x0017 }, + { 0x0008, 0x0013 }, + { 0x0009, 0x0012 }, + { 0x000a, 0x0013 }, + { 0x000c, 0x0015 }, + { 0x000d, 0x0015 }, + { 0x000f, 0x0023 }, + { 0x0010, 0x0030 }, + { 0x0011, 0x004e }, + { 0x0014, 0x0026 }, + { 0x0014, 0x0027 }, + { 0x0014, 0x0028 }, + { 0x0014, 0x0029 }, + { 0x0014, 0x002a }, + { 0x0014, 0x002b }, + { 0x0014, 0x002c }, + { 0x0014, 0x002d }, + { 0x0014, 0x002e }, + { 0x0014, 0x002f }, + { 0x0014, 0x0030 }, + { 0x0007, 0x0018 }, + { 0x0006, 0x0029 }, + { 0x0006, 0x002a }, + { 0x0006, 0x002b }, + { 0x0006, 0x002c }, + { 0x0007, 0x0019 }, + { 0x0007, 0x001a }, + { 0x0008, 0x0014 }, + { 0x0009, 0x0013 }, + { 0x000a, 0x0014 }, + { 0x000b, 0x0014 }, + { 0x000c, 0x0016 }, + { 0x000d, 0x0016 }, + { 0x000f, 0x0024 }, + { 0x0010, 0x0031 }, + { 0x0011, 0x004f }, + { 0x0014, 0x0031 }, + { 0x0014, 0x0032 }, + { 0x0014, 0x0033 }, + { 0x0014, 0x0034 }, + { 0x0014, 0x0035 }, + { 0x0014, 0x0036 }, + { 0x0014, 0x0037 }, + { 0x0014, 0x0038 }, + { 0x0014, 0x0039 }, + { 0x0014, 0x003a }, + { 0x0014, 0x003b }, + { 0x0007, 0x001b }, + { 0x0006, 0x002d }, + { 0x0006, 0x002e }, + { 0x0006, 0x002f }, + { 0x0007, 0x001c }, + { 0x0007, 0x001d }, + { 0x0008, 0x0015 }, + { 0x0009, 0x0014 }, + { 0x000a, 0x0015 }, + { 0x000a, 0x0016 }, + { 0x000c, 0x0017 }, + { 0x000d, 0x0017 }, + { 0x000e, 0x001b }, + { 0x000f, 0x0025 }, + { 0x0011, 0x0050 }, + { 0x0011, 0x0051 }, + { 0x0014, 0x003c }, + { 0x0014, 0x003d }, + { 0x0014, 0x003e }, + { 0x0014, 0x003f }, + { 0x0014, 0x0040 }, + { 0x0014, 0x0041 }, + { 0x0014, 0x0042 }, + { 0x0014, 0x0043 }, + { 0x0014, 0x0044 }, + { 0x0014, 0x0045 }, + { 0x0014, 0x0046 }, + { 0x0008, 0x0016 }, + { 0x0007, 0x001e }, + { 0x0007, 0x001f }, + { 0x0007, 0x0020 }, + { 0x0007, 0x0021 }, + { 0x0008, 0x0017 }, + { 0x0008, 0x0018 }, + { 0x0009, 0x0015 }, + { 0x000a, 0x0017 }, + { 0x000b, 0x0015 }, + { 0x000c, 0x0018 }, + { 0x000e, 0x001c }, + { 0x000e, 0x001d }, + { 0x0010, 0x0032 }, + { 0x0012, 0x008b }, + { 0x0012, 0x008c }, + { 0x0014, 0x0047 }, + { 0x0014, 0x0048 }, + { 0x0014, 0x0049 }, + { 0x0014, 0x004a }, + { 0x0014, 0x004b }, + { 0x0014, 0x004c }, + { 0x0014, 0x004d }, + { 0x0014, 0x004e }, + { 0x0014, 0x004f }, + { 0x0014, 0x0050 }, + { 0x0014, 0x0051 }, + { 0x0008, 0x0019 }, + { 0x0007, 0x0022 }, + { 0x0007, 0x0023 }, + { 0x0008, 0x001a }, + { 0x0008, 0x001b }, + { 0x0009, 0x0016 }, + { 0x0009, 0x0017 }, + { 0x000a, 0x0018 }, + { 0x000b, 0x0016 }, + { 0x000c, 0x0019 }, + { 0x000d, 0x0018 }, + { 0x000e, 0x001e }, + { 0x0010, 0x0033 }, + { 0x0011, 0x0052 }, + { 0x0014, 0x0052 }, + { 0x0013, 0x00e9 }, + { 0x0014, 0x0053 }, + { 0x0014, 0x0054 }, + { 0x0014, 0x0055 }, + { 0x0014, 0x0056 }, + { 0x0014, 0x0057 }, + { 0x0014, 0x0058 }, + { 0x0014, 0x0059 }, + { 0x0014, 0x005a }, + { 0x0014, 0x005b }, + { 0x0014, 0x005c }, + { 0x0014, 0x005d }, + { 0x0009, 0x0018 }, + { 0x0008, 0x001c }, + { 0x0008, 0x001d }, + { 0x0009, 0x0019 }, + { 0x0009, 0x001a }, + { 0x000a, 0x0019 }, + { 0x000a, 0x001a }, + { 0x000b, 0x0017 }, + { 0x000c, 0x001a }, + { 0x000d, 0x0019 }, + { 0x000e, 0x001f }, + { 0x000f, 0x0026 }, + { 0x0010, 0x0034 }, + { 0x0012, 0x008d }, + { 0x0013, 0x00ea }, + { 0x0014, 0x005e }, + { 0x0014, 0x005f }, + { 0x0014, 0x0060 }, + { 0x0014, 0x0061 }, + { 0x0014, 0x0062 }, + { 0x0014, 0x0063 }, + { 0x0014, 0x0064 }, + { 0x0014, 0x0065 }, + { 0x0014, 0x0066 }, + { 0x0014, 0x0067 }, + { 0x0014, 0x0068 }, + { 0x0014, 0x0069 }, + { 0x000b, 0x0018 }, + { 0x0009, 0x001b }, + { 0x000a, 0x001b }, + { 0x000a, 0x001c }, + { 0x000a, 0x001d }, + { 0x000b, 0x0019 }, + { 0x000b, 0x001a }, + { 0x000c, 0x001b }, + { 0x000d, 0x001a }, + { 0x000e, 0x0020 }, + { 0x000f, 0x0027 }, + { 0x0012, 0x008e }, + { 0x0011, 0x0053 }, + { 0x0013, 0x00eb }, + { 0x0014, 0x006a }, + { 0x0014, 0x006b }, + { 0x0014, 0x006c }, + { 0x0014, 0x006d }, + { 0x0014, 0x006e }, + { 0x0014, 0x006f }, + { 0x0014, 0x0070 }, + { 0x0014, 0x0071 }, + { 0x0014, 0x0072 }, + { 0x0014, 0x0073 }, + { 0x0014, 0x0074 }, + { 0x0014, 0x0075 }, + { 0x0014, 0x0076 }, + { 0x000c, 0x001c }, + { 0x000b, 0x001b }, + { 0x000b, 0x001c }, + { 0x000b, 0x001d }, + { 0x000c, 0x001d }, + { 0x000c, 0x001e }, + { 0x000d, 0x001b }, + { 0x000d, 0x001c }, + { 0x000e, 0x0021 }, + { 0x0010, 0x0035 }, + { 0x0010, 0x0036 }, + { 0x0011, 0x0054 }, + { 0x0013, 0x00ec }, + { 0x0014, 0x0077 }, + { 0x0014, 0x0078 }, + { 0x0014, 0x0079 }, + { 0x0014, 0x007a }, + { 0x0014, 0x007b }, + { 0x0014, 0x007c }, + { 0x0014, 0x007d }, + { 0x0014, 0x007e }, + { 0x0014, 0x007f }, + { 0x0014, 0x0080 }, + { 0x0014, 0x0081 }, + { 0x0014, 0x0082 }, + { 0x0014, 0x0083 }, + { 0x0014, 0x0084 }, + { 0x000d, 0x001d }, + { 0x000c, 0x001f }, + { 0x000c, 0x0020 }, + { 0x000c, 0x0021 }, + { 0x000d, 0x001e }, + { 0x000d, 0x001f }, + { 0x000e, 0x0022 }, + { 0x000f, 0x0028 }, + { 0x0010, 0x0037 }, + { 0x0010, 0x0038 }, + { 0x0010, 0x0039 }, + { 0x0012, 0x008f }, + { 0x0013, 0x00ed }, + { 0x0014, 0x0085 }, + { 0x0014, 0x0086 }, + { 0x0014, 0x0087 }, + { 0x0014, 0x0088 }, + { 0x0014, 0x0089 }, + { 0x0014, 0x008a }, + { 0x0014, 0x008b }, + { 0x0014, 0x008c }, + { 0x0014, 0x008d }, + { 0x0014, 0x008e }, + { 0x0014, 0x008f }, + { 0x0014, 0x0090 }, + { 0x0014, 0x0091 }, + { 0x0014, 0x0092 }, + { 0x000e, 0x0023 }, + { 0x000d, 0x0020 }, + { 0x000d, 0x0021 }, + { 0x000e, 0x0024 }, + { 0x000e, 0x0025 }, + { 0x000e, 0x0026 }, + { 0x000f, 0x0029 }, + { 0x0010, 0x003a }, + { 0x0010, 0x003b }, + { 0x0012, 0x0090 }, + { 0x0014, 0x0093 }, + { 0x0014, 0x0094 }, + { 0x0014, 0x0095 }, + { 0x0014, 0x0096 }, + { 0x0014, 0x0097 }, + { 0x0014, 0x0098 }, + { 0x0014, 0x0099 }, + { 0x0014, 0x009a }, + { 0x0014, 0x009b }, + { 0x0014, 0x009c }, + { 0x0014, 0x009d }, + { 0x0014, 0x009e }, + { 0x0014, 0x009f }, + { 0x0014, 0x00a0 }, + { 0x0014, 0x00a1 }, + { 0x0014, 0x00a2 }, + { 0x0014, 0x00a3 }, + { 0x000f, 0x002a }, + { 0x000e, 0x0027 }, + { 0x000f, 0x002b }, + { 0x000f, 0x002c }, + { 0x000f, 0x002d }, + { 0x0010, 0x003c }, + { 0x0010, 0x003d }, + { 0x0011, 0x0055 }, + { 0x0011, 0x0056 }, + { 0x0014, 0x00a4 }, + { 0x0014, 0x00a5 }, + { 0x0014, 0x00a6 }, + { 0x0014, 0x00a7 }, + { 0x0014, 0x00a8 }, + { 0x0014, 0x00a9 }, + { 0x0014, 0x00aa }, + { 0x0014, 0x00ab }, + { 0x0014, 0x00ac }, + { 0x0014, 0x00ad }, + { 0x0014, 0x00ae }, + { 0x0014, 0x00af }, + { 0x0014, 0x00b0 }, + { 0x0014, 0x00b1 }, + { 0x0014, 0x00b2 }, + { 0x0014, 0x00b3 }, + { 0x0014, 0x00b4 }, + { 0x0014, 0x00b5 }, + { 0x0012, 0x0091 }, + { 0x0010, 0x003e }, + { 0x0010, 0x003f }, + { 0x0011, 0x0057 }, + { 0x0011, 0x0058 }, + { 0x0011, 0x0059 }, + { 0x0012, 0x0092 }, + { 0x0013, 0x00ee }, + { 0x0013, 0x00ef }, + { 0x0012, 0x0093 }, + { 0x0014, 0x00b6 }, + { 0x0014, 0x00b7 }, + { 0x0014, 0x00b8 }, + { 0x0014, 0x00b9 }, + { 0x0014, 0x00ba }, + { 0x0014, 0x00bb }, + { 0x0014, 0x00bc }, + { 0x0014, 0x00bd }, + { 0x0014, 0x00be }, + { 0x0014, 0x00bf }, + { 0x0014, 0x00c0 }, + { 0x0014, 0x00c1 }, + { 0x0014, 0x00c2 }, + { 0x0014, 0x00c3 }, + { 0x0014, 0x00c4 }, + { 0x0014, 0x00c5 }, + { 0x0014, 0x00c6 }, + { 0x0013, 0x00f0 }, + { 0x0012, 0x0094 }, + { 0x0012, 0x0095 }, + { 0x0012, 0x0096 }, + { 0x0014, 0x00c7 }, + { 0x0014, 0x00c8 }, + { 0x0014, 0x00c9 }, + { 0x0014, 0x00ca }, + { 0x0014, 0x00cb }, + { 0x0014, 0x00cc }, + { 0x0014, 0x00cd }, + { 0x0014, 0x00ce }, + { 0x0014, 0x00cf }, + { 0x0014, 0x00d0 }, + { 0x0014, 0x00d1 }, + { 0x0014, 0x00d2 }, + { 0x0014, 0x00d3 }, + { 0x0014, 0x00d4 }, + { 0x0014, 0x00d5 }, + { 0x0014, 0x00d6 }, + { 0x0014, 0x00d7 }, + { 0x0014, 0x00d8 }, + { 0x0014, 0x00d9 }, + { 0x0014, 0x00da }, + { 0x0014, 0x00db }, + { 0x0014, 0x00dc }, + { 0x0014, 0x00dd }, + { 0x0014, 0x00de }, + { 0x0012, 0x0097 }, + { 0x0014, 0x00df }, + { 0x0014, 0x00e0 }, + { 0x0014, 0x00e1 }, + { 0x0014, 0x00e2 }, + { 0x0014, 0x00e3 }, + { 0x0014, 0x00e4 }, + { 0x0014, 0x00e5 }, + { 0x0014, 0x00e6 }, + { 0x0014, 0x00e7 }, + { 0x0014, 0x00e8 }, + { 0x0014, 0x00e9 }, + { 0x0014, 0x00ea }, + { 0x0014, 0x00eb }, + { 0x0014, 0x00ec }, + { 0x0014, 0x00ed }, + { 0x0014, 0x00ee }, + { 0x0014, 0x00ef }, + { 0x0014, 0x00f0 }, + { 0x0014, 0x00f1 }, + { 0x0014, 0x00f2 }, + { 0x0014, 0x00f3 }, + { 0x0014, 0x00f4 }, + { 0x0014, 0x00f5 }, + { 0x0014, 0x00f6 }, + { 0x0014, 0x00f7 }, + { 0x0014, 0x00f8 }, + { 0x0014, 0x00f9 }, + { 0x0014, 0x00fa }, + { 0x0014, 0x00fb }, + { 0x0014, 0x00fc }, + { 0x0014, 0x00fd }, + { 0x0014, 0x00fe }, + { 0x0014, 0x00ff }, + { 0x0014, 0x0100 }, + { 0x0014, 0x0101 }, + { 0x0014, 0x0102 }, + { 0x0014, 0x0103 }, + { 0x0014, 0x0104 }, + { 0x0014, 0x0105 }, + { 0x0014, 0x0106 }, + { 0x0014, 0x0107 }, + { 0x0014, 0x0108 }, + { 0x0014, 0x0109 }, + { 0x0014, 0x010a }, + { 0x0014, 0x010b }, + { 0x0014, 0x010c }, + { 0x0014, 0x010d }, + { 0x0014, 0x010e }, + { 0x0014, 0x010f }, + { 0x0014, 0x0110 }, + { 0x0014, 0x0111 }, + { 0x0014, 0x0112 }, + { 0x0014, 0x0113 }, + { 0x0014, 0x0114 }, + { 0x0014, 0x0115 }, + { 0x0014, 0x0116 }, + { 0x0014, 0x0117 }, + { 0x0014, 0x0118 }, + { 0x0014, 0x0119 }, + { 0x0014, 0x011a }, + { 0x0014, 0x011b }, + { 0x0014, 0x011c }, + { 0x0014, 0x011d }, + { 0x0014, 0x011e }, + { 0x0014, 0x011f }, + { 0x0014, 0x0120 }, + { 0x0014, 0x0121 }, + { 0x0014, 0x0122 }, + { 0x0014, 0x0123 }, + { 0x0014, 0x0124 }, + { 0x0014, 0x0125 }, + { 0x0014, 0x0126 }, + { 0x0014, 0x0127 }, + { 0x0014, 0x0128 }, + { 0x0014, 0x0129 }, + { 0x0014, 0x012a }, + { 0x0014, 0x012b }, + { 0x0014, 0x012c }, + { 0x0014, 0x012d }, + { 0x0014, 0x012e }, + { 0x0014, 0x012f }, + { 0x0014, 0x0130 }, + { 0x0014, 0x0131 }, + { 0x0014, 0x0132 }, + { 0x0014, 0x0133 }, + { 0x0014, 0x0134 }, + { 0x0014, 0x0135 }, + { 0x0014, 0x0136 }, + { 0x0014, 0x0137 }, + { 0x0014, 0x0138 }, + { 0x0014, 0x0139 }, + { 0x0014, 0x013a }, + { 0x0014, 0x013b }, + { 0x0014, 0x013c }, + { 0x0014, 0x013d }, + { 0x0014, 0x013e }, + { 0x0014, 0x013f }, + { 0x0014, 0x0140 }, + { 0x0014, 0x0141 }, + { 0x0014, 0x0142 }, + { 0x0014, 0x0143 }, + { 0x0014, 0x0144 }, + { 0x0014, 0x0145 }, + { 0x0014, 0x0146 }, + { 0x0014, 0x0147 }, + { 0x0014, 0x0148 }, + { 0x0014, 0x0149 }, + { 0x0014, 0x014a }, + { 0x0014, 0x014b }, + { 0x0014, 0x014c }, + { 0x0014, 0x014d }, + { 0x0014, 0x014e }, + { 0x0014, 0x014f }, + { 0x0014, 0x0150 }, + { 0x0014, 0x0151 }, + { 0x0014, 0x0152 }, + { 0x0014, 0x0153 }, + { 0x0014, 0x0154 }, + { 0x0014, 0x0155 }, + { 0x0014, 0x0156 }, + { 0x0014, 0x0157 }, + { 0x0014, 0x0158 }, + { 0x0014, 0x0159 }, + { 0x0014, 0x015a }, + { 0x0014, 0x015b }, + { 0x0014, 0x015c }, + { 0x0014, 0x015d }, + { 0x0014, 0x015e }, + { 0x0014, 0x015f }, + { 0x0014, 0x0160 }, + { 0x0014, 0x0161 }, + { 0x0014, 0x0162 }, + { 0x0014, 0x0163 }, + { 0x0014, 0x0164 }, + { 0x0014, 0x0165 }, + { 0x0014, 0x0166 }, + { 0x0014, 0x0167 }, + { 0x0014, 0x0168 }, + { 0x0014, 0x0169 }, + { 0x0014, 0x016a }, + { 0x0014, 0x016b }, + { 0x0014, 0x016c }, + { 0x0014, 0x016d }, + { 0x0014, 0x016e }, + { 0x0014, 0x016f }, + { 0x0014, 0x0170 }, + { 0x0014, 0x0171 }, + { 0x0014, 0x0172 }, + { 0x0014, 0x0173 }, + { 0x0014, 0x0174 }, + { 0x0014, 0x0175 }, + { 0x0014, 0x0176 }, + { 0x0014, 0x0177 }, + { 0x0014, 0x0178 }, + { 0x0014, 0x0179 }, + { 0x0014, 0x017a }, + { 0x0014, 0x017b }, + { 0x0014, 0x017c }, + { 0x0014, 0x017d }, + { 0x0014, 0x017e }, + { 0x0014, 0x017f }, + { 0x0014, 0x0180 }, + { 0x0014, 0x0181 }, + { 0x0014, 0x0182 }, + { 0x0014, 0x0183 }, + { 0x0014, 0x0184 }, + { 0x0014, 0x0185 }, + { 0x0014, 0x0186 }, + { 0x0014, 0x0187 }, + { 0x0014, 0x0188 }, + { 0x0014, 0x0189 }, + { 0x0014, 0x018a }, + { 0x0014, 0x018b }, + { 0x0014, 0x018c }, + { 0x0014, 0x018d }, + { 0x0014, 0x018e }, + { 0x0014, 0x018f }, + { 0x0014, 0x0190 }, + { 0x0014, 0x0191 }, + { 0x0014, 0x0192 }, + { 0x0014, 0x0193 }, + { 0x0014, 0x0194 }, + { 0x0014, 0x0195 }, + { 0x0014, 0x0196 }, + { 0x0014, 0x0197 }, + { 0x0014, 0x0198 }, + { 0x0014, 0x0199 }, + { 0x0014, 0x019a }, + { 0x0014, 0x019b }, + { 0x0014, 0x019c }, + { 0x0014, 0x019d }, + { 0x0014, 0x019e }, + { 0x0014, 0x019f }, + { 0x0014, 0x01a0 }, + { 0x0014, 0x01a1 }, + { 0x0014, 0x01a2 }, + { 0x0014, 0x01a3 }, + { 0x0014, 0x01a4 }, + { 0x0014, 0x01a5 }, + { 0x0014, 0x01a6 }, + { 0x0014, 0x01a7 }, + { 0x0014, 0x01a8 }, + { 0x0014, 0x01a9 }, + { 0x0014, 0x01aa }, + { 0x0014, 0x01ab }, + { 0x0014, 0x01ac }, + { 0x0014, 0x01ad }, + { 0x0014, 0x01ae }, + { 0x0014, 0x01af }, + { 0x0014, 0x01b0 }, + { 0x0014, 0x01b1 }, + { 0x0014, 0x01b2 }, + { 0x0014, 0x01b3 }, + { 0x0014, 0x01b4 }, + { 0x0014, 0x01b5 }, + { 0x0014, 0x01b6 }, + { 0x0014, 0x01b7 }, + { 0x0014, 0x01b8 }, + { 0x0014, 0x01b9 }, + { 0x0014, 0x01ba }, + { 0x0014, 0x01bb }, + { 0x0014, 0x01bc }, + { 0x0014, 0x01bd }, + { 0x0014, 0x01be }, + { 0x0014, 0x01bf }, + { 0x0014, 0x01c0 }, + { 0x0014, 0x01c1 }, + { 0x0014, 0x01c2 }, + { 0x0014, 0x01c3 }, + { 0x0014, 0x01c4 }, + { 0x0014, 0x01c5 }, + { 0x0014, 0x01c6 }, + { 0x0014, 0x01c7 }, + { 0x0013, 0x00f1 }, + { 0x0013, 0x00f2 }, + { 0x0013, 0x00f3 }, + { 0x0013, 0x00f4 }, + { 0x0013, 0x00f5 }, + { 0x0013, 0x00f6 }, + { 0x0013, 0x00f7 }, + { 0x0013, 0x00f8 }, + { 0x0013, 0x00f9 }, + { 0x0013, 0x00fa }, + { 0x0013, 0x00fb }, + { 0x0013, 0x00fc }, + { 0x0013, 0x00fd }, + { 0x0013, 0x00fe }, + { 0x0013, 0x00ff }, + { 0x0013, 0x0100 }, + { 0x0013, 0x0101 }, + { 0x0013, 0x0102 }, + { 0x0013, 0x0103 }, + { 0x0013, 0x0104 }, + { 0x0013, 0x0105 }, + { 0x0013, 0x0106 }, + { 0x0013, 0x0107 }, + { 0x0013, 0x0108 }, + { 0x0013, 0x0109 }, + { 0x0013, 0x010a }, + { 0x0013, 0x010b }, + { 0x0013, 0x010c }, + { 0x0013, 0x010d }, + { 0x0013, 0x010e }, + { 0x0013, 0x010f }, + { 0x0013, 0x0110 }, + { 0x0013, 0x0111 }, + { 0x0013, 0x0112 }, + { 0x0013, 0x0113 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc18[28][2] = + { + { 0x0004, 0x0001 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0003, 0x0004 }, + { 0x0003, 0x0005 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0002 }, + { 0x0004, 0x0003 }, + { 0x0005, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x000d, 0x0001 }, + { 0x000e, 0x0001 }, + { 0x000f, 0x0001 }, + { 0x0011, 0x0003 }, + { 0x0012, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + + }; + + +const uint16_t c_aauiLCLDHuffEnc19[29][2] = + { + { 0x0004, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0003, 0x0004 }, + { 0x0003, 0x0005 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0003 }, + { 0x0004, 0x0004 }, + { 0x0004, 0x0005 }, + { 0x0005, 0x0001 }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0006, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x000d, 0x0001 }, + { 0x000e, 0x0001 }, + { 0x000f, 0x0001 }, + { 0x0010, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0012, 0x0003 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc20[32][2] = + { + { 0x0004, 0x0002 }, + { 0x0003, 0x0005 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0003 }, + { 0x0004, 0x0004 }, + { 0x0004, 0x0005 }, + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0004, 0x0008 }, + { 0x0004, 0x0009 }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0006, 0x0001 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0007, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x000d, 0x0001 }, + { 0x000e, 0x0001 }, + { 0x000f, 0x0001 }, + { 0x0010, 0x0001 }, + { 0x0011, 0x0001 }, + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + }; + +const uint16_t c_aauiLCLDHuffEnc21[37][2] = + { + { 0x0005, 0x0002 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0003 }, + { 0x0004, 0x0004 }, + { 0x0004, 0x0005 }, + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0004, 0x0008 }, + { 0x0004, 0x0009 }, + { 0x0004, 0x000a }, + { 0x0004, 0x000b }, + { 0x0005, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0005, 0x0005 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0007, 0x0002 }, + { 0x0007, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x0009, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x000b, 0x0002 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0001 }, + { 0x000d, 0x0001 }, + { 0x000e, 0x0001 }, + { 0x000f, 0x0001 }, + { 0x0010, 0x0001 }, + { 0x0011, 0x0001 }, + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc22[39][2] = + { + { 0x0005, 0x0002 }, + { 0x0004, 0x0004 }, + { 0x0004, 0x0005 }, + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0004, 0x0008 }, + { 0x0004, 0x0009 }, + { 0x0004, 0x000a }, + { 0x0004, 0x000b }, + { 0x0004, 0x000c }, + { 0x0004, 0x000d }, + { 0x0004, 0x000e }, + { 0x0004, 0x000f }, + { 0x0005, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0007, 0x0002 }, + { 0x0007, 0x0003 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x0009, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x000a, 0x0001 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000c, 0x0001 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000e, 0x0001 }, + { 0x000e, 0x0002 }, + { 0x000f, 0x0001 }, + { 0x000e, 0x0003 }, + { 0x0011, 0x0000 }, + { 0x0010, 0x0001 }, + { 0x0011, 0x0001 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc23[46][2] = + { + { 0x0005, 0x0003 }, + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0004, 0x0008 }, + { 0x0004, 0x0009 }, + { 0x0004, 0x000a }, + { 0x0004, 0x000b }, + { 0x0004, 0x000c }, + { 0x0004, 0x000d }, + { 0x0004, 0x000e }, + { 0x0004, 0x000f }, + { 0x0005, 0x0004 }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0006, 0x0003 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0002 }, + { 0x0007, 0x0003 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x0009, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000b, 0x0002 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000d, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x000e, 0x0001 }, + { 0x000e, 0x0002 }, + { 0x000e, 0x0003 }, + { 0x000f, 0x0001 }, + { 0x0010, 0x0001 }, + { 0x0012, 0x0000 }, + { 0x0012, 0x0001 }, + { 0x0011, 0x0001 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc24[55][2] = + { + { 0x0005, 0x0004 }, + { 0x0004, 0x0009 }, + { 0x0004, 0x000a }, + { 0x0004, 0x000b }, + { 0x0004, 0x000c }, + { 0x0004, 0x000d }, + { 0x0004, 0x000e }, + { 0x0004, 0x000f }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0005, 0x0010 }, + { 0x0005, 0x0011 }, + { 0x0006, 0x0003 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0006, 0x0006 }, + { 0x0006, 0x0007 }, + { 0x0007, 0x0003 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0009, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000b, 0x0002 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0003 }, + { 0x000d, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000e, 0x0002 }, + { 0x000e, 0x0003 }, + { 0x000f, 0x0001 }, + { 0x000f, 0x0002 }, + { 0x000f, 0x0003 }, + { 0x0010, 0x0001 }, + { 0x0011, 0x0001 }, + { 0x0013, 0x0000 }, + { 0x0012, 0x0001 }, + { 0x0013, 0x0001 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc25[65][2] = + { + { 0x0005, 0x0005 }, + { 0x0004, 0x000c }, + { 0x0004, 0x000d }, + { 0x0004, 0x000e }, + { 0x0005, 0x0006 }, + { 0x0004, 0x000f }, + { 0x0005, 0x0007 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0005, 0x0010 }, + { 0x0005, 0x0011 }, + { 0x0005, 0x0012 }, + { 0x0005, 0x0013 }, + { 0x0005, 0x0014 }, + { 0x0005, 0x0015 }, + { 0x0005, 0x0016 }, + { 0x0005, 0x0017 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0006, 0x0006 }, + { 0x0006, 0x0007 }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0007, 0x0003 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0009, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x000a, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000b, 0x0003 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000d, 0x0003 }, + { 0x000e, 0x0003 }, + { 0x000e, 0x0004 }, + { 0x000f, 0x0003 }, + { 0x000e, 0x0005 }, + { 0x000f, 0x0004 }, + { 0x0010, 0x0001 }, + { 0x000f, 0x0005 }, + { 0x0010, 0x0002 }, + { 0x0010, 0x0003 }, + { 0x0010, 0x0004 }, + { 0x0010, 0x0005 }, + { 0x0011, 0x0001 }, + { 0x0012, 0x0000 }, + { 0x0012, 0x0001 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc26[77][2] = + { + { 0x0006, 0x0004 }, + { 0x0005, 0x0007 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0005, 0x0010 }, + { 0x0005, 0x0011 }, + { 0x0005, 0x0012 }, + { 0x0005, 0x0013 }, + { 0x0005, 0x0014 }, + { 0x0005, 0x0015 }, + { 0x0005, 0x0016 }, + { 0x0005, 0x0017 }, + { 0x0005, 0x0018 }, + { 0x0005, 0x0019 }, + { 0x0005, 0x001a }, + { 0x0005, 0x001b }, + { 0x0005, 0x001c }, + { 0x0005, 0x001d }, + { 0x0005, 0x001e }, + { 0x0005, 0x001f }, + { 0x0006, 0x0005 }, + { 0x0006, 0x0006 }, + { 0x0006, 0x0007 }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0009, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x000a, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000c, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000d, 0x0003 }, + { 0x000d, 0x0004 }, + { 0x000e, 0x0002 }, + { 0x000d, 0x0005 }, + { 0x000e, 0x0003 }, + { 0x000e, 0x0004 }, + { 0x000f, 0x0003 }, + { 0x000e, 0x0005 }, + { 0x0010, 0x0002 }, + { 0x0010, 0x0003 }, + { 0x0010, 0x0004 }, + { 0x0011, 0x0002 }, + { 0x0012, 0x0001 }, + { 0x0010, 0x0005 }, + { 0x0012, 0x0002 }, + { 0x0011, 0x0003 }, + { 0x0012, 0x0003 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + + }; + + +const uint16_t c_aauiLCLDHuffEnc27[91][2] = + { + { 0x0006, 0x0006 }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0005, 0x0010 }, + { 0x0005, 0x0011 }, + { 0x0005, 0x0012 }, + { 0x0005, 0x0013 }, + { 0x0005, 0x0014 }, + { 0x0005, 0x0015 }, + { 0x0005, 0x0016 }, + { 0x0005, 0x0017 }, + { 0x0005, 0x0018 }, + { 0x0005, 0x0019 }, + { 0x0005, 0x001a }, + { 0x0005, 0x001b }, + { 0x0005, 0x001c }, + { 0x0005, 0x001d }, + { 0x0005, 0x001e }, + { 0x0005, 0x001f }, + { 0x0006, 0x0007 }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0006, 0x0010 }, + { 0x0006, 0x0011 }, + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0006, 0x0014 }, + { 0x0006, 0x0015 }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0007, 0x0008 }, + { 0x0007, 0x0009 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000e, 0x0003 }, + { 0x000e, 0x0004 }, + { 0x000e, 0x0005 }, + { 0x000e, 0x0006 }, + { 0x000e, 0x0007 }, + { 0x000f, 0x0003 }, + { 0x000f, 0x0004 }, + { 0x0010, 0x0003 }, + { 0x000f, 0x0005 }, + { 0x0012, 0x0000 }, + { 0x0010, 0x0004 }, + { 0x0010, 0x0005 }, + { 0x0012, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0011, 0x0004 }, + { 0x0011, 0x0005 }, + { 0x0012, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc28[109][2] = + { + { 0x0006, 0x0008 }, + { 0x0005, 0x0010 }, + { 0x0005, 0x0011 }, + { 0x0005, 0x0012 }, + { 0x0005, 0x0013 }, + { 0x0005, 0x0014 }, + { 0x0005, 0x0015 }, + { 0x0005, 0x0016 }, + { 0x0005, 0x0017 }, + { 0x0005, 0x0018 }, + { 0x0005, 0x0019 }, + { 0x0005, 0x001a }, + { 0x0005, 0x001b }, + { 0x0005, 0x001c }, + { 0x0005, 0x001d }, + { 0x0005, 0x001e }, + { 0x0006, 0x0009 }, + { 0x0005, 0x001f }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0006, 0x0010 }, + { 0x0006, 0x0011 }, + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0006, 0x0014 }, + { 0x0006, 0x0015 }, + { 0x0006, 0x0016 }, + { 0x0006, 0x0017 }, + { 0x0006, 0x0018 }, + { 0x0006, 0x0019 }, + { 0x0006, 0x001a }, + { 0x0006, 0x001b }, + { 0x0006, 0x001c }, + { 0x0006, 0x001d }, + { 0x0006, 0x001e }, + { 0x0006, 0x001f }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0007, 0x0008 }, + { 0x0007, 0x0009 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0007, 0x000c }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x000a, 0x0005 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000b, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000c, 0x0008 }, + { 0x000c, 0x0009 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000e, 0x0004 }, + { 0x000e, 0x0005 }, + { 0x000e, 0x0006 }, + { 0x000e, 0x0007 }, + { 0x0010, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x0010, 0x0005 }, + { 0x000f, 0x0006 }, + { 0x000f, 0x0007 }, + { 0x0010, 0x0006 }, + { 0x0011, 0x0006 }, + { 0x0010, 0x0007 }, + { 0x0013, 0x0000 }, + { 0x0010, 0x0008 }, + { 0x0010, 0x0009 }, + { 0x0013, 0x0001 }, + { 0x0011, 0x0007 }, + { 0x0012, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + { 0x0012, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0012, 0x000a }, + { 0x0012, 0x000b }, + + }; + +const uint16_t c_aauiLCLDHuffEnc29[129][2] = + { + { 0x0006, 0x0009 }, + { 0x0005, 0x0019 }, + { 0x0006, 0x000a }, + { 0x0005, 0x001a }, + { 0x0005, 0x001b }, + { 0x0005, 0x001c }, + { 0x0006, 0x000b }, + { 0x0005, 0x001d }, + { 0x0005, 0x001e }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0005, 0x001f }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0006, 0x0010 }, + { 0x0006, 0x0011 }, + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0006, 0x0014 }, + { 0x0006, 0x0015 }, + { 0x0006, 0x0016 }, + { 0x0006, 0x0017 }, + { 0x0006, 0x0018 }, + { 0x0006, 0x0019 }, + { 0x0006, 0x001a }, + { 0x0006, 0x001b }, + { 0x0006, 0x001c }, + { 0x0006, 0x001d }, + { 0x0006, 0x001e }, + { 0x0006, 0x001f }, + { 0x0006, 0x0020 }, + { 0x0006, 0x0021 }, + { 0x0006, 0x0022 }, + { 0x0006, 0x0023 }, + { 0x0006, 0x0024 }, + { 0x0006, 0x0025 }, + { 0x0006, 0x0026 }, + { 0x0006, 0x0027 }, + { 0x0006, 0x0028 }, + { 0x0006, 0x0029 }, + { 0x0006, 0x002a }, + { 0x0006, 0x002b }, + { 0x0006, 0x002c }, + { 0x0006, 0x002d }, + { 0x0006, 0x002e }, + { 0x0006, 0x002f }, + { 0x0006, 0x0030 }, + { 0x0006, 0x0031 }, + { 0x0007, 0x0007 }, + { 0x0007, 0x0008 }, + { 0x0007, 0x0009 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0007, 0x000c }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0008, 0x000c }, + { 0x0008, 0x000d }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x000a, 0x0005 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000a, 0x0008 }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000c, 0x0008 }, + { 0x000c, 0x0009 }, + { 0x000c, 0x000a }, + { 0x000c, 0x000b }, + { 0x000d, 0x0005 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000d, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x000d, 0x000a }, + { 0x000d, 0x000b }, + { 0x000e, 0x0006 }, + { 0x000e, 0x0007 }, + { 0x000e, 0x0008 }, + { 0x000e, 0x0009 }, + { 0x000f, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x000f, 0x0006 }, + { 0x000f, 0x0007 }, + { 0x0011, 0x0007 }, + { 0x000f, 0x0008 }, + { 0x0012, 0x0000 }, + { 0x000f, 0x0009 }, + { 0x0010, 0x0005 }, + { 0x000f, 0x000a }, + { 0x000f, 0x000b }, + { 0x0012, 0x0001 }, + { 0x0010, 0x0006 }, + { 0x0010, 0x0007 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + { 0x0012, 0x0008 }, + { 0x0011, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0012, 0x000a }, + { 0x0012, 0x000b }, + { 0x0012, 0x000c }, + { 0x0012, 0x000d }, + { 0x0011, 0x0009 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc30[153][2] = + { + { 0x0007, 0x0009 }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0006, 0x0010 }, + { 0x0006, 0x0011 }, + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0006, 0x0014 }, + { 0x0006, 0x0015 }, + { 0x0006, 0x0016 }, + { 0x0006, 0x0017 }, + { 0x0006, 0x0018 }, + { 0x0006, 0x0019 }, + { 0x0006, 0x001a }, + { 0x0006, 0x001b }, + { 0x0006, 0x001c }, + { 0x0006, 0x001d }, + { 0x0006, 0x001e }, + { 0x0006, 0x001f }, + { 0x0006, 0x0020 }, + { 0x0006, 0x0021 }, + { 0x0006, 0x0022 }, + { 0x0006, 0x0023 }, + { 0x0006, 0x0024 }, + { 0x0006, 0x0025 }, + { 0x0006, 0x0026 }, + { 0x0006, 0x0027 }, + { 0x0006, 0x0028 }, + { 0x0006, 0x0029 }, + { 0x0006, 0x002a }, + { 0x0006, 0x002b }, + { 0x0006, 0x002c }, + { 0x0006, 0x002d }, + { 0x0006, 0x002e }, + { 0x0006, 0x002f }, + { 0x0006, 0x0030 }, + { 0x0006, 0x0031 }, + { 0x0006, 0x0032 }, + { 0x0006, 0x0033 }, + { 0x0006, 0x0034 }, + { 0x0006, 0x0035 }, + { 0x0006, 0x0036 }, + { 0x0006, 0x0037 }, + { 0x0006, 0x0038 }, + { 0x0006, 0x0039 }, + { 0x0006, 0x003a }, + { 0x0006, 0x003b }, + { 0x0006, 0x003c }, + { 0x0006, 0x003d }, + { 0x0006, 0x003e }, + { 0x0006, 0x003f }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0007, 0x000c }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0007, 0x0012 }, + { 0x0007, 0x0013 }, + { 0x0007, 0x0014 }, + { 0x0007, 0x0015 }, + { 0x0007, 0x0016 }, + { 0x0007, 0x0017 }, + { 0x0007, 0x0018 }, + { 0x0007, 0x0019 }, + { 0x0007, 0x001a }, + { 0x0007, 0x001b }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0008, 0x000c }, + { 0x0008, 0x000d }, + { 0x0008, 0x000e }, + { 0x0008, 0x000f }, + { 0x0008, 0x0010 }, + { 0x0008, 0x0011 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x0009, 0x000c }, + { 0x0009, 0x000d }, + { 0x0009, 0x000e }, + { 0x000a, 0x0008 }, + { 0x0009, 0x000f }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000a, 0x000c }, + { 0x000a, 0x000d }, + { 0x000b, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000b, 0x000a }, + { 0x000b, 0x000b }, + { 0x000b, 0x000c }, + { 0x000b, 0x000d }, + { 0x000c, 0x0008 }, + { 0x000b, 0x000e }, + { 0x000b, 0x000f }, + { 0x000c, 0x0009 }, + { 0x000c, 0x000a }, + { 0x000d, 0x0008 }, + { 0x000c, 0x000b }, + { 0x000c, 0x000c }, + { 0x000d, 0x0009 }, + { 0x000c, 0x000d }, + { 0x000d, 0x000a }, + { 0x000d, 0x000b }, + { 0x000d, 0x000c }, + { 0x000d, 0x000d }, + { 0x000e, 0x0008 }, + { 0x000d, 0x000e }, + { 0x000d, 0x000f }, + { 0x000e, 0x0009 }, + { 0x000e, 0x000a }, + { 0x000e, 0x000b }, + { 0x000e, 0x000c }, + { 0x000f, 0x0006 }, + { 0x000f, 0x0007 }, + { 0x000f, 0x0008 }, + { 0x0010, 0x0006 }, + { 0x000e, 0x000d }, + { 0x000e, 0x000e }, + { 0x000e, 0x000f }, + { 0x0010, 0x0007 }, + { 0x000f, 0x0009 }, + { 0x0010, 0x0008 }, + { 0x000f, 0x000a }, + { 0x000f, 0x000b }, + { 0x000f, 0x000c }, + { 0x000f, 0x000d }, + { 0x0010, 0x0009 }, + { 0x0011, 0x0000 }, + { 0x0011, 0x0001 }, + { 0x0011, 0x0002 }, + { 0x000f, 0x000e }, + { 0x0010, 0x000a }, + { 0x0011, 0x0003 }, + { 0x0011, 0x0004 }, + { 0x0011, 0x0005 }, + { 0x000f, 0x000f }, + { 0x0011, 0x0006 }, + { 0x0011, 0x0007 }, + { 0x0011, 0x0008 }, + { 0x0011, 0x0009 }, + { 0x0011, 0x000a }, + { 0x0011, 0x000b }, + { 0x0010, 0x000b }, + + }; + +const uint16_t c_aauiLCLDHuffEnc31[181][2] = + { + { 0x0007, 0x000b }, + { 0x0006, 0x0015 }, + { 0x0006, 0x0016 }, + { 0x0006, 0x0017 }, + { 0x0006, 0x0018 }, + { 0x0006, 0x0019 }, + { 0x0006, 0x001a }, + { 0x0006, 0x001b }, + { 0x0006, 0x001c }, + { 0x0006, 0x001d }, + { 0x0006, 0x001e }, + { 0x0006, 0x001f }, + { 0x0006, 0x0020 }, + { 0x0006, 0x0021 }, + { 0x0006, 0x0022 }, + { 0x0006, 0x0023 }, + { 0x0006, 0x0024 }, + { 0x0006, 0x0025 }, + { 0x0006, 0x0026 }, + { 0x0006, 0x0027 }, + { 0x0006, 0x0028 }, + { 0x0006, 0x0029 }, + { 0x0006, 0x002a }, + { 0x0006, 0x002b }, + { 0x0006, 0x002c }, + { 0x0006, 0x002d }, + { 0x0006, 0x002e }, + { 0x0006, 0x002f }, + { 0x0006, 0x0030 }, + { 0x0006, 0x0031 }, + { 0x0006, 0x0032 }, + { 0x0006, 0x0033 }, + { 0x0006, 0x0034 }, + { 0x0006, 0x0035 }, + { 0x0006, 0x0036 }, + { 0x0006, 0x0037 }, + { 0x0006, 0x0038 }, + { 0x0006, 0x0039 }, + { 0x0006, 0x003a }, + { 0x0006, 0x003b }, + { 0x0006, 0x003c }, + { 0x0006, 0x003d }, + { 0x0006, 0x003e }, + { 0x0007, 0x000c }, + { 0x0006, 0x003f }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0007, 0x0012 }, + { 0x0007, 0x0013 }, + { 0x0007, 0x0014 }, + { 0x0007, 0x0015 }, + { 0x0007, 0x0016 }, + { 0x0007, 0x0017 }, + { 0x0007, 0x0018 }, + { 0x0007, 0x0019 }, + { 0x0007, 0x001a }, + { 0x0007, 0x001b }, + { 0x0007, 0x001c }, + { 0x0007, 0x001d }, + { 0x0007, 0x001e }, + { 0x0007, 0x001f }, + { 0x0007, 0x0020 }, + { 0x0007, 0x0021 }, + { 0x0007, 0x0022 }, + { 0x0007, 0x0023 }, + { 0x0007, 0x0024 }, + { 0x0007, 0x0025 }, + { 0x0007, 0x0026 }, + { 0x0007, 0x0027 }, + { 0x0007, 0x0028 }, + { 0x0007, 0x0029 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0008, 0x000c }, + { 0x0008, 0x000d }, + { 0x0008, 0x000e }, + { 0x0008, 0x000f }, + { 0x0008, 0x0010 }, + { 0x0008, 0x0011 }, + { 0x0008, 0x0012 }, + { 0x0008, 0x0013 }, + { 0x0008, 0x0014 }, + { 0x0008, 0x0015 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x0009, 0x000c }, + { 0x0009, 0x000d }, + { 0x0009, 0x000e }, + { 0x0009, 0x000f }, + { 0x0009, 0x0010 }, + { 0x0009, 0x0011 }, + { 0x000a, 0x0008 }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000a, 0x000c }, + { 0x000a, 0x000d }, + { 0x000a, 0x000e }, + { 0x000a, 0x000f }, + { 0x000b, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000b, 0x000a }, + { 0x000b, 0x000b }, + { 0x000b, 0x000c }, + { 0x000b, 0x000d }, + { 0x000b, 0x000e }, + { 0x000c, 0x0008 }, + { 0x000c, 0x0009 }, + { 0x000b, 0x000f }, + { 0x000c, 0x000a }, + { 0x000c, 0x000b }, + { 0x000c, 0x000c }, + { 0x000c, 0x000d }, + { 0x000d, 0x0008 }, + { 0x000c, 0x000e }, + { 0x000d, 0x0009 }, + { 0x000d, 0x000a }, + { 0x000c, 0x000f }, + { 0x000d, 0x000b }, + { 0x000d, 0x000c }, + { 0x000d, 0x000d }, + { 0x000d, 0x000e }, + { 0x000d, 0x000f }, + { 0x000e, 0x0008 }, + { 0x000e, 0x0009 }, + { 0x000e, 0x000a }, + { 0x000e, 0x000b }, + { 0x000e, 0x000c }, + { 0x000e, 0x000d }, + { 0x000e, 0x000e }, + { 0x000e, 0x000f }, + { 0x000f, 0x0009 }, + { 0x000f, 0x000a }, + { 0x000f, 0x000b }, + { 0x000f, 0x000c }, + { 0x0010, 0x0009 }, + { 0x000f, 0x000d }, + { 0x000f, 0x000e }, + { 0x0010, 0x000a }, + { 0x0010, 0x000b }, + { 0x0010, 0x000c }, + { 0x0010, 0x000d }, + { 0x0011, 0x000a }, + { 0x0010, 0x000e }, + { 0x000f, 0x000f }, + { 0x0010, 0x000f }, + { 0x0012, 0x0000 }, + { 0x0012, 0x0001 }, + { 0x0011, 0x000b }, + { 0x0011, 0x000c }, + { 0x0010, 0x0010 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0011, 0x000d }, + { 0x0011, 0x000e }, + { 0x0011, 0x000f }, + { 0x0011, 0x0010 }, + { 0x0011, 0x0011 }, + { 0x0010, 0x0011 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + { 0x0012, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0012, 0x000a }, + { 0x0012, 0x000b }, + { 0x0012, 0x000c }, + { 0x0012, 0x000d }, + { 0x0012, 0x000e }, + { 0x0012, 0x000f }, + { 0x0012, 0x0010 }, + { 0x0012, 0x0011 }, + { 0x0012, 0x0012 }, + { 0x0012, 0x0013 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc33[16][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0008, 0x0000 }, + { 0x0008, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + }; + +const uint16_t c_aauiLCLDHuffEnc34[16][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0008, 0x0000 }, + { 0x0008, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + }; + +const uint16_t c_aauiLCLDHuffEnc35[25][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0007, 0x0006 }, + { 0x0009, 0x0000 }, + { 0x0009, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0009, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x0007, 0x0007 }, + { 0x0009, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x0009, 0x000c }, + { 0x0009, 0x000d }, + { 0x0008, 0x0007 }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + + }; + +const uint16_t c_aauiLCLDHuffEnc36[36][2] = + { + { 0x0001, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0006, 0x0002 }, + { 0x000b, 0x0000 }, + { 0x000b, 0x0001 }, + { 0x000b, 0x0002 }, + { 0x0003, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0008, 0x0005 }, + { 0x000b, 0x0003 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x0006, 0x0003 }, + { 0x0007, 0x0003 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000b, 0x000a }, + { 0x000b, 0x000b }, + { 0x000b, 0x000c }, + { 0x000b, 0x000d }, + { 0x000b, 0x000e }, + { 0x000b, 0x000f }, + { 0x000a, 0x0008 }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000a, 0x000c }, + { 0x000a, 0x000d }, + { 0x000a, 0x000e }, + { 0x000a, 0x000f }, + { 0x000a, 0x0010 }, + { 0x000a, 0x0011 }, + { 0x000a, 0x0012 }, + { 0x000a, 0x0013 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc37[36][2] = + { + { 0x0001, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000c, 0x0000 }, + { 0x000c, 0x0001 }, + { 0x000c, 0x0002 }, + { 0x0003, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0006, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x0006, 0x0003 }, + { 0x0007, 0x0001 }, + { 0x000a, 0x0007 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000c, 0x0008 }, + { 0x000c, 0x0009 }, + { 0x000c, 0x000a }, + { 0x000c, 0x000b }, + { 0x000c, 0x000c }, + { 0x000c, 0x000d }, + { 0x000c, 0x000e }, + { 0x000c, 0x000f }, + { 0x000c, 0x0010 }, + { 0x000c, 0x0011 }, + { 0x000c, 0x0012 }, + { 0x000c, 0x0013 }, + { 0x000c, 0x0014 }, + { 0x000c, 0x0015 }, + { 0x000c, 0x0016 }, + { 0x000c, 0x0017 }, + { 0x000c, 0x0018 }, + { 0x000c, 0x0019 }, + { 0x000b, 0x000d }, + + }; + +const uint16_t c_aauiLCLDHuffEnc38[49][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000c, 0x0012 }, + { 0x000d, 0x0000 }, + { 0x000d, 0x0001 }, + { 0x000d, 0x0002 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000b, 0x000a }, + { 0x000d, 0x0003 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0009, 0x0003 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000d, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x000c, 0x0013 }, + { 0x000b, 0x000b }, + { 0x000d, 0x000a }, + { 0x000d, 0x000b }, + { 0x000d, 0x000c }, + { 0x000d, 0x000d }, + { 0x000d, 0x000e }, + { 0x000d, 0x000f }, + { 0x000d, 0x0010 }, + { 0x000d, 0x0011 }, + { 0x000d, 0x0012 }, + { 0x000d, 0x0013 }, + { 0x000d, 0x0014 }, + { 0x000d, 0x0015 }, + { 0x000d, 0x0016 }, + { 0x000d, 0x0017 }, + { 0x000d, 0x0018 }, + { 0x000d, 0x0019 }, + { 0x000d, 0x001a }, + { 0x000d, 0x001b }, + { 0x000d, 0x001c }, + { 0x000d, 0x001d }, + { 0x000d, 0x001e }, + { 0x000d, 0x001f }, + { 0x000d, 0x0020 }, + { 0x000d, 0x0021 }, + { 0x000d, 0x0022 }, + { 0x000d, 0x0023 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc39[64][2] = + { + { 0x0001, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000a, 0x0002 }, + { 0x000f, 0x0000 }, + { 0x000f, 0x0001 }, + { 0x000f, 0x0002 }, + { 0x000f, 0x0003 }, + { 0x0003, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000a, 0x0003 }, + { 0x000f, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x000f, 0x0006 }, + { 0x000f, 0x0007 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0009, 0x0003 }, + { 0x000d, 0x000e }, + { 0x000f, 0x0008 }, + { 0x000f, 0x0009 }, + { 0x000f, 0x000a }, + { 0x000f, 0x000b }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000d, 0x000f }, + { 0x000f, 0x000c }, + { 0x000f, 0x000d }, + { 0x000f, 0x000e }, + { 0x000f, 0x000f }, + { 0x000f, 0x0010 }, + { 0x000f, 0x0011 }, + { 0x000f, 0x0012 }, + { 0x000f, 0x0013 }, + { 0x000f, 0x0014 }, + { 0x000f, 0x0015 }, + { 0x000f, 0x0016 }, + { 0x000f, 0x0017 }, + { 0x000f, 0x0018 }, + { 0x000f, 0x0019 }, + { 0x000f, 0x001a }, + { 0x000f, 0x001b }, + { 0x000f, 0x001c }, + { 0x000f, 0x001d }, + { 0x000f, 0x001e }, + { 0x000f, 0x001f }, + { 0x000f, 0x0020 }, + { 0x000f, 0x0021 }, + { 0x000f, 0x0022 }, + { 0x000f, 0x0023 }, + { 0x000f, 0x0024 }, + { 0x000f, 0x0025 }, + { 0x000f, 0x0026 }, + { 0x000f, 0x0027 }, + { 0x000f, 0x0028 }, + { 0x000f, 0x0029 }, + { 0x000e, 0x0015 }, + { 0x000e, 0x0016 }, + { 0x000e, 0x0017 }, + { 0x000e, 0x0018 }, + { 0x000e, 0x0019 }, + { 0x000e, 0x001a }, + { 0x000e, 0x001b }, + }; + +const uint16_t c_aauiLCLDHuffEnc40[81][2] = + { + { 0x0001, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000b, 0x0002 }, + { 0x000f, 0x0011 }, + { 0x0011, 0x0000 }, + { 0x0011, 0x0001 }, + { 0x0011, 0x0002 }, + { 0x0011, 0x0003 }, + { 0x0003, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000a, 0x0002 }, + { 0x000e, 0x0009 }, + { 0x0011, 0x0004 }, + { 0x0011, 0x0005 }, + { 0x0011, 0x0006 }, + { 0x0011, 0x0007 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x000d, 0x0005 }, + { 0x0011, 0x0008 }, + { 0x0011, 0x0009 }, + { 0x0011, 0x000a }, + { 0x0011, 0x000b }, + { 0x0011, 0x000c }, + { 0x000b, 0x0003 }, + { 0x000a, 0x0003 }, + { 0x000c, 0x0003 }, + { 0x0011, 0x000d }, + { 0x0011, 0x000e }, + { 0x0011, 0x000f }, + { 0x0011, 0x0010 }, + { 0x0011, 0x0011 }, + { 0x0011, 0x0012 }, + { 0x0011, 0x0013 }, + { 0x0011, 0x0014 }, + { 0x0011, 0x0015 }, + { 0x0011, 0x0016 }, + { 0x0011, 0x0017 }, + { 0x0011, 0x0018 }, + { 0x0011, 0x0019 }, + { 0x0011, 0x001a }, + { 0x0011, 0x001b }, + { 0x0011, 0x001c }, + { 0x0011, 0x001d }, + { 0x0011, 0x001e }, + { 0x0011, 0x001f }, + { 0x0011, 0x0020 }, + { 0x0011, 0x0021 }, + { 0x0011, 0x0022 }, + { 0x0011, 0x0023 }, + { 0x0011, 0x0024 }, + { 0x0011, 0x0025 }, + { 0x0011, 0x0026 }, + { 0x0011, 0x0027 }, + { 0x0011, 0x0028 }, + { 0x0011, 0x0029 }, + { 0x0011, 0x002a }, + { 0x0011, 0x002b }, + { 0x0011, 0x002c }, + { 0x0011, 0x002d }, + { 0x0011, 0x002e }, + { 0x0011, 0x002f }, + { 0x0011, 0x0030 }, + { 0x0011, 0x0031 }, + { 0x0011, 0x0032 }, + { 0x0011, 0x0033 }, + { 0x0011, 0x0034 }, + { 0x0011, 0x0035 }, + { 0x0011, 0x0036 }, + { 0x0011, 0x0037 }, + { 0x0011, 0x0038 }, + { 0x0011, 0x0039 }, + { 0x0011, 0x003a }, + { 0x0011, 0x003b }, + { 0x0010, 0x001e }, + { 0x0010, 0x001f }, + { 0x0010, 0x0020 }, + { 0x0010, 0x0021 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc41[100][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x0011, 0x0014 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x0010, 0x000b }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x000d, 0x0002 }, + { 0x0011, 0x0015 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000d, 0x0003 }, + { 0x0010, 0x000c }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0010, 0x000d }, + { 0x000f, 0x0007 }, + { 0x0012, 0x0027 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0013, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0013, 0x0032 }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0013, 0x0038 }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0013, 0x004d }, + + }; + +const uint16_t c_aauiLCLDHuffEnc42[169][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000e, 0x0006 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0001 }, + { 0x0009, 0x0002 }, + { 0x000d, 0x0004 }, + { 0x0010, 0x0013 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0008, 0x0002 }, + { 0x000b, 0x0002 }, + { 0x000f, 0x000b }, + { 0x0011, 0x0025 }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0009, 0x0003 }, + { 0x0008, 0x0003 }, + { 0x000b, 0x0003 }, + { 0x000d, 0x0005 }, + { 0x0010, 0x0014 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000e, 0x0007 }, + { 0x0010, 0x0015 }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0012, 0x0045 }, + { 0x0013, 0x0027 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0013, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0013, 0x0032 }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0013, 0x0038 }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0013, 0x004d }, + { 0x0013, 0x004e }, + { 0x0013, 0x004f }, + { 0x0013, 0x0050 }, + { 0x0013, 0x0051 }, + { 0x0013, 0x0052 }, + { 0x0013, 0x0053 }, + { 0x0013, 0x0054 }, + { 0x0013, 0x0055 }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0013, 0x0058 }, + { 0x0013, 0x0059 }, + { 0x0013, 0x005a }, + { 0x0013, 0x005b }, + { 0x0013, 0x005c }, + { 0x0013, 0x005d }, + { 0x0013, 0x005e }, + { 0x0013, 0x005f }, + { 0x0013, 0x0060 }, + { 0x0013, 0x0061 }, + { 0x0013, 0x0062 }, + { 0x0013, 0x0063 }, + { 0x0013, 0x0064 }, + { 0x0013, 0x0065 }, + { 0x0013, 0x0066 }, + { 0x0013, 0x0067 }, + { 0x0013, 0x0068 }, + { 0x0013, 0x0069 }, + { 0x0013, 0x006a }, + { 0x0013, 0x006b }, + { 0x0013, 0x006c }, + { 0x0013, 0x006d }, + { 0x0013, 0x006e }, + { 0x0013, 0x006f }, + { 0x0013, 0x0070 }, + { 0x0013, 0x0071 }, + { 0x0013, 0x0072 }, + { 0x0013, 0x0073 }, + { 0x0013, 0x0074 }, + { 0x0013, 0x0075 }, + { 0x0013, 0x0076 }, + { 0x0013, 0x0077 }, + { 0x0013, 0x0078 }, + { 0x0013, 0x0079 }, + { 0x0013, 0x007a }, + { 0x0013, 0x007b }, + { 0x0013, 0x007c }, + { 0x0013, 0x007d }, + { 0x0013, 0x007e }, + { 0x0013, 0x007f }, + { 0x0013, 0x0080 }, + { 0x0013, 0x0081 }, + { 0x0013, 0x0082 }, + { 0x0013, 0x0083 }, + { 0x0013, 0x0084 }, + { 0x0013, 0x0085 }, + { 0x0013, 0x0086 }, + { 0x0013, 0x0087 }, + { 0x0013, 0x0088 }, + { 0x0013, 0x0089 }, + { 0x0012, 0x0046 }, + { 0x0012, 0x0047 }, + { 0x0012, 0x0048 }, + { 0x0012, 0x0049 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc43[196][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0009, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x0010, 0x0017 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0001 }, + { 0x0009, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x0010, 0x0018 }, + { 0x0012, 0x0050 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0008, 0x0003 }, + { 0x000a, 0x0002 }, + { 0x000d, 0x0004 }, + { 0x0011, 0x002a }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x000a, 0x0003 }, + { 0x000c, 0x0005 }, + { 0x000f, 0x000d }, + { 0x0012, 0x0051 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000d, 0x0005 }, + { 0x000f, 0x000e }, + { 0x0011, 0x002b }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0011, 0x002c }, + { 0x000f, 0x000f }, + { 0x0010, 0x0019 }, + { 0x0012, 0x0052 }, + { 0x0012, 0x0053 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0013, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0011, 0x002d }, + { 0x0013, 0x0032 }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0013, 0x0038 }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0013, 0x004d }, + { 0x0013, 0x004e }, + { 0x0013, 0x004f }, + { 0x0013, 0x0050 }, + { 0x0013, 0x0051 }, + { 0x0013, 0x0052 }, + { 0x0013, 0x0053 }, + { 0x0013, 0x0054 }, + { 0x0013, 0x0055 }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0013, 0x0058 }, + { 0x0013, 0x0059 }, + { 0x0013, 0x005a }, + { 0x0013, 0x005b }, + { 0x0013, 0x005c }, + { 0x0013, 0x005d }, + { 0x0013, 0x005e }, + { 0x0013, 0x005f }, + { 0x0013, 0x0060 }, + { 0x0013, 0x0061 }, + { 0x0013, 0x0062 }, + { 0x0013, 0x0063 }, + { 0x0013, 0x0064 }, + { 0x0013, 0x0065 }, + { 0x0013, 0x0066 }, + { 0x0013, 0x0067 }, + { 0x0013, 0x0068 }, + { 0x0013, 0x0069 }, + { 0x0013, 0x006a }, + { 0x0013, 0x006b }, + { 0x0013, 0x006c }, + { 0x0013, 0x006d }, + { 0x0013, 0x006e }, + { 0x0013, 0x006f }, + { 0x0013, 0x0070 }, + { 0x0013, 0x0071 }, + { 0x0013, 0x0072 }, + { 0x0013, 0x0073 }, + { 0x0013, 0x0074 }, + { 0x0013, 0x0075 }, + { 0x0013, 0x0076 }, + { 0x0013, 0x0077 }, + { 0x0013, 0x0078 }, + { 0x0013, 0x0079 }, + { 0x0013, 0x007a }, + { 0x0013, 0x007b }, + { 0x0013, 0x007c }, + { 0x0013, 0x007d }, + { 0x0013, 0x007e }, + { 0x0013, 0x007f }, + { 0x0013, 0x0080 }, + { 0x0013, 0x0081 }, + { 0x0013, 0x0082 }, + { 0x0013, 0x0083 }, + { 0x0013, 0x0084 }, + { 0x0013, 0x0085 }, + { 0x0013, 0x0086 }, + { 0x0013, 0x0087 }, + { 0x0013, 0x0088 }, + { 0x0013, 0x0089 }, + { 0x0013, 0x008a }, + { 0x0013, 0x008b }, + { 0x0013, 0x008c }, + { 0x0013, 0x008d }, + { 0x0013, 0x008e }, + { 0x0013, 0x008f }, + { 0x0013, 0x0090 }, + { 0x0013, 0x0091 }, + { 0x0013, 0x0092 }, + { 0x0013, 0x0093 }, + { 0x0013, 0x0094 }, + { 0x0013, 0x0095 }, + { 0x0013, 0x0096 }, + { 0x0013, 0x0097 }, + { 0x0013, 0x0098 }, + { 0x0013, 0x0099 }, + { 0x0013, 0x009a }, + { 0x0013, 0x009b }, + { 0x0013, 0x009c }, + { 0x0013, 0x009d }, + { 0x0013, 0x009e }, + { 0x0013, 0x009f }, + + }; + +const uint16_t c_aauiLCLDHuffEnc44[289][2] = + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0002 }, + { 0x0008, 0x0002 }, + { 0x000b, 0x0002 }, + { 0x000f, 0x000a }, + { 0x0011, 0x0022 }, + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0014, 0x0006 }, + { 0x0014, 0x0007 }, + { 0x0014, 0x0008 }, + { 0x0014, 0x0009 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x000b, 0x0003 }, + { 0x000e, 0x0007 }, + { 0x0012, 0x003f }, + { 0x0014, 0x000a }, + { 0x0014, 0x000b }, + { 0x0014, 0x000c }, + { 0x0014, 0x000d }, + { 0x0014, 0x000e }, + { 0x0014, 0x000f }, + { 0x0014, 0x0010 }, + { 0x0014, 0x0011 }, + { 0x0014, 0x0012 }, + { 0x0014, 0x0013 }, + { 0x0006, 0x0003 }, + { 0x0005, 0x0003 }, + { 0x0007, 0x0003 }, + { 0x0009, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000f, 0x000b }, + { 0x0012, 0x0040 }, + { 0x0014, 0x0014 }, + { 0x0014, 0x0015 }, + { 0x0014, 0x0016 }, + { 0x0014, 0x0017 }, + { 0x0014, 0x0018 }, + { 0x0014, 0x0019 }, + { 0x0014, 0x001a }, + { 0x0014, 0x001b }, + { 0x0014, 0x001c }, + { 0x0014, 0x001d }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0009, 0x0003 }, + { 0x000b, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x0010, 0x0013 }, + { 0x0014, 0x001e }, + { 0x0014, 0x001f }, + { 0x0014, 0x0020 }, + { 0x0014, 0x0021 }, + { 0x0014, 0x0022 }, + { 0x0014, 0x0023 }, + { 0x0014, 0x0024 }, + { 0x0014, 0x0025 }, + { 0x0014, 0x0026 }, + { 0x0014, 0x0027 }, + { 0x0014, 0x0028 }, + { 0x000b, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000e, 0x0008 }, + { 0x0011, 0x0023 }, + { 0x0012, 0x0041 }, + { 0x0014, 0x0029 }, + { 0x0014, 0x002a }, + { 0x0013, 0x007b }, + { 0x0014, 0x002b }, + { 0x0014, 0x002c }, + { 0x0014, 0x002d }, + { 0x0014, 0x002e }, + { 0x0014, 0x002f }, + { 0x0014, 0x0030 }, + { 0x0014, 0x0031 }, + { 0x0014, 0x0032 }, + { 0x000f, 0x000c }, + { 0x000e, 0x0009 }, + { 0x000f, 0x000d }, + { 0x0011, 0x0024 }, + { 0x0012, 0x0042 }, + { 0x0014, 0x0033 }, + { 0x0014, 0x0034 }, + { 0x0014, 0x0035 }, + { 0x0014, 0x0036 }, + { 0x0014, 0x0037 }, + { 0x0014, 0x0038 }, + { 0x0014, 0x0039 }, + { 0x0014, 0x003a }, + { 0x0014, 0x003b }, + { 0x0014, 0x003c }, + { 0x0014, 0x003d }, + { 0x0014, 0x003e }, + { 0x0013, 0x007c }, + { 0x0011, 0x0025 }, + { 0x0012, 0x0043 }, + { 0x0014, 0x003f }, + { 0x0014, 0x0040 }, + { 0x0014, 0x0041 }, + { 0x0014, 0x0042 }, + { 0x0014, 0x0043 }, + { 0x0014, 0x0044 }, + { 0x0014, 0x0045 }, + { 0x0014, 0x0046 }, + { 0x0014, 0x0047 }, + { 0x0014, 0x0048 }, + { 0x0014, 0x0049 }, + { 0x0014, 0x004a }, + { 0x0014, 0x004b }, + { 0x0014, 0x004c }, + { 0x0014, 0x004d }, + { 0x0014, 0x004e }, + { 0x0014, 0x004f }, + { 0x0014, 0x0050 }, + { 0x0014, 0x0051 }, + { 0x0014, 0x0052 }, + { 0x0014, 0x0053 }, + { 0x0014, 0x0054 }, + { 0x0014, 0x0055 }, + { 0x0014, 0x0056 }, + { 0x0014, 0x0057 }, + { 0x0014, 0x0058 }, + { 0x0014, 0x0059 }, + { 0x0014, 0x005a }, + { 0x0014, 0x005b }, + { 0x0014, 0x005c }, + { 0x0014, 0x005d }, + { 0x0014, 0x005e }, + { 0x0014, 0x005f }, + { 0x0014, 0x0060 }, + { 0x0014, 0x0061 }, + { 0x0014, 0x0062 }, + { 0x0014, 0x0063 }, + { 0x0014, 0x0064 }, + { 0x0014, 0x0065 }, + { 0x0014, 0x0066 }, + { 0x0014, 0x0067 }, + { 0x0014, 0x0068 }, + { 0x0014, 0x0069 }, + { 0x0014, 0x006a }, + { 0x0014, 0x006b }, + { 0x0014, 0x006c }, + { 0x0014, 0x006d }, + { 0x0014, 0x006e }, + { 0x0014, 0x006f }, + { 0x0014, 0x0070 }, + { 0x0014, 0x0071 }, + { 0x0014, 0x0072 }, + { 0x0014, 0x0073 }, + { 0x0014, 0x0074 }, + { 0x0014, 0x0075 }, + { 0x0014, 0x0076 }, + { 0x0014, 0x0077 }, + { 0x0014, 0x0078 }, + { 0x0014, 0x0079 }, + { 0x0014, 0x007a }, + { 0x0014, 0x007b }, + { 0x0014, 0x007c }, + { 0x0014, 0x007d }, + { 0x0014, 0x007e }, + { 0x0014, 0x007f }, + { 0x0014, 0x0080 }, + { 0x0014, 0x0081 }, + { 0x0014, 0x0082 }, + { 0x0014, 0x0083 }, + { 0x0014, 0x0084 }, + { 0x0014, 0x0085 }, + { 0x0014, 0x0086 }, + { 0x0014, 0x0087 }, + { 0x0014, 0x0088 }, + { 0x0014, 0x0089 }, + { 0x0014, 0x008a }, + { 0x0014, 0x008b }, + { 0x0014, 0x008c }, + { 0x0014, 0x008d }, + { 0x0014, 0x008e }, + { 0x0014, 0x008f }, + { 0x0014, 0x0090 }, + { 0x0014, 0x0091 }, + { 0x0014, 0x0092 }, + { 0x0014, 0x0093 }, + { 0x0014, 0x0094 }, + { 0x0014, 0x0095 }, + { 0x0014, 0x0096 }, + { 0x0014, 0x0097 }, + { 0x0014, 0x0098 }, + { 0x0014, 0x0099 }, + { 0x0014, 0x009a }, + { 0x0014, 0x009b }, + { 0x0014, 0x009c }, + { 0x0014, 0x009d }, + { 0x0014, 0x009e }, + { 0x0014, 0x009f }, + { 0x0014, 0x00a0 }, + { 0x0014, 0x00a1 }, + { 0x0014, 0x00a2 }, + { 0x0014, 0x00a3 }, + { 0x0014, 0x00a4 }, + { 0x0014, 0x00a5 }, + { 0x0014, 0x00a6 }, + { 0x0014, 0x00a7 }, + { 0x0014, 0x00a8 }, + { 0x0014, 0x00a9 }, + { 0x0014, 0x00aa }, + { 0x0014, 0x00ab }, + { 0x0014, 0x00ac }, + { 0x0014, 0x00ad }, + { 0x0014, 0x00ae }, + { 0x0014, 0x00af }, + { 0x0014, 0x00b0 }, + { 0x0014, 0x00b1 }, + { 0x0014, 0x00b2 }, + { 0x0014, 0x00b3 }, + { 0x0014, 0x00b4 }, + { 0x0014, 0x00b5 }, + { 0x0014, 0x00b6 }, + { 0x0014, 0x00b7 }, + { 0x0014, 0x00b8 }, + { 0x0014, 0x00b9 }, + { 0x0014, 0x00ba }, + { 0x0014, 0x00bb }, + { 0x0014, 0x00bc }, + { 0x0014, 0x00bd }, + { 0x0014, 0x00be }, + { 0x0014, 0x00bf }, + { 0x0014, 0x00c0 }, + { 0x0014, 0x00c1 }, + { 0x0014, 0x00c2 }, + { 0x0014, 0x00c3 }, + { 0x0014, 0x00c4 }, + { 0x0014, 0x00c5 }, + { 0x0014, 0x00c6 }, + { 0x0014, 0x00c7 }, + { 0x0014, 0x00c8 }, + { 0x0014, 0x00c9 }, + { 0x0014, 0x00ca }, + { 0x0014, 0x00cb }, + { 0x0014, 0x00cc }, + { 0x0014, 0x00cd }, + { 0x0014, 0x00ce }, + { 0x0014, 0x00cf }, + { 0x0014, 0x00d0 }, + { 0x0014, 0x00d1 }, + { 0x0014, 0x00d2 }, + { 0x0014, 0x00d3 }, + { 0x0014, 0x00d4 }, + { 0x0014, 0x00d5 }, + { 0x0014, 0x00d6 }, + { 0x0014, 0x00d7 }, + { 0x0014, 0x00d8 }, + { 0x0014, 0x00d9 }, + { 0x0014, 0x00da }, + { 0x0014, 0x00db }, + { 0x0014, 0x00dc }, + { 0x0014, 0x00dd }, + { 0x0014, 0x00de }, + { 0x0014, 0x00df }, + { 0x0014, 0x00e0 }, + { 0x0014, 0x00e1 }, + { 0x0014, 0x00e2 }, + { 0x0014, 0x00e3 }, + { 0x0014, 0x00e4 }, + { 0x0014, 0x00e5 }, + { 0x0014, 0x00e6 }, + { 0x0014, 0x00e7 }, + { 0x0014, 0x00e8 }, + { 0x0014, 0x00e9 }, + { 0x0014, 0x00ea }, + { 0x0014, 0x00eb }, + { 0x0014, 0x00ec }, + { 0x0014, 0x00ed }, + { 0x0014, 0x00ee }, + { 0x0014, 0x00ef }, + { 0x0014, 0x00f0 }, + { 0x0014, 0x00f1 }, + { 0x0014, 0x00f2 }, + { 0x0014, 0x00f3 }, + { 0x0014, 0x00f4 }, + { 0x0014, 0x00f5 }, + { 0x0013, 0x007d }, + + }; + + +const uint16_t c_aauiLCLDHuffEnc45[324][2] = + { + { 0x0002, 0x0002 }, + { 0x0003, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0007, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x000c, 0x0005 }, + { 0x0010, 0x0025 }, + { 0x0012, 0x0088 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0006, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x000b, 0x0004 }, + { 0x000f, 0x0014 }, + { 0x0011, 0x0048 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0005, 0x0005 }, + { 0x0004, 0x0003 }, + { 0x0006, 0x0004 }, + { 0x0007, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000d, 0x0007 }, + { 0x000f, 0x0015 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0007, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0005 }, + { 0x0009, 0x0005 }, + { 0x000b, 0x0005 }, + { 0x000d, 0x0008 }, + { 0x0010, 0x0026 }, + { 0x0012, 0x0089 }, + { 0x0012, 0x008a }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x000a, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000d, 0x0009 }, + { 0x000f, 0x0016 }, + { 0x0011, 0x0049 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0013, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0013, 0x0032 }, + { 0x000c, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000c, 0x0007 }, + { 0x000e, 0x000d }, + { 0x0010, 0x0027 }, + { 0x0012, 0x008b }, + { 0x0012, 0x008c }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0013, 0x0038 }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x000f, 0x0017 }, + { 0x000f, 0x0018 }, + { 0x000f, 0x0019 }, + { 0x0012, 0x008d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0012, 0x008e }, + { 0x0012, 0x008f }, + { 0x0013, 0x004d }, + { 0x0013, 0x004e }, + { 0x0013, 0x004f }, + { 0x0013, 0x0050 }, + { 0x0013, 0x0051 }, + { 0x0013, 0x0052 }, + { 0x0013, 0x0053 }, + { 0x0013, 0x0054 }, + { 0x0013, 0x0055 }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0013, 0x0058 }, + { 0x0013, 0x0059 }, + { 0x0013, 0x005a }, + { 0x0013, 0x005b }, + { 0x0013, 0x005c }, + { 0x0013, 0x005d }, + { 0x0013, 0x005e }, + { 0x0013, 0x005f }, + { 0x0013, 0x0060 }, + { 0x0013, 0x0061 }, + { 0x0013, 0x0062 }, + { 0x0013, 0x0063 }, + { 0x0013, 0x0064 }, + { 0x0013, 0x0065 }, + { 0x0013, 0x0066 }, + { 0x0013, 0x0067 }, + { 0x0013, 0x0068 }, + { 0x0013, 0x0069 }, + { 0x0013, 0x006a }, + { 0x0013, 0x006b }, + { 0x0013, 0x006c }, + { 0x0013, 0x006d }, + { 0x0013, 0x006e }, + { 0x0013, 0x006f }, + { 0x0013, 0x0070 }, + { 0x0013, 0x0071 }, + { 0x0013, 0x0072 }, + { 0x0013, 0x0073 }, + { 0x0013, 0x0074 }, + { 0x0013, 0x0075 }, + { 0x0013, 0x0076 }, + { 0x0013, 0x0077 }, + { 0x0013, 0x0078 }, + { 0x0013, 0x0079 }, + { 0x0013, 0x007a }, + { 0x0013, 0x007b }, + { 0x0013, 0x007c }, + { 0x0013, 0x007d }, + { 0x0013, 0x007e }, + { 0x0013, 0x007f }, + { 0x0013, 0x0080 }, + { 0x0013, 0x0081 }, + { 0x0013, 0x0082 }, + { 0x0013, 0x0083 }, + { 0x0013, 0x0084 }, + { 0x0013, 0x0085 }, + { 0x0013, 0x0086 }, + { 0x0013, 0x0087 }, + { 0x0013, 0x0088 }, + { 0x0013, 0x0089 }, + { 0x0013, 0x008a }, + { 0x0013, 0x008b }, + { 0x0013, 0x008c }, + { 0x0013, 0x008d }, + { 0x0013, 0x008e }, + { 0x0013, 0x008f }, + { 0x0013, 0x0090 }, + { 0x0013, 0x0091 }, + { 0x0013, 0x0092 }, + { 0x0013, 0x0093 }, + { 0x0013, 0x0094 }, + { 0x0013, 0x0095 }, + { 0x0013, 0x0096 }, + { 0x0013, 0x0097 }, + { 0x0013, 0x0098 }, + { 0x0013, 0x0099 }, + { 0x0013, 0x009a }, + { 0x0013, 0x009b }, + { 0x0013, 0x009c }, + { 0x0013, 0x009d }, + { 0x0013, 0x009e }, + { 0x0013, 0x009f }, + { 0x0013, 0x00a0 }, + { 0x0013, 0x00a1 }, + { 0x0013, 0x00a2 }, + { 0x0013, 0x00a3 }, + { 0x0013, 0x00a4 }, + { 0x0013, 0x00a5 }, + { 0x0013, 0x00a6 }, + { 0x0013, 0x00a7 }, + { 0x0013, 0x00a8 }, + { 0x0013, 0x00a9 }, + { 0x0013, 0x00aa }, + { 0x0013, 0x00ab }, + { 0x0013, 0x00ac }, + { 0x0013, 0x00ad }, + { 0x0013, 0x00ae }, + { 0x0013, 0x00af }, + { 0x0013, 0x00b0 }, + { 0x0013, 0x00b1 }, + { 0x0013, 0x00b2 }, + { 0x0013, 0x00b3 }, + { 0x0013, 0x00b4 }, + { 0x0013, 0x00b5 }, + { 0x0013, 0x00b6 }, + { 0x0013, 0x00b7 }, + { 0x0013, 0x00b8 }, + { 0x0013, 0x00b9 }, + { 0x0013, 0x00ba }, + { 0x0013, 0x00bb }, + { 0x0013, 0x00bc }, + { 0x0013, 0x00bd }, + { 0x0013, 0x00be }, + { 0x0013, 0x00bf }, + { 0x0013, 0x00c0 }, + { 0x0013, 0x00c1 }, + { 0x0013, 0x00c2 }, + { 0x0013, 0x00c3 }, + { 0x0013, 0x00c4 }, + { 0x0013, 0x00c5 }, + { 0x0013, 0x00c6 }, + { 0x0013, 0x00c7 }, + { 0x0013, 0x00c8 }, + { 0x0013, 0x00c9 }, + { 0x0013, 0x00ca }, + { 0x0013, 0x00cb }, + { 0x0013, 0x00cc }, + { 0x0013, 0x00cd }, + { 0x0013, 0x00ce }, + { 0x0013, 0x00cf }, + { 0x0013, 0x00d0 }, + { 0x0013, 0x00d1 }, + { 0x0013, 0x00d2 }, + { 0x0013, 0x00d3 }, + { 0x0013, 0x00d4 }, + { 0x0013, 0x00d5 }, + { 0x0013, 0x00d6 }, + { 0x0013, 0x00d7 }, + { 0x0013, 0x00d8 }, + { 0x0013, 0x00d9 }, + { 0x0013, 0x00da }, + { 0x0013, 0x00db }, + { 0x0013, 0x00dc }, + { 0x0013, 0x00dd }, + { 0x0013, 0x00de }, + { 0x0013, 0x00df }, + { 0x0013, 0x00e0 }, + { 0x0013, 0x00e1 }, + { 0x0013, 0x00e2 }, + { 0x0013, 0x00e3 }, + { 0x0013, 0x00e4 }, + { 0x0013, 0x00e5 }, + { 0x0013, 0x00e6 }, + { 0x0013, 0x00e7 }, + { 0x0013, 0x00e8 }, + { 0x0013, 0x00e9 }, + { 0x0013, 0x00ea }, + { 0x0013, 0x00eb }, + { 0x0013, 0x00ec }, + { 0x0013, 0x00ed }, + { 0x0013, 0x00ee }, + { 0x0013, 0x00ef }, + { 0x0013, 0x00f0 }, + { 0x0013, 0x00f1 }, + { 0x0013, 0x00f2 }, + { 0x0013, 0x00f3 }, + { 0x0013, 0x00f4 }, + { 0x0013, 0x00f5 }, + { 0x0013, 0x00f6 }, + { 0x0013, 0x00f7 }, + { 0x0013, 0x00f8 }, + { 0x0013, 0x00f9 }, + { 0x0013, 0x00fa }, + { 0x0013, 0x00fb }, + { 0x0013, 0x00fc }, + { 0x0013, 0x00fd }, + { 0x0013, 0x00fe }, + { 0x0013, 0x00ff }, + { 0x0013, 0x0100 }, + { 0x0013, 0x0101 }, + { 0x0013, 0x0102 }, + { 0x0013, 0x0103 }, + { 0x0013, 0x0104 }, + { 0x0013, 0x0105 }, + { 0x0013, 0x0106 }, + { 0x0013, 0x0107 }, + { 0x0013, 0x0108 }, + { 0x0013, 0x0109 }, + { 0x0013, 0x010a }, + { 0x0013, 0x010b }, + { 0x0013, 0x010c }, + { 0x0013, 0x010d }, + { 0x0013, 0x010e }, + { 0x0013, 0x010f }, + + }; + +const uint16_t c_aauiLCLDHuffEnc46[400][2] = + { + { 0x0002, 0x0002 }, + { 0x0003, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0007, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000d, 0x000a }, + { 0x000f, 0x0018 }, + { 0x0012, 0x00a6 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0006, 0x0004 }, + { 0x0008, 0x0004 }, + { 0x000a, 0x0006 }, + { 0x000c, 0x0008 }, + { 0x000e, 0x0011 }, + { 0x0012, 0x00a7 }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0007, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000d, 0x000b }, + { 0x000f, 0x0019 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0007, 0x0006 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0005 }, + { 0x000a, 0x0007 }, + { 0x000c, 0x0009 }, + { 0x000e, 0x0012 }, + { 0x000f, 0x001a }, + { 0x0012, 0x00a8 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0013, 0x002c }, + { 0x0009, 0x0007 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x000a, 0x0008 }, + { 0x000b, 0x0008 }, + { 0x000d, 0x000c }, + { 0x000e, 0x0013 }, + { 0x0010, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0013, 0x0032 }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0013, 0x0038 }, + { 0x000b, 0x0009 }, + { 0x000a, 0x0009 }, + { 0x000b, 0x000a }, + { 0x000b, 0x000b }, + { 0x000d, 0x000d }, + { 0x000f, 0x001b }, + { 0x0010, 0x002d }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x000d, 0x000e }, + { 0x000c, 0x000a }, + { 0x000c, 0x000b }, + { 0x000d, 0x000f }, + { 0x000f, 0x001c }, + { 0x000f, 0x001d }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0013, 0x004d }, + { 0x0013, 0x004e }, + { 0x0013, 0x004f }, + { 0x0013, 0x0050 }, + { 0x0013, 0x0051 }, + { 0x0013, 0x0052 }, + { 0x0013, 0x0053 }, + { 0x000f, 0x001e }, + { 0x000f, 0x001f }, + { 0x000f, 0x0020 }, + { 0x000f, 0x0021 }, + { 0x0010, 0x002e }, + { 0x0012, 0x00a9 }, + { 0x0013, 0x0054 }, + { 0x0013, 0x0055 }, + { 0x0012, 0x00aa }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0013, 0x0058 }, + { 0x0013, 0x0059 }, + { 0x0013, 0x005a }, + { 0x0013, 0x005b }, + { 0x0013, 0x005c }, + { 0x0013, 0x005d }, + { 0x0013, 0x005e }, + { 0x0013, 0x005f }, + { 0x0013, 0x0060 }, + { 0x0013, 0x0061 }, + { 0x0010, 0x002f }, + { 0x0013, 0x0062 }, + { 0x0011, 0x0057 }, + { 0x0013, 0x0063 }, + { 0x0013, 0x0064 }, + { 0x0013, 0x0065 }, + { 0x0013, 0x0066 }, + { 0x0013, 0x0067 }, + { 0x0013, 0x0068 }, + { 0x0013, 0x0069 }, + { 0x0013, 0x006a }, + { 0x0013, 0x006b }, + { 0x0013, 0x006c }, + { 0x0013, 0x006d }, + { 0x0013, 0x006e }, + { 0x0013, 0x006f }, + { 0x0013, 0x0070 }, + { 0x0013, 0x0071 }, + { 0x0013, 0x0072 }, + { 0x0013, 0x0073 }, + { 0x0013, 0x0074 }, + { 0x0013, 0x0075 }, + { 0x0013, 0x0076 }, + { 0x0013, 0x0077 }, + { 0x0013, 0x0078 }, + { 0x0013, 0x0079 }, + { 0x0013, 0x007a }, + { 0x0013, 0x007b }, + { 0x0013, 0x007c }, + { 0x0013, 0x007d }, + { 0x0013, 0x007e }, + { 0x0013, 0x007f }, + { 0x0013, 0x0080 }, + { 0x0013, 0x0081 }, + { 0x0013, 0x0082 }, + { 0x0013, 0x0083 }, + { 0x0013, 0x0084 }, + { 0x0013, 0x0085 }, + { 0x0013, 0x0086 }, + { 0x0013, 0x0087 }, + { 0x0013, 0x0088 }, + { 0x0013, 0x0089 }, + { 0x0013, 0x008a }, + { 0x0013, 0x008b }, + { 0x0013, 0x008c }, + { 0x0013, 0x008d }, + { 0x0013, 0x008e }, + { 0x0013, 0x008f }, + { 0x0013, 0x0090 }, + { 0x0013, 0x0091 }, + { 0x0013, 0x0092 }, + { 0x0013, 0x0093 }, + { 0x0013, 0x0094 }, + { 0x0013, 0x0095 }, + { 0x0013, 0x0096 }, + { 0x0013, 0x0097 }, + { 0x0013, 0x0098 }, + { 0x0013, 0x0099 }, + { 0x0013, 0x009a }, + { 0x0013, 0x009b }, + { 0x0013, 0x009c }, + { 0x0013, 0x009d }, + { 0x0013, 0x009e }, + { 0x0013, 0x009f }, + { 0x0013, 0x00a0 }, + { 0x0013, 0x00a1 }, + { 0x0013, 0x00a2 }, + { 0x0013, 0x00a3 }, + { 0x0013, 0x00a4 }, + { 0x0013, 0x00a5 }, + { 0x0013, 0x00a6 }, + { 0x0013, 0x00a7 }, + { 0x0013, 0x00a8 }, + { 0x0013, 0x00a9 }, + { 0x0013, 0x00aa }, + { 0x0013, 0x00ab }, + { 0x0013, 0x00ac }, + { 0x0013, 0x00ad }, + { 0x0013, 0x00ae }, + { 0x0013, 0x00af }, + { 0x0013, 0x00b0 }, + { 0x0013, 0x00b1 }, + { 0x0013, 0x00b2 }, + { 0x0013, 0x00b3 }, + { 0x0013, 0x00b4 }, + { 0x0013, 0x00b5 }, + { 0x0013, 0x00b6 }, + { 0x0013, 0x00b7 }, + { 0x0013, 0x00b8 }, + { 0x0013, 0x00b9 }, + { 0x0013, 0x00ba }, + { 0x0013, 0x00bb }, + { 0x0013, 0x00bc }, + { 0x0013, 0x00bd }, + { 0x0013, 0x00be }, + { 0x0013, 0x00bf }, + { 0x0013, 0x00c0 }, + { 0x0013, 0x00c1 }, + { 0x0013, 0x00c2 }, + { 0x0013, 0x00c3 }, + { 0x0013, 0x00c4 }, + { 0x0013, 0x00c5 }, + { 0x0013, 0x00c6 }, + { 0x0013, 0x00c7 }, + { 0x0013, 0x00c8 }, + { 0x0013, 0x00c9 }, + { 0x0013, 0x00ca }, + { 0x0013, 0x00cb }, + { 0x0013, 0x00cc }, + { 0x0013, 0x00cd }, + { 0x0013, 0x00ce }, + { 0x0013, 0x00cf }, + { 0x0013, 0x00d0 }, + { 0x0013, 0x00d1 }, + { 0x0013, 0x00d2 }, + { 0x0013, 0x00d3 }, + { 0x0013, 0x00d4 }, + { 0x0013, 0x00d5 }, + { 0x0013, 0x00d6 }, + { 0x0013, 0x00d7 }, + { 0x0013, 0x00d8 }, + { 0x0013, 0x00d9 }, + { 0x0013, 0x00da }, + { 0x0013, 0x00db }, + { 0x0013, 0x00dc }, + { 0x0013, 0x00dd }, + { 0x0013, 0x00de }, + { 0x0013, 0x00df }, + { 0x0013, 0x00e0 }, + { 0x0013, 0x00e1 }, + { 0x0013, 0x00e2 }, + { 0x0013, 0x00e3 }, + { 0x0013, 0x00e4 }, + { 0x0013, 0x00e5 }, + { 0x0013, 0x00e6 }, + { 0x0013, 0x00e7 }, + { 0x0013, 0x00e8 }, + { 0x0013, 0x00e9 }, + { 0x0013, 0x00ea }, + { 0x0013, 0x00eb }, + { 0x0013, 0x00ec }, + { 0x0013, 0x00ed }, + { 0x0013, 0x00ee }, + { 0x0013, 0x00ef }, + { 0x0013, 0x00f0 }, + { 0x0013, 0x00f1 }, + { 0x0013, 0x00f2 }, + { 0x0013, 0x00f3 }, + { 0x0013, 0x00f4 }, + { 0x0013, 0x00f5 }, + { 0x0013, 0x00f6 }, + { 0x0013, 0x00f7 }, + { 0x0013, 0x00f8 }, + { 0x0013, 0x00f9 }, + { 0x0013, 0x00fa }, + { 0x0013, 0x00fb }, + { 0x0013, 0x00fc }, + { 0x0013, 0x00fd }, + { 0x0013, 0x00fe }, + { 0x0013, 0x00ff }, + { 0x0013, 0x0100 }, + { 0x0013, 0x0101 }, + { 0x0013, 0x0102 }, + { 0x0013, 0x0103 }, + { 0x0013, 0x0104 }, + { 0x0013, 0x0105 }, + { 0x0013, 0x0106 }, + { 0x0013, 0x0107 }, + { 0x0013, 0x0108 }, + { 0x0013, 0x0109 }, + { 0x0013, 0x010a }, + { 0x0013, 0x010b }, + { 0x0013, 0x010c }, + { 0x0013, 0x010d }, + { 0x0013, 0x010e }, + { 0x0013, 0x010f }, + { 0x0013, 0x0110 }, + { 0x0013, 0x0111 }, + { 0x0013, 0x0112 }, + { 0x0013, 0x0113 }, + { 0x0013, 0x0114 }, + { 0x0013, 0x0115 }, + { 0x0013, 0x0116 }, + { 0x0013, 0x0117 }, + { 0x0013, 0x0118 }, + { 0x0013, 0x0119 }, + { 0x0013, 0x011a }, + { 0x0013, 0x011b }, + { 0x0013, 0x011c }, + { 0x0013, 0x011d }, + { 0x0013, 0x011e }, + { 0x0013, 0x011f }, + { 0x0013, 0x0120 }, + { 0x0013, 0x0121 }, + { 0x0013, 0x0122 }, + { 0x0013, 0x0123 }, + { 0x0013, 0x0124 }, + { 0x0013, 0x0125 }, + { 0x0013, 0x0126 }, + { 0x0013, 0x0127 }, + { 0x0013, 0x0128 }, + { 0x0013, 0x0129 }, + { 0x0013, 0x012a }, + { 0x0013, 0x012b }, + { 0x0013, 0x012c }, + { 0x0013, 0x012d }, + { 0x0013, 0x012e }, + { 0x0013, 0x012f }, + { 0x0013, 0x0130 }, + { 0x0013, 0x0131 }, + { 0x0013, 0x0132 }, + { 0x0013, 0x0133 }, + { 0x0013, 0x0134 }, + { 0x0013, 0x0135 }, + { 0x0013, 0x0136 }, + { 0x0013, 0x0137 }, + { 0x0013, 0x0138 }, + { 0x0013, 0x0139 }, + { 0x0013, 0x013a }, + { 0x0013, 0x013b }, + { 0x0013, 0x013c }, + { 0x0013, 0x013d }, + { 0x0013, 0x013e }, + { 0x0013, 0x013f }, + { 0x0013, 0x0140 }, + { 0x0013, 0x0141 }, + { 0x0013, 0x0142 }, + { 0x0013, 0x0143 }, + { 0x0013, 0x0144 }, + { 0x0013, 0x0145 }, + { 0x0013, 0x0146 }, + { 0x0013, 0x0147 }, + { 0x0013, 0x0148 }, + { 0x0013, 0x0149 }, + { 0x0013, 0x014a }, + { 0x0013, 0x014b }, + { 0x0012, 0x00ab }, + { 0x0012, 0x00ac }, + { 0x0012, 0x00ad }, + }; + +const uint16_t c_aauiLCLDHuffEnc47[576][2] = + { + { 0x0002, 0x0003 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0005 }, + { 0x0006, 0x0004 }, + { 0x0008, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000c, 0x000b }, + { 0x000d, 0x000d }, + { 0x0010, 0x0041 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0003, 0x0004 }, + { 0x0003, 0x0005 }, + { 0x0004, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000d, 0x000e }, + { 0x000f, 0x0025 }, + { 0x000f, 0x0026 }, + { 0x0012, 0x00f6 }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0005, 0x0006 }, + { 0x0004, 0x0005 }, + { 0x0005, 0x0007 }, + { 0x0006, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0009, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000d, 0x000f }, + { 0x000f, 0x0027 }, + { 0x0012, 0x00f7 }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0006, 0x0007 }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0007, 0x0006 }, + { 0x0009, 0x0008 }, + { 0x000a, 0x0008 }, + { 0x000c, 0x000c }, + { 0x000e, 0x0017 }, + { 0x0010, 0x0042 }, + { 0x0012, 0x00f8 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0013, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0013, 0x0032 }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0008, 0x0008 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0009 }, + { 0x0009, 0x0009 }, + { 0x000a, 0x0009 }, + { 0x000b, 0x0009 }, + { 0x000d, 0x0010 }, + { 0x000f, 0x0028 }, + { 0x000f, 0x0029 }, + { 0x0011, 0x007f }, + { 0x0013, 0x0038 }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x000a, 0x000a }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x000a, 0x000b }, + { 0x000b, 0x000a }, + { 0x000d, 0x0011 }, + { 0x000f, 0x002a }, + { 0x0010, 0x0043 }, + { 0x0012, 0x00f9 }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0013, 0x004d }, + { 0x0013, 0x004e }, + { 0x0013, 0x004f }, + { 0x0013, 0x0050 }, + { 0x0013, 0x0051 }, + { 0x0013, 0x0052 }, + { 0x0013, 0x0053 }, + { 0x0013, 0x0054 }, + { 0x000b, 0x000b }, + { 0x000b, 0x000c }, + { 0x000b, 0x000d }, + { 0x000c, 0x000d }, + { 0x000d, 0x0012 }, + { 0x000e, 0x0018 }, + { 0x0010, 0x0044 }, + { 0x0013, 0x0055 }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0013, 0x0058 }, + { 0x0013, 0x0059 }, + { 0x0013, 0x005a }, + { 0x0013, 0x005b }, + { 0x0013, 0x005c }, + { 0x0013, 0x005d }, + { 0x0013, 0x005e }, + { 0x0013, 0x005f }, + { 0x0013, 0x0060 }, + { 0x0013, 0x0061 }, + { 0x0013, 0x0062 }, + { 0x0013, 0x0063 }, + { 0x0013, 0x0064 }, + { 0x0013, 0x0065 }, + { 0x000e, 0x0019 }, + { 0x000d, 0x0013 }, + { 0x000d, 0x0014 }, + { 0x000d, 0x0015 }, + { 0x000f, 0x002b }, + { 0x0010, 0x0045 }, + { 0x0013, 0x0066 }, + { 0x0012, 0x00fa }, + { 0x0013, 0x0067 }, + { 0x0013, 0x0068 }, + { 0x0013, 0x0069 }, + { 0x0013, 0x006a }, + { 0x0013, 0x006b }, + { 0x0013, 0x006c }, + { 0x0013, 0x006d }, + { 0x0013, 0x006e }, + { 0x0013, 0x006f }, + { 0x0013, 0x0070 }, + { 0x0013, 0x0071 }, + { 0x0013, 0x0072 }, + { 0x0013, 0x0073 }, + { 0x0013, 0x0074 }, + { 0x0013, 0x0075 }, + { 0x0013, 0x0076 }, + { 0x0010, 0x0046 }, + { 0x000f, 0x002c }, + { 0x000f, 0x002d }, + { 0x0010, 0x0047 }, + { 0x0011, 0x0080 }, + { 0x0013, 0x0077 }, + { 0x0013, 0x0078 }, + { 0x0013, 0x0079 }, + { 0x0013, 0x007a }, + { 0x0013, 0x007b }, + { 0x0013, 0x007c }, + { 0x0013, 0x007d }, + { 0x0013, 0x007e }, + { 0x0013, 0x007f }, + { 0x0013, 0x0080 }, + { 0x0013, 0x0081 }, + { 0x0013, 0x0082 }, + { 0x0013, 0x0083 }, + { 0x0013, 0x0084 }, + { 0x0013, 0x0085 }, + { 0x0013, 0x0086 }, + { 0x0013, 0x0087 }, + { 0x0013, 0x0088 }, + { 0x0013, 0x0089 }, + { 0x0013, 0x008a }, + { 0x0010, 0x0048 }, + { 0x0010, 0x0049 }, + { 0x0011, 0x0081 }, + { 0x0013, 0x008b }, + { 0x0012, 0x00fb }, + { 0x0013, 0x008c }, + { 0x0013, 0x008d }, + { 0x0013, 0x008e }, + { 0x0013, 0x008f }, + { 0x0013, 0x0090 }, + { 0x0013, 0x0091 }, + { 0x0013, 0x0092 }, + { 0x0013, 0x0093 }, + { 0x0013, 0x0094 }, + { 0x0013, 0x0095 }, + { 0x0013, 0x0096 }, + { 0x0013, 0x0097 }, + { 0x0013, 0x0098 }, + { 0x0013, 0x0099 }, + { 0x0013, 0x009a }, + { 0x0013, 0x009b }, + { 0x0013, 0x009c }, + { 0x0013, 0x009d }, + { 0x0013, 0x009e }, + { 0x0013, 0x009f }, + { 0x0013, 0x00a0 }, + { 0x0012, 0x00fc }, + { 0x0013, 0x00a1 }, + { 0x0013, 0x00a2 }, + { 0x0013, 0x00a3 }, + { 0x0013, 0x00a4 }, + { 0x0013, 0x00a5 }, + { 0x0013, 0x00a6 }, + { 0x0013, 0x00a7 }, + { 0x0013, 0x00a8 }, + { 0x0013, 0x00a9 }, + { 0x0013, 0x00aa }, + { 0x0013, 0x00ab }, + { 0x0013, 0x00ac }, + { 0x0013, 0x00ad }, + { 0x0013, 0x00ae }, + { 0x0013, 0x00af }, + { 0x0013, 0x00b0 }, + { 0x0013, 0x00b1 }, + { 0x0013, 0x00b2 }, + { 0x0013, 0x00b3 }, + { 0x0013, 0x00b4 }, + { 0x0013, 0x00b5 }, + { 0x0013, 0x00b6 }, + { 0x0013, 0x00b7 }, + { 0x0013, 0x00b8 }, + { 0x0013, 0x00b9 }, + { 0x0013, 0x00ba }, + { 0x0013, 0x00bb }, + { 0x0013, 0x00bc }, + { 0x0013, 0x00bd }, + { 0x0013, 0x00be }, + { 0x0013, 0x00bf }, + { 0x0013, 0x00c0 }, + { 0x0013, 0x00c1 }, + { 0x0013, 0x00c2 }, + { 0x0013, 0x00c3 }, + { 0x0013, 0x00c4 }, + { 0x0013, 0x00c5 }, + { 0x0013, 0x00c6 }, + { 0x0013, 0x00c7 }, + { 0x0013, 0x00c8 }, + { 0x0013, 0x00c9 }, + { 0x0013, 0x00ca }, + { 0x0013, 0x00cb }, + { 0x0013, 0x00cc }, + { 0x0013, 0x00cd }, + { 0x0013, 0x00ce }, + { 0x0013, 0x00cf }, + { 0x0013, 0x00d0 }, + { 0x0013, 0x00d1 }, + { 0x0013, 0x00d2 }, + { 0x0013, 0x00d3 }, + { 0x0013, 0x00d4 }, + { 0x0013, 0x00d5 }, + { 0x0013, 0x00d6 }, + { 0x0013, 0x00d7 }, + { 0x0013, 0x00d8 }, + { 0x0013, 0x00d9 }, + { 0x0013, 0x00da }, + { 0x0013, 0x00db }, + { 0x0013, 0x00dc }, + { 0x0013, 0x00dd }, + { 0x0013, 0x00de }, + { 0x0013, 0x00df }, + { 0x0013, 0x00e0 }, + { 0x0013, 0x00e1 }, + { 0x0013, 0x00e2 }, + { 0x0013, 0x00e3 }, + { 0x0013, 0x00e4 }, + { 0x0013, 0x00e5 }, + { 0x0013, 0x00e6 }, + { 0x0013, 0x00e7 }, + { 0x0013, 0x00e8 }, + { 0x0013, 0x00e9 }, + { 0x0013, 0x00ea }, + { 0x0013, 0x00eb }, + { 0x0013, 0x00ec }, + { 0x0013, 0x00ed }, + { 0x0013, 0x00ee }, + { 0x0013, 0x00ef }, + { 0x0013, 0x00f0 }, + { 0x0013, 0x00f1 }, + { 0x0013, 0x00f2 }, + { 0x0013, 0x00f3 }, + { 0x0013, 0x00f4 }, + { 0x0013, 0x00f5 }, + { 0x0013, 0x00f6 }, + { 0x0013, 0x00f7 }, + { 0x0013, 0x00f8 }, + { 0x0013, 0x00f9 }, + { 0x0013, 0x00fa }, + { 0x0013, 0x00fb }, + { 0x0013, 0x00fc }, + { 0x0013, 0x00fd }, + { 0x0013, 0x00fe }, + { 0x0013, 0x00ff }, + { 0x0013, 0x0100 }, + { 0x0013, 0x0101 }, + { 0x0013, 0x0102 }, + { 0x0013, 0x0103 }, + { 0x0013, 0x0104 }, + { 0x0013, 0x0105 }, + { 0x0013, 0x0106 }, + { 0x0013, 0x0107 }, + { 0x0013, 0x0108 }, + { 0x0013, 0x0109 }, + { 0x0013, 0x010a }, + { 0x0013, 0x010b }, + { 0x0013, 0x010c }, + { 0x0013, 0x010d }, + { 0x0013, 0x010e }, + { 0x0013, 0x010f }, + { 0x0013, 0x0110 }, + { 0x0013, 0x0111 }, + { 0x0013, 0x0112 }, + { 0x0013, 0x0113 }, + { 0x0013, 0x0114 }, + { 0x0013, 0x0115 }, + { 0x0013, 0x0116 }, + { 0x0013, 0x0117 }, + { 0x0013, 0x0118 }, + { 0x0013, 0x0119 }, + { 0x0013, 0x011a }, + { 0x0013, 0x011b }, + { 0x0013, 0x011c }, + { 0x0013, 0x011d }, + { 0x0013, 0x011e }, + { 0x0013, 0x011f }, + { 0x0013, 0x0120 }, + { 0x0013, 0x0121 }, + { 0x0013, 0x0122 }, + { 0x0013, 0x0123 }, + { 0x0013, 0x0124 }, + { 0x0013, 0x0125 }, + { 0x0013, 0x0126 }, + { 0x0013, 0x0127 }, + { 0x0013, 0x0128 }, + { 0x0013, 0x0129 }, + { 0x0013, 0x012a }, + { 0x0013, 0x012b }, + { 0x0013, 0x012c }, + { 0x0013, 0x012d }, + { 0x0013, 0x012e }, + { 0x0013, 0x012f }, + { 0x0013, 0x0130 }, + { 0x0013, 0x0131 }, + { 0x0013, 0x0132 }, + { 0x0013, 0x0133 }, + { 0x0013, 0x0134 }, + { 0x0013, 0x0135 }, + { 0x0013, 0x0136 }, + { 0x0013, 0x0137 }, + { 0x0013, 0x0138 }, + { 0x0013, 0x0139 }, + { 0x0013, 0x013a }, + { 0x0013, 0x013b }, + { 0x0013, 0x013c }, + { 0x0013, 0x013d }, + { 0x0013, 0x013e }, + { 0x0013, 0x013f }, + { 0x0013, 0x0140 }, + { 0x0013, 0x0141 }, + { 0x0013, 0x0142 }, + { 0x0013, 0x0143 }, + { 0x0013, 0x0144 }, + { 0x0013, 0x0145 }, + { 0x0013, 0x0146 }, + { 0x0013, 0x0147 }, + { 0x0013, 0x0148 }, + { 0x0013, 0x0149 }, + { 0x0013, 0x014a }, + { 0x0013, 0x014b }, + { 0x0013, 0x014c }, + { 0x0013, 0x014d }, + { 0x0013, 0x014e }, + { 0x0013, 0x014f }, + { 0x0013, 0x0150 }, + { 0x0013, 0x0151 }, + { 0x0013, 0x0152 }, + { 0x0013, 0x0153 }, + { 0x0013, 0x0154 }, + { 0x0013, 0x0155 }, + { 0x0013, 0x0156 }, + { 0x0013, 0x0157 }, + { 0x0013, 0x0158 }, + { 0x0013, 0x0159 }, + { 0x0013, 0x015a }, + { 0x0013, 0x015b }, + { 0x0013, 0x015c }, + { 0x0013, 0x015d }, + { 0x0013, 0x015e }, + { 0x0013, 0x015f }, + { 0x0013, 0x0160 }, + { 0x0013, 0x0161 }, + { 0x0013, 0x0162 }, + { 0x0013, 0x0163 }, + { 0x0013, 0x0164 }, + { 0x0013, 0x0165 }, + { 0x0013, 0x0166 }, + { 0x0013, 0x0167 }, + { 0x0013, 0x0168 }, + { 0x0013, 0x0169 }, + { 0x0013, 0x016a }, + { 0x0013, 0x016b }, + { 0x0013, 0x016c }, + { 0x0013, 0x016d }, + { 0x0013, 0x016e }, + { 0x0013, 0x016f }, + { 0x0013, 0x0170 }, + { 0x0013, 0x0171 }, + { 0x0013, 0x0172 }, + { 0x0013, 0x0173 }, + { 0x0013, 0x0174 }, + { 0x0013, 0x0175 }, + { 0x0013, 0x0176 }, + { 0x0013, 0x0177 }, + { 0x0013, 0x0178 }, + { 0x0013, 0x0179 }, + { 0x0013, 0x017a }, + { 0x0013, 0x017b }, + { 0x0013, 0x017c }, + { 0x0013, 0x017d }, + { 0x0013, 0x017e }, + { 0x0013, 0x017f }, + { 0x0013, 0x0180 }, + { 0x0013, 0x0181 }, + { 0x0013, 0x0182 }, + { 0x0013, 0x0183 }, + { 0x0013, 0x0184 }, + { 0x0013, 0x0185 }, + { 0x0013, 0x0186 }, + { 0x0013, 0x0187 }, + { 0x0013, 0x0188 }, + { 0x0013, 0x0189 }, + { 0x0013, 0x018a }, + { 0x0013, 0x018b }, + { 0x0013, 0x018c }, + { 0x0013, 0x018d }, + { 0x0013, 0x018e }, + { 0x0013, 0x018f }, + { 0x0013, 0x0190 }, + { 0x0013, 0x0191 }, + { 0x0013, 0x0192 }, + { 0x0013, 0x0193 }, + { 0x0013, 0x0194 }, + { 0x0013, 0x0195 }, + { 0x0013, 0x0196 }, + { 0x0013, 0x0197 }, + { 0x0013, 0x0198 }, + { 0x0013, 0x0199 }, + { 0x0013, 0x019a }, + { 0x0013, 0x019b }, + { 0x0013, 0x019c }, + { 0x0013, 0x019d }, + { 0x0013, 0x019e }, + { 0x0013, 0x019f }, + { 0x0013, 0x01a0 }, + { 0x0013, 0x01a1 }, + { 0x0013, 0x01a2 }, + { 0x0013, 0x01a3 }, + { 0x0013, 0x01a4 }, + { 0x0013, 0x01a5 }, + { 0x0013, 0x01a6 }, + { 0x0013, 0x01a7 }, + { 0x0013, 0x01a8 }, + { 0x0013, 0x01a9 }, + { 0x0013, 0x01aa }, + { 0x0013, 0x01ab }, + { 0x0013, 0x01ac }, + { 0x0013, 0x01ad }, + { 0x0013, 0x01ae }, + { 0x0013, 0x01af }, + { 0x0013, 0x01b0 }, + { 0x0013, 0x01b1 }, + { 0x0013, 0x01b2 }, + { 0x0013, 0x01b3 }, + { 0x0013, 0x01b4 }, + { 0x0013, 0x01b5 }, + { 0x0013, 0x01b6 }, + { 0x0013, 0x01b7 }, + { 0x0013, 0x01b8 }, + { 0x0013, 0x01b9 }, + { 0x0013, 0x01ba }, + { 0x0013, 0x01bb }, + { 0x0013, 0x01bc }, + { 0x0013, 0x01bd }, + { 0x0013, 0x01be }, + { 0x0013, 0x01bf }, + { 0x0013, 0x01c0 }, + { 0x0013, 0x01c1 }, + { 0x0013, 0x01c2 }, + { 0x0013, 0x01c3 }, + { 0x0013, 0x01c4 }, + { 0x0013, 0x01c5 }, + { 0x0013, 0x01c6 }, + { 0x0013, 0x01c7 }, + { 0x0013, 0x01c8 }, + { 0x0013, 0x01c9 }, + { 0x0013, 0x01ca }, + { 0x0013, 0x01cb }, + { 0x0013, 0x01cc }, + { 0x0013, 0x01cd }, + { 0x0013, 0x01ce }, + { 0x0013, 0x01cf }, + { 0x0013, 0x01d0 }, + { 0x0013, 0x01d1 }, + { 0x0013, 0x01d2 }, + { 0x0013, 0x01d3 }, + { 0x0013, 0x01d4 }, + { 0x0013, 0x01d5 }, + { 0x0013, 0x01d6 }, + { 0x0013, 0x01d7 }, + { 0x0013, 0x01d8 }, + { 0x0013, 0x01d9 }, + { 0x0013, 0x01da }, + { 0x0013, 0x01db }, + { 0x0013, 0x01dc }, + { 0x0013, 0x01dd }, + { 0x0013, 0x01de }, + { 0x0013, 0x01df }, + { 0x0013, 0x01e0 }, + { 0x0013, 0x01e1 }, + { 0x0013, 0x01e2 }, + { 0x0013, 0x01e3 }, + { 0x0013, 0x01e4 }, + { 0x0013, 0x01e5 }, + { 0x0013, 0x01e6 }, + { 0x0013, 0x01e7 }, + { 0x0013, 0x01e8 }, + { 0x0013, 0x01e9 }, + { 0x0013, 0x01ea }, + { 0x0013, 0x01eb }, + { 0x0012, 0x00fd }, + }; + +const uint16_t c_aauiLCLDHuffEnc48[729][2] = + { + { 0x0002, 0x0003 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0006 }, + { 0x0006, 0x0006 }, + { 0x0008, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x000b, 0x000b }, + { 0x000c, 0x000d }, + { 0x000f, 0x0030 }, + { 0x0010, 0x0055 }, + { 0x0012, 0x0136 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0013, 0x000f }, + { 0x0003, 0x0004 }, + { 0x0003, 0x0005 }, + { 0x0005, 0x0007 }, + { 0x0006, 0x0007 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0007 }, + { 0x000a, 0x0008 }, + { 0x000c, 0x000e }, + { 0x000d, 0x0012 }, + { 0x000f, 0x0031 }, + { 0x0011, 0x00a0 }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0005, 0x0008 }, + { 0x0004, 0x0005 }, + { 0x0005, 0x0009 }, + { 0x0006, 0x0008 }, + { 0x0007, 0x0008 }, + { 0x0008, 0x0008 }, + { 0x000a, 0x0009 }, + { 0x000c, 0x000f }, + { 0x000d, 0x0013 }, + { 0x000f, 0x0032 }, + { 0x0011, 0x00a1 }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0013, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0006, 0x0009 }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0007, 0x0009 }, + { 0x0008, 0x0009 }, + { 0x0009, 0x0008 }, + { 0x000b, 0x000c }, + { 0x000d, 0x0014 }, + { 0x000e, 0x001d }, + { 0x000f, 0x0033 }, + { 0x0012, 0x0137 }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0013, 0x0032 }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0013, 0x0038 }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0008, 0x000a }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0008, 0x000b }, + { 0x0009, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000c, 0x0010 }, + { 0x000d, 0x0015 }, + { 0x000f, 0x0034 }, + { 0x0010, 0x0056 }, + { 0x0012, 0x0138 }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0013, 0x004d }, + { 0x0013, 0x004e }, + { 0x0013, 0x004f }, + { 0x0009, 0x000a }, + { 0x0008, 0x000c }, + { 0x0008, 0x000d }, + { 0x0009, 0x000b }, + { 0x000a, 0x000b }, + { 0x000c, 0x0011 }, + { 0x000d, 0x0016 }, + { 0x000e, 0x001e }, + { 0x0010, 0x0057 }, + { 0x0011, 0x00a2 }, + { 0x0011, 0x00a3 }, + { 0x0013, 0x0050 }, + { 0x0013, 0x0051 }, + { 0x0013, 0x0052 }, + { 0x0013, 0x0053 }, + { 0x0013, 0x0054 }, + { 0x0013, 0x0055 }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0013, 0x0058 }, + { 0x0013, 0x0059 }, + { 0x0013, 0x005a }, + { 0x0013, 0x005b }, + { 0x0013, 0x005c }, + { 0x0013, 0x005d }, + { 0x0013, 0x005e }, + { 0x0013, 0x005f }, + { 0x000b, 0x000d }, + { 0x000a, 0x000c }, + { 0x000a, 0x000d }, + { 0x000b, 0x000e }, + { 0x000c, 0x0012 }, + { 0x000d, 0x0017 }, + { 0x000e, 0x001f }, + { 0x0010, 0x0058 }, + { 0x0012, 0x0139 }, + { 0x0011, 0x00a4 }, + { 0x0012, 0x013a }, + { 0x0013, 0x0060 }, + { 0x0013, 0x0061 }, + { 0x0013, 0x0062 }, + { 0x0013, 0x0063 }, + { 0x0013, 0x0064 }, + { 0x0013, 0x0065 }, + { 0x0013, 0x0066 }, + { 0x0013, 0x0067 }, + { 0x0013, 0x0068 }, + { 0x0013, 0x0069 }, + { 0x0013, 0x006a }, + { 0x0013, 0x006b }, + { 0x0013, 0x006c }, + { 0x0013, 0x006d }, + { 0x0013, 0x006e }, + { 0x0013, 0x006f }, + { 0x000c, 0x0013 }, + { 0x000b, 0x000f }, + { 0x000c, 0x0014 }, + { 0x000c, 0x0015 }, + { 0x000d, 0x0018 }, + { 0x000e, 0x0020 }, + { 0x000f, 0x0035 }, + { 0x0012, 0x013b }, + { 0x0013, 0x0070 }, + { 0x0013, 0x0071 }, + { 0x0013, 0x0072 }, + { 0x0013, 0x0073 }, + { 0x0013, 0x0074 }, + { 0x0013, 0x0075 }, + { 0x0013, 0x0076 }, + { 0x0013, 0x0077 }, + { 0x0013, 0x0078 }, + { 0x0013, 0x0079 }, + { 0x0013, 0x007a }, + { 0x0013, 0x007b }, + { 0x0013, 0x007c }, + { 0x0013, 0x007d }, + { 0x0013, 0x007e }, + { 0x0013, 0x007f }, + { 0x0013, 0x0080 }, + { 0x0013, 0x0081 }, + { 0x0013, 0x0082 }, + { 0x000e, 0x0021 }, + { 0x000d, 0x0019 }, + { 0x000e, 0x0022 }, + { 0x000e, 0x0023 }, + { 0x000f, 0x0036 }, + { 0x0010, 0x0059 }, + { 0x0011, 0x00a5 }, + { 0x0013, 0x0083 }, + { 0x0011, 0x00a6 }, + { 0x0012, 0x013c }, + { 0x0013, 0x0084 }, + { 0x0013, 0x0085 }, + { 0x0013, 0x0086 }, + { 0x0013, 0x0087 }, + { 0x0013, 0x0088 }, + { 0x0013, 0x0089 }, + { 0x0013, 0x008a }, + { 0x0013, 0x008b }, + { 0x0013, 0x008c }, + { 0x0013, 0x008d }, + { 0x0013, 0x008e }, + { 0x0013, 0x008f }, + { 0x0013, 0x0090 }, + { 0x0013, 0x0091 }, + { 0x0013, 0x0092 }, + { 0x0013, 0x0093 }, + { 0x0013, 0x0094 }, + { 0x0010, 0x005a }, + { 0x000f, 0x0037 }, + { 0x000f, 0x0038 }, + { 0x000f, 0x0039 }, + { 0x0010, 0x005b }, + { 0x0010, 0x005c }, + { 0x0013, 0x0095 }, + { 0x0011, 0x00a7 }, + { 0x0013, 0x0096 }, + { 0x0013, 0x0097 }, + { 0x0013, 0x0098 }, + { 0x0013, 0x0099 }, + { 0x0013, 0x009a }, + { 0x0013, 0x009b }, + { 0x0013, 0x009c }, + { 0x0013, 0x009d }, + { 0x0013, 0x009e }, + { 0x0013, 0x009f }, + { 0x0013, 0x00a0 }, + { 0x0013, 0x00a1 }, + { 0x0013, 0x00a2 }, + { 0x0013, 0x00a3 }, + { 0x0013, 0x00a4 }, + { 0x0013, 0x00a5 }, + { 0x0013, 0x00a6 }, + { 0x0013, 0x00a7 }, + { 0x0013, 0x00a8 }, + { 0x0010, 0x005d }, + { 0x0010, 0x005e }, + { 0x0013, 0x00a9 }, + { 0x0010, 0x005f }, + { 0x0013, 0x00aa }, + { 0x0012, 0x013d }, + { 0x0013, 0x00ab }, + { 0x0013, 0x00ac }, + { 0x0013, 0x00ad }, + { 0x0013, 0x00ae }, + { 0x0013, 0x00af }, + { 0x0013, 0x00b0 }, + { 0x0013, 0x00b1 }, + { 0x0013, 0x00b2 }, + { 0x0013, 0x00b3 }, + { 0x0013, 0x00b4 }, + { 0x0013, 0x00b5 }, + { 0x0013, 0x00b6 }, + { 0x0013, 0x00b7 }, + { 0x0013, 0x00b8 }, + { 0x0013, 0x00b9 }, + { 0x0013, 0x00ba }, + { 0x0013, 0x00bb }, + { 0x0013, 0x00bc }, + { 0x0013, 0x00bd }, + { 0x0013, 0x00be }, + { 0x0013, 0x00bf }, + { 0x0013, 0x00c0 }, + { 0x0011, 0x00a8 }, + { 0x0013, 0x00c1 }, + { 0x0011, 0x00a9 }, + { 0x0013, 0x00c2 }, + { 0x0013, 0x00c3 }, + { 0x0013, 0x00c4 }, + { 0x0013, 0x00c5 }, + { 0x0013, 0x00c6 }, + { 0x0013, 0x00c7 }, + { 0x0013, 0x00c8 }, + { 0x0013, 0x00c9 }, + { 0x0013, 0x00ca }, + { 0x0013, 0x00cb }, + { 0x0013, 0x00cc }, + { 0x0013, 0x00cd }, + { 0x0013, 0x00ce }, + { 0x0013, 0x00cf }, + { 0x0013, 0x00d0 }, + { 0x0013, 0x00d1 }, + { 0x0013, 0x00d2 }, + { 0x0013, 0x00d3 }, + { 0x0013, 0x00d4 }, + { 0x0013, 0x00d5 }, + { 0x0013, 0x00d6 }, + { 0x0013, 0x00d7 }, + { 0x0013, 0x00d8 }, + { 0x0013, 0x00d9 }, + { 0x0013, 0x00da }, + { 0x0012, 0x013e }, + { 0x0013, 0x00db }, + { 0x0013, 0x00dc }, + { 0x0013, 0x00dd }, + { 0x0013, 0x00de }, + { 0x0013, 0x00df }, + { 0x0013, 0x00e0 }, + { 0x0013, 0x00e1 }, + { 0x0013, 0x00e2 }, + { 0x0013, 0x00e3 }, + { 0x0013, 0x00e4 }, + { 0x0013, 0x00e5 }, + { 0x0013, 0x00e6 }, + { 0x0013, 0x00e7 }, + { 0x0013, 0x00e8 }, + { 0x0013, 0x00e9 }, + { 0x0013, 0x00ea }, + { 0x0013, 0x00eb }, + { 0x0013, 0x00ec }, + { 0x0013, 0x00ed }, + { 0x0013, 0x00ee }, + { 0x0013, 0x00ef }, + { 0x0013, 0x00f0 }, + { 0x0013, 0x00f1 }, + { 0x0013, 0x00f2 }, + { 0x0013, 0x00f3 }, + { 0x0013, 0x00f4 }, + { 0x0013, 0x00f5 }, + { 0x0013, 0x00f6 }, + { 0x0013, 0x00f7 }, + { 0x0013, 0x00f8 }, + { 0x0013, 0x00f9 }, + { 0x0013, 0x00fa }, + { 0x0013, 0x00fb }, + { 0x0013, 0x00fc }, + { 0x0013, 0x00fd }, + { 0x0013, 0x00fe }, + { 0x0013, 0x00ff }, + { 0x0013, 0x0100 }, + { 0x0013, 0x0101 }, + { 0x0013, 0x0102 }, + { 0x0013, 0x0103 }, + { 0x0013, 0x0104 }, + { 0x0013, 0x0105 }, + { 0x0013, 0x0106 }, + { 0x0013, 0x0107 }, + { 0x0013, 0x0108 }, + { 0x0013, 0x0109 }, + { 0x0013, 0x010a }, + { 0x0013, 0x010b }, + { 0x0013, 0x010c }, + { 0x0013, 0x010d }, + { 0x0013, 0x010e }, + { 0x0013, 0x010f }, + { 0x0013, 0x0110 }, + { 0x0013, 0x0111 }, + { 0x0013, 0x0112 }, + { 0x0013, 0x0113 }, + { 0x0013, 0x0114 }, + { 0x0013, 0x0115 }, + { 0x0013, 0x0116 }, + { 0x0013, 0x0117 }, + { 0x0013, 0x0118 }, + { 0x0013, 0x0119 }, + { 0x0013, 0x011a }, + { 0x0013, 0x011b }, + { 0x0013, 0x011c }, + { 0x0013, 0x011d }, + { 0x0013, 0x011e }, + { 0x0013, 0x011f }, + { 0x0013, 0x0120 }, + { 0x0013, 0x0121 }, + { 0x0013, 0x0122 }, + { 0x0013, 0x0123 }, + { 0x0013, 0x0124 }, + { 0x0013, 0x0125 }, + { 0x0013, 0x0126 }, + { 0x0013, 0x0127 }, + { 0x0013, 0x0128 }, + { 0x0013, 0x0129 }, + { 0x0013, 0x012a }, + { 0x0013, 0x012b }, + { 0x0013, 0x012c }, + { 0x0013, 0x012d }, + { 0x0013, 0x012e }, + { 0x0013, 0x012f }, + { 0x0013, 0x0130 }, + { 0x0013, 0x0131 }, + { 0x0013, 0x0132 }, + { 0x0013, 0x0133 }, + { 0x0013, 0x0134 }, + { 0x0013, 0x0135 }, + { 0x0013, 0x0136 }, + { 0x0013, 0x0137 }, + { 0x0013, 0x0138 }, + { 0x0013, 0x0139 }, + { 0x0013, 0x013a }, + { 0x0013, 0x013b }, + { 0x0013, 0x013c }, + { 0x0013, 0x013d }, + { 0x0013, 0x013e }, + { 0x0013, 0x013f }, + { 0x0013, 0x0140 }, + { 0x0013, 0x0141 }, + { 0x0013, 0x0142 }, + { 0x0013, 0x0143 }, + { 0x0013, 0x0144 }, + { 0x0013, 0x0145 }, + { 0x0013, 0x0146 }, + { 0x0013, 0x0147 }, + { 0x0013, 0x0148 }, + { 0x0013, 0x0149 }, + { 0x0013, 0x014a }, + { 0x0013, 0x014b }, + { 0x0013, 0x014c }, + { 0x0013, 0x014d }, + { 0x0013, 0x014e }, + { 0x0013, 0x014f }, + { 0x0013, 0x0150 }, + { 0x0013, 0x0151 }, + { 0x0013, 0x0152 }, + { 0x0013, 0x0153 }, + { 0x0013, 0x0154 }, + { 0x0013, 0x0155 }, + { 0x0013, 0x0156 }, + { 0x0013, 0x0157 }, + { 0x0013, 0x0158 }, + { 0x0013, 0x0159 }, + { 0x0013, 0x015a }, + { 0x0013, 0x015b }, + { 0x0013, 0x015c }, + { 0x0013, 0x015d }, + { 0x0013, 0x015e }, + { 0x0013, 0x015f }, + { 0x0013, 0x0160 }, + { 0x0013, 0x0161 }, + { 0x0013, 0x0162 }, + { 0x0013, 0x0163 }, + { 0x0013, 0x0164 }, + { 0x0013, 0x0165 }, + { 0x0013, 0x0166 }, + { 0x0013, 0x0167 }, + { 0x0013, 0x0168 }, + { 0x0013, 0x0169 }, + { 0x0013, 0x016a }, + { 0x0013, 0x016b }, + { 0x0013, 0x016c }, + { 0x0013, 0x016d }, + { 0x0013, 0x016e }, + { 0x0013, 0x016f }, + { 0x0013, 0x0170 }, + { 0x0013, 0x0171 }, + { 0x0013, 0x0172 }, + { 0x0013, 0x0173 }, + { 0x0013, 0x0174 }, + { 0x0013, 0x0175 }, + { 0x0013, 0x0176 }, + { 0x0013, 0x0177 }, + { 0x0013, 0x0178 }, + { 0x0013, 0x0179 }, + { 0x0013, 0x017a }, + { 0x0013, 0x017b }, + { 0x0013, 0x017c }, + { 0x0013, 0x017d }, + { 0x0013, 0x017e }, + { 0x0013, 0x017f }, + { 0x0013, 0x0180 }, + { 0x0013, 0x0181 }, + { 0x0013, 0x0182 }, + { 0x0013, 0x0183 }, + { 0x0013, 0x0184 }, + { 0x0013, 0x0185 }, + { 0x0013, 0x0186 }, + { 0x0013, 0x0187 }, + { 0x0013, 0x0188 }, + { 0x0013, 0x0189 }, + { 0x0013, 0x018a }, + { 0x0013, 0x018b }, + { 0x0013, 0x018c }, + { 0x0013, 0x018d }, + { 0x0013, 0x018e }, + { 0x0013, 0x018f }, + { 0x0013, 0x0190 }, + { 0x0013, 0x0191 }, + { 0x0013, 0x0192 }, + { 0x0013, 0x0193 }, + { 0x0013, 0x0194 }, + { 0x0013, 0x0195 }, + { 0x0013, 0x0196 }, + { 0x0013, 0x0197 }, + { 0x0013, 0x0198 }, + { 0x0013, 0x0199 }, + { 0x0013, 0x019a }, + { 0x0013, 0x019b }, + { 0x0013, 0x019c }, + { 0x0013, 0x019d }, + { 0x0013, 0x019e }, + { 0x0013, 0x019f }, + { 0x0013, 0x01a0 }, + { 0x0013, 0x01a1 }, + { 0x0013, 0x01a2 }, + { 0x0013, 0x01a3 }, + { 0x0013, 0x01a4 }, + { 0x0013, 0x01a5 }, + { 0x0013, 0x01a6 }, + { 0x0013, 0x01a7 }, + { 0x0013, 0x01a8 }, + { 0x0013, 0x01a9 }, + { 0x0013, 0x01aa }, + { 0x0013, 0x01ab }, + { 0x0013, 0x01ac }, + { 0x0013, 0x01ad }, + { 0x0013, 0x01ae }, + { 0x0013, 0x01af }, + { 0x0013, 0x01b0 }, + { 0x0013, 0x01b1 }, + { 0x0013, 0x01b2 }, + { 0x0013, 0x01b3 }, + { 0x0013, 0x01b4 }, + { 0x0013, 0x01b5 }, + { 0x0013, 0x01b6 }, + { 0x0013, 0x01b7 }, + { 0x0013, 0x01b8 }, + { 0x0013, 0x01b9 }, + { 0x0013, 0x01ba }, + { 0x0013, 0x01bb }, + { 0x0013, 0x01bc }, + { 0x0013, 0x01bd }, + { 0x0013, 0x01be }, + { 0x0013, 0x01bf }, + { 0x0013, 0x01c0 }, + { 0x0013, 0x01c1 }, + { 0x0013, 0x01c2 }, + { 0x0013, 0x01c3 }, + { 0x0013, 0x01c4 }, + { 0x0013, 0x01c5 }, + { 0x0013, 0x01c6 }, + { 0x0013, 0x01c7 }, + { 0x0013, 0x01c8 }, + { 0x0013, 0x01c9 }, + { 0x0013, 0x01ca }, + { 0x0013, 0x01cb }, + { 0x0013, 0x01cc }, + { 0x0013, 0x01cd }, + { 0x0013, 0x01ce }, + { 0x0013, 0x01cf }, + { 0x0013, 0x01d0 }, + { 0x0013, 0x01d1 }, + { 0x0013, 0x01d2 }, + { 0x0013, 0x01d3 }, + { 0x0013, 0x01d4 }, + { 0x0013, 0x01d5 }, + { 0x0013, 0x01d6 }, + { 0x0013, 0x01d7 }, + { 0x0013, 0x01d8 }, + { 0x0013, 0x01d9 }, + { 0x0013, 0x01da }, + { 0x0013, 0x01db }, + { 0x0013, 0x01dc }, + { 0x0013, 0x01dd }, + { 0x0013, 0x01de }, + { 0x0013, 0x01df }, + { 0x0013, 0x01e0 }, + { 0x0013, 0x01e1 }, + { 0x0013, 0x01e2 }, + { 0x0013, 0x01e3 }, + { 0x0013, 0x01e4 }, + { 0x0013, 0x01e5 }, + { 0x0013, 0x01e6 }, + { 0x0013, 0x01e7 }, + { 0x0013, 0x01e8 }, + { 0x0013, 0x01e9 }, + { 0x0013, 0x01ea }, + { 0x0013, 0x01eb }, + { 0x0013, 0x01ec }, + { 0x0013, 0x01ed }, + { 0x0013, 0x01ee }, + { 0x0013, 0x01ef }, + { 0x0013, 0x01f0 }, + { 0x0013, 0x01f1 }, + { 0x0013, 0x01f2 }, + { 0x0013, 0x01f3 }, + { 0x0013, 0x01f4 }, + { 0x0013, 0x01f5 }, + { 0x0013, 0x01f6 }, + { 0x0013, 0x01f7 }, + { 0x0013, 0x01f8 }, + { 0x0013, 0x01f9 }, + { 0x0013, 0x01fa }, + { 0x0013, 0x01fb }, + { 0x0013, 0x01fc }, + { 0x0013, 0x01fd }, + { 0x0013, 0x01fe }, + { 0x0013, 0x01ff }, + { 0x0013, 0x0200 }, + { 0x0013, 0x0201 }, + { 0x0013, 0x0202 }, + { 0x0013, 0x0203 }, + { 0x0013, 0x0204 }, + { 0x0013, 0x0205 }, + { 0x0013, 0x0206 }, + { 0x0013, 0x0207 }, + { 0x0013, 0x0208 }, + { 0x0013, 0x0209 }, + { 0x0013, 0x020a }, + { 0x0013, 0x020b }, + { 0x0013, 0x020c }, + { 0x0013, 0x020d }, + { 0x0013, 0x020e }, + { 0x0013, 0x020f }, + { 0x0013, 0x0210 }, + { 0x0013, 0x0211 }, + { 0x0013, 0x0212 }, + { 0x0013, 0x0213 }, + { 0x0013, 0x0214 }, + { 0x0013, 0x0215 }, + { 0x0013, 0x0216 }, + { 0x0013, 0x0217 }, + { 0x0013, 0x0218 }, + { 0x0013, 0x0219 }, + { 0x0013, 0x021a }, + { 0x0013, 0x021b }, + { 0x0013, 0x021c }, + { 0x0013, 0x021d }, + { 0x0013, 0x021e }, + { 0x0013, 0x021f }, + { 0x0013, 0x0220 }, + { 0x0013, 0x0221 }, + { 0x0013, 0x0222 }, + { 0x0013, 0x0223 }, + { 0x0013, 0x0224 }, + { 0x0013, 0x0225 }, + { 0x0013, 0x0226 }, + { 0x0013, 0x0227 }, + { 0x0013, 0x0228 }, + { 0x0013, 0x0229 }, + { 0x0013, 0x022a }, + { 0x0013, 0x022b }, + { 0x0013, 0x022c }, + { 0x0013, 0x022d }, + { 0x0013, 0x022e }, + { 0x0013, 0x022f }, + { 0x0013, 0x0230 }, + { 0x0013, 0x0231 }, + { 0x0013, 0x0232 }, + { 0x0013, 0x0233 }, + { 0x0013, 0x0234 }, + { 0x0013, 0x0235 }, + { 0x0013, 0x0236 }, + { 0x0013, 0x0237 }, + { 0x0013, 0x0238 }, + { 0x0013, 0x0239 }, + { 0x0013, 0x023a }, + { 0x0013, 0x023b }, + { 0x0013, 0x023c }, + { 0x0013, 0x023d }, + { 0x0013, 0x023e }, + { 0x0013, 0x023f }, + { 0x0013, 0x0240 }, + { 0x0013, 0x0241 }, + { 0x0013, 0x0242 }, + { 0x0013, 0x0243 }, + { 0x0013, 0x0244 }, + { 0x0013, 0x0245 }, + { 0x0013, 0x0246 }, + { 0x0013, 0x0247 }, + { 0x0013, 0x0248 }, + { 0x0013, 0x0249 }, + { 0x0013, 0x024a }, + { 0x0013, 0x024b }, + { 0x0013, 0x024c }, + { 0x0013, 0x024d }, + { 0x0013, 0x024e }, + { 0x0013, 0x024f }, + { 0x0013, 0x0250 }, + { 0x0013, 0x0251 }, + { 0x0013, 0x0252 }, + { 0x0013, 0x0253 }, + { 0x0013, 0x0254 }, + { 0x0013, 0x0255 }, + { 0x0013, 0x0256 }, + { 0x0013, 0x0257 }, + { 0x0013, 0x0258 }, + { 0x0013, 0x0259 }, + { 0x0013, 0x025a }, + { 0x0013, 0x025b }, + { 0x0013, 0x025c }, + { 0x0013, 0x025d }, + { 0x0013, 0x025e }, + { 0x0013, 0x025f }, + { 0x0013, 0x0260 }, + { 0x0013, 0x0261 }, + { 0x0013, 0x0262 }, + { 0x0013, 0x0263 }, + { 0x0013, 0x0264 }, + { 0x0013, 0x0265 }, + { 0x0013, 0x0266 }, + { 0x0013, 0x0267 }, + { 0x0013, 0x0268 }, + { 0x0013, 0x0269 }, + { 0x0013, 0x026a }, + { 0x0013, 0x026b }, + { 0x0012, 0x013f }, + + }; + +const uint16_t c_aauiLCLDHuffEnc49[729][2] = + { + { 0x0002, 0x0003 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0007 }, + { 0x0007, 0x000a }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0009, 0x0009 }, + { 0x000b, 0x000d }, + { 0x000d, 0x0014 }, + { 0x000d, 0x0015 }, + { 0x0010, 0x0052 }, + { 0x0011, 0x0098 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0003, 0x0004 }, + { 0x0003, 0x0005 }, + { 0x0005, 0x0008 }, + { 0x0006, 0x000a }, + { 0x0007, 0x000b }, + { 0x0008, 0x000b }, + { 0x0008, 0x000c }, + { 0x000a, 0x000a }, + { 0x000b, 0x000e }, + { 0x000d, 0x0016 }, + { 0x000f, 0x0031 }, + { 0x0010, 0x0053 }, + { 0x0012, 0x012a }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0006, 0x000b }, + { 0x0007, 0x000c }, + { 0x0008, 0x000d }, + { 0x0009, 0x000a }, + { 0x000a, 0x000b }, + { 0x000c, 0x000f }, + { 0x000d, 0x0017 }, + { 0x000f, 0x0032 }, + { 0x0010, 0x0054 }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0007, 0x000d }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0008, 0x000e }, + { 0x0009, 0x000b }, + { 0x000b, 0x000f }, + { 0x000c, 0x0010 }, + { 0x000e, 0x001d }, + { 0x000f, 0x0033 }, + { 0x0011, 0x0099 }, + { 0x0013, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0013, 0x0032 }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0013, 0x0038 }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0008, 0x000f }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0007, 0x0012 }, + { 0x0008, 0x0010 }, + { 0x0009, 0x000c }, + { 0x000a, 0x000c }, + { 0x000c, 0x0011 }, + { 0x000d, 0x0018 }, + { 0x000e, 0x001e }, + { 0x0011, 0x009a }, + { 0x0011, 0x009b }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0008, 0x0011 }, + { 0x0007, 0x0013 }, + { 0x0008, 0x0012 }, + { 0x0008, 0x0013 }, + { 0x0009, 0x000d }, + { 0x000a, 0x000d }, + { 0x000b, 0x0010 }, + { 0x000c, 0x0012 }, + { 0x000e, 0x001f }, + { 0x000e, 0x0020 }, + { 0x0010, 0x0055 }, + { 0x0011, 0x009c }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0013, 0x004d }, + { 0x0013, 0x004e }, + { 0x0013, 0x004f }, + { 0x0013, 0x0050 }, + { 0x0013, 0x0051 }, + { 0x0013, 0x0052 }, + { 0x0013, 0x0053 }, + { 0x0013, 0x0054 }, + { 0x0013, 0x0055 }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0013, 0x0058 }, + { 0x0009, 0x000e }, + { 0x0009, 0x000f }, + { 0x0009, 0x0010 }, + { 0x0009, 0x0011 }, + { 0x000a, 0x000e }, + { 0x000b, 0x0011 }, + { 0x000c, 0x0013 }, + { 0x000d, 0x0019 }, + { 0x000e, 0x0021 }, + { 0x0010, 0x0056 }, + { 0x0010, 0x0057 }, + { 0x0013, 0x0059 }, + { 0x0013, 0x005a }, + { 0x0013, 0x005b }, + { 0x0013, 0x005c }, + { 0x0013, 0x005d }, + { 0x0013, 0x005e }, + { 0x0013, 0x005f }, + { 0x0013, 0x0060 }, + { 0x0013, 0x0061 }, + { 0x0013, 0x0062 }, + { 0x0013, 0x0063 }, + { 0x0013, 0x0064 }, + { 0x0013, 0x0065 }, + { 0x0013, 0x0066 }, + { 0x0013, 0x0067 }, + { 0x0013, 0x0068 }, + { 0x000b, 0x0012 }, + { 0x000a, 0x000f }, + { 0x000a, 0x0010 }, + { 0x000a, 0x0011 }, + { 0x000c, 0x0014 }, + { 0x000c, 0x0015 }, + { 0x000d, 0x001a }, + { 0x000e, 0x0022 }, + { 0x0010, 0x0058 }, + { 0x0010, 0x0059 }, + { 0x0013, 0x0069 }, + { 0x0013, 0x006a }, + { 0x0013, 0x006b }, + { 0x0013, 0x006c }, + { 0x0013, 0x006d }, + { 0x0013, 0x006e }, + { 0x0013, 0x006f }, + { 0x0013, 0x0070 }, + { 0x0013, 0x0071 }, + { 0x0013, 0x0072 }, + { 0x0013, 0x0073 }, + { 0x0013, 0x0074 }, + { 0x0013, 0x0075 }, + { 0x0013, 0x0076 }, + { 0x0013, 0x0077 }, + { 0x0013, 0x0078 }, + { 0x0013, 0x0079 }, + { 0x000c, 0x0016 }, + { 0x000b, 0x0013 }, + { 0x000c, 0x0017 }, + { 0x000c, 0x0018 }, + { 0x000c, 0x0019 }, + { 0x000e, 0x0023 }, + { 0x000e, 0x0024 }, + { 0x000f, 0x0034 }, + { 0x0010, 0x005a }, + { 0x0011, 0x009d }, + { 0x0013, 0x007a }, + { 0x0013, 0x007b }, + { 0x0013, 0x007c }, + { 0x0013, 0x007d }, + { 0x0013, 0x007e }, + { 0x0013, 0x007f }, + { 0x0013, 0x0080 }, + { 0x0013, 0x0081 }, + { 0x0013, 0x0082 }, + { 0x0013, 0x0083 }, + { 0x0013, 0x0084 }, + { 0x0013, 0x0085 }, + { 0x0013, 0x0086 }, + { 0x0013, 0x0087 }, + { 0x0013, 0x0088 }, + { 0x0013, 0x0089 }, + { 0x0013, 0x008a }, + { 0x000e, 0x0025 }, + { 0x000d, 0x001b }, + { 0x000d, 0x001c }, + { 0x000d, 0x001d }, + { 0x000e, 0x0026 }, + { 0x000f, 0x0035 }, + { 0x0010, 0x005b }, + { 0x0011, 0x009e }, + { 0x0011, 0x009f }, + { 0x0012, 0x012b }, + { 0x0013, 0x008b }, + { 0x0013, 0x008c }, + { 0x0013, 0x008d }, + { 0x0013, 0x008e }, + { 0x0013, 0x008f }, + { 0x0013, 0x0090 }, + { 0x0013, 0x0091 }, + { 0x0013, 0x0092 }, + { 0x0013, 0x0093 }, + { 0x0013, 0x0094 }, + { 0x0013, 0x0095 }, + { 0x0013, 0x0096 }, + { 0x0013, 0x0097 }, + { 0x0013, 0x0098 }, + { 0x0013, 0x0099 }, + { 0x0013, 0x009a }, + { 0x0013, 0x009b }, + { 0x0010, 0x005c }, + { 0x000f, 0x0036 }, + { 0x000e, 0x0027 }, + { 0x000f, 0x0037 }, + { 0x000f, 0x0038 }, + { 0x0010, 0x005d }, + { 0x0011, 0x00a0 }, + { 0x0013, 0x009c }, + { 0x0012, 0x012c }, + { 0x0013, 0x009d }, + { 0x0013, 0x009e }, + { 0x0013, 0x009f }, + { 0x0013, 0x00a0 }, + { 0x0013, 0x00a1 }, + { 0x0013, 0x00a2 }, + { 0x0013, 0x00a3 }, + { 0x0013, 0x00a4 }, + { 0x0013, 0x00a5 }, + { 0x0013, 0x00a6 }, + { 0x0013, 0x00a7 }, + { 0x0013, 0x00a8 }, + { 0x0013, 0x00a9 }, + { 0x0013, 0x00aa }, + { 0x0013, 0x00ab }, + { 0x0013, 0x00ac }, + { 0x0013, 0x00ad }, + { 0x0013, 0x00ae }, + { 0x0010, 0x005e }, + { 0x000f, 0x0039 }, + { 0x0010, 0x005f }, + { 0x0010, 0x0060 }, + { 0x0011, 0x00a1 }, + { 0x0010, 0x0061 }, + { 0x0013, 0x00af }, + { 0x0013, 0x00b0 }, + { 0x0012, 0x012d }, + { 0x0013, 0x00b1 }, + { 0x0013, 0x00b2 }, + { 0x0013, 0x00b3 }, + { 0x0013, 0x00b4 }, + { 0x0013, 0x00b5 }, + { 0x0013, 0x00b6 }, + { 0x0013, 0x00b7 }, + { 0x0013, 0x00b8 }, + { 0x0013, 0x00b9 }, + { 0x0013, 0x00ba }, + { 0x0013, 0x00bb }, + { 0x0013, 0x00bc }, + { 0x0013, 0x00bd }, + { 0x0013, 0x00be }, + { 0x0013, 0x00bf }, + { 0x0013, 0x00c0 }, + { 0x0013, 0x00c1 }, + { 0x0013, 0x00c2 }, + { 0x0012, 0x012e }, + { 0x0011, 0x00a2 }, + { 0x0011, 0x00a3 }, + { 0x0013, 0x00c3 }, + { 0x0013, 0x00c4 }, + { 0x0013, 0x00c5 }, + { 0x0013, 0x00c6 }, + { 0x0013, 0x00c7 }, + { 0x0013, 0x00c8 }, + { 0x0013, 0x00c9 }, + { 0x0013, 0x00ca }, + { 0x0013, 0x00cb }, + { 0x0013, 0x00cc }, + { 0x0013, 0x00cd }, + { 0x0013, 0x00ce }, + { 0x0013, 0x00cf }, + { 0x0013, 0x00d0 }, + { 0x0013, 0x00d1 }, + { 0x0013, 0x00d2 }, + { 0x0013, 0x00d3 }, + { 0x0013, 0x00d4 }, + { 0x0013, 0x00d5 }, + { 0x0013, 0x00d6 }, + { 0x0013, 0x00d7 }, + { 0x0013, 0x00d8 }, + { 0x0013, 0x00d9 }, + { 0x0013, 0x00da }, + { 0x0013, 0x00db }, + { 0x0013, 0x00dc }, + { 0x0013, 0x00dd }, + { 0x0013, 0x00de }, + { 0x0013, 0x00df }, + { 0x0012, 0x012f }, + { 0x0013, 0x00e0 }, + { 0x0013, 0x00e1 }, + { 0x0013, 0x00e2 }, + { 0x0013, 0x00e3 }, + { 0x0013, 0x00e4 }, + { 0x0013, 0x00e5 }, + { 0x0013, 0x00e6 }, + { 0x0013, 0x00e7 }, + { 0x0013, 0x00e8 }, + { 0x0013, 0x00e9 }, + { 0x0013, 0x00ea }, + { 0x0013, 0x00eb }, + { 0x0013, 0x00ec }, + { 0x0013, 0x00ed }, + { 0x0013, 0x00ee }, + { 0x0013, 0x00ef }, + { 0x0013, 0x00f0 }, + { 0x0013, 0x00f1 }, + { 0x0013, 0x00f2 }, + { 0x0013, 0x00f3 }, + { 0x0013, 0x00f4 }, + { 0x0013, 0x00f5 }, + { 0x0013, 0x00f6 }, + { 0x0013, 0x00f7 }, + { 0x0013, 0x00f8 }, + { 0x0013, 0x00f9 }, + { 0x0013, 0x00fa }, + { 0x0013, 0x00fb }, + { 0x0013, 0x00fc }, + { 0x0013, 0x00fd }, + { 0x0013, 0x00fe }, + { 0x0013, 0x00ff }, + { 0x0013, 0x0100 }, + { 0x0013, 0x0101 }, + { 0x0013, 0x0102 }, + { 0x0013, 0x0103 }, + { 0x0013, 0x0104 }, + { 0x0013, 0x0105 }, + { 0x0013, 0x0106 }, + { 0x0013, 0x0107 }, + { 0x0013, 0x0108 }, + { 0x0013, 0x0109 }, + { 0x0013, 0x010a }, + { 0x0013, 0x010b }, + { 0x0013, 0x010c }, + { 0x0013, 0x010d }, + { 0x0013, 0x010e }, + { 0x0013, 0x010f }, + { 0x0013, 0x0110 }, + { 0x0013, 0x0111 }, + { 0x0013, 0x0112 }, + { 0x0013, 0x0113 }, + { 0x0013, 0x0114 }, + { 0x0013, 0x0115 }, + { 0x0013, 0x0116 }, + { 0x0013, 0x0117 }, + { 0x0013, 0x0118 }, + { 0x0013, 0x0119 }, + { 0x0013, 0x011a }, + { 0x0013, 0x011b }, + { 0x0013, 0x011c }, + { 0x0013, 0x011d }, + { 0x0013, 0x011e }, + { 0x0013, 0x011f }, + { 0x0013, 0x0120 }, + { 0x0013, 0x0121 }, + { 0x0013, 0x0122 }, + { 0x0013, 0x0123 }, + { 0x0013, 0x0124 }, + { 0x0013, 0x0125 }, + { 0x0013, 0x0126 }, + { 0x0013, 0x0127 }, + { 0x0013, 0x0128 }, + { 0x0013, 0x0129 }, + { 0x0013, 0x012a }, + { 0x0013, 0x012b }, + { 0x0013, 0x012c }, + { 0x0013, 0x012d }, + { 0x0013, 0x012e }, + { 0x0013, 0x012f }, + { 0x0013, 0x0130 }, + { 0x0013, 0x0131 }, + { 0x0013, 0x0132 }, + { 0x0013, 0x0133 }, + { 0x0013, 0x0134 }, + { 0x0013, 0x0135 }, + { 0x0013, 0x0136 }, + { 0x0013, 0x0137 }, + { 0x0013, 0x0138 }, + { 0x0013, 0x0139 }, + { 0x0013, 0x013a }, + { 0x0013, 0x013b }, + { 0x0013, 0x013c }, + { 0x0013, 0x013d }, + { 0x0013, 0x013e }, + { 0x0013, 0x013f }, + { 0x0013, 0x0140 }, + { 0x0013, 0x0141 }, + { 0x0013, 0x0142 }, + { 0x0013, 0x0143 }, + { 0x0013, 0x0144 }, + { 0x0013, 0x0145 }, + { 0x0013, 0x0146 }, + { 0x0013, 0x0147 }, + { 0x0013, 0x0148 }, + { 0x0013, 0x0149 }, + { 0x0013, 0x014a }, + { 0x0013, 0x014b }, + { 0x0013, 0x014c }, + { 0x0013, 0x014d }, + { 0x0013, 0x014e }, + { 0x0013, 0x014f }, + { 0x0013, 0x0150 }, + { 0x0013, 0x0151 }, + { 0x0013, 0x0152 }, + { 0x0013, 0x0153 }, + { 0x0013, 0x0154 }, + { 0x0013, 0x0155 }, + { 0x0013, 0x0156 }, + { 0x0013, 0x0157 }, + { 0x0013, 0x0158 }, + { 0x0013, 0x0159 }, + { 0x0013, 0x015a }, + { 0x0013, 0x015b }, + { 0x0013, 0x015c }, + { 0x0013, 0x015d }, + { 0x0013, 0x015e }, + { 0x0013, 0x015f }, + { 0x0013, 0x0160 }, + { 0x0013, 0x0161 }, + { 0x0013, 0x0162 }, + { 0x0013, 0x0163 }, + { 0x0013, 0x0164 }, + { 0x0013, 0x0165 }, + { 0x0013, 0x0166 }, + { 0x0013, 0x0167 }, + { 0x0013, 0x0168 }, + { 0x0013, 0x0169 }, + { 0x0013, 0x016a }, + { 0x0013, 0x016b }, + { 0x0013, 0x016c }, + { 0x0013, 0x016d }, + { 0x0013, 0x016e }, + { 0x0013, 0x016f }, + { 0x0013, 0x0170 }, + { 0x0013, 0x0171 }, + { 0x0013, 0x0172 }, + { 0x0013, 0x0173 }, + { 0x0013, 0x0174 }, + { 0x0013, 0x0175 }, + { 0x0013, 0x0176 }, + { 0x0013, 0x0177 }, + { 0x0013, 0x0178 }, + { 0x0013, 0x0179 }, + { 0x0013, 0x017a }, + { 0x0013, 0x017b }, + { 0x0013, 0x017c }, + { 0x0013, 0x017d }, + { 0x0013, 0x017e }, + { 0x0013, 0x017f }, + { 0x0013, 0x0180 }, + { 0x0013, 0x0181 }, + { 0x0013, 0x0182 }, + { 0x0013, 0x0183 }, + { 0x0013, 0x0184 }, + { 0x0013, 0x0185 }, + { 0x0013, 0x0186 }, + { 0x0013, 0x0187 }, + { 0x0013, 0x0188 }, + { 0x0013, 0x0189 }, + { 0x0013, 0x018a }, + { 0x0013, 0x018b }, + { 0x0013, 0x018c }, + { 0x0013, 0x018d }, + { 0x0013, 0x018e }, + { 0x0013, 0x018f }, + { 0x0013, 0x0190 }, + { 0x0013, 0x0191 }, + { 0x0013, 0x0192 }, + { 0x0013, 0x0193 }, + { 0x0013, 0x0194 }, + { 0x0013, 0x0195 }, + { 0x0013, 0x0196 }, + { 0x0013, 0x0197 }, + { 0x0013, 0x0198 }, + { 0x0013, 0x0199 }, + { 0x0013, 0x019a }, + { 0x0013, 0x019b }, + { 0x0013, 0x019c }, + { 0x0013, 0x019d }, + { 0x0013, 0x019e }, + { 0x0013, 0x019f }, + { 0x0013, 0x01a0 }, + { 0x0013, 0x01a1 }, + { 0x0013, 0x01a2 }, + { 0x0013, 0x01a3 }, + { 0x0013, 0x01a4 }, + { 0x0013, 0x01a5 }, + { 0x0013, 0x01a6 }, + { 0x0013, 0x01a7 }, + { 0x0013, 0x01a8 }, + { 0x0013, 0x01a9 }, + { 0x0013, 0x01aa }, + { 0x0013, 0x01ab }, + { 0x0013, 0x01ac }, + { 0x0013, 0x01ad }, + { 0x0013, 0x01ae }, + { 0x0013, 0x01af }, + { 0x0013, 0x01b0 }, + { 0x0013, 0x01b1 }, + { 0x0013, 0x01b2 }, + { 0x0013, 0x01b3 }, + { 0x0013, 0x01b4 }, + { 0x0013, 0x01b5 }, + { 0x0013, 0x01b6 }, + { 0x0013, 0x01b7 }, + { 0x0013, 0x01b8 }, + { 0x0013, 0x01b9 }, + { 0x0013, 0x01ba }, + { 0x0013, 0x01bb }, + { 0x0013, 0x01bc }, + { 0x0013, 0x01bd }, + { 0x0013, 0x01be }, + { 0x0013, 0x01bf }, + { 0x0013, 0x01c0 }, + { 0x0013, 0x01c1 }, + { 0x0013, 0x01c2 }, + { 0x0013, 0x01c3 }, + { 0x0013, 0x01c4 }, + { 0x0013, 0x01c5 }, + { 0x0013, 0x01c6 }, + { 0x0013, 0x01c7 }, + { 0x0013, 0x01c8 }, + { 0x0013, 0x01c9 }, + { 0x0013, 0x01ca }, + { 0x0013, 0x01cb }, + { 0x0013, 0x01cc }, + { 0x0013, 0x01cd }, + { 0x0013, 0x01ce }, + { 0x0013, 0x01cf }, + { 0x0013, 0x01d0 }, + { 0x0013, 0x01d1 }, + { 0x0013, 0x01d2 }, + { 0x0013, 0x01d3 }, + { 0x0013, 0x01d4 }, + { 0x0013, 0x01d5 }, + { 0x0013, 0x01d6 }, + { 0x0013, 0x01d7 }, + { 0x0013, 0x01d8 }, + { 0x0013, 0x01d9 }, + { 0x0013, 0x01da }, + { 0x0013, 0x01db }, + { 0x0013, 0x01dc }, + { 0x0013, 0x01dd }, + { 0x0013, 0x01de }, + { 0x0013, 0x01df }, + { 0x0013, 0x01e0 }, + { 0x0013, 0x01e1 }, + { 0x0013, 0x01e2 }, + { 0x0013, 0x01e3 }, + { 0x0013, 0x01e4 }, + { 0x0013, 0x01e5 }, + { 0x0013, 0x01e6 }, + { 0x0013, 0x01e7 }, + { 0x0013, 0x01e8 }, + { 0x0013, 0x01e9 }, + { 0x0013, 0x01ea }, + { 0x0013, 0x01eb }, + { 0x0013, 0x01ec }, + { 0x0013, 0x01ed }, + { 0x0013, 0x01ee }, + { 0x0013, 0x01ef }, + { 0x0013, 0x01f0 }, + { 0x0013, 0x01f1 }, + { 0x0013, 0x01f2 }, + { 0x0013, 0x01f3 }, + { 0x0013, 0x01f4 }, + { 0x0013, 0x01f5 }, + { 0x0013, 0x01f6 }, + { 0x0013, 0x01f7 }, + { 0x0013, 0x01f8 }, + { 0x0013, 0x01f9 }, + { 0x0013, 0x01fa }, + { 0x0013, 0x01fb }, + { 0x0013, 0x01fc }, + { 0x0013, 0x01fd }, + { 0x0013, 0x01fe }, + { 0x0013, 0x01ff }, + { 0x0013, 0x0200 }, + { 0x0013, 0x0201 }, + { 0x0013, 0x0202 }, + { 0x0013, 0x0203 }, + { 0x0013, 0x0204 }, + { 0x0013, 0x0205 }, + { 0x0013, 0x0206 }, + { 0x0013, 0x0207 }, + { 0x0013, 0x0208 }, + { 0x0013, 0x0209 }, + { 0x0013, 0x020a }, + { 0x0013, 0x020b }, + { 0x0013, 0x020c }, + { 0x0013, 0x020d }, + { 0x0013, 0x020e }, + { 0x0013, 0x020f }, + { 0x0013, 0x0210 }, + { 0x0013, 0x0211 }, + { 0x0013, 0x0212 }, + { 0x0013, 0x0213 }, + { 0x0013, 0x0214 }, + { 0x0013, 0x0215 }, + { 0x0013, 0x0216 }, + { 0x0013, 0x0217 }, + { 0x0013, 0x0218 }, + { 0x0013, 0x0219 }, + { 0x0013, 0x021a }, + { 0x0013, 0x021b }, + { 0x0013, 0x021c }, + { 0x0013, 0x021d }, + { 0x0013, 0x021e }, + { 0x0013, 0x021f }, + { 0x0013, 0x0220 }, + { 0x0013, 0x0221 }, + { 0x0013, 0x0222 }, + { 0x0013, 0x0223 }, + { 0x0013, 0x0224 }, + { 0x0013, 0x0225 }, + { 0x0013, 0x0226 }, + { 0x0013, 0x0227 }, + { 0x0013, 0x0228 }, + { 0x0013, 0x0229 }, + { 0x0013, 0x022a }, + { 0x0013, 0x022b }, + { 0x0013, 0x022c }, + { 0x0013, 0x022d }, + { 0x0013, 0x022e }, + { 0x0013, 0x022f }, + { 0x0013, 0x0230 }, + { 0x0013, 0x0231 }, + { 0x0013, 0x0232 }, + { 0x0013, 0x0233 }, + { 0x0013, 0x0234 }, + { 0x0013, 0x0235 }, + { 0x0013, 0x0236 }, + { 0x0013, 0x0237 }, + { 0x0013, 0x0238 }, + { 0x0013, 0x0239 }, + { 0x0013, 0x023a }, + { 0x0013, 0x023b }, + { 0x0013, 0x023c }, + { 0x0013, 0x023d }, + { 0x0013, 0x023e }, + { 0x0013, 0x023f }, + { 0x0013, 0x0240 }, + { 0x0013, 0x0241 }, + { 0x0013, 0x0242 }, + { 0x0013, 0x0243 }, + { 0x0013, 0x0244 }, + { 0x0013, 0x0245 }, + { 0x0013, 0x0246 }, + { 0x0013, 0x0247 }, + { 0x0013, 0x0248 }, + { 0x0013, 0x0249 }, + { 0x0013, 0x024a }, + { 0x0013, 0x024b }, + { 0x0013, 0x024c }, + { 0x0013, 0x024d }, + { 0x0013, 0x024e }, + { 0x0013, 0x024f }, + { 0x0013, 0x0250 }, + { 0x0013, 0x0251 }, + { 0x0013, 0x0252 }, + { 0x0013, 0x0253 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc50[28][2] = + { + { 0x0002, 0x0001 }, + { 0x0002, 0x0002 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0005, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x000d, 0x0001 }, + { 0x000e, 0x0001 }, + { 0x000f, 0x0001 }, + { 0x0011, 0x0003 }, + { 0x0012, 0x0005 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc51[29][2] = + { + { 0x0002, 0x0002 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0004, 0x0001 }, + { 0x0004, 0x0002 }, + { 0x0004, 0x0003 }, + { 0x0005, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x000d, 0x0001 }, + { 0x000e, 0x0001 }, + { 0x0010, 0x0002 }, + { 0x0010, 0x0003 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc52[32][2] = + { + { 0x0002, 0x0002 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0004, 0x0002 }, + { 0x0004, 0x0003 }, + { 0x0005, 0x0001 }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0006, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x000e, 0x0001 }, + { 0x000e, 0x0002 }, + { 0x000e, 0x0003 }, + { 0x000f, 0x0001 }, + { 0x0011, 0x0002 }, + { 0x0011, 0x0003 }, + { 0x0012, 0x0003 }, + { 0x0014, 0x0000 }, + { 0x0013, 0x0003 }, + { 0x0014, 0x0001 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + }; + +const uint16_t c_aauiLCLDHuffEnc53[37][2] = + { + { 0x0002, 0x0002 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0004, 0x0002 }, + { 0x0004, 0x0003 }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0007, 0x0001 }, + { 0x0007, 0x0002 }, + { 0x0007, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000b, 0x0002 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000d, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x000e, 0x0002 }, + { 0x000e, 0x0003 }, + { 0x000f, 0x0002 }, + { 0x000f, 0x0003 }, + { 0x0011, 0x0004 }, + { 0x0010, 0x0003 }, + { 0x0011, 0x0005 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0012, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc54[39][2] = + { + { 0x0002, 0x0002 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0004, 0x0003 }, + { 0x0005, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0005, 0x0005 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0002 }, + { 0x0007, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000b, 0x0002 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000d, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x000e, 0x0002 }, + { 0x000e, 0x0003 }, + { 0x000f, 0x0002 }, + { 0x000f, 0x0003 }, + { 0x0011, 0x0002 }, + { 0x0010, 0x0002 }, + { 0x0010, 0x0003 }, + { 0x0011, 0x0003 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc55[46][2] = + { + { 0x0003, 0x0003 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0004 }, + { 0x0003, 0x0005 }, + { 0x0004, 0x0003 }, + { 0x0004, 0x0004 }, + { 0x0004, 0x0005 }, + { 0x0005, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0005, 0x0005 }, + { 0x0006, 0x0003 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0002 }, + { 0x0007, 0x0003 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x0009, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000b, 0x0002 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000d, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x000e, 0x0002 }, + { 0x000e, 0x0003 }, + { 0x000f, 0x0003 }, + { 0x0010, 0x0002 }, + { 0x0010, 0x0003 }, + { 0x0010, 0x0004 }, + { 0x0010, 0x0005 }, + { 0x0011, 0x0003 }, + { 0x0012, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc56[55][2] = + { + { 0x0003, 0x0003 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0004 }, + { 0x0003, 0x0005 }, + { 0x0004, 0x0004 }, + { 0x0004, 0x0005 }, + { 0x0005, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0006, 0x0003 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0003 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0009, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000d, 0x0003 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000e, 0x0003 }, + { 0x000e, 0x0004 }, + { 0x000e, 0x0005 }, + { 0x000f, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x0010, 0x0002 }, + { 0x0010, 0x0003 }, + { 0x0010, 0x0004 }, + { 0x0010, 0x0005 }, + { 0x0010, 0x0006 }, + { 0x0010, 0x0007 }, + { 0x0013, 0x0000 }, + { 0x0011, 0x0003 }, + { 0x0012, 0x0005 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc57[65][2] = + { + { 0x0003, 0x0004 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0005 }, + { 0x0004, 0x0004 }, + { 0x0004, 0x0005 }, + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0005, 0x0004 }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0006, 0x0006 }, + { 0x0006, 0x0007 }, + { 0x0007, 0x0003 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0009, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x000a, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000b, 0x0003 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000c, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x000d, 0x0003 }, + { 0x000c, 0x0005 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000e, 0x0003 }, + { 0x000e, 0x0004 }, + { 0x000e, 0x0005 }, + { 0x000f, 0x0003 }, + { 0x0010, 0x0003 }, + { 0x000f, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x0010, 0x0004 }, + { 0x0010, 0x0005 }, + { 0x0013, 0x0000 }, + { 0x0011, 0x0005 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0012, 0x0007 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0012, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + + }; + +const uint16_t c_aauiLCLDHuffEnc58[77][2] = + { + { 0x0004, 0x0005 }, + { 0x0003, 0x0005 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0004, 0x0008 }, + { 0x0004, 0x0009 }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0006, 0x0006 }, + { 0x0006, 0x0007 }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0009, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x000a, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000e, 0x0004 }, + { 0x000e, 0x0005 }, + { 0x000e, 0x0006 }, + { 0x000e, 0x0007 }, + { 0x000f, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x000f, 0x0006 }, + { 0x0010, 0x0004 }, + { 0x000f, 0x0007 }, + { 0x0010, 0x0005 }, + { 0x0010, 0x0006 }, + { 0x0010, 0x0007 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0012, 0x0006 }, + { 0x0011, 0x0007 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0012, 0x0007 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0012, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0012, 0x000a }, + { 0x0012, 0x000b }, + { 0x0012, 0x000c }, + { 0x0012, 0x000d }, + + }; + +const uint16_t c_aauiLCLDHuffEnc59[91][2] = + { + { 0x0003, 0x0005 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0004, 0x0008 }, + { 0x0004, 0x0009 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0006, 0x0006 }, + { 0x0006, 0x0007 }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0007, 0x0008 }, + { 0x0007, 0x0009 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000d, 0x0003 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000e, 0x0003 }, + { 0x000e, 0x0004 }, + { 0x000e, 0x0005 }, + { 0x000f, 0x0003 }, + { 0x000f, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x0011, 0x0008 }, + { 0x0011, 0x0009 }, + { 0x0013, 0x0000 }, + { 0x0011, 0x000a }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0012, 0x000d }, + { 0x0012, 0x000e }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0011, 0x000b }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0012, 0x000f }, + + }; + +const uint16_t c_aauiLCLDHuffEnc60[109][2] = + { + { 0x0004, 0x0007 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0005 }, + { 0x0004, 0x0008 }, + { 0x0004, 0x0009 }, + { 0x0005, 0x0007 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0006, 0x0007 }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0007, 0x0008 }, + { 0x0007, 0x0009 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0007, 0x000c }, + { 0x0007, 0x000d }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000c, 0x0006 }, + { 0x000d, 0x0005 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000c, 0x0007 }, + { 0x000e, 0x0005 }, + { 0x000e, 0x0006 }, + { 0x000e, 0x0007 }, + { 0x000e, 0x0008 }, + { 0x000f, 0x0005 }, + { 0x000e, 0x0009 }, + { 0x000f, 0x0006 }, + { 0x0010, 0x0006 }, + { 0x000f, 0x0007 }, + { 0x000f, 0x0008 }, + { 0x000f, 0x0009 }, + { 0x0010, 0x0007 }, + { 0x0010, 0x0008 }, + { 0x0010, 0x0009 }, + { 0x0011, 0x000a }, + { 0x0013, 0x0000 }, + { 0x0011, 0x000b }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0012, 0x0011 }, + { 0x0012, 0x0012 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0012, 0x0013 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc61[129][2] = + { + { 0x0004, 0x0008 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0009 }, + { 0x0004, 0x000a }, + { 0x0004, 0x000b }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0007, 0x0008 }, + { 0x0007, 0x0009 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0007, 0x000c }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0008, 0x000c }, + { 0x0008, 0x000d }, + { 0x0008, 0x000e }, + { 0x0008, 0x000f }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x000a, 0x0005 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000a, 0x0008 }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000b, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000c, 0x0008 }, + { 0x000c, 0x0009 }, + { 0x000d, 0x0005 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000d, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x000d, 0x000a }, + { 0x000e, 0x0008 }, + { 0x000d, 0x000b }, + { 0x000e, 0x0009 }, + { 0x000f, 0x0009 }, + { 0x000f, 0x000a }, + { 0x000f, 0x000b }, + { 0x000f, 0x000c }, + { 0x000f, 0x000d }, + { 0x000f, 0x000e }, + { 0x0010, 0x000c }, + { 0x0011, 0x0015 }, + { 0x0010, 0x000d }, + { 0x000f, 0x000f }, + { 0x0010, 0x000e }, + { 0x0010, 0x000f }, + { 0x0012, 0x0000 }, + { 0x0011, 0x0016 }, + { 0x0010, 0x0010 }, + { 0x0010, 0x0011 }, + { 0x0011, 0x0017 }, + { 0x0012, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + { 0x0012, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0012, 0x000a }, + { 0x0012, 0x000b }, + { 0x0012, 0x000c }, + { 0x0012, 0x000d }, + { 0x0012, 0x000e }, + { 0x0012, 0x000f }, + { 0x0012, 0x0010 }, + { 0x0012, 0x0011 }, + { 0x0012, 0x0012 }, + { 0x0012, 0x0013 }, + { 0x0012, 0x0014 }, + { 0x0012, 0x0015 }, + { 0x0012, 0x0016 }, + { 0x0012, 0x0017 }, + { 0x0012, 0x0018 }, + { 0x0012, 0x0019 }, + { 0x0012, 0x001a }, + { 0x0012, 0x001b }, + { 0x0012, 0x001c }, + { 0x0012, 0x001d }, + { 0x0012, 0x001e }, + { 0x0012, 0x001f }, + { 0x0012, 0x0020 }, + { 0x0012, 0x0021 }, + { 0x0012, 0x0022 }, + { 0x0012, 0x0023 }, + { 0x0012, 0x0024 }, + { 0x0012, 0x0025 }, + { 0x0012, 0x0026 }, + { 0x0012, 0x0027 }, + { 0x0012, 0x0028 }, + { 0x0012, 0x0029 }, + + }; + +const uint16_t c_aauiLCLDHuffEnc62[153][2] = + { + { 0x0004, 0x0009 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x000a }, + { 0x0004, 0x000b }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0005, 0x0010 }, + { 0x0005, 0x0011 }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0006, 0x0010 }, + { 0x0006, 0x0011 }, + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0007, 0x0009 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0007, 0x000c }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0007, 0x0012 }, + { 0x0007, 0x0013 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0008, 0x000c }, + { 0x0008, 0x000d }, + { 0x0008, 0x000e }, + { 0x0008, 0x000f }, + { 0x0008, 0x0010 }, + { 0x0008, 0x0011 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x0009, 0x000c }, + { 0x0009, 0x000d }, + { 0x0009, 0x000e }, + { 0x0009, 0x000f }, + { 0x0009, 0x0010 }, + { 0x0009, 0x0011 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000a, 0x0008 }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000a, 0x000c }, + { 0x000a, 0x000d }, + { 0x000b, 0x0007 }, + { 0x000c, 0x0007 }, + { 0x000c, 0x0008 }, + { 0x000c, 0x0009 }, + { 0x000c, 0x000a }, + { 0x000c, 0x000b }, + { 0x000c, 0x000c }, + { 0x000d, 0x0007 }, + { 0x000c, 0x000d }, + { 0x000d, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x000d, 0x000a }, + { 0x000d, 0x000b }, + { 0x000e, 0x0008 }, + { 0x000d, 0x000c }, + { 0x000d, 0x000d }, + { 0x000e, 0x0009 }, + { 0x000e, 0x000a }, + { 0x000e, 0x000b }, + { 0x000e, 0x000c }, + { 0x000f, 0x000c }, + { 0x000e, 0x000d }, + { 0x000f, 0x000d }, + { 0x000f, 0x000e }, + { 0x000f, 0x000f }, + { 0x0010, 0x000f }, + { 0x0010, 0x0010 }, + { 0x0011, 0x0019 }, + { 0x0010, 0x0011 }, + { 0x0010, 0x0012 }, + { 0x0010, 0x0013 }, + { 0x0010, 0x0014 }, + { 0x0010, 0x0015 }, + { 0x0012, 0x0000 }, + { 0x0010, 0x0016 }, + { 0x0011, 0x001a }, + { 0x0010, 0x0017 }, + { 0x0012, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0011, 0x001b }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + { 0x0012, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0012, 0x000a }, + { 0x0012, 0x000b }, + { 0x0012, 0x000c }, + { 0x0012, 0x000d }, + { 0x0012, 0x000e }, + { 0x0012, 0x000f }, + { 0x0012, 0x0010 }, + { 0x0012, 0x0011 }, + { 0x0012, 0x0012 }, + { 0x0012, 0x0013 }, + { 0x0012, 0x0014 }, + { 0x0012, 0x0015 }, + { 0x0012, 0x0016 }, + { 0x0012, 0x0017 }, + { 0x0012, 0x0018 }, + { 0x0011, 0x001c }, + { 0x0012, 0x0019 }, + { 0x0012, 0x001a }, + { 0x0012, 0x001b }, + { 0x0012, 0x001c }, + { 0x0012, 0x001d }, + { 0x0012, 0x001e }, + { 0x0012, 0x001f }, + { 0x0012, 0x0020 }, + { 0x0012, 0x0021 }, + { 0x0012, 0x0022 }, + { 0x0012, 0x0023 }, + { 0x0012, 0x0024 }, + { 0x0012, 0x0025 }, + { 0x0012, 0x0026 }, + { 0x0012, 0x0027 }, + { 0x0012, 0x0028 }, + { 0x0012, 0x0029 }, + { 0x0012, 0x002a }, + { 0x0012, 0x002b }, + { 0x0012, 0x002c }, + { 0x0012, 0x002d }, + { 0x0012, 0x002e }, + { 0x0012, 0x002f }, + { 0x0012, 0x0030 }, + { 0x0012, 0x0031 }, + { 0x0011, 0x001d }, + + }; + +const uint16_t c_aauiLCLDHuffEnc63[181][2] = + { + { 0x0004, 0x0008 }, + { 0x0003, 0x0005 }, + { 0x0002, 0x0003 }, + { 0x0004, 0x0009 }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0006, 0x0010 }, + { 0x0006, 0x0011 }, + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0006, 0x0014 }, + { 0x0006, 0x0015 }, + { 0x0006, 0x0016 }, + { 0x0006, 0x0017 }, + { 0x0007, 0x000b }, + { 0x0007, 0x000c }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0007, 0x0012 }, + { 0x0007, 0x0013 }, + { 0x0007, 0x0014 }, + { 0x0007, 0x0015 }, + { 0x0007, 0x0016 }, + { 0x0007, 0x0017 }, + { 0x0008, 0x000c }, + { 0x0008, 0x000d }, + { 0x0008, 0x000e }, + { 0x0008, 0x000f }, + { 0x0008, 0x0010 }, + { 0x0008, 0x0011 }, + { 0x0008, 0x0012 }, + { 0x0008, 0x0013 }, + { 0x0008, 0x0014 }, + { 0x0008, 0x0015 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x0009, 0x000c }, + { 0x0009, 0x000d }, + { 0x0009, 0x000e }, + { 0x0009, 0x000f }, + { 0x0009, 0x0010 }, + { 0x0009, 0x0011 }, + { 0x0009, 0x0012 }, + { 0x0009, 0x0013 }, + { 0x0009, 0x0014 }, + { 0x0009, 0x0015 }, + { 0x000a, 0x0007 }, + { 0x0009, 0x0016 }, + { 0x0009, 0x0017 }, + { 0x000a, 0x0008 }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000a, 0x000c }, + { 0x000a, 0x000d }, + { 0x000a, 0x000e }, + { 0x000b, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000b, 0x000a }, + { 0x000a, 0x000f }, + { 0x000b, 0x000b }, + { 0x000b, 0x000c }, + { 0x000b, 0x000d }, + { 0x000c, 0x0009 }, + { 0x000c, 0x000a }, + { 0x000c, 0x000b }, + { 0x000c, 0x000c }, + { 0x000c, 0x000d }, + { 0x000c, 0x000e }, + { 0x000c, 0x000f }, + { 0x000d, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x000d, 0x000a }, + { 0x000d, 0x000b }, + { 0x000d, 0x000c }, + { 0x000d, 0x000d }, + { 0x000d, 0x000e }, + { 0x000d, 0x000f }, + { 0x000d, 0x0010 }, + { 0x000d, 0x0011 }, + { 0x000e, 0x0007 }, + { 0x000e, 0x0008 }, + { 0x000e, 0x0009 }, + { 0x000e, 0x000a }, + { 0x000e, 0x000b }, + { 0x000e, 0x000c }, + { 0x000e, 0x000d }, + { 0x000e, 0x000e }, + { 0x000e, 0x000f }, + { 0x000f, 0x0008 }, + { 0x000f, 0x0009 }, + { 0x000f, 0x000a }, + { 0x000f, 0x000b }, + { 0x000f, 0x000c }, + { 0x0010, 0x0009 }, + { 0x0010, 0x000a }, + { 0x000f, 0x000d }, + { 0x0010, 0x000b }, + { 0x0010, 0x000c }, + { 0x0010, 0x000d }, + { 0x0011, 0x000e }, + { 0x0011, 0x000f }, + { 0x0010, 0x000e }, + { 0x0011, 0x0010 }, + { 0x0011, 0x0011 }, + { 0x0012, 0x0014 }, + { 0x0014, 0x0000 }, + { 0x0010, 0x000f }, + { 0x0012, 0x0015 }, + { 0x0012, 0x0016 }, + { 0x0014, 0x0001 }, + { 0x0012, 0x0017 }, + { 0x0012, 0x0018 }, + { 0x0012, 0x0019 }, + { 0x0013, 0x0010 }, + { 0x0012, 0x001a }, + { 0x0014, 0x0002 }, + { 0x0012, 0x001b }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0013, 0x0011 }, + { 0x0014, 0x0006 }, + { 0x0013, 0x0012 }, + { 0x0014, 0x0007 }, + { 0x0014, 0x0008 }, + { 0x0014, 0x0009 }, + { 0x0014, 0x000a }, + { 0x0014, 0x000b }, + { 0x0014, 0x000c }, + { 0x0014, 0x000d }, + { 0x0014, 0x000e }, + { 0x0013, 0x0013 }, + { 0x0014, 0x000f }, + { 0x0014, 0x0010 }, + { 0x0014, 0x0011 }, + { 0x0014, 0x0012 }, + { 0x0014, 0x0013 }, + { 0x0014, 0x0014 }, + { 0x0014, 0x0015 }, + { 0x0014, 0x0016 }, + { 0x0014, 0x0017 }, + { 0x0014, 0x0018 }, + { 0x0014, 0x0019 }, + { 0x0014, 0x001a }, + { 0x0014, 0x001b }, + { 0x0014, 0x001c }, + { 0x0014, 0x001d }, + { 0x0014, 0x001e }, + { 0x0014, 0x001f }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + + }; + +const uint16_t ( *c_apauiHuffEncTabels[2 * ALLOC_TABLE_SIZE] )[2] = + { + NULL, + c_aauiLCLDHuffEnc1, + c_aauiLCLDHuffEnc2, + c_aauiLCLDHuffEnc3, + c_aauiLCLDHuffEnc4, + c_aauiLCLDHuffEnc5, + c_aauiLCLDHuffEnc6, + c_aauiLCLDHuffEnc7, + c_aauiLCLDHuffEnc8, + c_aauiLCLDHuffEnc9, + c_aauiLCLDHuffEnc10, + c_aauiLCLDHuffEnc11, + c_aauiLCLDHuffEnc12, + c_aauiLCLDHuffEnc13, + c_aauiLCLDHuffEnc14, + c_aauiLCLDHuffEnc15, + c_aauiLCLDHuffEnc16, + c_aauiLCLDHuffEnc17, + c_aauiLCLDHuffEnc18, + c_aauiLCLDHuffEnc19, + c_aauiLCLDHuffEnc20, + c_aauiLCLDHuffEnc21, + c_aauiLCLDHuffEnc22, + c_aauiLCLDHuffEnc23, + c_aauiLCLDHuffEnc24, + c_aauiLCLDHuffEnc25, + c_aauiLCLDHuffEnc26, + c_aauiLCLDHuffEnc27, + c_aauiLCLDHuffEnc28, + c_aauiLCLDHuffEnc29, + c_aauiLCLDHuffEnc30, + c_aauiLCLDHuffEnc31, + NULL, + c_aauiLCLDHuffEnc33, + c_aauiLCLDHuffEnc34, + c_aauiLCLDHuffEnc35, + c_aauiLCLDHuffEnc36, + c_aauiLCLDHuffEnc37, + c_aauiLCLDHuffEnc38, + c_aauiLCLDHuffEnc39, + c_aauiLCLDHuffEnc40, + c_aauiLCLDHuffEnc41, + c_aauiLCLDHuffEnc42, + c_aauiLCLDHuffEnc43, + c_aauiLCLDHuffEnc44, + c_aauiLCLDHuffEnc45, + c_aauiLCLDHuffEnc46, + c_aauiLCLDHuffEnc47, + c_aauiLCLDHuffEnc48, + c_aauiLCLDHuffEnc49, + c_aauiLCLDHuffEnc50, + c_aauiLCLDHuffEnc51, + c_aauiLCLDHuffEnc52, + c_aauiLCLDHuffEnc53, + c_aauiLCLDHuffEnc54, + c_aauiLCLDHuffEnc55, + c_aauiLCLDHuffEnc56, + c_aauiLCLDHuffEnc57, + c_aauiLCLDHuffEnc58, + c_aauiLCLDHuffEnc59, + c_aauiLCLDHuffEnc60, + c_aauiLCLDHuffEnc61, + c_aauiLCLDHuffEnc62, + c_aauiLCLDHuffEnc63, + }; + +const uint32_t num_row_aauiLCLDHuff[2 * ALLOC_TABLE_SIZE] = { 0, 16, 16, 25, 36, 36, 49, 64, 81, 100, + 169, 196, 289, 324, 400, 576, 729, 729, 28, 29, + 32, 37, 39, 46, 55, 65, 77, 91, 109, 129, + 153, 181, 0, 16, 16, 25, 36, 36, 49, 64, 81, + 100, 169, 196, 289, 324, 400, 576, 729, 729, 28, + 29, 32, 37, 39, 46, 55, 65, 77, 91, 109, + 129, 153, 181 }; +#ifdef USE_DEMOD_TABLES +const int32_t c_aaiHuffDemod1[16][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, +}; + +const int32_t c_aaiHuffDemod2[16][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, +}; + +const int32_t c_aaiHuffDemod3[25][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, +}; + +const int32_t c_aaiHuffDemod4[36][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, +}; + +const int32_t c_aaiHuffDemod5[36][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, +}; + +const int32_t c_aaiHuffDemod6[49][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, +}; + +const int32_t c_aaiHuffDemod7[64][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, +}; + +const int32_t c_aaiHuffDemod8[81][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, +}; + +const int32_t c_aaiHuffDemod9[100][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, +}; + +const int32_t c_aaiHuffDemod10[169][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, +}; + +const int32_t c_aaiHuffDemod11[196][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 0, + 13, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 1, + 13, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 2, + 13, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 3, + 13, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 4, + 13, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 5, + 13, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 6, + 13, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 7, + 13, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 8, + 13, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 9, + 13, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 10, + 13, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 11, + 13, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, + 12, + 13, + 13, + 0, + 13, + 1, + 13, + 2, + 13, + 3, + 13, + 4, + 13, + 5, + 13, + 6, + 13, + 7, + 13, + 8, + 13, + 9, + 13, + 10, + 13, + 11, + 13, + 12, + 13, + 13, +}; + +const int32_t c_aaiHuffDemod12[289][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 0, + 13, + 0, + 14, + 0, + 15, + 0, + 16, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 1, + 13, + 1, + 14, + 1, + 15, + 1, + 16, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 2, + 13, + 2, + 14, + 2, + 15, + 2, + 16, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 3, + 13, + 3, + 14, + 3, + 15, + 3, + 16, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 4, + 13, + 4, + 14, + 4, + 15, + 4, + 16, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 5, + 13, + 5, + 14, + 5, + 15, + 5, + 16, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 6, + 13, + 6, + 14, + 6, + 15, + 6, + 16, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 7, + 13, + 7, + 14, + 7, + 15, + 7, + 16, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 8, + 13, + 8, + 14, + 8, + 15, + 8, + 16, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 9, + 13, + 9, + 14, + 9, + 15, + 9, + 16, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 10, + 13, + 10, + 14, + 10, + 15, + 10, + 16, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 11, + 13, + 11, + 14, + 11, + 15, + 11, + 16, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, + 12, + 13, + 12, + 14, + 12, + 15, + 12, + 16, + 13, + 0, + 13, + 1, + 13, + 2, + 13, + 3, + 13, + 4, + 13, + 5, + 13, + 6, + 13, + 7, + 13, + 8, + 13, + 9, + 13, + 10, + 13, + 11, + 13, + 12, + 13, + 13, + 13, + 14, + 13, + 15, + 13, + 16, + 14, + 0, + 14, + 1, + 14, + 2, + 14, + 3, + 14, + 4, + 14, + 5, + 14, + 6, + 14, + 7, + 14, + 8, + 14, + 9, + 14, + 10, + 14, + 11, + 14, + 12, + 14, + 13, + 14, + 14, + 14, + 15, + 14, + 16, + 15, + 0, + 15, + 1, + 15, + 2, + 15, + 3, + 15, + 4, + 15, + 5, + 15, + 6, + 15, + 7, + 15, + 8, + 15, + 9, + 15, + 10, + 15, + 11, + 15, + 12, + 15, + 13, + 15, + 14, + 15, + 15, + 15, + 16, + 16, + 0, + 16, + 1, + 16, + 2, + 16, + 3, + 16, + 4, + 16, + 5, + 16, + 6, + 16, + 7, + 16, + 8, + 16, + 9, + 16, + 10, + 16, + 11, + 16, + 12, + 16, + 13, + 16, + 14, + 16, + 15, + 16, + 16, +}; + +const int32_t c_aaiHuffDemod13[324][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 0, + 13, + 0, + 14, + 0, + 15, + 0, + 16, + 0, + 17, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 1, + 13, + 1, + 14, + 1, + 15, + 1, + 16, + 1, + 17, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 2, + 13, + 2, + 14, + 2, + 15, + 2, + 16, + 2, + 17, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 3, + 13, + 3, + 14, + 3, + 15, + 3, + 16, + 3, + 17, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 4, + 13, + 4, + 14, + 4, + 15, + 4, + 16, + 4, + 17, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 5, + 13, + 5, + 14, + 5, + 15, + 5, + 16, + 5, + 17, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 6, + 13, + 6, + 14, + 6, + 15, + 6, + 16, + 6, + 17, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 7, + 13, + 7, + 14, + 7, + 15, + 7, + 16, + 7, + 17, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 8, + 13, + 8, + 14, + 8, + 15, + 8, + 16, + 8, + 17, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 9, + 13, + 9, + 14, + 9, + 15, + 9, + 16, + 9, + 17, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 10, + 13, + 10, + 14, + 10, + 15, + 10, + 16, + 10, + 17, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 11, + 13, + 11, + 14, + 11, + 15, + 11, + 16, + 11, + 17, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, + 12, + 13, + 12, + 14, + 12, + 15, + 12, + 16, + 12, + 17, + 13, + 0, + 13, + 1, + 13, + 2, + 13, + 3, + 13, + 4, + 13, + 5, + 13, + 6, + 13, + 7, + 13, + 8, + 13, + 9, + 13, + 10, + 13, + 11, + 13, + 12, + 13, + 13, + 13, + 14, + 13, + 15, + 13, + 16, + 13, + 17, + 14, + 0, + 14, + 1, + 14, + 2, + 14, + 3, + 14, + 4, + 14, + 5, + 14, + 6, + 14, + 7, + 14, + 8, + 14, + 9, + 14, + 10, + 14, + 11, + 14, + 12, + 14, + 13, + 14, + 14, + 14, + 15, + 14, + 16, + 14, + 17, + 15, + 0, + 15, + 1, + 15, + 2, + 15, + 3, + 15, + 4, + 15, + 5, + 15, + 6, + 15, + 7, + 15, + 8, + 15, + 9, + 15, + 10, + 15, + 11, + 15, + 12, + 15, + 13, + 15, + 14, + 15, + 15, + 15, + 16, + 15, + 17, + 16, + 0, + 16, + 1, + 16, + 2, + 16, + 3, + 16, + 4, + 16, + 5, + 16, + 6, + 16, + 7, + 16, + 8, + 16, + 9, + 16, + 10, + 16, + 11, + 16, + 12, + 16, + 13, + 16, + 14, + 16, + 15, + 16, + 16, + 16, + 17, + 17, + 0, + 17, + 1, + 17, + 2, + 17, + 3, + 17, + 4, + 17, + 5, + 17, + 6, + 17, + 7, + 17, + 8, + 17, + 9, + 17, + 10, + 17, + 11, + 17, + 12, + 17, + 13, + 17, + 14, + 17, + 15, + 17, + 16, + 17, + 17, +}; + +const int32_t c_aaiHuffDemod14[400][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 0, + 13, + 0, + 14, + 0, + 15, + 0, + 16, + 0, + 17, + 0, + 18, + 0, + 19, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 1, + 13, + 1, + 14, + 1, + 15, + 1, + 16, + 1, + 17, + 1, + 18, + 1, + 19, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 2, + 13, + 2, + 14, + 2, + 15, + 2, + 16, + 2, + 17, + 2, + 18, + 2, + 19, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 3, + 13, + 3, + 14, + 3, + 15, + 3, + 16, + 3, + 17, + 3, + 18, + 3, + 19, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 4, + 13, + 4, + 14, + 4, + 15, + 4, + 16, + 4, + 17, + 4, + 18, + 4, + 19, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 5, + 13, + 5, + 14, + 5, + 15, + 5, + 16, + 5, + 17, + 5, + 18, + 5, + 19, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 6, + 13, + 6, + 14, + 6, + 15, + 6, + 16, + 6, + 17, + 6, + 18, + 6, + 19, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 7, + 13, + 7, + 14, + 7, + 15, + 7, + 16, + 7, + 17, + 7, + 18, + 7, + 19, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 8, + 13, + 8, + 14, + 8, + 15, + 8, + 16, + 8, + 17, + 8, + 18, + 8, + 19, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 9, + 13, + 9, + 14, + 9, + 15, + 9, + 16, + 9, + 17, + 9, + 18, + 9, + 19, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 10, + 13, + 10, + 14, + 10, + 15, + 10, + 16, + 10, + 17, + 10, + 18, + 10, + 19, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 11, + 13, + 11, + 14, + 11, + 15, + 11, + 16, + 11, + 17, + 11, + 18, + 11, + 19, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, + 12, + 13, + 12, + 14, + 12, + 15, + 12, + 16, + 12, + 17, + 12, + 18, + 12, + 19, + 13, + 0, + 13, + 1, + 13, + 2, + 13, + 3, + 13, + 4, + 13, + 5, + 13, + 6, + 13, + 7, + 13, + 8, + 13, + 9, + 13, + 10, + 13, + 11, + 13, + 12, + 13, + 13, + 13, + 14, + 13, + 15, + 13, + 16, + 13, + 17, + 13, + 18, + 13, + 19, + 14, + 0, + 14, + 1, + 14, + 2, + 14, + 3, + 14, + 4, + 14, + 5, + 14, + 6, + 14, + 7, + 14, + 8, + 14, + 9, + 14, + 10, + 14, + 11, + 14, + 12, + 14, + 13, + 14, + 14, + 14, + 15, + 14, + 16, + 14, + 17, + 14, + 18, + 14, + 19, + 15, + 0, + 15, + 1, + 15, + 2, + 15, + 3, + 15, + 4, + 15, + 5, + 15, + 6, + 15, + 7, + 15, + 8, + 15, + 9, + 15, + 10, + 15, + 11, + 15, + 12, + 15, + 13, + 15, + 14, + 15, + 15, + 15, + 16, + 15, + 17, + 15, + 18, + 15, + 19, + 16, + 0, + 16, + 1, + 16, + 2, + 16, + 3, + 16, + 4, + 16, + 5, + 16, + 6, + 16, + 7, + 16, + 8, + 16, + 9, + 16, + 10, + 16, + 11, + 16, + 12, + 16, + 13, + 16, + 14, + 16, + 15, + 16, + 16, + 16, + 17, + 16, + 18, + 16, + 19, + 17, + 0, + 17, + 1, + 17, + 2, + 17, + 3, + 17, + 4, + 17, + 5, + 17, + 6, + 17, + 7, + 17, + 8, + 17, + 9, + 17, + 10, + 17, + 11, + 17, + 12, + 17, + 13, + 17, + 14, + 17, + 15, + 17, + 16, + 17, + 17, + 17, + 18, + 17, + 19, + 18, + 0, + 18, + 1, + 18, + 2, + 18, + 3, + 18, + 4, + 18, + 5, + 18, + 6, + 18, + 7, + 18, + 8, + 18, + 9, + 18, + 10, + 18, + 11, + 18, + 12, + 18, + 13, + 18, + 14, + 18, + 15, + 18, + 16, + 18, + 17, + 18, + 18, + 18, + 19, + 19, + 0, + 19, + 1, + 19, + 2, + 19, + 3, + 19, + 4, + 19, + 5, + 19, + 6, + 19, + 7, + 19, + 8, + 19, + 9, + 19, + 10, + 19, + 11, + 19, + 12, + 19, + 13, + 19, + 14, + 19, + 15, + 19, + 16, + 19, + 17, + 19, + 18, + 19, + 19, +}; + +const int32_t c_aaiHuffDemod15[576][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 0, + 13, + 0, + 14, + 0, + 15, + 0, + 16, + 0, + 17, + 0, + 18, + 0, + 19, + 0, + 20, + 0, + 21, + 0, + 22, + 0, + 23, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 1, + 13, + 1, + 14, + 1, + 15, + 1, + 16, + 1, + 17, + 1, + 18, + 1, + 19, + 1, + 20, + 1, + 21, + 1, + 22, + 1, + 23, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 2, + 13, + 2, + 14, + 2, + 15, + 2, + 16, + 2, + 17, + 2, + 18, + 2, + 19, + 2, + 20, + 2, + 21, + 2, + 22, + 2, + 23, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 3, + 13, + 3, + 14, + 3, + 15, + 3, + 16, + 3, + 17, + 3, + 18, + 3, + 19, + 3, + 20, + 3, + 21, + 3, + 22, + 3, + 23, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 4, + 13, + 4, + 14, + 4, + 15, + 4, + 16, + 4, + 17, + 4, + 18, + 4, + 19, + 4, + 20, + 4, + 21, + 4, + 22, + 4, + 23, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 5, + 13, + 5, + 14, + 5, + 15, + 5, + 16, + 5, + 17, + 5, + 18, + 5, + 19, + 5, + 20, + 5, + 21, + 5, + 22, + 5, + 23, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 6, + 13, + 6, + 14, + 6, + 15, + 6, + 16, + 6, + 17, + 6, + 18, + 6, + 19, + 6, + 20, + 6, + 21, + 6, + 22, + 6, + 23, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 7, + 13, + 7, + 14, + 7, + 15, + 7, + 16, + 7, + 17, + 7, + 18, + 7, + 19, + 7, + 20, + 7, + 21, + 7, + 22, + 7, + 23, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 8, + 13, + 8, + 14, + 8, + 15, + 8, + 16, + 8, + 17, + 8, + 18, + 8, + 19, + 8, + 20, + 8, + 21, + 8, + 22, + 8, + 23, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 9, + 13, + 9, + 14, + 9, + 15, + 9, + 16, + 9, + 17, + 9, + 18, + 9, + 19, + 9, + 20, + 9, + 21, + 9, + 22, + 9, + 23, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 10, + 13, + 10, + 14, + 10, + 15, + 10, + 16, + 10, + 17, + 10, + 18, + 10, + 19, + 10, + 20, + 10, + 21, + 10, + 22, + 10, + 23, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 11, + 13, + 11, + 14, + 11, + 15, + 11, + 16, + 11, + 17, + 11, + 18, + 11, + 19, + 11, + 20, + 11, + 21, + 11, + 22, + 11, + 23, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, + 12, + 13, + 12, + 14, + 12, + 15, + 12, + 16, + 12, + 17, + 12, + 18, + 12, + 19, + 12, + 20, + 12, + 21, + 12, + 22, + 12, + 23, + 13, + 0, + 13, + 1, + 13, + 2, + 13, + 3, + 13, + 4, + 13, + 5, + 13, + 6, + 13, + 7, + 13, + 8, + 13, + 9, + 13, + 10, + 13, + 11, + 13, + 12, + 13, + 13, + 13, + 14, + 13, + 15, + 13, + 16, + 13, + 17, + 13, + 18, + 13, + 19, + 13, + 20, + 13, + 21, + 13, + 22, + 13, + 23, + 14, + 0, + 14, + 1, + 14, + 2, + 14, + 3, + 14, + 4, + 14, + 5, + 14, + 6, + 14, + 7, + 14, + 8, + 14, + 9, + 14, + 10, + 14, + 11, + 14, + 12, + 14, + 13, + 14, + 14, + 14, + 15, + 14, + 16, + 14, + 17, + 14, + 18, + 14, + 19, + 14, + 20, + 14, + 21, + 14, + 22, + 14, + 23, + 15, + 0, + 15, + 1, + 15, + 2, + 15, + 3, + 15, + 4, + 15, + 5, + 15, + 6, + 15, + 7, + 15, + 8, + 15, + 9, + 15, + 10, + 15, + 11, + 15, + 12, + 15, + 13, + 15, + 14, + 15, + 15, + 15, + 16, + 15, + 17, + 15, + 18, + 15, + 19, + 15, + 20, + 15, + 21, + 15, + 22, + 15, + 23, + 16, + 0, + 16, + 1, + 16, + 2, + 16, + 3, + 16, + 4, + 16, + 5, + 16, + 6, + 16, + 7, + 16, + 8, + 16, + 9, + 16, + 10, + 16, + 11, + 16, + 12, + 16, + 13, + 16, + 14, + 16, + 15, + 16, + 16, + 16, + 17, + 16, + 18, + 16, + 19, + 16, + 20, + 16, + 21, + 16, + 22, + 16, + 23, + 17, + 0, + 17, + 1, + 17, + 2, + 17, + 3, + 17, + 4, + 17, + 5, + 17, + 6, + 17, + 7, + 17, + 8, + 17, + 9, + 17, + 10, + 17, + 11, + 17, + 12, + 17, + 13, + 17, + 14, + 17, + 15, + 17, + 16, + 17, + 17, + 17, + 18, + 17, + 19, + 17, + 20, + 17, + 21, + 17, + 22, + 17, + 23, + 18, + 0, + 18, + 1, + 18, + 2, + 18, + 3, + 18, + 4, + 18, + 5, + 18, + 6, + 18, + 7, + 18, + 8, + 18, + 9, + 18, + 10, + 18, + 11, + 18, + 12, + 18, + 13, + 18, + 14, + 18, + 15, + 18, + 16, + 18, + 17, + 18, + 18, + 18, + 19, + 18, + 20, + 18, + 21, + 18, + 22, + 18, + 23, + 19, + 0, + 19, + 1, + 19, + 2, + 19, + 3, + 19, + 4, + 19, + 5, + 19, + 6, + 19, + 7, + 19, + 8, + 19, + 9, + 19, + 10, + 19, + 11, + 19, + 12, + 19, + 13, + 19, + 14, + 19, + 15, + 19, + 16, + 19, + 17, + 19, + 18, + 19, + 19, + 19, + 20, + 19, + 21, + 19, + 22, + 19, + 23, + 20, + 0, + 20, + 1, + 20, + 2, + 20, + 3, + 20, + 4, + 20, + 5, + 20, + 6, + 20, + 7, + 20, + 8, + 20, + 9, + 20, + 10, + 20, + 11, + 20, + 12, + 20, + 13, + 20, + 14, + 20, + 15, + 20, + 16, + 20, + 17, + 20, + 18, + 20, + 19, + 20, + 20, + 20, + 21, + 20, + 22, + 20, + 23, + 21, + 0, + 21, + 1, + 21, + 2, + 21, + 3, + 21, + 4, + 21, + 5, + 21, + 6, + 21, + 7, + 21, + 8, + 21, + 9, + 21, + 10, + 21, + 11, + 21, + 12, + 21, + 13, + 21, + 14, + 21, + 15, + 21, + 16, + 21, + 17, + 21, + 18, + 21, + 19, + 21, + 20, + 21, + 21, + 21, + 22, + 21, + 23, + 22, + 0, + 22, + 1, + 22, + 2, + 22, + 3, + 22, + 4, + 22, + 5, + 22, + 6, + 22, + 7, + 22, + 8, + 22, + 9, + 22, + 10, + 22, + 11, + 22, + 12, + 22, + 13, + 22, + 14, + 22, + 15, + 22, + 16, + 22, + 17, + 22, + 18, + 22, + 19, + 22, + 20, + 22, + 21, + 22, + 22, + 22, + 23, + 23, + 0, + 23, + 1, + 23, + 2, + 23, + 3, + 23, + 4, + 23, + 5, + 23, + 6, + 23, + 7, + 23, + 8, + 23, + 9, + 23, + 10, + 23, + 11, + 23, + 12, + 23, + 13, + 23, + 14, + 23, + 15, + 23, + 16, + 23, + 17, + 23, + 18, + 23, + 19, + 23, + 20, + 23, + 21, + 23, + 22, + 23, + 23, +}; + +const int32_t c_aaiHuffDemod16[729][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 0, + 13, + 0, + 14, + 0, + 15, + 0, + 16, + 0, + 17, + 0, + 18, + 0, + 19, + 0, + 20, + 0, + 21, + 0, + 22, + 0, + 23, + 0, + 24, + 0, + 25, + 0, + 26, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 1, + 13, + 1, + 14, + 1, + 15, + 1, + 16, + 1, + 17, + 1, + 18, + 1, + 19, + 1, + 20, + 1, + 21, + 1, + 22, + 1, + 23, + 1, + 24, + 1, + 25, + 1, + 26, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 2, + 13, + 2, + 14, + 2, + 15, + 2, + 16, + 2, + 17, + 2, + 18, + 2, + 19, + 2, + 20, + 2, + 21, + 2, + 22, + 2, + 23, + 2, + 24, + 2, + 25, + 2, + 26, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 3, + 13, + 3, + 14, + 3, + 15, + 3, + 16, + 3, + 17, + 3, + 18, + 3, + 19, + 3, + 20, + 3, + 21, + 3, + 22, + 3, + 23, + 3, + 24, + 3, + 25, + 3, + 26, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 4, + 13, + 4, + 14, + 4, + 15, + 4, + 16, + 4, + 17, + 4, + 18, + 4, + 19, + 4, + 20, + 4, + 21, + 4, + 22, + 4, + 23, + 4, + 24, + 4, + 25, + 4, + 26, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 5, + 13, + 5, + 14, + 5, + 15, + 5, + 16, + 5, + 17, + 5, + 18, + 5, + 19, + 5, + 20, + 5, + 21, + 5, + 22, + 5, + 23, + 5, + 24, + 5, + 25, + 5, + 26, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 6, + 13, + 6, + 14, + 6, + 15, + 6, + 16, + 6, + 17, + 6, + 18, + 6, + 19, + 6, + 20, + 6, + 21, + 6, + 22, + 6, + 23, + 6, + 24, + 6, + 25, + 6, + 26, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 7, + 13, + 7, + 14, + 7, + 15, + 7, + 16, + 7, + 17, + 7, + 18, + 7, + 19, + 7, + 20, + 7, + 21, + 7, + 22, + 7, + 23, + 7, + 24, + 7, + 25, + 7, + 26, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 8, + 13, + 8, + 14, + 8, + 15, + 8, + 16, + 8, + 17, + 8, + 18, + 8, + 19, + 8, + 20, + 8, + 21, + 8, + 22, + 8, + 23, + 8, + 24, + 8, + 25, + 8, + 26, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 9, + 13, + 9, + 14, + 9, + 15, + 9, + 16, + 9, + 17, + 9, + 18, + 9, + 19, + 9, + 20, + 9, + 21, + 9, + 22, + 9, + 23, + 9, + 24, + 9, + 25, + 9, + 26, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 10, + 13, + 10, + 14, + 10, + 15, + 10, + 16, + 10, + 17, + 10, + 18, + 10, + 19, + 10, + 20, + 10, + 21, + 10, + 22, + 10, + 23, + 10, + 24, + 10, + 25, + 10, + 26, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 11, + 13, + 11, + 14, + 11, + 15, + 11, + 16, + 11, + 17, + 11, + 18, + 11, + 19, + 11, + 20, + 11, + 21, + 11, + 22, + 11, + 23, + 11, + 24, + 11, + 25, + 11, + 26, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, + 12, + 13, + 12, + 14, + 12, + 15, + 12, + 16, + 12, + 17, + 12, + 18, + 12, + 19, + 12, + 20, + 12, + 21, + 12, + 22, + 12, + 23, + 12, + 24, + 12, + 25, + 12, + 26, + 13, + 0, + 13, + 1, + 13, + 2, + 13, + 3, + 13, + 4, + 13, + 5, + 13, + 6, + 13, + 7, + 13, + 8, + 13, + 9, + 13, + 10, + 13, + 11, + 13, + 12, + 13, + 13, + 13, + 14, + 13, + 15, + 13, + 16, + 13, + 17, + 13, + 18, + 13, + 19, + 13, + 20, + 13, + 21, + 13, + 22, + 13, + 23, + 13, + 24, + 13, + 25, + 13, + 26, + 14, + 0, + 14, + 1, + 14, + 2, + 14, + 3, + 14, + 4, + 14, + 5, + 14, + 6, + 14, + 7, + 14, + 8, + 14, + 9, + 14, + 10, + 14, + 11, + 14, + 12, + 14, + 13, + 14, + 14, + 14, + 15, + 14, + 16, + 14, + 17, + 14, + 18, + 14, + 19, + 14, + 20, + 14, + 21, + 14, + 22, + 14, + 23, + 14, + 24, + 14, + 25, + 14, + 26, + 15, + 0, + 15, + 1, + 15, + 2, + 15, + 3, + 15, + 4, + 15, + 5, + 15, + 6, + 15, + 7, + 15, + 8, + 15, + 9, + 15, + 10, + 15, + 11, + 15, + 12, + 15, + 13, + 15, + 14, + 15, + 15, + 15, + 16, + 15, + 17, + 15, + 18, + 15, + 19, + 15, + 20, + 15, + 21, + 15, + 22, + 15, + 23, + 15, + 24, + 15, + 25, + 15, + 26, + 16, + 0, + 16, + 1, + 16, + 2, + 16, + 3, + 16, + 4, + 16, + 5, + 16, + 6, + 16, + 7, + 16, + 8, + 16, + 9, + 16, + 10, + 16, + 11, + 16, + 12, + 16, + 13, + 16, + 14, + 16, + 15, + 16, + 16, + 16, + 17, + 16, + 18, + 16, + 19, + 16, + 20, + 16, + 21, + 16, + 22, + 16, + 23, + 16, + 24, + 16, + 25, + 16, + 26, + 17, + 0, + 17, + 1, + 17, + 2, + 17, + 3, + 17, + 4, + 17, + 5, + 17, + 6, + 17, + 7, + 17, + 8, + 17, + 9, + 17, + 10, + 17, + 11, + 17, + 12, + 17, + 13, + 17, + 14, + 17, + 15, + 17, + 16, + 17, + 17, + 17, + 18, + 17, + 19, + 17, + 20, + 17, + 21, + 17, + 22, + 17, + 23, + 17, + 24, + 17, + 25, + 17, + 26, + 18, + 0, + 18, + 1, + 18, + 2, + 18, + 3, + 18, + 4, + 18, + 5, + 18, + 6, + 18, + 7, + 18, + 8, + 18, + 9, + 18, + 10, + 18, + 11, + 18, + 12, + 18, + 13, + 18, + 14, + 18, + 15, + 18, + 16, + 18, + 17, + 18, + 18, + 18, + 19, + 18, + 20, + 18, + 21, + 18, + 22, + 18, + 23, + 18, + 24, + 18, + 25, + 18, + 26, + 19, + 0, + 19, + 1, + 19, + 2, + 19, + 3, + 19, + 4, + 19, + 5, + 19, + 6, + 19, + 7, + 19, + 8, + 19, + 9, + 19, + 10, + 19, + 11, + 19, + 12, + 19, + 13, + 19, + 14, + 19, + 15, + 19, + 16, + 19, + 17, + 19, + 18, + 19, + 19, + 19, + 20, + 19, + 21, + 19, + 22, + 19, + 23, + 19, + 24, + 19, + 25, + 19, + 26, + 20, + 0, + 20, + 1, + 20, + 2, + 20, + 3, + 20, + 4, + 20, + 5, + 20, + 6, + 20, + 7, + 20, + 8, + 20, + 9, + 20, + 10, + 20, + 11, + 20, + 12, + 20, + 13, + 20, + 14, + 20, + 15, + 20, + 16, + 20, + 17, + 20, + 18, + 20, + 19, + 20, + 20, + 20, + 21, + 20, + 22, + 20, + 23, + 20, + 24, + 20, + 25, + 20, + 26, + 21, + 0, + 21, + 1, + 21, + 2, + 21, + 3, + 21, + 4, + 21, + 5, + 21, + 6, + 21, + 7, + 21, + 8, + 21, + 9, + 21, + 10, + 21, + 11, + 21, + 12, + 21, + 13, + 21, + 14, + 21, + 15, + 21, + 16, + 21, + 17, + 21, + 18, + 21, + 19, + 21, + 20, + 21, + 21, + 21, + 22, + 21, + 23, + 21, + 24, + 21, + 25, + 21, + 26, + 22, + 0, + 22, + 1, + 22, + 2, + 22, + 3, + 22, + 4, + 22, + 5, + 22, + 6, + 22, + 7, + 22, + 8, + 22, + 9, + 22, + 10, + 22, + 11, + 22, + 12, + 22, + 13, + 22, + 14, + 22, + 15, + 22, + 16, + 22, + 17, + 22, + 18, + 22, + 19, + 22, + 20, + 22, + 21, + 22, + 22, + 22, + 23, + 22, + 24, + 22, + 25, + 22, + 26, + 23, + 0, + 23, + 1, + 23, + 2, + 23, + 3, + 23, + 4, + 23, + 5, + 23, + 6, + 23, + 7, + 23, + 8, + 23, + 9, + 23, + 10, + 23, + 11, + 23, + 12, + 23, + 13, + 23, + 14, + 23, + 15, + 23, + 16, + 23, + 17, + 23, + 18, + 23, + 19, + 23, + 20, + 23, + 21, + 23, + 22, + 23, + 23, + 23, + 24, + 23, + 25, + 23, + 26, + 24, + 0, + 24, + 1, + 24, + 2, + 24, + 3, + 24, + 4, + 24, + 5, + 24, + 6, + 24, + 7, + 24, + 8, + 24, + 9, + 24, + 10, + 24, + 11, + 24, + 12, + 24, + 13, + 24, + 14, + 24, + 15, + 24, + 16, + 24, + 17, + 24, + 18, + 24, + 19, + 24, + 20, + 24, + 21, + 24, + 22, + 24, + 23, + 24, + 24, + 24, + 25, + 24, + 26, + 25, + 0, + 25, + 1, + 25, + 2, + 25, + 3, + 25, + 4, + 25, + 5, + 25, + 6, + 25, + 7, + 25, + 8, + 25, + 9, + 25, + 10, + 25, + 11, + 25, + 12, + 25, + 13, + 25, + 14, + 25, + 15, + 25, + 16, + 25, + 17, + 25, + 18, + 25, + 19, + 25, + 20, + 25, + 21, + 25, + 22, + 25, + 23, + 25, + 24, + 25, + 25, + 25, + 26, + 26, + 0, + 26, + 1, + 26, + 2, + 26, + 3, + 26, + 4, + 26, + 5, + 26, + 6, + 26, + 7, + 26, + 8, + 26, + 9, + 26, + 10, + 26, + 11, + 26, + 12, + 26, + 13, + 26, + 14, + 26, + 15, + 26, + 16, + 26, + 17, + 26, + 18, + 26, + 19, + 26, + 20, + 26, + 21, + 26, + 22, + 26, + 23, + 26, + 24, + 26, + 25, + 26, + 26, +}; + +const int32_t c_aaiHuffDemod17[729][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 0, + 13, + 0, + 14, + 0, + 15, + 0, + 16, + 0, + 17, + 0, + 18, + 0, + 19, + 0, + 20, + 0, + 21, + 0, + 22, + 0, + 23, + 0, + 24, + 0, + 25, + 0, + 26, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 1, + 13, + 1, + 14, + 1, + 15, + 1, + 16, + 1, + 17, + 1, + 18, + 1, + 19, + 1, + 20, + 1, + 21, + 1, + 22, + 1, + 23, + 1, + 24, + 1, + 25, + 1, + 26, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 2, + 13, + 2, + 14, + 2, + 15, + 2, + 16, + 2, + 17, + 2, + 18, + 2, + 19, + 2, + 20, + 2, + 21, + 2, + 22, + 2, + 23, + 2, + 24, + 2, + 25, + 2, + 26, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 3, + 13, + 3, + 14, + 3, + 15, + 3, + 16, + 3, + 17, + 3, + 18, + 3, + 19, + 3, + 20, + 3, + 21, + 3, + 22, + 3, + 23, + 3, + 24, + 3, + 25, + 3, + 26, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 4, + 13, + 4, + 14, + 4, + 15, + 4, + 16, + 4, + 17, + 4, + 18, + 4, + 19, + 4, + 20, + 4, + 21, + 4, + 22, + 4, + 23, + 4, + 24, + 4, + 25, + 4, + 26, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 5, + 13, + 5, + 14, + 5, + 15, + 5, + 16, + 5, + 17, + 5, + 18, + 5, + 19, + 5, + 20, + 5, + 21, + 5, + 22, + 5, + 23, + 5, + 24, + 5, + 25, + 5, + 26, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 6, + 13, + 6, + 14, + 6, + 15, + 6, + 16, + 6, + 17, + 6, + 18, + 6, + 19, + 6, + 20, + 6, + 21, + 6, + 22, + 6, + 23, + 6, + 24, + 6, + 25, + 6, + 26, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 7, + 13, + 7, + 14, + 7, + 15, + 7, + 16, + 7, + 17, + 7, + 18, + 7, + 19, + 7, + 20, + 7, + 21, + 7, + 22, + 7, + 23, + 7, + 24, + 7, + 25, + 7, + 26, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 8, + 13, + 8, + 14, + 8, + 15, + 8, + 16, + 8, + 17, + 8, + 18, + 8, + 19, + 8, + 20, + 8, + 21, + 8, + 22, + 8, + 23, + 8, + 24, + 8, + 25, + 8, + 26, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 9, + 13, + 9, + 14, + 9, + 15, + 9, + 16, + 9, + 17, + 9, + 18, + 9, + 19, + 9, + 20, + 9, + 21, + 9, + 22, + 9, + 23, + 9, + 24, + 9, + 25, + 9, + 26, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 10, + 13, + 10, + 14, + 10, + 15, + 10, + 16, + 10, + 17, + 10, + 18, + 10, + 19, + 10, + 20, + 10, + 21, + 10, + 22, + 10, + 23, + 10, + 24, + 10, + 25, + 10, + 26, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 11, + 13, + 11, + 14, + 11, + 15, + 11, + 16, + 11, + 17, + 11, + 18, + 11, + 19, + 11, + 20, + 11, + 21, + 11, + 22, + 11, + 23, + 11, + 24, + 11, + 25, + 11, + 26, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, + 12, + 13, + 12, + 14, + 12, + 15, + 12, + 16, + 12, + 17, + 12, + 18, + 12, + 19, + 12, + 20, + 12, + 21, + 12, + 22, + 12, + 23, + 12, + 24, + 12, + 25, + 12, + 26, + 13, + 0, + 13, + 1, + 13, + 2, + 13, + 3, + 13, + 4, + 13, + 5, + 13, + 6, + 13, + 7, + 13, + 8, + 13, + 9, + 13, + 10, + 13, + 11, + 13, + 12, + 13, + 13, + 13, + 14, + 13, + 15, + 13, + 16, + 13, + 17, + 13, + 18, + 13, + 19, + 13, + 20, + 13, + 21, + 13, + 22, + 13, + 23, + 13, + 24, + 13, + 25, + 13, + 26, + 14, + 0, + 14, + 1, + 14, + 2, + 14, + 3, + 14, + 4, + 14, + 5, + 14, + 6, + 14, + 7, + 14, + 8, + 14, + 9, + 14, + 10, + 14, + 11, + 14, + 12, + 14, + 13, + 14, + 14, + 14, + 15, + 14, + 16, + 14, + 17, + 14, + 18, + 14, + 19, + 14, + 20, + 14, + 21, + 14, + 22, + 14, + 23, + 14, + 24, + 14, + 25, + 14, + 26, + 15, + 0, + 15, + 1, + 15, + 2, + 15, + 3, + 15, + 4, + 15, + 5, + 15, + 6, + 15, + 7, + 15, + 8, + 15, + 9, + 15, + 10, + 15, + 11, + 15, + 12, + 15, + 13, + 15, + 14, + 15, + 15, + 15, + 16, + 15, + 17, + 15, + 18, + 15, + 19, + 15, + 20, + 15, + 21, + 15, + 22, + 15, + 23, + 15, + 24, + 15, + 25, + 15, + 26, + 16, + 0, + 16, + 1, + 16, + 2, + 16, + 3, + 16, + 4, + 16, + 5, + 16, + 6, + 16, + 7, + 16, + 8, + 16, + 9, + 16, + 10, + 16, + 11, + 16, + 12, + 16, + 13, + 16, + 14, + 16, + 15, + 16, + 16, + 16, + 17, + 16, + 18, + 16, + 19, + 16, + 20, + 16, + 21, + 16, + 22, + 16, + 23, + 16, + 24, + 16, + 25, + 16, + 26, + 17, + 0, + 17, + 1, + 17, + 2, + 17, + 3, + 17, + 4, + 17, + 5, + 17, + 6, + 17, + 7, + 17, + 8, + 17, + 9, + 17, + 10, + 17, + 11, + 17, + 12, + 17, + 13, + 17, + 14, + 17, + 15, + 17, + 16, + 17, + 17, + 17, + 18, + 17, + 19, + 17, + 20, + 17, + 21, + 17, + 22, + 17, + 23, + 17, + 24, + 17, + 25, + 17, + 26, + 18, + 0, + 18, + 1, + 18, + 2, + 18, + 3, + 18, + 4, + 18, + 5, + 18, + 6, + 18, + 7, + 18, + 8, + 18, + 9, + 18, + 10, + 18, + 11, + 18, + 12, + 18, + 13, + 18, + 14, + 18, + 15, + 18, + 16, + 18, + 17, + 18, + 18, + 18, + 19, + 18, + 20, + 18, + 21, + 18, + 22, + 18, + 23, + 18, + 24, + 18, + 25, + 18, + 26, + 19, + 0, + 19, + 1, + 19, + 2, + 19, + 3, + 19, + 4, + 19, + 5, + 19, + 6, + 19, + 7, + 19, + 8, + 19, + 9, + 19, + 10, + 19, + 11, + 19, + 12, + 19, + 13, + 19, + 14, + 19, + 15, + 19, + 16, + 19, + 17, + 19, + 18, + 19, + 19, + 19, + 20, + 19, + 21, + 19, + 22, + 19, + 23, + 19, + 24, + 19, + 25, + 19, + 26, + 20, + 0, + 20, + 1, + 20, + 2, + 20, + 3, + 20, + 4, + 20, + 5, + 20, + 6, + 20, + 7, + 20, + 8, + 20, + 9, + 20, + 10, + 20, + 11, + 20, + 12, + 20, + 13, + 20, + 14, + 20, + 15, + 20, + 16, + 20, + 17, + 20, + 18, + 20, + 19, + 20, + 20, + 20, + 21, + 20, + 22, + 20, + 23, + 20, + 24, + 20, + 25, + 20, + 26, + 21, + 0, + 21, + 1, + 21, + 2, + 21, + 3, + 21, + 4, + 21, + 5, + 21, + 6, + 21, + 7, + 21, + 8, + 21, + 9, + 21, + 10, + 21, + 11, + 21, + 12, + 21, + 13, + 21, + 14, + 21, + 15, + 21, + 16, + 21, + 17, + 21, + 18, + 21, + 19, + 21, + 20, + 21, + 21, + 21, + 22, + 21, + 23, + 21, + 24, + 21, + 25, + 21, + 26, + 22, + 0, + 22, + 1, + 22, + 2, + 22, + 3, + 22, + 4, + 22, + 5, + 22, + 6, + 22, + 7, + 22, + 8, + 22, + 9, + 22, + 10, + 22, + 11, + 22, + 12, + 22, + 13, + 22, + 14, + 22, + 15, + 22, + 16, + 22, + 17, + 22, + 18, + 22, + 19, + 22, + 20, + 22, + 21, + 22, + 22, + 22, + 23, + 22, + 24, + 22, + 25, + 22, + 26, + 23, + 0, + 23, + 1, + 23, + 2, + 23, + 3, + 23, + 4, + 23, + 5, + 23, + 6, + 23, + 7, + 23, + 8, + 23, + 9, + 23, + 10, + 23, + 11, + 23, + 12, + 23, + 13, + 23, + 14, + 23, + 15, + 23, + 16, + 23, + 17, + 23, + 18, + 23, + 19, + 23, + 20, + 23, + 21, + 23, + 22, + 23, + 23, + 23, + 24, + 23, + 25, + 23, + 26, + 24, + 0, + 24, + 1, + 24, + 2, + 24, + 3, + 24, + 4, + 24, + 5, + 24, + 6, + 24, + 7, + 24, + 8, + 24, + 9, + 24, + 10, + 24, + 11, + 24, + 12, + 24, + 13, + 24, + 14, + 24, + 15, + 24, + 16, + 24, + 17, + 24, + 18, + 24, + 19, + 24, + 20, + 24, + 21, + 24, + 22, + 24, + 23, + 24, + 24, + 24, + 25, + 24, + 26, + 25, + 0, + 25, + 1, + 25, + 2, + 25, + 3, + 25, + 4, + 25, + 5, + 25, + 6, + 25, + 7, + 25, + 8, + 25, + 9, + 25, + 10, + 25, + 11, + 25, + 12, + 25, + 13, + 25, + 14, + 25, + 15, + 25, + 16, + 25, + 17, + 25, + 18, + 25, + 19, + 25, + 20, + 25, + 21, + 25, + 22, + 25, + 23, + 25, + 24, + 25, + 25, + 25, + 26, + 26, + 0, + 26, + 1, + 26, + 2, + 26, + 3, + 26, + 4, + 26, + 5, + 26, + 6, + 26, + 7, + 26, + 8, + 26, + 9, + 26, + 10, + 26, + 11, + 26, + 12, + 26, + 13, + 26, + 14, + 26, + 15, + 26, + 16, + 26, + 17, + 26, + 18, + 26, + 19, + 26, + 20, + 26, + 21, + 26, + 22, + 26, + 23, + 26, + 24, + 26, + 25, + 26, + 26, +}; + +const int32_t ( *c_apaiDemodTables[ALLOC_TABLE_SIZE] )[2] = { + NULL, + c_aaiHuffDemod1, + c_aaiHuffDemod2, + c_aaiHuffDemod3, + c_aaiHuffDemod4, + c_aaiHuffDemod5, + c_aaiHuffDemod6, + c_aaiHuffDemod7, + c_aaiHuffDemod8, + c_aaiHuffDemod9, + c_aaiHuffDemod10, + c_aaiHuffDemod11, + c_aaiHuffDemod12, + c_aaiHuffDemod13, + c_aaiHuffDemod14, + c_aaiHuffDemod15, + c_aaiHuffDemod16, + c_aaiHuffDemod17, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, +}; +#endif +const Word16 c_aiLogAddTable_fx[LOG_ADD_TABLE_LENGTH] = { + 0x40, + 0x40, + 0x3F, + 0x3F, + 0x3E, + 0x3E, + 0x3D, + 0x3D, + 0x3C, + 0x3C, + 0x3B, + 0x3B, + 0x3A, + 0x3A, + 0x39, + 0x39, + 0x38, + 0x38, + 0x37, + 0x37, + 0x37, + 0x36, + 0x36, + 0x35, + 0x35, + 0x34, + 0x34, + 0x33, + 0x33, + 0x33, + 0x32, + 0x32, + 0x31, + 0x31, + 0x31, + 0x30, + 0x30, + 0x2F, + 0x2F, + 0x2F, + 0x2E, + 0x2E, + 0x2D, + 0x2D, + 0x2D, + 0x2C, + 0x2C, + 0x2B, + 0x2B, + 0x2B, + 0x2A, + 0x2A, + 0x2A, + 0x29, + 0x29, + 0x29, + 0x28, + 0x28, + 0x27, + 0x27, + 0x27, + 0x26, + 0x26, + 0x26, + 0x25, + 0x25, + 0x25, + 0x24, + 0x24, + 0x24, + 0x23, + 0x23, + 0x23, + 0x23, + 0x22, + 0x22, + 0x22, + 0x21, + 0x21, + 0x21, + 0x20, + 0x20, + 0x20, + 0x20, + 0x1F, + 0x1F, + 0x1F, + 0x1E, + 0x1E, + 0x1E, + 0x1E, + 0x1D, + 0x1D, + 0x1D, + 0x1C, + 0x1C, + 0x1C, + 0x1C, + 0x1B, + 0x1B, + 0x1B, + 0x1B, + 0x1A, + 0x1A, + 0x1A, + 0x1A, + 0x19, + 0x19, + 0x19, + 0x19, + 0x18, + 0x18, + 0x18, + 0x18, + 0x18, + 0x17, + 0x17, + 0x17, + 0x17, + 0x16, + 0x16, + 0x16, + 0x16, + 0x16, + 0x15, + 0x15, + 0x15, + 0x15, + 0x15, + 0x14, + 0x14, + 0x14, + 0x14, + 0x14, + 0x13, + 0x13, + 0x13, + 0x13, + 0x13, + 0x13, + 0x12, + 0x12, + 0x12, + 0x12, + 0x12, + 0x11, + 0x11, + 0x11, + 0x11, + 0x11, + 0x11, + 0x10, + 0x10, + 0x10, + 0x10, + 0x10, + 0x10, + 0x0F, + 0x0F, + 0x0F, + 0x0F, + 0x0F, + 0x0F, + 0x0F, + 0x0E, + 0x0E, + 0x0E, + 0x0E, + 0x0E, + 0x0E, + 0x0E, + 0x0D, + 0x0D, + 0x0D, + 0x0D, + 0x0D, + 0x0D, + 0x0D, + 0x0D, + 0x0C, + 0x0C, + 0x0C, + 0x0C, + 0x0C, + 0x0C, + 0x0C, + 0x0C, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +}; +const int32_t c_aiLogAddTable[LOG_ADD_TABLE_LENGTH] = { + 0x40, + 0x40, + 0x3F, + 0x3F, + 0x3E, + 0x3E, + 0x3D, + 0x3D, + 0x3C, + 0x3C, + 0x3B, + 0x3B, + 0x3A, + 0x3A, + 0x39, + 0x39, + 0x38, + 0x38, + 0x37, + 0x37, + 0x37, + 0x36, + 0x36, + 0x35, + 0x35, + 0x34, + 0x34, + 0x33, + 0x33, + 0x33, + 0x32, + 0x32, + 0x31, + 0x31, + 0x31, + 0x30, + 0x30, + 0x2F, + 0x2F, + 0x2F, + 0x2E, + 0x2E, + 0x2D, + 0x2D, + 0x2D, + 0x2C, + 0x2C, + 0x2B, + 0x2B, + 0x2B, + 0x2A, + 0x2A, + 0x2A, + 0x29, + 0x29, + 0x29, + 0x28, + 0x28, + 0x27, + 0x27, + 0x27, + 0x26, + 0x26, + 0x26, + 0x25, + 0x25, + 0x25, + 0x24, + 0x24, + 0x24, + 0x23, + 0x23, + 0x23, + 0x23, + 0x22, + 0x22, + 0x22, + 0x21, + 0x21, + 0x21, + 0x20, + 0x20, + 0x20, + 0x20, + 0x1F, + 0x1F, + 0x1F, + 0x1E, + 0x1E, + 0x1E, + 0x1E, + 0x1D, + 0x1D, + 0x1D, + 0x1C, + 0x1C, + 0x1C, + 0x1C, + 0x1B, + 0x1B, + 0x1B, + 0x1B, + 0x1A, + 0x1A, + 0x1A, + 0x1A, + 0x19, + 0x19, + 0x19, + 0x19, + 0x18, + 0x18, + 0x18, + 0x18, + 0x18, + 0x17, + 0x17, + 0x17, + 0x17, + 0x16, + 0x16, + 0x16, + 0x16, + 0x16, + 0x15, + 0x15, + 0x15, + 0x15, + 0x15, + 0x14, + 0x14, + 0x14, + 0x14, + 0x14, + 0x13, + 0x13, + 0x13, + 0x13, + 0x13, + 0x13, + 0x12, + 0x12, + 0x12, + 0x12, + 0x12, + 0x11, + 0x11, + 0x11, + 0x11, + 0x11, + 0x11, + 0x10, + 0x10, + 0x10, + 0x10, + 0x10, + 0x10, + 0x0F, + 0x0F, + 0x0F, + 0x0F, + 0x0F, + 0x0F, + 0x0F, + 0x0E, + 0x0E, + 0x0E, + 0x0E, + 0x0E, + 0x0E, + 0x0E, + 0x0D, + 0x0D, + 0x0D, + 0x0D, + 0x0D, + 0x0D, + 0x0D, + 0x0D, + 0x0C, + 0x0C, + 0x0C, + 0x0C, + 0x0C, + 0x0C, + 0x0C, + 0x0C, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +}; +const Word16 c_aiBandwidthAdjust48_fx[MAX_BANDS_48] = { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 64, + 64, + 64, + 64, + 64, + 101, + 101, + 128, + 165, + 165, + 180, + 213, +}; +const int32_t c_aiBandwidthAdjust48[MAX_BANDS_48] = { + + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 64, + 64, + 64, + 64, + 64, + 101, + 101, + 128, + 165, + 165, + 180, + 213, +}; + +const Word16 c_aiAbsoluteThresh48_fx[MAX_BANDS_48] = { + -1787, + -1787, + -1787, + -1787, + -1787, + -1787, + -1787, + -1787, + -1782, + -1761, + -1737, + -1679, + -1638, + -1613, + -1590, + -1568, + -1516, + -1459, + -1395, + -1289, + -671, + -409, + -401, +}; +const int32_t c_aiAbsoluteThresh48[MAX_BANDS_48] = { + -1787, + -1787, + -1787, + -1787, + -1787, + -1787, + -1787, + -1787, + -1782, + -1761, + -1737, + -1679, + -1638, + -1613, + -1590, + -1568, + -1516, + -1459, + -1395, + -1289, + -671, + -409, + -401, +}; +#if PERCEPTUAL_MODEL_SLGAIN_SHIFT == 4 +const int32_t c_aiDefaultTheta48[MAX_BANDS_48] = { + 7, + 7, + 6, + 5, + 5, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, +}; +#elif PERCEPTUAL_MODEL_SLGAIN_SHIFT == 8 +const Word16 c_aiDefaultTheta48_fx[MAX_BANDS_48] = { + + 112, + 112, + 96, + 80, + 80, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, +}; +#endif +const int32_t c_aiDefaultTheta48[MAX_BANDS_48] = { + + 112, + 112, + 96, + 80, + 80, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, +}; +const Word16 c_aaiSpreadFunction48_fx[MAX_BANDS_48 * MAX_BANDS_48] = { + 0, + -1561, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -289, + -4, + -1234, + -2295, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -569, + -229, + -8, + -905, + -1705, + -2324, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -789, + -445, + -173, + -16, + -656, + -1271, + -1765, + -2172, + -2520, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -961, + -616, + -340, + -136, + -28, + -488, + -976, + -1382, + -1729, + -2032, + -2305, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1088, + -743, + -465, + -257, + -148, + -31, + -371, + -769, + -1114, + -1417, + -1689, + -2054, + -2483, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1198, + -852, + -574, + -364, + -209, + -148, + -42, + -300, + -635, + -936, + -1207, + -1572, + -2000, + -2376, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1293, + -948, + -669, + -458, + -301, + -183, + -145, + -56, + -258, + -547, + -816, + -1179, + -1606, + -1982, + -2311, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1375, + -1029, + -750, + -539, + -381, + -260, + -180, + -142, + -68, + -231, + -487, + -846, + -1272, + -1647, + -1976, + -2261, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1444, + -1099, + -820, + -608, + -449, + -328, + -233, + -194, + -138, + -77, + -213, + -555, + -978, + -1352, + -1681, + -1966, + -2268, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1501, + -1155, + -876, + -665, + -505, + -383, + -287, + -210, + -193, + -130, + -79, + -298, + -711, + -1083, + -1411, + -1696, + -1997, + -2288, + -2550, + -2552, + -2552, + -2552, + -2552, + -1567, + -1221, + -942, + -730, + -570, + -448, + -351, + -272, + -206, + -189, + -151, + -72, + -349, + -713, + -1039, + -1324, + -1625, + -1915, + -2177, + -2448, + -2552, + -2552, + -2552, + -1650, + -1304, + -1025, + -813, + -653, + -530, + -432, + -352, + -285, + -227, + -177, + -163, + -69, + -297, + -613, + -895, + -1195, + -1485, + -1746, + -2017, + -2238, + -2401, + -2545, + -1727, + -1381, + -1102, + -890, + -730, + -607, + -509, + -428, + -360, + -301, + -249, + -180, + -153, + -72, + -257, + -527, + -824, + -1112, + -1373, + -1643, + -1865, + -2028, + -2171, + -1798, + -1452, + -1173, + -960, + -800, + -677, + -579, + -498, + -430, + -370, + -317, + -246, + -192, + -145, + -76, + -224, + -505, + -790, + -1050, + -1320, + -1540, + -1703, + -1847, + -1860, + -1514, + -1234, + -1022, + -862, + -738, + -640, + -559, + -490, + -430, + -377, + -306, + -224, + -197, + -136, + -81, + -242, + -515, + -771, + -1040, + -1260, + -1422, + -1566, + -1923, + -1577, + -1297, + -1085, + -925, + -801, + -703, + -621, + -553, + -492, + -439, + -367, + -284, + -213, + -198, + -144, + -83, + -235, + -479, + -744, + -963, + -1125, + -1268, + -1986, + -1640, + -1360, + -1148, + -988, + -864, + -766, + -684, + -615, + -555, + -501, + -429, + -345, + -273, + -211, + -204, + -146, + -89, + -216, + -465, + -680, + -841, + -984, + -2043, + -1697, + -1417, + -1205, + -1044, + -921, + -822, + -741, + -672, + -611, + -557, + -485, + -401, + -328, + -264, + -211, + -205, + -140, + -93, + -227, + -430, + -588, + -729, + -2104, + -1758, + -1479, + -1266, + -1106, + -982, + -884, + -802, + -733, + -673, + -619, + -546, + -461, + -388, + -324, + -269, + -212, + -211, + -151, + -100, + -195, + -336, + -472, + -2163, + -1817, + -1537, + -1324, + -1164, + -1040, + -942, + -860, + -791, + -731, + -676, + -604, + -519, + -445, + -380, + -325, + -268, + -226, + -219, + -147, + -114, + -167, + -280, + -2203, + -1857, + -1577, + -1365, + -1205, + -1081, + -982, + -901, + -831, + -771, + -717, + -644, + -559, + -485, + -420, + -364, + -306, + -252, + -239, + -206, + -132, + -122, + -163, + -2224, + -1878, + -1598, + -1386, + -1225, + -1102, + -1003, + -921, + -852, + -792, + -737, + -665, + -580, + -505, + -441, + -385, + -326, + -271, + -222, + -224, + -176, + -121, + -114, +}; +const int32_t c_aaiSpreadFunction48[MAX_BANDS_48 * MAX_BANDS_48] = { + 0, + -1561, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -289, + -4, + -1234, + -2295, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -569, + -229, + -8, + -905, + -1705, + -2324, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -789, + -445, + -173, + -16, + -656, + -1271, + -1765, + -2172, + -2520, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -961, + -616, + -340, + -136, + -28, + -488, + -976, + -1382, + -1729, + -2032, + -2305, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1088, + -743, + -465, + -257, + -148, + -31, + -371, + -769, + -1114, + -1417, + -1689, + -2054, + -2483, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1198, + -852, + -574, + -364, + -209, + -148, + -42, + -300, + -635, + -936, + -1207, + -1572, + -2000, + -2376, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1293, + -948, + -669, + -458, + -301, + -183, + -145, + -56, + -258, + -547, + -816, + -1179, + -1606, + -1982, + -2311, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1375, + -1029, + -750, + -539, + -381, + -260, + -180, + -142, + -68, + -231, + -487, + -846, + -1272, + -1647, + -1976, + -2261, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1444, + -1099, + -820, + -608, + -449, + -328, + -233, + -194, + -138, + -77, + -213, + -555, + -978, + -1352, + -1681, + -1966, + -2268, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1501, + -1155, + -876, + -665, + -505, + -383, + -287, + -210, + -193, + -130, + -79, + -298, + -711, + -1083, + -1411, + -1696, + -1997, + -2288, + -2550, + -2552, + -2552, + -2552, + -2552, + -1567, + -1221, + -942, + -730, + -570, + -448, + -351, + -272, + -206, + -189, + -151, + -72, + -349, + -713, + -1039, + -1324, + -1625, + -1915, + -2177, + -2448, + -2552, + -2552, + -2552, + -1650, + -1304, + -1025, + -813, + -653, + -530, + -432, + -352, + -285, + -227, + -177, + -163, + -69, + -297, + -613, + -895, + -1195, + -1485, + -1746, + -2017, + -2238, + -2401, + -2545, + -1727, + -1381, + -1102, + -890, + -730, + -607, + -509, + -428, + -360, + -301, + -249, + -180, + -153, + -72, + -257, + -527, + -824, + -1112, + -1373, + -1643, + -1865, + -2028, + -2171, + -1798, + -1452, + -1173, + -960, + -800, + -677, + -579, + -498, + -430, + -370, + -317, + -246, + -192, + -145, + -76, + -224, + -505, + -790, + -1050, + -1320, + -1540, + -1703, + -1847, + -1860, + -1514, + -1234, + -1022, + -862, + -738, + -640, + -559, + -490, + -430, + -377, + -306, + -224, + -197, + -136, + -81, + -242, + -515, + -771, + -1040, + -1260, + -1422, + -1566, + -1923, + -1577, + -1297, + -1085, + -925, + -801, + -703, + -621, + -553, + -492, + -439, + -367, + -284, + -213, + -198, + -144, + -83, + -235, + -479, + -744, + -963, + -1125, + -1268, + -1986, + -1640, + -1360, + -1148, + -988, + -864, + -766, + -684, + -615, + -555, + -501, + -429, + -345, + -273, + -211, + -204, + -146, + -89, + -216, + -465, + -680, + -841, + -984, + -2043, + -1697, + -1417, + -1205, + -1044, + -921, + -822, + -741, + -672, + -611, + -557, + -485, + -401, + -328, + -264, + -211, + -205, + -140, + -93, + -227, + -430, + -588, + -729, + -2104, + -1758, + -1479, + -1266, + -1106, + -982, + -884, + -802, + -733, + -673, + -619, + -546, + -461, + -388, + -324, + -269, + -212, + -211, + -151, + -100, + -195, + -336, + -472, + -2163, + -1817, + -1537, + -1324, + -1164, + -1040, + -942, + -860, + -791, + -731, + -676, + -604, + -519, + -445, + -380, + -325, + -268, + -226, + -219, + -147, + -114, + -167, + -280, + -2203, + -1857, + -1577, + -1365, + -1205, + -1081, + -982, + -901, + -831, + -771, + -717, + -644, + -559, + -485, + -420, + -364, + -306, + -252, + -239, + -206, + -132, + -122, + -163, + -2224, + -1878, + -1598, + -1386, + -1225, + -1102, + -1003, + -921, + -852, + -792, + -737, + -665, + -580, + -505, + -441, + -385, + -326, + -271, + -222, + -224, + -176, + -121, + -114, +}; + +const Word32 c_pfMagLUT[8] = /* Q31 */ +{ + 0, 394599072, 775760576, 1130504448, 1446750336, 1713728896, 1922348544, 2065504896 +}; + +const Word32 c_pfP2RRealLUT[32] = /* Q31 */ +{ + INT_MIN, -2106220416, -1984016384, -1785567488, -1518500224, -1193078272, + -821806592, -418953280, -94, 418953088, 821806400, 1193077888, + 1518500224, 1785567360, 1984016128, 2106220288, 2147483647, 2106220288, + 1984016128, 1785567360, 1518500224, 1193077888, 821806400, 418953088, + -94, -418953280, -821806592, -1193078272, -1518500224, -1785567488, + -1984016384, -2106220416 +}; + +const Word32 c_pfP2RImagLUT[32] = /* Q31 */ +{ + 188, -418953248, -821806080, -1193077888, -1518500224, -1785567232, + -1984016128, -2106220288, INT_MIN, -2106220416, -1984016128, -1785567488, + -1518500224, -1193078016, -821806464, -418953280, 0, 418953280, + 821806464, 1193078016, 1518500224, 1785567488, 1984016128, 2106220416, + 2147483647, 2106220288, 1984016128, 1785567232, 1518500224, 1193077888, + 821806080, 418953248 +}; + +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 +}; diff --git a/lib_isar/isar_lcld_rom_tables.h b/lib_isar/isar_lcld_rom_tables.h new file mode 100644 index 0000000000000000000000000000000000000000..19d40751fb9e16a7d9c723e0d745f37cfdad7f66 --- /dev/null +++ b/lib_isar/isar_lcld_rom_tables.h @@ -0,0 +1,245 @@ +/****************************************************************************************************** + + (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 _ISAR_LCLD_ROM_TABLES_H_ +#define _ISAR_LCLD_ROM_TABLES_H_ + +#include +#include "options.h" +#include "typedef.h" +#ifndef M_PI + +#define M_PI 3.14159265358979323846264338327950288f // todo: replace by EVS_PI +#define M_ONE_BY_PI_FX 10430 // 1/pi in Q15 + +#endif + +#define LCLD_BLOCKS_PER_FRAME ( 16 ) +#define LCLD_MAX_BLOCKS_PER_FRAME ( 16 ) +#define LCLD_BANDS ( 60 ) +#define LCLD_PRED_WIN_LEN ( 16 ) +#define LCLD_MAX_NUM_PRED_SUBSETS ( 8 ) +#define MAX_BANDS ( 23 ) +#define MAX_BANDS_48 ( 23 ) +#define DEF_BANDS_48 ( 22 ) + +#define ENV_MIN ( -64 ) +#define ENV_MAX ( 64 ) + +#define ENV0_BITS ( 7 ) + +#define ENV_DELTA_MIN ( -32 ) +#define ENV_DELTA_MIN_FX ( -1073741824 ) +#define ENV_DELTA_MAX ( 31 ) +#define ENV_DELTA_MAX_FX ( 1040187392 ) + +#define ENV_RECONSTRUCT_TABLE_SIZE ( 129 ) + +#define ENV_RECONSTRUCT_TABLE_CENTER ( 64 ) + +#define MIN_ALLOC ( 0 ) +#define MAX_ALLOC ( 31 ) + +#define ALLOC_OFFSET_SCALE ( 8 ) + +#define ALLOC_OFFSET_BITS ( 8 ) + +#define MIN_ALLOC_OFFSET ( -128 ) +#define MAX_ALLOC_OFFSET ( 127 ) +#define READ_LENGTH ( 4 ) + +#define ALLOC_TABLE_SIZE ( 32 ) + +#ifndef _PI_ +#define _PI_ ( 3.14159265358979f ) +#endif +#define PRED_MAX_VAL ( 12 ) +#define PRED_MIN_VAL ( -PRED_MAX_VAL ) +#define PRED_QUANT_FACTOR ( (float) PRED_MAX_VAL ) +#define PRED_QUANT_FACTOR_FX ( PRED_MAX_VAL ) +#define PRED_BAND0_BITS ( 5 ) + +#define PHASE_MAX_VAL ( 12 ) +#define PHASE_MIN_VAL ( -PHASE_MAX_VAL ) +#define PHASE_QUANT_FACTOR ( (float) PHASE_MAX_VAL / _PI_ ) +#define PHASE_QUANT_FACTOR_FX_Q29 ( 2050695826 ) +#define PHASE_DIFF_DIM ( 2 ) +#define PHASE_BAND0_BITS ( 5 ) + +#define PERCEPTUAL_MODEL_SLGAIN_SHIFT ( 8 ) + +// #define USE_DEMOD_TABLES + +#define HUFF_DEC_TABLE_SIZE ( 16 ) + +extern const int32_t c_aiNumLcldBandsPerBand[MAX_BANDS_48]; +extern const int32_t c_aiBandIdPerLcldBand[LCLD_BANDS]; +extern const float c_afRotRealImag[PRED_MAX_VAL - PRED_MIN_VAL + 1][2]; +extern const Word32 c_afRotRealImag_fx[PRED_MAX_VAL - PRED_MIN_VAL + 1][2]; +extern const Word16 c_aiDefaultTheta48_fx[MAX_BANDS_48]; +extern const int32_t c_aiDefaultTheta48[MAX_BANDS_48]; + +extern const float c_afScaleFactor[ALLOC_TABLE_SIZE]; +extern const float c_afInvScaleFactor[ALLOC_TABLE_SIZE]; +extern const Word32 c_afInvScaleFactor_fx[ALLOC_TABLE_SIZE]; +extern const float c_afRMSEnvReconstructTable[ENV_RECONSTRUCT_TABLE_SIZE]; +extern const int16_t c_afRMSEnvReconstructTable_exp[ENV_RECONSTRUCT_TABLE_SIZE]; +extern const int32_t c_aiQuantMaxValues[ALLOC_TABLE_SIZE]; +extern const int32_t c_aiHuffmanDim[ALLOC_TABLE_SIZE]; +extern const int32_t c_aiHuffmanMod[ALLOC_TABLE_SIZE]; +extern const Word32 c_aiHuffmanDim_fx[ALLOC_TABLE_SIZE]; +extern const Word32 c_aiHuffmanMod_fx[ALLOC_TABLE_SIZE]; +extern const Word32 c_afScaleFactor_fx[ALLOC_TABLE_SIZE]; +extern const Word32 c_aiQuantMaxValues_fx[ALLOC_TABLE_SIZE]; +extern const int32_t c_aiHuffmanSize[ALLOC_TABLE_SIZE]; + + +#define LOG_ADD_TABLE_LENGTH ( 512 ) + +extern const int32_t c_aiBandwidths48[MAX_BANDS_48]; +extern const Word16 c_aiLogAddTable_fx[LOG_ADD_TABLE_LENGTH]; +extern const Word16 c_aiBandwidthAdjust48_fx[MAX_BANDS_48]; +extern const int32_t c_aiLogAddTable[LOG_ADD_TABLE_LENGTH]; +extern const int32_t c_aiBandwidthAdjust48[MAX_BANDS_48]; + + +extern const Word16 c_aiAbsoluteThresh48_fx[MAX_BANDS_48]; +extern const Word16 c_aiDefaultTheta48_fx[MAX_BANDS_48]; +extern const Word16 c_aaiSpreadFunction48_fx[MAX_BANDS_48 * MAX_BANDS_48]; +extern const int32_t c_aiAbsoluteThresh48[MAX_BANDS_48]; +extern const int32_t c_aiDefaultTheta48[MAX_BANDS_48]; +extern const int32_t c_aaiSpreadFunction48[MAX_BANDS_48 * MAX_BANDS_48]; + + +#define PRED_QUNAT_FILTER_MAG_BITS ( 3 ) +#define PRED_QUANT_FILTER_PHASE_BITS ( 5 ) +#define PRED_QUANT_FILTER_MAG_MIN ( 0 ) +#define PRED_QUANT_FILTER_MAG_MAX ( 7 ) +#define PRED_QUANT_FILTER_PHASE_MIN ( -16 ) +#define PRED_QUANT_FILTER_PHASE_MAX ( 15 ) + +extern const uint16_t c_aauiLCLDHuffEnc1[16][2]; +extern const uint16_t c_aauiLCLDHuffEnc2[16][2]; +extern const uint16_t c_aauiLCLDHuffEnc3[25][2]; +extern const uint16_t c_aauiLCLDHuffEnc4[36][2]; +extern const uint16_t c_aauiLCLDHuffEnc5[36][2]; +extern const uint16_t c_aauiLCLDHuffEnc6[49][2]; +extern const uint16_t c_aauiLCLDHuffEnc7[64][2]; +extern const uint16_t c_aauiLCLDHuffEnc8[81][2]; +extern const uint16_t c_aauiLCLDHuffEnc9[100][2]; +extern const uint16_t c_aauiLCLDHuffEnc10[169][2]; +extern const uint16_t c_aauiLCLDHuffEnc11[196][2]; +extern const uint16_t c_aauiLCLDHuffEnc12[289][2]; +extern const uint16_t c_aauiLCLDHuffEnc13[324][2]; +extern const uint16_t c_aauiLCLDHuffEnc14[400][2]; +extern const uint16_t c_aauiLCLDHuffEnc15[576][2]; +extern const uint16_t c_aauiLCLDHuffEnc16[729][2]; +extern const uint16_t c_aauiLCLDHuffEnc17[729][2]; +extern const uint16_t c_aauiLCLDHuffEnc18[28][2]; +extern const uint16_t c_aauiLCLDHuffEnc19[29][2]; +extern const uint16_t c_aauiLCLDHuffEnc20[32][2]; +extern const uint16_t c_aauiLCLDHuffEnc21[37][2]; +extern const uint16_t c_aauiLCLDHuffEnc22[39][2]; +extern const uint16_t c_aauiLCLDHuffEnc23[46][2]; +extern const uint16_t c_aauiLCLDHuffEnc24[55][2]; +extern const uint16_t c_aauiLCLDHuffEnc25[65][2]; +extern const uint16_t c_aauiLCLDHuffEnc26[77][2]; +extern const uint16_t c_aauiLCLDHuffEnc27[91][2]; +extern const uint16_t c_aauiLCLDHuffEnc28[109][2]; +extern const uint16_t c_aauiLCLDHuffEnc29[129][2]; +extern const uint16_t c_aauiLCLDHuffEnc30[153][2]; +extern const uint16_t c_aauiLCLDHuffEnc31[181][2]; +extern const uint16_t c_aauiLCLDHuffEnc33[16][2]; +extern const uint16_t c_aauiLCLDHuffEnc34[16][2]; +extern const uint16_t c_aauiLCLDHuffEnc35[25][2]; +extern const uint16_t c_aauiLCLDHuffEnc36[36][2]; +extern const uint16_t c_aauiLCLDHuffEnc37[36][2]; +extern const uint16_t c_aauiLCLDHuffEnc38[49][2]; +extern const uint16_t c_aauiLCLDHuffEnc39[64][2]; +extern const uint16_t c_aauiLCLDHuffEnc40[81][2]; +extern const uint16_t c_aauiLCLDHuffEnc41[100][2]; +extern const uint16_t c_aauiLCLDHuffEnc42[169][2]; +extern const uint16_t c_aauiLCLDHuffEnc43[196][2]; +extern const uint16_t c_aauiLCLDHuffEnc44[289][2]; +extern const uint16_t c_aauiLCLDHuffEnc45[324][2]; +extern const uint16_t c_aauiLCLDHuffEnc46[400][2]; +extern const uint16_t c_aauiLCLDHuffEnc47[576][2]; +extern const uint16_t c_aauiLCLDHuffEnc48[729][2]; +extern const uint16_t c_aauiLCLDHuffEnc49[729][2]; +extern const uint16_t c_aauiLCLDHuffEnc50[28][2]; +extern const uint16_t c_aauiLCLDHuffEnc51[29][2]; +extern const uint16_t c_aauiLCLDHuffEnc52[32][2]; +extern const uint16_t c_aauiLCLDHuffEnc53[37][2]; +extern const uint16_t c_aauiLCLDHuffEnc54[39][2]; +extern const uint16_t c_aauiLCLDHuffEnc55[46][2]; +extern const uint16_t c_aauiLCLDHuffEnc56[55][2]; +extern const uint16_t c_aauiLCLDHuffEnc57[65][2]; +extern const uint16_t c_aauiLCLDHuffEnc58[77][2]; +extern const uint16_t c_aauiLCLDHuffEnc59[91][2]; +extern const uint16_t c_aauiLCLDHuffEnc60[109][2]; +extern const uint16_t c_aauiLCLDHuffEnc61[129][2]; +extern const uint16_t c_aauiLCLDHuffEnc62[153][2]; +extern const uint16_t c_aauiLCLDHuffEnc63[181][2]; +extern const uint16_t ( *c_apauiHuffEncTabels[2 * ALLOC_TABLE_SIZE] )[2]; +extern const uint32_t num_row_aauiLCLDHuff[2 * ALLOC_TABLE_SIZE]; + +#ifdef USE_DEMOD_TABLES +extern const int32_t c_aaiHuffDemod1[16][2]; +extern const int32_t c_aaiHuffDemod2[16][2]; +extern const int32_t c_aaiHuffDemod3[25][2]; +extern const int32_t c_aaiHuffDemod4[36][2]; +extern const int32_t c_aaiHuffDemod5[36][2]; +extern const int32_t c_aaiHuffDemod6[49][2]; +extern const int32_t c_aaiHuffDemod7[64][2]; +extern const int32_t c_aaiHuffDemod8[81][2]; +extern const int32_t c_aaiHuffDemod9[100][2]; +extern const int32_t c_aaiHuffDemod10[169][2]; +extern const int32_t c_aaiHuffDemod11[196][2]; +extern const int32_t c_aaiHuffDemod12[289][2]; +extern const int32_t c_aaiHuffDemod13[324][2]; +extern const int32_t c_aaiHuffDemod14[400][2]; +extern const int32_t c_aaiHuffDemod15[576][2]; +extern const int32_t c_aaiHuffDemod16[729][2]; +extern const int32_t c_aaiHuffDemod17[729][2]; +extern const int32_t ( *c_apaiDemodTables[ALLOC_TABLE_SIZE] )[2]; +#endif + +extern const uint32_t c_aaiRMSEnvHuffEnc[64][2]; +extern const uint32_t c_aaiRMSEnvHuffDec[13][HUFF_DEC_TABLE_SIZE]; + +extern const Word32 c_pfMagLUT[8]; /* Q31 */ +extern const Word32 c_pfP2RRealLUT[32]; /* Q31 */ +extern const Word32 c_pfP2RImagLUT[32]; /* Q31 */ +extern const Word32 c_pfWindowLUT[LCLD_PRED_WIN_LEN]; /* Q31 */ + + +#endif /* _TABLES_H_ */ diff --git a/lib_isar/isar_prot.h b/lib_isar/isar_prot.h new file mode 100644 index 0000000000000000000000000000000000000000..112ee1155fc9eddb2ae34719993fea4759495d3b --- /dev/null +++ b/lib_isar/isar_prot.h @@ -0,0 +1,440 @@ +/****************************************************************************************************** + + (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 ISAR_PROT_H +#define ISAR_PROT_H + + +#include "isar_stat.h" + + +#include +#include "options.h" +#include "ivas_error.h" +#include "lib_isar_post_rend.h" +#include "enh64.h" + +Word32 ISAR_SPLIT_REND_BITStream_read_int32( + ISAR_SPLIT_REND_BITS_HANDLE pBits, + const Word32 bits ); + +void ISAR_SPLIT_REND_BITStream_write_int32( + ISAR_SPLIT_REND_BITS_HANDLE pBits, + const Word32 val, + const Word32 bits ); + +ivas_error isar_splitBinLCLDEncOpen( + ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc, + const int32_t iSampleRate, + const int16_t iChannels, + const int32_t iDataRate, + const int16_t iNumBlocks, + const int16_t iNumIterations ); + +ivas_error isar_splitBinRendPLCOpen( + ISAR_SPLIT_REND_PLC_HANDLE *phSplitRendPLC, + int16_t iNumSubSets ); + +void isar_splitBinRendPLCClose( + ISAR_SPLIT_REND_PLC_HANDLE *phSplitRendPLC ); +ivas_error isar_splitBinLCLDDecOpen( + ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec, + const Word32 iSampleRate, + const Word16 iChannels, + const Word16 iNumBlocks, + const Word16 iNumIterations ); +void isar_splitBinLCLDDecClose( + ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec ); + +void isar_splitBinRendPLCsaveState( + ISAR_SPLIT_REND_PLC_HANDLE hSplitRendPLC, + Word32 Cldfb_RealBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_ImagBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t num_chs, + const int16_t iNumBlocks, + const int16_t iNumIterations ); + +void isar_splitBinRendPLC_xf_fx( + ISAR_SPLIT_REND_PLC_HANDLE hSplitRendPLC, + Word32 Cldfb_RealBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_ImagBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const Word16 num_chs, + const Word16 iNumBlocks, + const Word16 iNumIterations, + Word32 **ppiDecodingFailed, + Word32 **ppiDecodingFailedPrev, + Word16 exp ); + +void isar_splitBinRendPLC( + ISAR_SPLIT_REND_PLC_HANDLE hSplitRendPLC, + Word32 Cldfb_RealBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_ImagBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const Word16 num_chs, + const Word16 iNumBlocks, + const Word16 iNumIterations, + Word32 **ppiDecodingFailed, + Word16 exp ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG +void isar_log_cldfb2wav_data( + float Cldfb_In_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_In_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + HANDLE_CLDFB_FILTER_BANK *cldfbSyn, + const int16_t num_chs, + const int16_t num_freq_bands, + const int32_t output_Fs, + const int16_t start_slot_idx, + const int16_t md_band_idx, + const char *filename ); +#endif + +#ifndef FIX_1372_ISAR_POST_REND +void isar_SplitRenderer_PostRenderer( + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + Word32 Cldfb_RealBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + Word32 Cldfb_ImagBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + const IVAS_QUATERNION Quaternion_act ); +#else +void isar_SplitRenderer_PostRenderer( + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + Word32 Cldfb_RealBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + Word32 Cldfb_ImagBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + const IVAS_QUATERNION Quaternion_act, + Word16 *Q_in ); +#endif + +void isar_splitBinLCLDDecProcess( + ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE hSplitBinLCLDDec, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + Word32 Cldfb_Out_Real_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_Out_Imag_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word16 *Q_cldfb_final, + const Word16 bfi ); + +void set_fix_rotation_mat_fx( + Word32 fix_pos_rot_mat[][BINAURAL_CHANNELS][BINAURAL_CHANNELS], + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData ); + +void isar_splitBinLCLDEncClose( + ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc ); +void isar_splitBinLCLDEncProcess( + ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE hSplitBinLCLDEnc, + Word32 Cldfb_In_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_In_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const Word32 available_bits, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + Word16 *q_final ); + +void set_pose_types_fx( + ISAR_SPLIT_REND_POSE_TYPE pose_type[MAX_HEAD_ROT_POSES - 1], + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData ); + +void isar_split_rend_init_huff_cfg( + ISAR_BIN_HR_SPLIT_REND_HUFF_HANDLE pHuff_cfg ); + +ivas_error isar_splitBinPostRendOpen( + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE *hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const int32_t output_Fs ); + +void isar_splitBinPostRendClose( + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE *hBinHrSplitPostRend ); + +void isar_SplitRenderer_getdiagdiff( + Word16 in_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + Word16 out_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + const Word16 sign, + const Word16 min_val, + const Word16 max_val ); + +void isar_renderSplitGetMultiBinPoseData_fx( + const ISAR_SPLIT_REND_CONFIG_DATA *pSplit_rend_config, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const ISAR_SPLIT_REND_ROT_AXIS rot_axis ); +void isar_renderSplitGetMultiBinPoseData( + const ISAR_SPLIT_REND_CONFIG_DATA *pSplit_rend_config, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const ISAR_SPLIT_REND_ROT_AXIS rot_axis ); + +void isar_split_rend_get_quant_params_fx( + const Word16 num_md_bands, + Word16 pred_real_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + Word16 pred_imag_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + Word16 pred_quant_pnts_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + Word32 pred_quantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + Word32 pred_1byquantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + Word16 d_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + 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], + const Word16 ro_flag, + Word16 *num_quant_strats ); + +void isar_split_rend_get_quant_params( + const int16_t num_md_bands, + int16_t pred_real_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + int16_t pred_imag_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + int16_t pred_quant_pnts_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + float pred_quantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + float pred_1byquantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + int16_t d_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + int16_t bands_pitch[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + int16_t pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + int16_t pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + int16_t *num_quant_strats, + int16_t *num_complex_bands ); + +void isar_splitBinPostRendMdDec_fx( + ISAR_SPLIT_REND_BITS_HANDLE pBits, + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + , + BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend +#endif +); + +void Quat2EulerDegree( + const IVAS_QUATERNION quat, /* i : quaternion describing the rotation */ + float *yaw, /* o : yaw */ + float *pitch, /* o : pitch */ + float *roll /* o : roll */ +); + +void ivas_mat_mult_2by2_complex( + float in_re1[2][2], + float in_im1[2][2], + float in_re2[2][2], + float in_im2[2][2], + float out_re2[2][2], + float out_im2[2][2] ); + +void isar_mat_mult_2by2_complex_fx( + Word32 in_re1_fx[2][2], + Word16 exp_re1, + Word32 in_im1_fx[2][2], + Word16 exp_im1, + Word32 in_re2_fx[2][2], + Word16 exp_re2, + Word32 in_im2_fx[2][2], + Word16 exp_im2, + Word32 out_re2_fx[2][2], + Word16 *final_exp_re_1, + Word32 out_im2_fx[2][2], + Word16 *final_exp_im_1 ); + +void isar_rend_CldfbSplitPostRendProcess( + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const IVAS_QUATERNION QuaternionPost, + Word32 Cldfb_RealBuffer_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_ImagBuffer_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + Word16 Q_cldfb_in, + Word32 output_fx[][L_FRAME48k], + Word16 *Q_out, + const Word16 cldfb_in_flag ); + +void isar_init_multi_bin_pose_data_fx( + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData ); + +/* Copy for encoder, to be removed */ +void isar_init_multi_bin_pose_data_fx_enc( + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData ); + +void isar_rend_CldfbSplitPreRendProcess( + const ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, + const IVAS_QUATERNION headPosition, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + Word32 Cldfb_In_BinReal_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word16 exp_cldfb_re, + Word32 Cldfb_In_BinImag_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word16 exp_cldfb_im, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + const Word32 target_md_bits, + const Word16 low_res_pre_rend_rot, + const Word16 ro_md_flag ); + +Word16 isar_renderSplitGetRot_axisNumBits( + const Word16 dof ); + +ISAR_SPLIT_REND_ROT_AXIS isar_renderSplitGetRot_axisFromCode( + const Word16 dof, + const Word16 code ); + +Word16 isar_renderSplitGetCodeFromRot_axis( + const Word16 dof, + const ISAR_SPLIT_REND_ROT_AXIS rot_axis, + Word16 *num_bits ); + +void isar_init_split_post_rend_handles( + ISAR_SPLIT_POST_REND_WRAPPER *hSplitRendWrapper ); + +ivas_error isar_splitBinPreRendOpen( + ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE *hBinHrSplitPreRend, +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const int32_t output_Fs +#else + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData +#endif +); + +void isar_splitBinPreRendClose( + ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE *hBinHrSplitPreRend ); + +void isar_set_split_rend_ht_setup_fx( + SPLIT_REND_WRAPPER *hSplitrend, + IVAS_QUATERNION Quaternions[MAX_PARAM_SPATIAL_SUBFRAMES], + Word32 Rmat_fx[MAX_PARAM_SPATIAL_SUBFRAMES][3][3] ); + + +ivas_error isar_split_rend_validate_config( + const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, + const Word16 is_pcm_out ); + +Word32 isar_get_lcld_bitrate( + const Word32 SplitRendBitRate, + const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode ); + + +ivas_error splitRendLc3plusEncodeAndWrite( + SPLIT_REND_WRAPPER *hSplitBin, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + const int32_t available_bits, + Word32 *in[], + Word16 Q_sig ); + +ivas_error isar_framesize_to_ms( + const IVAS_RENDER_FRAMESIZE frame_size, /* i : frame size enum */ + Word16 *ms /* o : frame size in ms */ +); +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 */ + 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( + ISAR_SPLIT_REND_BITS_HANDLE pBits, + const Word32 buf_len_bytes, + UWord8 *pbuf ); + +void isar_split_rend_huffman_dec_init_min_max_len( + isar_split_rend_huffman_cfg_t *p_huff_cfg ); + +Word16 wrap_a( + Word16 val, + const Word16 min_val, + const Word16 max_val ); + +void isar_renderSplitUpdateNoCorrectionPoseData( + const ISAR_SPLIT_REND_CONFIG_DATA *pSplit_rend_config, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData ); + +Word32 get_bit( + const Word32 state, + const Word32 bit_id ); + +ivas_error split_renderer_open_lc3plus( + SPLIT_REND_WRAPPER *hSplitRendWrapper, + const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, + const Word32 OutSampleRate, + const IVAS_RENDER_FRAMESIZE ivas_frame_size ); + +ISAR_POST_REND_AudioConfigType isar_getAudioConfigType( + const IVAS_AUDIO_CONFIG config ); + +void isar_init_split_rend_handles( + SPLIT_REND_WRAPPER *hSplitRendWrapper ); + +ivas_error isar_renderMultiTDBinToSplitBinaural( + SPLIT_REND_WRAPPER *hSplitBin, + const IVAS_QUATERNION headPosition, + const Word32 SplitRendBitRate, + const Word16 isar_frame_size_ms, + const Word16 codec_frame_size_ms, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + const Word16 max_bands, + // float *in[], + Word32 *in_fx[], // Q11 + Word16 Q_sig, + const Word16 low_res_pre_rend_rot, + const Word16 pcm_out_flag, + const Word16 ro_md_flag ); + +void lc3plusTimeAlignCldfbPoseCorr( SPLIT_REND_WRAPPER *hSplitBin, + Word32 Cldfb_In_BinReal_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_In_BinImag_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word16 *Q_in ); + + +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 ); + +void ivas_calculate_abs_fx( Word32 re_fx, Word16 exp_re, Word32 im_fx, Word16 exp_im, Word32 *out_fx, Word16 *exp_out ); + +void ivas_calculate_rabs_fx( Word32 re_fx, Word16 exp_re, Word32 *out_fx, Word16 *exp_out ); + +#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 ); + + +/* clang-format on */ + +#endif /* IVAS_PROT_REND_H */ diff --git a/lib_isar/isar_rom_post_rend.c b/lib_isar/isar_rom_post_rend.c new file mode 100644 index 0000000000000000000000000000000000000000..0af50df5c428ccb2480245c91f6cb2444b9668ea --- /dev/null +++ b/lib_isar/isar_rom_post_rend.c @@ -0,0 +1,194 @@ +/****************************************************************************************************** + + (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" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "cnst.h" +#include "isar_cnst.h" +#include +#include "wmc_auto.h" + +/* clang-format off */ + + +/*----------------------------------------------------------------------* + * Binuaral split rendering ROM tables + *-----------------------------------------------------------------------*/ + +/* rotations in this array are relative to ref rotation */ +const Word32 ivas_split_rend_relative_yaw_pos_angles_fx[SPLIT_REND_MAX_YAW_ONLY_POSES] = { -62914560, 62914560 }; /* Q22 */ +const Word32 ivas_split_rend_relative_pitch_pos_angles_fx[SPLIT_REND_MAX_PITCH_ONLY_POSES] = { 41943040, 41943040 }; /* Q22 */ +const Word32 ivas_split_rend_relative_roll_pos_angles_fx[SPLIT_REND_MAX_PITCH_ONLY_POSES] = { 41943040, 41943040 }; /* Q22 */ +const float ivas_split_rend_relative_yaw_pos_angles[SPLIT_REND_MAX_YAW_ONLY_POSES] = {-15.0f, 15.0f}; +const float ivas_split_rend_relative_pitch_pos_angles[SPLIT_REND_MAX_PITCH_ONLY_POSES] = {10.0f, 10.0f}; +const float ivas_split_rend_relative_roll_pos_angles[SPLIT_REND_MAX_PITCH_ONLY_POSES] = {10.0f, 10.0f}; +const float ivas_split_rend_relative_one_axis_pos_angles[SPLIT_REND_MAX_ONE_AXIS_MD_POSES] = {-15.0f, 15.0f}; + +const Word32 ivas_split_rend_relative_yaw_pos_angles_hq_fx[SPLIT_REND_MAX_YAW_ONLY_POSES] = { -62914560, 62914560 }; /* Q22 */ +const Word32 ivas_split_rend_relative_pitch_pos_angles_hq_fx[SPLIT_REND_MAX_PITCH_ONLY_POSES] = { -62914560, 62914560 }; /* Q22 */ +const Word32 ivas_split_rend_relative_roll_pos_angles_hq_fx[SPLIT_REND_MAX_PITCH_ONLY_POSES] = { -62914560, 62914560 }; /* Q22 */ +const float ivas_split_rend_relative_yaw_pos_angles_hq[SPLIT_REND_MAX_YAW_ONLY_POSES] = {-15.0f, 15.0f}; +const float ivas_split_rend_relative_pitch_pos_angles_hq[SPLIT_REND_MAX_PITCH_ONLY_POSES] = {-15.0f, 15.0f}; +const float ivas_split_rend_relative_roll_pos_angles_hq[SPLIT_REND_MAX_PITCH_ONLY_POSES] = {-15.0f, 15.0f}; +const float ivas_split_rend_relative_one_axis_pos_angles_hq[SPLIT_REND_MAX_ONE_AXIS_MD_POSES] = {-15.0f, 15.0f}; + +/* Values in degrees : -30, -22.5, -15, 0, 15, 22.5 and 30 */ +const Word32 ivas_split_rend_fix_pos_rot_mat_cos_fx[4] = { ONE_IN_Q31, 2074309917, 1984016189, 1859775393 }; /* Q31 */ + +const int16_t isar_split_rend_band_grouping[MAX_SPLIT_REND_MD_BANDS + 1] = +{ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 20, 25, 30, 35, 40, 50, 60 +}; + +const int32_t ivas_split_rend_huff_p_d_consts[ISAR_SPLIT_REND_D_QUANT_PNTS][3] = +{ + {0,8,252},{1,8,253},{2,7,124},{3,6,60},{4,5,28},{5,4,12}, + {6,3,4},{7,1,0},{8,3,5},{9,4,13},{10,5,29},{11,6,61}, + {12,7,125},{13,8,254},{14,8,255} +}; + +const int32_t ivas_split_rend_huff_p_d_diff_consts[ISAR_SPLIT_REND_D_QUANT_PNTS][3] = +{ + { 0, 1, 0 },{ 1, 2, 2 },{ 2, 3, 6 },{ 3, 4, 14 }, + { 4, 5, 30 },{ 5, 6, 62 },{ 6, 7, 126 },{ 7, 8, 254 }, + { 8, 9, 510 },{ 9, 10, 1022 },{ 10, 11, 2046 },{ 11, 12, 4094 }, + { 12, 13, 8190 },{ 13, 14, 16382 },{ 14, 14, 16383 } +}; + +const int32_t ivas_split_rend_huff_d_consts[ISAR_SPLIT_REND_D_QUANT_PNTS][3] = +{ + { 0, 1, 0 },{ 1, 2, 2 },{ 2, 3, 6 },{ 3, 4, 14 }, + { 4, 5, 30 },{ 5, 6, 62 },{ 6, 7, 126 },{ 7, 8, 254 }, + { 8, 9, 510 },{ 9, 10, 1022 },{ 10, 11, 2046 },{ 11, 12, 4094 }, + { 12, 13, 8190 },{ 13, 14, 16382 },{ 14, 14, 16383 } +}; + +const int32_t ivas_split_rend_huff_pred63_consts[ISAR_SPLIT_REND_PRED_63QUANT_PNTS][3] = +{ + {-31,11,2040}, + {-30,11,2041}, + {-29,11,2042}, + {-28,11,2043}, + {-27,10,1012}, + {-26,10,1013}, + {-25,10,1014}, + {-24,10,1015}, + {-23,9,498}, + {-22,9,499}, + {-21,9,500}, + {-20,9,501}, + {-19,8,242}, + {-18,8,243}, + {-17,8,244}, + {-16,8,245}, + {-15,7,112}, + {-14,7,113}, + {-13,7,114}, + {-12,7,115}, + {-11,6,48}, + {-10,6,49}, + {-9,6,50}, + {-8,6,51}, + {-7,5,16}, + {-6,5,17}, + {-5,5,18}, + {-4,5,19}, + {-3,4,2}, + {-2,4,3}, + {-1,4,4}, + {0,3,0}, + {1,4,5}, + {2,4,6}, + {3,4,7}, + {4,5,20}, + {5,5,21}, + {6,5,22}, + {7,5,23}, + {8,6,52}, + {9,6,53}, + {10,6,54}, + {11,6,55}, + {12,7,116}, + {13,7,117}, + {14,7,118}, + {15,7,119}, + {16,7,120}, + {17,8,246}, + {18,8,247}, + {19,8,248}, + {20,9,502}, + {21,9,503}, + {22,9,504}, + {23,9,505}, + {24,10,1016}, + {25,10,1017}, + {26,10,1018}, + {27,10,1019}, + {28,11,2044}, + {29,11,2045}, + {30,11,2046}, + {31,11,2047}, +}; + +const int32_t ivas_split_rend_huff_pred31_consts[ISAR_SPLIT_REND_PRED_31QUANT_PNTS][3] = +{ + {-15,10,1020},{-14,10,1021},{-13,9,506},{-12,9,507}, + {-11,8,250},{-10,8,251},{-9,7,120},{-8,7,121}, + {-7,6,56},{-6,6,57},{-5,5,24},{-4,5,25},{-3,4,8}, + {-2,4,9},{-1,3,2},{0,2,0},{1,3,3}, + {2,4,10},{3,4,11},{4,5,26},{5,5,27}, + {6,6,58},{7,6,59},{8,7,122},{9,7,123}, + {10,7,124},{11,8,252},{12,9,508},{13,9,509}, + {14,10,1022},{15,10,1023}, +}; + +const int32_t ivas_split_rend_huff_roll_pred_consts[ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS][3] = +{ + {-15,10,1020},{-14,10,1021},{-13,9,506},{-12,9,507}, + {-11,8,250},{-10,8,251},{-9,7,120},{-8,7,121}, + {-7,6,56},{-6,6,57},{-5,5,24},{-4,5,25},{-3,4,8}, + {-2,4,9},{-1,3,2},{0,2,0},{1,3,3}, + {2,4,10},{3,4,11},{4,5,26},{5,5,27}, + {6,6,58},{7,6,59},{8,7,122},{9,7,123}, + {10,7,124},{11,8,252},{12,9,508},{13,9,509}, +{14,10,1022},{15,10,1023}, +}; + + +/* Tables for split renderer fixed converison */ +const Word16 fade_table_fx[4] = +{ 8192, 16384, 24576, 32767 }; + +/* clang-format on */ diff --git a/lib_isar/isar_rom_post_rend.h b/lib_isar/isar_rom_post_rend.h new file mode 100644 index 0000000000000000000000000000000000000000..90bcae60bdc74a36a5a7c0f57e78531075466bd0 --- /dev/null +++ b/lib_isar/isar_rom_post_rend.h @@ -0,0 +1,80 @@ +/****************************************************************************************************** + + (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 ISAR_ROM_POST_REND_H +#define ISAR_ROM_POST_REND_H + +#include +#include "options.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "cnst.h" +#include "isar_cnst.h" + +/*----------------------------------------------------------------------* + * Binuaral split rendering ROM tables + *-----------------------------------------------------------------------*/ + +extern const Word32 ivas_split_rend_relative_yaw_pos_angles_fx[SPLIT_REND_MAX_YAW_ONLY_POSES]; +extern const Word32 ivas_split_rend_relative_pitch_pos_angles_fx[SPLIT_REND_MAX_PITCH_ONLY_POSES]; +extern const Word32 ivas_split_rend_relative_roll_pos_angles_fx[SPLIT_REND_MAX_PITCH_ONLY_POSES]; +extern const float ivas_split_rend_relative_yaw_pos_angles[SPLIT_REND_MAX_YAW_ONLY_POSES]; +extern const float ivas_split_rend_relative_pitch_pos_angles[SPLIT_REND_MAX_PITCH_ONLY_POSES]; +extern const float ivas_split_rend_relative_roll_pos_angles[SPLIT_REND_MAX_PITCH_ONLY_POSES]; +extern const float ivas_split_rend_relative_one_axis_pos_angles[SPLIT_REND_MAX_ONE_AXIS_MD_POSES]; +extern const float ivas_split_rend_relative_one_axis_pos_angles_hq[SPLIT_REND_MAX_ONE_AXIS_MD_POSES]; + +extern const Word32 ivas_split_rend_relative_yaw_pos_angles_hq_fx[SPLIT_REND_MAX_YAW_ONLY_POSES]; +extern const Word32 ivas_split_rend_relative_pitch_pos_angles_hq_fx[SPLIT_REND_MAX_PITCH_ONLY_POSES]; +extern const Word32 ivas_split_rend_relative_roll_pos_angles_hq_fx[SPLIT_REND_MAX_PITCH_ONLY_POSES]; +extern const float ivas_split_rend_relative_yaw_pos_angles_hq[SPLIT_REND_MAX_YAW_ONLY_POSES]; +extern const float ivas_split_rend_relative_pitch_pos_angles_hq[SPLIT_REND_MAX_PITCH_ONLY_POSES]; +extern const float ivas_split_rend_relative_roll_pos_angles_hq[SPLIT_REND_MAX_PITCH_ONLY_POSES]; + +/* Values in degrees : -30, -22.5, -15, 0, 15, 22.5 and 30 */ +extern const Word32 ivas_split_rend_fix_pos_rot_mat_cos_fx[4]; /* Q31 */ + +extern const float ivas_split_rend_relative_pos_angles[MAX_HEAD_ROT_POSES][3]; +extern const int16_t isar_split_rend_band_grouping[MAX_SPLIT_REND_MD_BANDS + 1]; +extern const int32_t ivas_split_rend_huff_d_consts[ISAR_SPLIT_REND_D_QUANT_PNTS][3]; +extern const int32_t ivas_split_rend_huff_pred63_consts[ISAR_SPLIT_REND_PRED_31QUANT_PNTS][3]; +extern const int32_t ivas_split_rend_huff_pred31_consts[ISAR_SPLIT_REND_PRED_31QUANT_PNTS][3]; +extern const int32_t ivas_split_rend_huff_roll_pred_consts[ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS][3]; +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[]; + +/* Tables for fixed point conversion */ +extern const Word16 fade_table_fx[4]; + +#endif diff --git a/lib_isar/isar_splitRend_lcld_dec.c b/lib_isar/isar_splitRend_lcld_dec.c new file mode 100644 index 0000000000000000000000000000000000000000..7238887093099a97b947b90b5b1208586e37bf6c --- /dev/null +++ b/lib_isar/isar_splitRend_lcld_dec.c @@ -0,0 +1,283 @@ +/****************************************************************************************************** + + (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 "isar_prot.h" +#include "ivas_prot_fx.h" +#include "prot_fx.h" +#include "prot_fx.h" +//#include "control.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------- + * Function isar_splitBinLCLDDecOpen() + * + * + *------------------------------------------------------------------------*/ +ivas_error isar_splitBinLCLDDecOpen( + ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec, + const Word32 iSampleRate, + const Word16 iChannels, + const Word16 iNumBlocks, + const Word16 iNumIterations ) +{ + int16_t n; + ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE splitBinLCLDDec; + ivas_error error; + + IF( ( splitBinLCLDDec = (ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE) malloc( sizeof( ISAR_BIN_HR_SPLIT_LCLD_DEC ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + + splitBinLCLDDec->pLcld_dec = NULL; /* place holder for CLDFB decoder handle */ + + splitBinLCLDDec->iChannels = iChannels; + + IF( ( error = CreateLCLDDecoder( &splitBinLCLDDec->psLCLDDecoder, iSampleRate, iChannels, iNumBlocks, 0 ) ) != IVAS_ERR_OK ) + { + return error; + } + + IF( ( splitBinLCLDDec->pppfDecLCLDReal_fx = (Word32 ***) malloc( iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + IF( ( splitBinLCLDDec->pppfDecLCLDImag_fx = (Word32 ***) malloc( iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + + FOR( n = 0; n < splitBinLCLDDec->iChannels; n++ ) + { + IF( ( splitBinLCLDDec->pppfDecLCLDReal_fx[n] = (Word32 **) malloc( CLDFB_NO_COL_MAX * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + IF( ( splitBinLCLDDec->pppfDecLCLDImag_fx[n] = (Word32 **) malloc( CLDFB_NO_COL_MAX * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + } +#ifdef CLDFB_DEBUG + splitBinLCLDDec->numFrame = 0; + char cldfbFilename[50] = "cldfb_out.bin"; + if ( ( splitBinLCLDDec->cldfbOut = fopen( cldfbFilename, "wb" ) ) == NULL ) + { + fprintf( stderr, "Error: CLDFB bitstream file %s could not be opened\n\n", cldfbFilename ); + exit( -1 ); + } + int16_t num_bands = CLDFB_NO_CHANNELS_MAX; + fwrite( &iChannels, sizeof( int16_t ), 1, splitBinLCLDDec->cldfbOut ); + fwrite( &num_bands, sizeof( int16_t ), 1, splitBinLCLDDec->cldfbOut ); +#endif + + IF( ( error = isar_splitBinRendPLCOpen( &splitBinLCLDDec->hSplitRendPLC, GetNumSubSets( splitBinLCLDDec->psLCLDDecoder ) ) ) != IVAS_ERR_OK ) + { + return error; + } + splitBinLCLDDec->iNumBlocks = iNumBlocks; + splitBinLCLDDec->iNumIterations = iNumIterations; + + *hSplitBinLCLDDec = splitBinLCLDDec; + + return IVAS_ERR_OK; +} + +/*------------------------------------------------------------------------- + * Function isar_splitBinLCLDDecClose() + * + * + *------------------------------------------------------------------------*/ + +void isar_splitBinLCLDDecClose( + ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec ) +{ + Word16 n; + + IF( ( *hSplitBinLCLDDec ) != NULL ) + { + IF( ( *hSplitBinLCLDDec )->psLCLDDecoder != NULL ) + { + DeleteLCLDDecoder( ( *hSplitBinLCLDDec )->psLCLDDecoder ); + } + + FOR( n = 0; n < ( *hSplitBinLCLDDec )->iChannels; n++ ) + { + free( ( *hSplitBinLCLDDec )->pppfDecLCLDReal_fx[n] ); + free( ( *hSplitBinLCLDDec )->pppfDecLCLDImag_fx[n] ); + } + free( ( *hSplitBinLCLDDec )->pppfDecLCLDReal_fx ); + free( ( *hSplitBinLCLDDec )->pppfDecLCLDImag_fx ); + +#ifdef CLDFB_DEBUG + if ( ( *hSplitBinLCLDDec )->cldfbOut != NULL ) + { + fclose( ( *hSplitBinLCLDDec )->cldfbOut ); + } +#endif + isar_splitBinRendPLCClose( &( *hSplitBinLCLDDec )->hSplitRendPLC ); + + free( *hSplitBinLCLDDec ); + *hSplitBinLCLDDec = NULL; + } + + return; +} + +/*------------------------------------------------------------------------- + * Function isar_splitBinLCLDDecProcess() + * + * + *------------------------------------------------------------------------*/ +void isar_splitBinLCLDDecProcess( + ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE hSplitBinLCLDDec, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + Word32 Cldfb_Out_Real_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_Out_Imag_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word16 *Q_cldfb_final, + const Word16 bfi ) +{ + Word16 k, n; + Word16 itr; + *Q_cldfb_final = 11; + push_wmops( "isar_splitBinLCLDDecProcess" ); + + assert( hSplitBinLCLDDec != NULL ); + assert( Cldfb_Out_Real_fx != NULL ); + assert( Cldfb_Out_Imag_fx != NULL ); + assert( pBits != NULL ); +#ifdef CLDFB_DEBUG + printf( "Bytes read = %d\n", iBytesWritten ); +#endif + IF( !bfi ) + { + FOR( itr = 0; itr < hSplitBinLCLDDec->iNumIterations; itr++ ) + { + /* Initialized with zeros....... */ + FOR( n = 0; n < hSplitBinLCLDDec->iChannels; n++ ) + { + FOR( k = 0; k < hSplitBinLCLDDec->iNumBlocks; k++ ) + { + hSplitBinLCLDDec->pppfDecLCLDReal_fx[n][k] = Cldfb_Out_Real_fx[n][hSplitBinLCLDDec->iNumBlocks * itr + k]; + hSplitBinLCLDDec->pppfDecLCLDImag_fx[n][k] = Cldfb_Out_Imag_fx[n][hSplitBinLCLDDec->iNumBlocks * itr + k]; + set_l( hSplitBinLCLDDec->pppfDecLCLDReal_fx[n][k], 0, CLDFB_NO_CHANNELS_MAX ); + set_l( hSplitBinLCLDDec->pppfDecLCLDImag_fx[n][k], 0, CLDFB_NO_CHANNELS_MAX ); + } + } + + Word16 Q_in = 14; + DecodeLCLDFrame( hSplitBinLCLDDec->psLCLDDecoder, pBits, hSplitBinLCLDDec->pppfDecLCLDReal_fx, hSplitBinLCLDDec->pppfDecLCLDImag_fx, Q_in, Q_cldfb_final ); + +#ifdef CLDFB_DEBUG + printf( "Frame Decoded = %d\n", ++hSplitBinLCLDDec->numFrame ); + int16_t writeByte = 0; + for ( k = 0; k < CLDFB_NO_COL_MAX; k++ ) + { + for ( int16_t b = 0; b < CLDFB_NO_CHANNELS_MAX; b++ ) + { + for ( n = 0; n < hSplitBinLCLDDec->iChannels; n++ ) + { + writeByte = fwrite( &hSplitBinLCLDDec->pppfDecLCLDReal[n][k][b], sizeof( float ), 1, hSplitBinLCLDDec->cldfbOut ); + if ( writeByte != 1 ) + exit( -1 ); + writeByte = fwrite( &hSplitBinLCLDDec->pppfDecLCLDImag[n][k][b], sizeof( float ), 1, hSplitBinLCLDDec->cldfbOut ); + if ( writeByte != 1 ) + exit( -1 ); + } + } + } +#endif + IF( AnyDecodingFailed( hSplitBinLCLDDec->psLCLDDecoder ) ) + { + IF( NE_16( *Q_cldfb_final, 11 ) ) + { + FOR( n = 0; n < hSplitBinLCLDDec->iChannels; n++ ) + { + FOR( k = 0; k < hSplitBinLCLDDec->iNumBlocks; k++ ) + { + FOR( Word16 j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) + { + hSplitBinLCLDDec->pppfDecLCLDReal_fx[n][k][j] = L_shl_r( hSplitBinLCLDDec->pppfDecLCLDReal_fx[n][k][j], sub( 11, *Q_cldfb_final ) ); // Q11 + hSplitBinLCLDDec->pppfDecLCLDImag_fx[n][k][j] = L_shl_r( hSplitBinLCLDDec->pppfDecLCLDImag_fx[n][k][j], sub( 11, *Q_cldfb_final ) ); // Q11 + } + } + } + *Q_cldfb_final = 11; + } + /* continue concealing */ + isar_splitBinRendPLC( hSplitBinLCLDDec->hSplitRendPLC, Cldfb_Out_Real_fx, Cldfb_Out_Imag_fx, (int16_t) hSplitBinLCLDDec->iChannels, hSplitBinLCLDDec->iNumBlocks, hSplitBinLCLDDec->iNumIterations, GetDecodingFailedStatus( hSplitBinLCLDDec->psLCLDDecoder ), *Q_cldfb_final ); + } + IF( AnyDecodingFailedPrev( hSplitBinLCLDDec->psLCLDDecoder ) ) + { + IF( NE_16( *Q_cldfb_final, 11 ) ) + { + FOR( n = 0; n < hSplitBinLCLDDec->iChannels; n++ ) + { + FOR( k = 0; k < hSplitBinLCLDDec->iNumBlocks; k++ ) + { + FOR( Word16 j = 0; j < CLDFB_NO_CHANNELS_MAX; j++ ) + { + hSplitBinLCLDDec->pppfDecLCLDReal_fx[n][k][j] = L_shl_r( hSplitBinLCLDDec->pppfDecLCLDReal_fx[n][k][j], sub( 11, *Q_cldfb_final ) ); // Q11 + hSplitBinLCLDDec->pppfDecLCLDImag_fx[n][k][j] = L_shl_r( hSplitBinLCLDDec->pppfDecLCLDImag_fx[n][k][j], sub( 11, *Q_cldfb_final ) ); // Q11 + } + } + } + *Q_cldfb_final = 11; + } + /* cross-fade recovered frame into good frame */ + isar_splitBinRendPLC_xf_fx( hSplitBinLCLDDec->hSplitRendPLC, Cldfb_Out_Real_fx, Cldfb_Out_Imag_fx, (int16_t) hSplitBinLCLDDec->iChannels, hSplitBinLCLDDec->iNumBlocks, hSplitBinLCLDDec->iNumIterations, GetDecodingFailedStatus( hSplitBinLCLDDec->psLCLDDecoder ), GetDecodingFailedPrevStatus( hSplitBinLCLDDec->psLCLDDecoder ), *Q_cldfb_final ); + } + } + } + ELSE + { + /* set states in decoder */ + SetDecodingUnresolved( hSplitBinLCLDDec->psLCLDDecoder ); + + /* do PLC for lost split renderer frame */ + isar_splitBinRendPLC( hSplitBinLCLDDec->hSplitRendPLC, Cldfb_Out_Real_fx, Cldfb_Out_Imag_fx, (int16_t) hSplitBinLCLDDec->iChannels, hSplitBinLCLDDec->iNumBlocks, hSplitBinLCLDDec->iNumIterations, GetDecodingFailedStatus( hSplitBinLCLDDec->psLCLDDecoder ), *Q_cldfb_final ); + } + + /* save PLC state */ + isar_splitBinRendPLCsaveState( hSplitBinLCLDDec->hSplitRendPLC, Cldfb_Out_Real_fx, Cldfb_Out_Imag_fx, (int16_t) hSplitBinLCLDDec->iChannels, hSplitBinLCLDDec->iNumBlocks, hSplitBinLCLDDec->iNumIterations ); + hSplitBinLCLDDec->hSplitRendPLC->CldfbPLC_state.Q_Prev_Bin_fx = *Q_cldfb_final; + move16(); + pop_wmops(); + + return; +} diff --git a/lib_isar/isar_splitRend_lcld_enc.c b/lib_isar/isar_splitRend_lcld_enc.c new file mode 100644 index 0000000000000000000000000000000000000000..e75910e8c33aee38471a8adac3c5953799d7b3a4 --- /dev/null +++ b/lib_isar/isar_splitRend_lcld_enc.c @@ -0,0 +1,237 @@ +/****************************************************************************************************** + + (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 "isar_prot.h" +#include "ivas_prot_fx.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" + +/*------------------------------------------------------------------------- + * Function isar_splitBinLCLDEncOpen() + * + * + *------------------------------------------------------------------------*/ +ivas_error isar_splitBinLCLDEncOpen( + ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc, + const Word32 iSampleRate, + const Word16 iChannels, + const Word32 iDataRate, + const Word16 iNumBlocks, + const Word16 iNumIterations ) +{ + ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE splitBinLCLDEnc; + ivas_error error; + + IF( ( splitBinLCLDEnc = (ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE) malloc( sizeof( ISAR_BIN_HR_SPLIT_LCLD_ENC ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + splitBinLCLDEnc->pLcld_enc = NULL; /* place holder for CLDFB encoder handle*/ + + splitBinLCLDEnc->iChannels = iChannels; + IF( ( error = CreateLCLDEncoder( &( splitBinLCLDEnc->psLCLDEncoder ), iSampleRate, iChannels, iDataRate, 1, iNumBlocks, (Word16) CLDFB_NO_COL_MAX / iNumBlocks, 0 ) ) != IVAS_ERR_OK ) + { + return error; + } + + IF( ( splitBinLCLDEnc->pppfLCLDReal_fx = (Word32 ***) malloc( iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( splitBinLCLDEnc->pppfLCLDImag_fx = (Word32 ***) malloc( iChannels * sizeof( Word32 ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + FOR( Word16 n = 0; n < splitBinLCLDEnc->iChannels; n++ ) + { + IF( ( splitBinLCLDEnc->pppfLCLDReal_fx[n] = (Word32 **) malloc( CLDFB_NO_COL_MAX * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + IF( ( splitBinLCLDEnc->pppfLCLDImag_fx[n] = (Word32 **) malloc( CLDFB_NO_COL_MAX * sizeof( Word32 * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + } + + splitBinLCLDEnc->iNumIterations = iNumIterations; + splitBinLCLDEnc->iNumBlocks = iNumBlocks; + +#ifdef CLDFB_DEBUG + splitBinLCLDEnc->numFrame = 0; + char cldfbFilename[50] = "cldfb_in_ref.qmf"; + if ( ( splitBinLCLDEnc->cldfbIn = fopen( cldfbFilename, "rb" ) ) == NULL ) + { + fprintf( stderr, "Error: CLDFB bitstream file %s could not be opened\n\n", cldfbFilename ); + exit( -1 ); + } + int16_t chan, band; + fread( &chan, sizeof( int16_t ), 1, splitBinLCLDEnc->cldfbIn ); + fread( &band, sizeof( int16_t ), 1, splitBinLCLDEnc->cldfbIn ); +#endif + + *hSplitBinLCLDEnc = splitBinLCLDEnc; + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * Function isar_splitBinLCLDEncClose() + * + * + *------------------------------------------------------------------------*/ + +void isar_splitBinLCLDEncClose( + ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc ) +{ + IF( ( *hSplitBinLCLDEnc ) != NULL ) + { + DeleteLCLDEncoder( ( *hSplitBinLCLDEnc )->psLCLDEncoder ); + + FOR( int16_t n = 0; n < ( *hSplitBinLCLDEnc )->iChannels; n++ ) + { + free( ( *hSplitBinLCLDEnc )->pppfLCLDReal_fx[n] ); + free( ( *hSplitBinLCLDEnc )->pppfLCLDImag_fx[n] ); + } + free( ( *hSplitBinLCLDEnc )->pppfLCLDReal_fx ); + free( ( *hSplitBinLCLDEnc )->pppfLCLDImag_fx ); +#ifdef CLDFB_DEBUG + if ( ( *hSplitBinLCLDEnc )->cldfbIn != NULL ) + { + fclose( ( *hSplitBinLCLDEnc )->cldfbIn ); + } +#endif + + free( *hSplitBinLCLDEnc ); + *hSplitBinLCLDEnc = NULL; + } + + return; +} + +/*------------------------------------------------------------------------- + * Function isar_splitBinLCLDEncProcess() + * + * + *------------------------------------------------------------------------*/ +void isar_splitBinLCLDEncProcess( + ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE hSplitBinLCLDEnc, + Word32 Cldfb_In_Real_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_In_Imag_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const Word32 available_bits, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + Word16 *q_final ) +{ + Word32 iBitsWritten, itr, available_bits_itr, rem_itr, available_bits_local; + push_wmops( "isar_splitBinLCLDEncProcess" ); + assert( hSplitBinLCLDEnc != NULL ); + assert( Cldfb_In_Real_fx != NULL ); + assert( Cldfb_In_Imag_fx != NULL ); + assert( pBits != NULL ); + + available_bits_local = available_bits; + move32(); + Word16 tmp, tmp_e; + /* A conversion is needed for the 3d pointer interface here ........ */ + FOR( itr = 0; itr < hSplitBinLCLDEnc->iNumIterations; itr++ ) + { + + rem_itr = L_sub( hSplitBinLCLDEnc->iNumIterations, itr ); + tmp = BASOP_Util_Divide3232_Scale( available_bits_local, rem_itr, &tmp_e ); + available_bits_itr = shr( tmp, sub( 15, tmp_e ) ); // Q0 + // available_bits_itr = available_bits_local / rem_itr; + FOR( Word32 n = 0; n < hSplitBinLCLDEnc->iChannels; n++ ) + { + FOR( Word32 k = 0; k < hSplitBinLCLDEnc->iNumBlocks; k++ ) + { + hSplitBinLCLDEnc->pppfLCLDReal_fx[n][k] = Cldfb_In_Real_fx[n][hSplitBinLCLDEnc->iNumBlocks * itr + k]; + hSplitBinLCLDEnc->pppfLCLDImag_fx[n][k] = Cldfb_In_Imag_fx[n][hSplitBinLCLDEnc->iNumBlocks * itr + k]; + } + } +#ifdef CLDFB_DEBUG + int16_t readByte = 0; + for ( int16_t k = 0; k < hSplitBinLCLDEnc->iNumBlocks; k++ ) + { + for ( int16_t b = 0; b < CLDFB_NO_CHANNELS_MAX; b++ ) + { + for ( int16_t n = 0; n < hSplitBinLCLDEnc->iChannels; n++ ) + { + readByte = fread( &hSplitBinLCLDEnc->pppfLCLDReal[n][k][b], sizeof( float ), 1, hSplitBinLCLDEnc->cldfbIn ); + if ( readByte != 1 ) + break; + readByte = fread( &hSplitBinLCLDEnc->pppfLCLDReal[n][k][b], sizeof( float ), 1, hSplitBinLCLDEnc->cldfbIn ); + } + } + } + + if ( readByte == 1 ) + { + printf( "Frame Read = %d\n", ++hSplitBinLCLDEnc->numFrame ); + } + else + { + printf( "Writing zeroes...\n" ); + for ( int16_T k = 0; k < hSplitBinLCLDEnc->iNumBlocks; k++ ) + { + for ( int16_t b = 0; b < CLDFB_NO_CHANNELS_MAX; b++ ) + { + for ( int16_t n = 0; n < hSplitBinLCLDEnc->iChannels; n++ ) + { + hSplitBinLCLDEnc->pppfLCLDReal[n][k][b] = 0.f; + hSplitBinLCLDEnc->pppfLCLDImag[n][k][b] = 0.f; + } + } + } + } +#endif + EncodeLCLDFrame( hSplitBinLCLDEnc->psLCLDEncoder, hSplitBinLCLDEnc->pppfLCLDReal_fx, hSplitBinLCLDEnc->pppfLCLDImag_fx, &iBitsWritten, available_bits_itr, pBits, q_final ); + + available_bits_local = L_sub( available_bits_local, iBitsWritten ); +#ifdef DEBUGGING + assert( available_bits_local >= 0 ); +#endif + +#ifdef CLDFB_DEBUG + printf( "Bits written = %d\n", iBitsWritten ); +#endif + } + pop_wmops(); + + return; +} diff --git a/lib_isar/isar_splitRendererPLC.c b/lib_isar/isar_splitRendererPLC.c new file mode 100644 index 0000000000000000000000000000000000000000..c81d0e12f198acaba7682689fb92b7ce003ac1f9 --- /dev/null +++ b/lib_isar/isar_splitRendererPLC.c @@ -0,0 +1,1295 @@ +/****************************************************************************************************** + + (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 +#include "ivas_prot_fx.h" +#include "prot_fx.h" +#include "isar_cnst.h" +#include "isar_prot.h" +#include "enh64.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" +#include "prot_fx.h" +#include "basop_util.h" +#include "enh64.h" + +/*------------------------------------------------------------------------- + * Local constants + *------------------------------------------------------------------------*/ +#define PI_CONST ( 341782638 ) // Q31 +#define DO_PERTURB 1 +#define PH_PERT_ONLY 1 +#define START_VAL_AVG_LEN 2 +#define SR_PLC_FADE_START 10 /* start fading at this number of bad frames in row */ +#define SR_PLC_MUTE 30 /* Total mute at this number of bad frames in row */ +#define SR_PLC_FADE_DEGREE -3 /* fading degree per frame in dB */ +#define SRHO_THRESH ( 2.f / 3.f * 0.1f ) +#define SRHO_THRESH_FX ( 143165584 ) +#define STH_THRESH_FX ( 749613227 ) +#define STH_THRESH ( 2.f / 3.f * PI2 / 12 ) +#define PLC_FADE_CNST SR_PLC_FADE_START *CLDFB_NO_COL_MAX +#define PLC_MUTE_CNST SR_PLC_MUTE *CLDFB_NO_COL_MAX +Word32 xf_alp_tab[CLDFB_PLC_XF] = { 1431655680, 715827840 }; + +/*------------------------------------------------------------------------- + * Function adaptive_polar_ext_plc() + * + * + *------------------------------------------------------------------------*/ +static void adaptive_polar_ext_plc_fx( + const Word32 *prev_real_fx, + const Word32 *prev_imag_fx, + Word32 *rec_real_fx, + Word32 *rec_imag_fx, + Word16 *rec_real_exp, + Word16 *rec_imag_exp +#if CLDFB_PLC_XF > 0 + , + Word32 xf_alp_fx[CLDFB_PLC_XF], + Word32 xf_bet_fx[CLDFB_PLC_XF] +#endif + , + Word16 exp, + const Word16 iNumCols ) + +{ + /*TODO: Add basops and instrumentation where ever possible*/ + Word32 uth_fx[CLDFB_NO_COL_MAX], urh_fx[CLDFB_NO_COL_MAX]; + Word64 uthu_fx[CLDFB_NO_COL_MAX], drho_fx, srho_fx, diff_fx, dth_fx, sth_fx, ph_adj_fx, rat_real_fx, rat_imag_fx; + Word32 ph_diff_fx, ph_adj_t_fx, quot_fx, dth32, fac_real_fx, fac_imag_fx, rat_real32_fx, rat_imag32_fx, abs2inv_fx; + Word16 srho_q, sth_q, dth16, drho_q, rat_real_q, rat_imag_q, temp_16, rat_real_sum_q, rat_imag_sum_q, start_q, fac_real_q, fac_imag_q; + Word64 Ruu_real_fx[2], Ruu_imag_fx[2], abs_fac_fx; + Word32 Ruu_real_fx_1, Ruu_imag_fx_1, Ruu_real_fx_0, abs_fac_32, abs_fac_powj_32, comp_fac_fx; + Word16 Ruu_real_fx_1_q, Ruu_imag_fx_1_q, Ruu_real_fx_0_q, dth_q, urh_exp[CLDFB_NO_COL_MAX]; + Word32 fac_ph_real_fx, fac_ph_imag_fx, abs_temp_fx; + Word32 start_real_fx, start_imag_fx, fac_powj_real_fx, fac_powj_imag_fx, temp_fx; + Word32 k, j; + Word16 quot_exp[CLDFB_NO_COL_MAX]; + Word16 drho_exp[CLDFB_NO_COL_MAX]; + Word16 srho_exp[CLDFB_NO_COL_MAX]; + /* Word16 rec_real_exp[CLDFB_NO_COL_MAX + CLDFB_PLC_XF]; + Word16 rec_imag_exp[CLDFB_NO_COL_MAX + CLDFB_PLC_XF];*/ + /* reset of accumulators */ + ph_adj_fx = 0; + drho_fx = 0; + srho_fx = 0; + dth_fx = 0; + sth_fx = 0; + Word16 sqrt_exp = 0, sqrt_exp1; + Word32 temp_32; + Word16 lshift; + Word64 temp_64, real_sum, imag_sum; + /* calculate per-sample phase and magnitude evolution in preceding frame */ + FOR( k = 0; k < iNumCols; k++ ) + { + real_sum = W_mult_32_32( prev_real_fx[k], prev_real_fx[k] ); + rat_real_sum_q = add( shl( exp, 1 ), 1 ); + imag_sum = W_mult_32_32( prev_imag_fx[k], prev_imag_fx[k] ); + rat_imag_sum_q = add( shl( exp, 1 ), 1 ); + temp_64 = W_add( real_sum, imag_sum ); + lshift = W_norm( temp_64 ); + temp_32 = W_extract_h( W_shl( temp_64, lshift ) ); + sqrt_exp = sub( add( shl( exp, 1 ), lshift ), 31 ); + sqrt_exp = sub( 31, sqrt_exp ); + urh_fx[k] = Sqrt32( temp_32, &sqrt_exp ); + urh_exp[k] = sub( 31, sqrt_exp ); + // In Float the condition is if ( urh[k] < EPSILON ) + IF( EQ_32( urh_fx[k], 0 ) ) + { + /* zero encountered */ + BREAK; + } + + uth_fx[k] = L_shl( BASOP_util_atan2( prev_imag_fx[k], prev_real_fx[k], 0 ), 15 ); // Q28 + /* phase unwrap */ + IF( EQ_32( k, 0 ) ) + { + uthu_fx[0] = uth_fx[0]; + } + ELSE + { + /* phase unwrap */ + ph_diff_fx = L_sub( uth_fx[k], uth_fx[k - 1] ); + + uthu_fx[k] = uth_fx[k]; + Word32 quot_fx_durho; + Word16 s = 0, s_diff; + Word32 add_fact, quo_sq; + IF( GE_32( L_abs( ph_diff_fx ), L_shr( PI2_FX, 2 ) ) ) + { + temp_32 = L_deposit_h( BASOP_Util_Divide3232_Scale( ph_diff_fx, PI2_FX, &s ) ); // Q(31) + ph_adj_t_fx = ( temp_32 == ONE_IN_Q30 ) ? L_sub( ONE_IN_Q31, 1 ) : L_shl( temp_32, s ); + IF( EQ_32( L_abs( L_sub( L_add( ph_adj_t_fx, 1 ), L_shr( ph_adj_t_fx, 31 ) ) ), ONE_IN_Q30 ) ) + { + ph_adj_t_fx = L_shr( ph_adj_t_fx, 31 ); + } + add_fact = ( L_abs( ph_adj_t_fx ) >= ONE_IN_Q30 ) ? ( ( ph_adj_t_fx < 0 ) ? 1686629713 : -1686629713 ) : 0; + ph_adj_fx = W_add( add_fact, ph_adj_fx ); // Q28 + } + /* unwrapped phase in uthu */ + uthu_fx[k] = W_add( uthu_fx[k], ph_adj_fx ); // Q28 + /* mean and stdev of per-sample magnitude ratios */ + s_diff = sub( urh_exp[k - 1], urh_exp[k] ); + temp_16 = BASOP_Util_Divide3232_Scale( urh_fx[k], urh_fx[k - 1], &s ); + quot_fx = L_shl( temp_16, 16 ); // Q(31-s) + quot_exp[k] = sub( sub( 31, s_diff ), s ); + quot_fx_durho = quot_fx; + drho_exp[k] = quot_exp[k]; + IF( GE_32( k, 2 ) ) + { + IF( LT_16( drho_exp[k - 1], drho_exp[k] ) ) + { + quot_fx_durho = L_shr( quot_fx_durho, sub( drho_exp[k], drho_exp[k - 1] ) ); + drho_exp[k] = drho_exp[k - 1]; + } + ELSE IF( GT_16( drho_exp[k - 1], drho_exp[k] ) ) + { + drho_fx = W_shr( drho_fx, sub( drho_exp[k - 1], drho_exp[k] ) ); + } + } + drho_fx = W_add( quot_fx_durho, drho_fx ); // Q(31-s) + srho_exp[k] = sub( 31, shl( add( s_diff, s ), 1 ) ); + quo_sq = Mpy_32_32( quot_fx, quot_fx ); + IF( GE_32( k, 2 ) ) + { + IF( LT_16( srho_exp[k - 1], srho_exp[k] ) ) + { + quo_sq = L_shr( quo_sq, sub( srho_exp[k], srho_exp[k - 1] ) ); + srho_exp[k] = srho_exp[k - 1]; + } + ELSE IF( GT_16( srho_exp[k - 1], srho_exp[k] ) ) + { + srho_fx = W_shr( srho_fx, sub( srho_exp[k - 1], srho_exp[k] ) ); + } + } + srho_fx = W_add( srho_fx, quo_sq ); // Q(31-s) + diff_fx = W_sub( uthu_fx[k], uthu_fx[k - 1] ); // Q28 /* the mean value calculation could be optimized */ + + dth_fx = W_add( dth_fx, diff_fx ); // Q28 + temp_32 = W_extract_l( diff_fx ); + sth_fx = W_add( sth_fx, (Word64) Mpy_32_32( temp_32, temp_32 ) ); // Q25 + + /* mean and stdev of per-sample phase differences */ + } + } + + Word16 tmp_e, tmp, drho_sqr_q, temp_q; + Word32 divide_fact, drho_32, drho_sqr, dth_sqr; + IF( EQ_32( k, iNumCols ) ) + { + + tmp = BASOP_Util_Divide1616_Scale( 1, sub( iNumCols, 1 ), &tmp_e ); + divide_fact = L_shl( tmp, sub( 31, add( 15, negate( tmp_e ) ) ) ); // Q31 + /* mean and stdev of per-sample magnitude ratios */ + lshift = W_norm( drho_fx ); + tmp_e = drho_exp[k - 1]; + IF( LT_16( lshift, 32 ) ) + { + drho_fx = W_shl( drho_fx, lshift ); + tmp_e = add( tmp_e, lshift ); + } + drho_32 = W_extract_h( drho_fx ); // Qtmp_e-32 + drho_32 = Mpy_32_32( drho_32, divide_fact ); + drho_sqr = Mpy_32_32( drho_32, drho_32 ); // Q(2*(tmp_e -32) - 31) + temp_64 = W_mult_32_32( sub( iNumCols, 1 ), drho_sqr ); // Q(2*(tmp_e -32) - 30) + drho_sqr_q = sub( shl( sub( tmp_e, 32 ), 1 ), 30 ); + temp_q = srho_exp[k - 1]; + IF( GT_16( srho_exp[k - 1], drho_sqr_q ) ) + { + temp_64 = W_shl( temp_64, sub( srho_exp[k - 1], drho_sqr_q ) ); + temp_q = srho_exp[k - 1]; + } + ELSE IF( GT_16( drho_sqr_q, srho_exp[k - 1] ) ) + { + srho_fx = W_shl( srho_fx, sub( drho_sqr_q, srho_exp[k - 1] ) ); + temp_q = drho_sqr_q; + } + temp_64 = W_sub( srho_fx, temp_64 ); + drho_q = sub( tmp_e, 32 ); + IF( GT_64( temp_64, 0 ) ) + { + lshift = W_norm( temp_64 ); + temp_32 = W_extract_h( W_shl( temp_64, lshift ) ); + sqrt_exp = sub( add( temp_q, lshift ), 32 ); + tmp = BASOP_Util_Divide1616_Scale( 1, sub( iNumCols, 2 ), &tmp_e ); + divide_fact = L_shl( tmp, sub( 31, add( 15, negate( tmp_e ) ) ) ); // Q31 + temp_32 = Mpy_32_32( temp_32, divide_fact ); // Qsqrt_exp + sqrt_exp1 = sub( 31, sqrt_exp ); + srho_fx = Sqrt32( temp_32, &sqrt_exp1 ); + srho_q = sub( 31, sqrt_exp1 ); + } + ELSE + { + srho_q = 31; + srho_fx = 0; + } + /* mean and stdev of per-sample phase differences */ + tmp = BASOP_Util_Divide1616_Scale( 1, sub( iNumCols, 1 ), &tmp_e ); + divide_fact = L_shl( tmp, sub( 31, add( 15, negate( tmp_e ) ) ) ); // Q31 + /* mean and stdev of per-sample phase differences */ + lshift = W_norm( dth_fx ); + dth_fx = W_shl( dth_fx, lshift ); // Q28+lshift + dth32 = W_extract_h( dth_fx ); // Q28+lshift-32 + dth_q = sub( add( 28, lshift ), 32 ); + dth32 = Mpy_32_32( dth32, divide_fact ); + dth_sqr = Mpy_32_32( dth32, dth32 ); // Q28+lshift-32 + temp_64 = W_mult_32_32( sub( iNumCols, 1 ), dth_sqr ); // Q(2*lshift-39) + temp_q = sub( sub( shl( lshift, 1 ), 8 ), 30 ); + // printf( "%f \t", temp ); + IF( GT_16( temp_q, 25 ) ) + { + + sth_fx = W_shl( sth_fx, sub( temp_q, 25 ) ); + } + ELSE IF( GT_16( 25, temp_q ) ) + { + temp_64 = W_shl( temp_64, sub( 25, temp_q ) ); + temp_q = 25; + } + + temp_64 = W_sub( sth_fx, temp_64 ); + IF( GT_64( temp_64, 0 ) ) + { + lshift = W_norm( temp_64 ); + temp_32 = W_extract_h( W_shl( temp_64, lshift ) ); + sqrt_exp = sub( add( temp_q, lshift ), 32 ); + tmp = BASOP_Util_Divide1616_Scale( 1, sub( iNumCols, 2 ), &tmp_e ); + divide_fact = L_shl( tmp, sub( 31, add( 15, negate( tmp_e ) ) ) ); // Q31 + temp_32 = Mpy_32_32( temp_32, divide_fact ); // Qsqrt_exp + sqrt_exp1 = sub( 31, sqrt_exp ); + sth_fx = Sqrt32( temp_32, &sqrt_exp1 ); + sth_q = sub( 31, sqrt_exp1 ); + } + ELSE + { + sth_fx = 0; + sth_q = 31; + } + + /* do phase extension only IF the std deviations are small */ + IF( LT_64( srho_fx, W_shl( SRHO_THRESH_FX, sub( srho_q, 31 ) ) ) || LT_64( sth_fx, W_shl( STH_THRESH_FX, sub( sth_q, 31 ) ) ) ) + { + dth32 = L_shl( Mpy_32_32( dth32, PI_CONST ), sub( 31, dth_q ) ); // Q28+lshift-32-16 + dth16 = extract_h( dth32 ); + fac_ph_real_fx = L_deposit_h( getCosWord16R2( dth16 ) ); + fac_ph_imag_fx = L_deposit_h( getSineWord16R2( dth16 ) ); + ///* calculate complex evolution factor */ + fac_real_fx = Mpy_32_32( min( L_shl( 1, drho_q ), drho_32 ), fac_ph_real_fx ); // Qdrho_exp + fac_imag_fx = Mpy_32_32( min( L_shl( 1, drho_q ), drho_32 ), fac_ph_imag_fx ); // Qdrho_exp +#if START_VAL_AVG_LEN > 1 + /* Calculate start value FOR evolution from last samples of previous frame */ + fac_powj_real_fx = fac_real_fx; + fac_powj_imag_fx = fac_imag_fx; + start_real_fx = prev_real_fx[iNumCols - 1]; + start_imag_fx = prev_imag_fx[iNumCols - 1]; + FOR( j = 1; j < START_VAL_AVG_LEN; j++ ) + { + start_real_fx = L_add( L_shr( start_real_fx, sub( exp, sub( add( drho_q, exp ), 31 ) ) ), L_sub( Mpy_32_32( fac_powj_real_fx, prev_real_fx[iNumCols - j - 1] ), Mpy_32_32( fac_powj_imag_fx, prev_imag_fx[iNumCols - j - 1] ) ) ); // Q(drho_q+exp-31) + start_imag_fx = L_add( L_shr( start_imag_fx, sub( exp, sub( add( drho_q, exp ), 31 ) ) ), L_add( Mpy_32_32( fac_powj_imag_fx, prev_real_fx[iNumCols - j - 1] ), Mpy_32_32( fac_powj_real_fx, prev_imag_fx[iNumCols - j - 1] ) ) ); // Q(drho_q+exp-31) + temp_fx = L_shl( L_sub( Mpy_32_32( fac_powj_real_fx, fac_real_fx ), Mpy_32_32( fac_powj_imag_fx, fac_imag_fx ) ), sub( sub( drho_q, shl( drho_q, 1 ) ), 31 ) ); // Qdrho_q + fac_powj_imag_fx = L_shl( L_add( Mpy_32_32( fac_powj_imag_fx, fac_real_fx ), Mpy_32_32( fac_powj_real_fx, fac_imag_fx ) ), sub( sub( drho_q, shl( drho_q, 1 ) ), 31 ) ); // Qdrho_q + fac_powj_real_fx = temp_fx; + } + start_q = sub( add( drho_q, exp ), 30 ); +#else + /* take last sample of previous frame as start value */ + start_real = prev_real[iNumCols - 1]; + start_imag = prev_imag[iNumCols - 1]; +#endif + +#if DO_PERTURB != 0 + + /* make evolution less static: apply per samples differences as in preceding frame */ + rat_real_fx = W_add( W_mult_32_32( prev_real_fx[1], prev_real_fx[0] ), W_mult_32_32( prev_imag_fx[1], prev_imag_fx[0] ) ); // 2*exp + rat_imag_fx = W_add( W_mult_32_32( -prev_real_fx[1], prev_imag_fx[0] ), W_mult_32_32( prev_imag_fx[1], prev_real_fx[0] ) ); // 2*exp + +#if PH_PERT_ONLY != 0 + + lshift = W_norm( rat_real_fx ); + temp_64 = W_shl( rat_real_fx, lshift ); // Q2*exp+lshift + rat_real32_fx = W_extract_h( temp_64 ); // Q2*exp+lshift-31 + rat_real_q = sub( add( shl( exp, 1 ), lshift ), 31 ); + lshift = W_norm( rat_imag_fx ); + temp_64 = W_shl( rat_imag_fx, lshift ); // Q2*exp+lshift + rat_imag32_fx = W_extract_h( temp_64 ); // Q2*exp+lshift-31 + rat_imag_q = sub( add( shl( exp, 1 ), lshift ), 31 ); + real_sum = W_mult_32_32( rat_real32_fx, rat_real32_fx ); + rat_real_sum_q = add( shl( rat_real_q, 1 ), 1 ); + imag_sum = W_mult_32_32( rat_imag32_fx, rat_imag32_fx ); + rat_imag_sum_q = add( shl( rat_imag_q, 1 ), 1 ); + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + sqrt_exp = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + sqrt_exp = rat_real_sum_q; + } + temp_64 = W_add( W_shr( real_sum, 1 ), W_shr( imag_sum, 1 ) ); + lshift = W_norm( temp_64 ); + temp_64 = W_shl( temp_64, lshift ); + temp_32 = W_extract_h( temp_64 ); + sqrt_exp = sub( add( sub( sqrt_exp, 1 ), lshift ), 32 ); + /* only phase perturbation */ + sqrt_exp = sub( 31, sqrt_exp ); + tmp_e = 0; + abs_temp_fx = Sqrt32( temp_32, &sqrt_exp ); // Q(31-sqrt_exp) + + lshift = norm_l( drho_32 ); + drho_32 = L_shl( drho_32, lshift ); + drho_q = add( drho_q, lshift ); + IF( EQ_16( drho_q, 31 ) ) + { + abs2inv_fx = L_deposit_h( BASOP_Util_Divide3232_Scale( L_min( ONE_IN_Q31, drho_32 ), L_max( 1, abs_temp_fx ), &tmp_e ) ); // +drho_q +sqrt_exp-tmp_e + } + ELSE + { + abs2inv_fx = L_deposit_h( BASOP_Util_Divide3232_Scale( L_min( L_shl( 1, drho_q ), drho_32 ), L_max( 1, abs_temp_fx ), &tmp_e ) ); // +drho_q +sqrt_exp-tmp_e + } + temp_16 = sub( add( drho_q, sqrt_exp ), tmp_e ); + + rat_real_fx = W_mult_32_32( rat_real32_fx, abs2inv_fx ); + + rat_imag_fx = W_mult_32_32( rat_imag32_fx, abs2inv_fx ); + rat_real_q = add( add( rat_real_q, temp_16 ), 1 ); + + rat_imag_q = add( add( rat_imag_q, temp_16 ), 1 ); + +#else + /* phase and magnitude perturbation */ + abs2inv = 1 / ( max( 1, drho ) * ( SQR( prev_real[0] ) + SQR( prev_imag[0] ) ) ); + rat_real *= abs2inv; + rat_imag *= abs2inv; +#endif + lshift = W_norm( rat_real_fx ); + temp_64 = W_shl( rat_real_fx, lshift ); // Q2*exp+lshift + rat_real32_fx = W_extract_h( temp_64 ); // Q2*exp+lshift-31 + rat_real_q = sub( add( rat_real_q, lshift ), 32 ); + lshift = W_norm( rat_imag_fx ); + temp_64 = W_shl( rat_imag_fx, lshift ); // Q2*exp+lshift + rat_imag32_fx = W_extract_h( temp_64 ); // Q2*exp+lshift-31 + rat_imag_q = sub( add( rat_imag_q, lshift ), 32 ); + + /* apply complex evolution FOR first substitution sample */ + + real_sum = W_mult_32_32( rat_real32_fx, start_real_fx ); + rat_real_sum_q = add( add( rat_real_q, start_q ), 1 ); + imag_sum = W_mult_32_32( rat_imag32_fx, start_imag_fx ); + rat_imag_sum_q = add( add( rat_imag_q, start_q ), 1 ); + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + sqrt_exp = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + sqrt_exp = rat_real_sum_q; + } + temp_64 = W_sub( real_sum, imag_sum ); + lshift = W_norm( temp_64 ); + temp_64 = W_shl( temp_64, lshift ); + rec_real_fx[0] = W_extract_h( temp_64 ); // sqrt_exp + lshift-32 + rec_real_exp[0] = sub( add( sqrt_exp, lshift ), 32 ); + + real_sum = W_mult_32_32( rat_imag32_fx, start_real_fx ); + rat_real_sum_q = add( add( rat_imag_q, start_q ), 1 ); + imag_sum = W_mult_32_32( rat_real32_fx, start_imag_fx ); + rat_imag_sum_q = add( add( rat_real_q, start_q ), 1 ); + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + sqrt_exp = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + sqrt_exp = rat_real_sum_q; + } + temp_64 = W_add( real_sum, imag_sum ); + lshift = W_norm( temp_64 ); + temp_64 = W_shl( temp_64, lshift ); + rec_imag_fx[0] = W_extract_h( temp_64 ); // sqrt_exp + lshift-32 + rec_imag_exp[0] = sub( add( sqrt_exp, lshift ), 32 ); + FOR( j = 2; j < iNumCols; j++ ) + { + rat_real_fx = W_add( W_mult_32_32( prev_real_fx[j], prev_real_fx[j - 1] ), W_mult_32_32( prev_imag_fx[j], prev_imag_fx[j - 1] ) ); // 2*exp + rat_imag_fx = W_add( W_mult_32_32( -prev_real_fx[j], prev_imag_fx[j - 1] ), W_mult_32_32( prev_imag_fx[j], prev_real_fx[j - 1] ) ); // 2*exp +#if PH_PERT_ONLY != 0 + lshift = W_norm( rat_real_fx ); + temp_64 = W_shl( rat_real_fx, lshift ); // Q2*exp+lshift + rat_real32_fx = W_extract_h( temp_64 ); // Q2*exp+lshift-31 + rat_real_q = sub( add( shl( exp, 1 ), lshift ), 31 ); + lshift = W_norm( rat_imag_fx ); + temp_64 = W_shl( rat_imag_fx, lshift ); // Q2*exp+lshift + rat_imag32_fx = W_extract_h( temp_64 ); // Q2*exp+lshift-31 + rat_imag_q = sub( add( shl( exp, 1 ), lshift ), 31 ); + real_sum = W_mult_32_32( rat_real32_fx, rat_real32_fx ); + rat_real_sum_q = add( shl( rat_real_q, 1 ), 1 ); + imag_sum = W_mult_32_32( rat_imag32_fx, rat_imag32_fx ); + rat_imag_sum_q = add( shl( rat_imag_q, 1 ), 1 ); + + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + sqrt_exp = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + sqrt_exp = rat_real_sum_q; + } + + temp_64 = W_add( W_shr( real_sum, 1 ), W_shr( imag_sum, 1 ) ); + lshift = W_norm( temp_64 ); + temp_64 = W_shl( temp_64, lshift ); + temp_32 = W_extract_h( temp_64 ); + sqrt_exp = sub( add( sub( sqrt_exp, 1 ), lshift ), 32 ); + /* only phase perturbation */ + sqrt_exp = sub( 31, sqrt_exp ); + tmp_e = 0; + abs_temp_fx = Sqrt32( temp_32, &sqrt_exp ); // Q(31-sqrt_exp) + + IF( EQ_16( drho_q, 31 ) ) + { + abs2inv_fx = L_deposit_h( BASOP_Util_Divide3232_Scale( min( ONE_IN_Q31, drho_32 ), max( 1, abs_temp_fx ), &tmp_e ) ); // +drho_q +sqrt_exp-tmp_e + } + ELSE + { + abs2inv_fx = L_deposit_h( BASOP_Util_Divide3232_Scale( min( L_shl( 1, drho_q ), drho_32 ), max( 1, abs_temp_fx ), &tmp_e ) ); // +drho_q +sqrt_exp-tmp_e + } + temp_16 = sub( add( drho_q, sqrt_exp ), tmp_e ); + + rat_real_fx = W_mult_32_32( rat_real32_fx, abs2inv_fx ); + rat_imag_fx = W_mult_32_32( rat_imag32_fx, abs2inv_fx ); + rat_real_q = add( add( rat_real_q, temp_16 ), 1 ); + rat_imag_q = add( add( rat_imag_q, temp_16 ), 1 ); + +#else + /* phase and magnitude perturbation */ + abs2inv = 1 / ( max( 1, drho ) * ( SQR( prev_real[j - 1] ) + SQR( prev_imag[j - 1] ) ) ); +#endif + + lshift = W_norm( rat_real_fx ); + temp_64 = W_shl( rat_real_fx, lshift ); // Q2*exp+lshift + rat_real32_fx = W_extract_h( temp_64 ); // Q2*exp+lshift-31 + rat_real_q = sub( add( rat_real_q, lshift ), 32 ); + lshift = W_norm( rat_imag_fx ); + temp_64 = W_shl( rat_imag_fx, lshift ); // Q2*exp+lshift + rat_imag32_fx = W_extract_h( temp_64 ); // Q2*exp+lshift-31 + rat_imag_q = sub( add( rat_imag_q, lshift ), 32 ); + + + real_sum = W_mult_32_32( rat_real32_fx, rec_real_fx[j - 2] ); + rat_real_sum_q = add( add( rat_real_q, rec_real_exp[j - 2] ), 1 ); + imag_sum = W_mult_32_32( rat_imag32_fx, rec_imag_fx[j - 2] ); + rat_imag_sum_q = add( add( rat_imag_q, rec_imag_exp[j - 2] ), 1 ); + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + sqrt_exp = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + sqrt_exp = rat_real_sum_q; + } + temp_64 = W_sub( W_shr( real_sum, 1 ), W_shr( imag_sum, 1 ) ); + lshift = W_norm( temp_64 ); + temp_64 = W_shl( temp_64, lshift ); + rec_real_fx[j - 1] = W_extract_h( temp_64 ); // sqrt_exp + lshift-32 + rec_real_exp[j - 1] = sub( add( sub( sqrt_exp, 1 ), lshift ), 32 ); + + real_sum = W_mult_32_32( rat_imag32_fx, rec_real_fx[j - 2] ); + rat_real_sum_q = add( add( rat_imag_q, rec_real_exp[j - 2] ), 1 ); + imag_sum = W_mult_32_32( rat_real32_fx, rec_imag_fx[j - 2] ); + rat_imag_sum_q = add( add( rat_real_q, rec_imag_exp[j - 2] ), 1 ); + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + sqrt_exp = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + sqrt_exp = rat_real_sum_q; + } + temp_64 = W_add( W_shr( real_sum, 1 ), W_shr( imag_sum, 1 ) ); + lshift = W_norm( temp_64 ); + temp_64 = W_shl( temp_64, lshift ); + rec_imag_fx[j - 1] = W_extract_h( temp_64 ); // sqrt_exp + lshift-32 + rec_imag_exp[j - 1] = sub( add( sub( sqrt_exp, 1 ), lshift ), 32 ); + } + + /* do the same FOR samples of crossfade region */ + FOR( j = 1; j < CLDFB_PLC_XF + 2; j++ ) + { + rat_real_fx = W_add( W_mult_32_32( prev_real_fx[j], prev_real_fx[j - 1] ), W_mult_32_32( prev_imag_fx[j], prev_imag_fx[j - 1] ) ); // 2*exp + rat_imag_fx = W_add( W_mult_32_32( -prev_real_fx[j], prev_imag_fx[j - 1] ), W_mult_32_32( prev_imag_fx[j], prev_real_fx[j - 1] ) ); // 2*exp + +#if PH_PERT_ONLY != 0 + + lshift = W_norm( rat_real_fx ); + temp_64 = W_shl( rat_real_fx, lshift ); // Q2*exp+lshift + rat_real32_fx = W_extract_h( temp_64 ); // Q2*exp+lshift-31 + rat_real_q = sub( add( shl( exp, 1 ), lshift ), 31 ); + lshift = W_norm( rat_imag_fx ); + temp_64 = W_shl( rat_imag_fx, lshift ); // Q2*exp+lshift + rat_imag32_fx = W_extract_h( temp_64 ); // Q2*exp+lshift-31 + rat_imag_q = sub( add( shl( exp, 1 ), lshift ), 31 ); + real_sum = W_mult_32_32( rat_real32_fx, rat_real32_fx ); + rat_real_sum_q = add( shl( rat_real_q, 1 ), 1 ); + imag_sum = W_mult_32_32( rat_imag32_fx, rat_imag32_fx ); + rat_imag_sum_q = add( shl( rat_imag_q, 1 ), 1 ); + + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + sqrt_exp = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + sqrt_exp = rat_real_sum_q; + } + temp_64 = W_add( W_shr( real_sum, 1 ), W_shr( imag_sum, 1 ) ); + lshift = W_norm( temp_64 ); + temp_64 = W_shl( temp_64, lshift ); + temp_32 = W_extract_h( temp_64 ); + sqrt_exp = sub( add( sub( sqrt_exp, 1 ), lshift ), 32 ); + /* only phase perturbation */ + sqrt_exp = sub( 31, sqrt_exp ); + tmp_e = 0; + abs_temp_fx = Sqrt32( temp_32, &sqrt_exp ); // Q(31-sqrt_exp) + + IF( EQ_16( drho_q, 31 ) ) + { + abs2inv_fx = L_deposit_h( BASOP_Util_Divide3232_Scale( min( ONE_IN_Q31, drho_32 ), max( 1, abs_temp_fx ), &tmp_e ) ); // +drho_q +sqrt_exp-tmp_e + } + ELSE + { + abs2inv_fx = L_deposit_h( BASOP_Util_Divide3232_Scale( min( L_shl( 1, drho_q ), drho_32 ), max( 1, abs_temp_fx ), &tmp_e ) ); // +drho_q +sqrt_exp-tmp_e + } + temp_16 = sub( add( drho_q, sqrt_exp ), tmp_e ); + rat_real_fx = W_mult_32_32( rat_real32_fx, abs2inv_fx ); + rat_imag_fx = W_mult_32_32( rat_imag32_fx, abs2inv_fx ); + rat_real_q = add( add( rat_real_q, temp_16 ), 1 ); + rat_imag_q = add( add( rat_imag_q, temp_16 ), 1 ); +#else + abs2inv = 1 / ( max( 1, drho ) * ( SQR( prev_real[j - 1] ) + SQR( prev_imag[j - 1] ) ) ); +#endif + lshift = W_norm( rat_real_fx ); + temp_64 = W_shl( rat_real_fx, lshift ); // Q2*exp+lshift + rat_real32_fx = W_extract_h( temp_64 ); // Q2*exp+lshift-31 + rat_real_q = sub( add( rat_real_q, lshift ), 32 ); + lshift = W_norm( rat_imag_fx ); + temp_64 = W_shl( rat_imag_fx, lshift ); // Q2*exp+lshift + rat_imag32_fx = W_extract_h( temp_64 ); // Q2*exp+lshift-31 + rat_imag_q = sub( add( rat_imag_q, lshift ), 32 ); + + + real_sum = W_mult_32_32( rat_real32_fx, rec_real_fx[j + iNumCols - 3] ); + rat_real_sum_q = add( add( rat_real_q, rec_real_exp[j + iNumCols - 3] ), 1 ); + imag_sum = W_mult_32_32( rat_imag32_fx, rec_imag_fx[j + iNumCols - 3] ); + rat_imag_sum_q = add( add( rat_imag_q, rec_imag_exp[j + iNumCols - 3] ), 1 ); + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + sqrt_exp = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + sqrt_exp = rat_real_sum_q; + } + temp_64 = W_sub( W_shr( real_sum, 1 ), W_shr( imag_sum, 1 ) ); + lshift = W_norm( temp_64 ); + temp_64 = W_shl( temp_64, lshift ); + rec_real_fx[j + iNumCols - 2] = W_extract_h( temp_64 ); // sqrt_exp + lshift-32 + rec_real_exp[j + iNumCols - 2] = sub( add( sub( sqrt_exp, 1 ), lshift ), 32 ); + + real_sum = W_mult_32_32( rat_imag32_fx, rec_real_fx[j + iNumCols - 3] ); + rat_real_sum_q = add( add( rat_imag_q, rec_real_exp[j + iNumCols - 3] ), 1 ); + imag_sum = W_mult_32_32( rat_real32_fx, rec_imag_fx[j + iNumCols - 3] ); + rat_imag_sum_q = add( add( rat_real_q, rec_imag_exp[j + iNumCols - 3] ), 1 ); + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + sqrt_exp = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + sqrt_exp = rat_real_sum_q; + } + temp_64 = W_add( W_shr( real_sum, 1 ), W_shr( imag_sum, 1 ) ); + lshift = W_norm( temp_64 ); + temp_64 = W_shl( temp_64, lshift ); + rec_imag_fx[j + iNumCols - 2] = W_extract_h( temp_64 ); // sqrt_exp + lshift-32 + rec_imag_exp[j + iNumCols - 2] = sub( add( sub( sqrt_exp, 1 ), lshift ), 32 ); + } +#else + rec_real[0] = fac_real * start_real - fac_imag * start_imag; + rec_imag[0] = fac_imag * start_real + fac_real * start_imag; + FOR( j = 1; j < iNumCols + CLDFB_PLC_XF; j++ ) + { + rec_real[j] = fac_real * rec_real[j - 1] - fac_imag * rec_imag[j - 1]; + rec_imag[j] = fac_imag * rec_real[j - 1] + fac_real * rec_imag[j - 1]; + } +#endif + +#if CLDFB_PLC_XF > 0 + /* apply crossfade */ + FOR( j = 0; j < CLDFB_PLC_XF; j++ ) + { + rec_real_fx[iNumCols + j] = Mpy_32_32( xf_alp_fx[j], rec_real_fx[iNumCols + j] ); + rec_imag_fx[iNumCols + j] = Mpy_32_32( xf_alp_fx[j], rec_imag_fx[iNumCols + j] ); + xf_bet_fx[j] = L_sub( ONE_IN_Q31, xf_alp_fx[j] ); + } +#endif + } + ELSE + { + Word16 guard_bits = find_guarded_bits_fx( iNumCols ); + /* do complex lpc combined with frame repetition */ + Ruu_real_fx[0] = W_add( W_shr( W_mult_32_32( prev_real_fx[0], prev_real_fx[0] ), guard_bits ), W_shr( W_mult_32_32( prev_imag_fx[0], prev_imag_fx[0] ), guard_bits ) ); + Ruu_real_fx[1] = 0; + Ruu_imag_fx[1] = 0; + FOR( j = 1; j < iNumCols; j++ ) + { + Ruu_real_fx[0] = W_add( Ruu_real_fx[0], W_add( W_shr( W_mult_32_32( prev_real_fx[j], prev_real_fx[j] ), guard_bits ), W_shr( W_mult_32_32( prev_imag_fx[j], prev_imag_fx[j] ), guard_bits ) ) ); + Ruu_real_fx[1] = W_add( Ruu_real_fx[1], W_add( W_shr( W_mult_32_32( prev_real_fx[j], prev_real_fx[j - 1] ), guard_bits ), W_shr( W_mult_32_32( prev_imag_fx[j], prev_imag_fx[j - 1] ), guard_bits ) ) ); + Ruu_imag_fx[1] = W_add( Ruu_imag_fx[1], W_sub( W_shr( W_mult_32_32( prev_imag_fx[j], prev_real_fx[j - 1] ), guard_bits ), W_shr( W_mult_32_32( prev_real_fx[j], prev_imag_fx[j - 1] ), guard_bits ) ) ); + } + // printf( "%.7f \t", Ruu_real[1] + lshift = W_norm( Ruu_real_fx[0] ); + Ruu_real_fx_0 = W_extract_h( W_shl( Ruu_real_fx[0], lshift ) ); + Ruu_real_fx_0_q = sub( add( sub( add( shl( exp, 1 ), 1 ), guard_bits ), lshift ), 32 ); + lshift = W_norm( Ruu_real_fx[0] ); + Ruu_real_fx_1 = W_extract_h( W_shl( Ruu_real_fx[1], lshift ) ); + Ruu_real_fx_1_q = sub( add( sub( add( shl( exp, 1 ), 1 ), guard_bits ), lshift ), 32 ); + lshift = W_norm( Ruu_real_fx[0] ); + Ruu_imag_fx_1 = W_extract_h( W_shl( Ruu_imag_fx[1], lshift ) ); + Ruu_imag_fx_1_q = sub( add( sub( add( shl( exp, 1 ), 1 ), guard_bits ), lshift ), 32 ); + IF( GT_64( Ruu_real_fx[0], 0 ) ) + { + /* prediction coefficient */ + fac_real_fx = L_deposit_h( BASOP_Util_Divide3232_Scale( Ruu_real_fx_1, Ruu_real_fx_0, &tmp_e ) ); + fac_real_q = sub( add( sub( 31, tmp_e ), Ruu_real_fx_1_q ), Ruu_real_fx_0_q ); + fac_imag_fx = L_deposit_h( BASOP_Util_Divide3232_Scale( Ruu_imag_fx_1, Ruu_real_fx_0, &tmp_e ) ); + fac_imag_q = sub( add( sub( 31, tmp_e ), Ruu_imag_fx_1_q ), Ruu_real_fx_0_q ); + } + ELSE + { + fac_imag_fx = 0; + fac_imag_q = 31; + fac_real_fx = 0; + fac_real_q = 31; + } + + /* apply prediction using last sample of preceding frame as start value and combine with previous frame samples */ + fac_powj_real_fx = fac_real_fx; + fac_powj_imag_fx = fac_imag_fx; + + Word16 powj_real_q = fac_real_q; + Word16 powj_imag_q = fac_imag_q; + + real_sum = W_mult_32_32( fac_real_fx, fac_real_fx ); + rat_real_sum_q = add( shl( fac_real_q, 1 ), 1 ); + imag_sum = W_mult_32_32( fac_imag_fx, fac_imag_fx ); + rat_imag_sum_q = add( shl( fac_imag_q, 1 ), 1 ); + + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + sqrt_exp = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + sqrt_exp = rat_real_sum_q; + } + abs_fac_fx = W_add( W_shr( real_sum, 1 ), W_shr( imag_sum, 1 ) ); + lshift = W_norm( abs_fac_fx ); + abs_fac_32 = W_extract_h( W_shl( abs_fac_fx, lshift ) ); + sqrt_exp = sub( 31, ( sub( add( sub( sqrt_exp, 1 ), lshift ), 32 ) ) ); + abs_fac_32 = Sqrt32( abs_fac_32, &sqrt_exp ); + sqrt_exp = sub( 31, sqrt_exp ); + abs_fac_32 = L_shr( abs_fac_32, sub( sqrt_exp, 31 ) ); // Q31 + sqrt_exp = 31; + abs_fac_powj_32 = L_shr( abs_fac_32, 1 ); // Q30 + sqrt_exp = 30; + + FOR( j = 0; j < iNumCols; j++ ) + { + comp_fac_fx = L_sub( L_shl( 1, sqrt_exp ), abs_fac_powj_32 ); + real_sum = W_mult_32_32( prev_real_fx[iNumCols - 1], fac_powj_real_fx ); + rat_real_sum_q = add( add( exp, powj_real_q ), 1 ); + imag_sum = W_mult_32_32( prev_imag_fx[iNumCols - 1], fac_powj_imag_fx ); + rat_imag_sum_q = add( add( exp, powj_imag_q ), 1 ); + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + rat_real_sum_q = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + /*sqrt_exp = rat_real_sum_q;*/ + } + real_sum = W_sub( W_shr( real_sum, guard_bits ), W_shr( imag_sum, guard_bits ) ); + rat_real_sum_q = sub( rat_real_sum_q, guard_bits ); + imag_sum = W_mult_32_32( prev_real_fx[j], comp_fac_fx ); + rat_imag_sum_q = add( add( exp, sqrt_exp ), 1 ); + + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + rat_real_sum_q = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + /*sqrt_exp = rat_real_sum_q;*/ + } + real_sum = W_add( W_shr( real_sum, guard_bits ), W_shr( imag_sum, guard_bits ) ); + lshift = W_norm( real_sum ); + rec_real_fx[j] = W_extract_h( W_shl( real_sum, lshift ) ); + rec_real_exp[j] = sub( add( sub( rat_real_sum_q, guard_bits ), lshift ), 32 ); + real_sum = W_mult_32_32( prev_real_fx[iNumCols - 1], fac_powj_imag_fx ); + rat_real_sum_q = add( add( exp, powj_imag_q ), 1 ); + imag_sum = W_mult_32_32( prev_imag_fx[iNumCols - 1], fac_powj_real_fx ); + rat_imag_sum_q = add( add( exp, powj_real_q ), 1 ); + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + rat_real_sum_q = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + /*sqrt_exp = rat_real_sum_q;*/ + } + real_sum = W_add( W_shr( real_sum, guard_bits ), W_shr( imag_sum, guard_bits ) ); + rat_real_sum_q = sub( rat_real_sum_q, guard_bits ); + imag_sum = W_mult_32_32( prev_imag_fx[j], comp_fac_fx ); + rat_imag_sum_q = add( add( exp, sqrt_exp ), 1 ); + + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + rat_real_sum_q = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + /*sqrt_exp = rat_real_sum_q;*/ + } + real_sum = W_add( W_shr( real_sum, guard_bits ), W_shr( imag_sum, guard_bits ) ); + + lshift = W_norm( real_sum ); + rec_imag_fx[j] = W_extract_h( W_shl( real_sum, lshift ) ); + rec_imag_exp[j] = sub( add( sub( rat_real_sum_q, guard_bits ), lshift ), 32 ); + + abs_fac_powj_32 = Mpy_32_32( abs_fac_powj_32, abs_fac_32 ); + + + real_sum = W_mult_32_32( fac_powj_real_fx, fac_real_fx ); + rat_real_sum_q = add( add( fac_real_q, powj_real_q ), 1 ); + imag_sum = W_mult_32_32( fac_powj_imag_fx, fac_imag_fx ); + rat_imag_sum_q = add( add( fac_imag_q, powj_imag_q ), 1 ); + + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + rat_real_sum_q = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + /*sqrt_exp = rat_real_sum_q;*/ + } + real_sum = W_sub( W_shr( real_sum, guard_bits ), W_shr( imag_sum, guard_bits ) ); + // rat_real_sum_q = rat_real_sum_q - 1; + lshift = W_norm( real_sum ); + temp_32 = W_extract_h( W_shl( real_sum, lshift ) ); + temp_16 = sub( add( sub( rat_real_sum_q, guard_bits ), lshift ), 32 ); + + real_sum = W_mult_32_32( fac_powj_real_fx, fac_imag_fx ); + rat_real_sum_q = fac_imag_q + powj_real_q + 1; + imag_sum = W_mult_32_32( fac_powj_imag_fx, fac_real_fx ); + rat_imag_sum_q = fac_real_q + powj_imag_q + 1; + + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + rat_real_sum_q = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + /*sqrt_exp = rat_real_sum_q;*/ + } + real_sum = W_add( W_shr( real_sum, guard_bits ), W_shr( imag_sum, guard_bits ) ); + // rat_real_sum_q = rat_real_sum_q - 1; + lshift = W_norm( real_sum ); + fac_powj_imag_fx = W_extract_h( W_shl( real_sum, lshift ) ); + powj_imag_q = sub( add( sub( rat_real_sum_q, guard_bits ), lshift ), 32 ); + + fac_powj_real_fx = temp_32; + powj_real_q = temp_16; + } + + + /* prepare XF to next frame using prediction */ + fac_powj_real_fx = fac_real_fx; + fac_powj_imag_fx = fac_imag_fx; + powj_real_q = fac_real_q; + powj_imag_q = fac_imag_q; + abs_fac_powj_32 = abs_fac_32; // Q30 + sqrt_exp = 31; +#if CLDFB_PLC_XF > 0 + guard_bits = find_guarded_bits_fx( CLDFB_PLC_XF ); + FOR( j = 0; j < CLDFB_PLC_XF; j++ ) + { + + + xf_bet_fx[j] = L_sub( ONE_IN_Q31, abs_fac_powj_32 ); + real_sum = W_mult_32_32( rec_real_fx[iNumCols - 1], fac_powj_real_fx ); + rat_real_sum_q = add( add( rec_real_exp[iNumCols - 1], powj_real_q ), 1 ); + imag_sum = W_mult_32_32( rec_imag_fx[iNumCols - 1], fac_powj_imag_fx ); + rat_imag_sum_q = add( add( rec_imag_exp[iNumCols - 1], powj_imag_q ), 1 ); + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + rat_real_sum_q = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + /*sqrt_exp = rat_real_sum_q;*/ + } + real_sum = W_sub( W_shr( real_sum, guard_bits ), W_shr( imag_sum, guard_bits ) ); + rat_real_sum_q = sub( rat_real_sum_q, guard_bits ); + + lshift = W_norm( real_sum ); + rec_real_fx[j + iNumCols] = W_extract_h( W_shl( real_sum, lshift ) ); + rec_real_exp[j + iNumCols] = sub( add( rat_real_sum_q, lshift ), 32 ); + + real_sum = W_mult_32_32( rec_real_fx[iNumCols - 1], fac_powj_imag_fx ); + rat_real_sum_q = add( add( rec_real_exp[iNumCols - 1], powj_imag_q ), 1 ); + imag_sum = W_mult_32_32( rec_imag_fx[iNumCols - 1], fac_powj_real_fx ); + rat_imag_sum_q = add( add( rec_imag_exp[iNumCols - 1], powj_real_q ), 1 ); + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + rat_real_sum_q = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + /*sqrt_exp = rat_real_sum_q;*/ + } + real_sum = W_add( W_shr( real_sum, guard_bits ), W_shr( imag_sum, guard_bits ) ); + rat_real_sum_q = sub( rat_real_sum_q, guard_bits ); + + lshift = W_norm( real_sum ); + rec_imag_fx[j + iNumCols] = W_extract_h( W_shl( real_sum, lshift ) ); + rec_imag_exp[j + iNumCols] = sub( add( rat_real_sum_q, lshift ), 32 ); + + abs_fac_powj_32 = W_extract_h( W_mult_32_32( abs_fac_powj_32, abs_fac_32 ) ); // Q31 + + real_sum = W_mult_32_32( fac_powj_real_fx, fac_real_fx ); + rat_real_sum_q = add( add( fac_real_q, powj_real_q ), 1 ); + imag_sum = W_mult_32_32( fac_powj_imag_fx, fac_imag_fx ); + rat_imag_sum_q = add( add( fac_imag_q, powj_imag_q ), 1 ); + + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + rat_real_sum_q = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + } + real_sum = W_sub( W_shr( real_sum, guard_bits ), W_shr( imag_sum, guard_bits ) ); + lshift = W_norm( real_sum ); + temp_32 = W_extract_h( W_shl( real_sum, lshift ) ); + temp_16 = sub( add( sub( rat_real_sum_q, guard_bits ), lshift ), 32 ); + + real_sum = W_mult_32_32( fac_powj_real_fx, fac_imag_fx ); + rat_real_sum_q = add( add( fac_imag_q, powj_real_q ), 1 ); + imag_sum = W_mult_32_32( fac_powj_imag_fx, fac_real_fx ); + rat_imag_sum_q = add( add( fac_real_q, powj_imag_q ), 1 ); + + IF( GT_16( rat_real_sum_q, rat_imag_sum_q ) ) + { + real_sum = W_shr( real_sum, sub( rat_real_sum_q, rat_imag_sum_q ) ); + rat_real_sum_q = rat_imag_sum_q; + } + ELSE + { + imag_sum = W_shr( imag_sum, sub( rat_imag_sum_q, rat_real_sum_q ) ); + } + real_sum = W_add( W_shr( real_sum, guard_bits ), W_shr( imag_sum, guard_bits ) ); + lshift = W_norm( real_sum ); + fac_powj_imag_fx = W_extract_h( W_shl( real_sum, lshift ) ); + powj_imag_q = sub( add( sub( rat_real_sum_q, guard_bits ), lshift ), 32 ); + + fac_powj_real_fx = temp_32; + powj_real_q = temp_16; + } +#endif + } + } + ELSE + { + FOR( j = 0; j < iNumCols; j++ ) + { + rec_real_fx[j] = prev_real_fx[j]; + rec_real_exp[j] = exp; + rec_imag_fx[j] = prev_imag_fx[j]; + rec_imag_exp[j] = exp; + } +#if CLDFB_PLC_XF > 0 + FOR( j = 0; j < CLDFB_PLC_XF; j++ ) + { + xf_bet_fx[j] = ONE_IN_Q31; + rec_real_fx[j + iNumCols] = 0; + rec_real_exp[j + iNumCols] = 31; + rec_imag_fx[j + iNumCols] = 0; + rec_imag_exp[j + iNumCols] = 31; + } +#endif + } + return; +} +/*------------------------------------------------------------------------- + * Function isar_splitBinRendPLCOpen() + * + * + *------------------------------------------------------------------------*/ + +ivas_error isar_splitBinRendPLCOpen( + ISAR_SPLIT_REND_PLC_HANDLE *phSplitRendPLC, + Word16 iNumSubSets ) +{ + ivas_error error; + ISAR_SPLIT_REND_PLC_HANDLE hSplitRendPLC; + + error = IVAS_ERR_OK; + IF( ( hSplitRendPLC = (ISAR_SPLIT_REND_PLC_HANDLE) malloc( sizeof( ISAR_SPLIT_REND_PLC_STRUCT ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for bin split renderer PLC Module \n" ) ); + } + + hSplitRendPLC->prev_bfi = 0; + hSplitRendPLC->bf_count = 0; + hSplitRendPLC->iNumSubSets = iNumSubSets; + + set_l( &hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinReal_fx[0][0][0], 0, 2 * ( CLDFB_NO_COL_MAX + CLDFB_PLC_XF ) * CLDFB_NO_CHANNELS_MAX ); + set_l( &hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinImag_fx[0][0][0], 0, 2 * ( CLDFB_NO_COL_MAX + CLDFB_PLC_XF ) * CLDFB_NO_CHANNELS_MAX ); + + *phSplitRendPLC = hSplitRendPLC; + + return error; +} + +/*------------------------------------------------------------------------- + * Function isar_splitBinRendPLCClose() + * + * + *------------------------------------------------------------------------*/ + +void isar_splitBinRendPLCClose( + ISAR_SPLIT_REND_PLC_HANDLE *phSplitRendPLC ) +{ + if ( ( *phSplitRendPLC ) != NULL ) + { + free( ( *phSplitRendPLC ) ); + ( *phSplitRendPLC ) = NULL; + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function isar_splitBinRendPLCsaveState() + * + * + *------------------------------------------------------------------------*/ + +void isar_splitBinRendPLCsaveState( + ISAR_SPLIT_REND_PLC_HANDLE hSplitRendPLC, + Word32 Cldfb_RealBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_ImagBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const Word16 num_chs, + const Word16 iNumBlocks, + const Word16 iNumIterations ) +{ + Word16 k, n; + + /* Save Cldfb frame */ + FOR( k = 0; k < ( iNumBlocks * iNumIterations ); k++ ) + { + FOR( n = 0; n < num_chs; n++ ) + { + mvl2l( &Cldfb_RealBuffer_Binaural_fx[n][k][0], &hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinReal_fx[n][k][0], CLDFB_NO_CHANNELS_MAX ); + mvl2l( &Cldfb_ImagBuffer_Binaural_fx[n][k][0], &hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinImag_fx[n][k][0], CLDFB_NO_CHANNELS_MAX ); + } + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function isar_splitBinRendPLC_xf() + * + * Cross-fade of preceding bad frame into good frame + *------------------------------------------------------------------------*/ + +void isar_splitBinRendPLC_xf_fx( + ISAR_SPLIT_REND_PLC_HANDLE hSplitRendPLC, + Word32 Cldfb_RealBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_ImagBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const Word16 num_chs, + const Word16 iNumBlocks, + const Word16 iNumIterations, + Word32 **ppiDecodingFailed, + Word32 **ppiDecodingFailedPrev, + Word16 exp ) +{ + Word16 n, i, k; + /* Indicate that next transition will be from a good frame */ + hSplitRendPLC->prev_bfi = 0; + move16(); + + /* Reset bf conter */ + hSplitRendPLC->bf_count = 0; + move16(); + + /* Do the cross fade */ + FOR( n = 0; n < num_chs; n++ ) + { + FOR( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) + { + Word32 iSubSet = i % hSplitRendPLC->iNumSubSets; + test(); + IF( EQ_32( ppiDecodingFailedPrev[n][iSubSet], 1 ) && EQ_32( ppiDecodingFailed[n][iSubSet], 0 ) ) + { +#if CLDFB_PLC_XF > 0 + FOR( k = 0; k < CLDFB_PLC_XF; k++ ) + { + Word32 L_tmp; + Word64 W_tmp; + Word16 shift; + W_tmp = W_shr( W_mult_32_32( hSplitRendPLC->CldfbPLC_state.xf_bet_fx[n][i][k], Cldfb_RealBuffer_Binaural_fx[n][k][i] ), 1 ); + W_tmp = W_add( W_tmp, W_shl( L_shl_r( hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinReal_fx[n][k + ( iNumBlocks * iNumIterations )][i], exp - hSplitRendPLC->CldfbPLC_state.Q_Prev_Bin_fx ), 31 ) ); + + shift = W_norm( W_tmp ); + W_tmp = W_shl( W_tmp, shift ); + L_tmp = W_extract_h( W_tmp ); + L_tmp = L_shr( L_tmp, 31 + shift - 32 ); + Cldfb_RealBuffer_Binaural_fx[n][k][i] = L_tmp; + + W_tmp = W_shr( W_mult_32_32( hSplitRendPLC->CldfbPLC_state.xf_bet_fx[n][i][k], Cldfb_ImagBuffer_Binaural_fx[n][k][i] ), 1 ); + W_tmp = W_add( W_tmp, W_shl( L_shl_r( hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinImag_fx[n][k + ( iNumBlocks * iNumIterations )][i], exp - hSplitRendPLC->CldfbPLC_state.Q_Prev_Bin_fx ), 31 ) ); + + shift = W_norm( W_tmp ); + W_tmp = W_shl( W_tmp, shift ); + L_tmp = W_extract_h( W_tmp ); + L_tmp = L_shr( L_tmp, 31 + shift - 32 ); + Cldfb_ImagBuffer_Binaural_fx[n][k][i] = L_tmp; + } +#endif + } + } + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function isar_splitBinRendPLC() + * + * Conceal bad frame + *------------------------------------------------------------------------*/ +void isar_splitBinRendPLC( + ISAR_SPLIT_REND_PLC_HANDLE hSplitRendPLC, + Word32 Cldfb_RealBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_ImagBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const Word16 num_chs, + const Word16 iNumBlocks, + const Word16 iNumIterations, + int32_t **ppiDecodingFailed, + Word16 exp ) +{ + Word32 i, n, k; + Word32 temp_32, fade_fac_fx; + Word16 div_exp = 0, tmp, exp_fade, frac; + Word32 prev_real_fx[CLDFB_NO_COL_MAX], prev_imag_fx[CLDFB_NO_COL_MAX], rec_real_fx[CLDFB_NO_COL_MAX + CLDFB_PLC_XF], rec_imag_fx[CLDFB_NO_COL_MAX + CLDFB_PLC_XF]; + Word16 rec_real_exp[CLDFB_NO_COL_MAX + CLDFB_PLC_XF], rec_imag_exp[CLDFB_NO_COL_MAX + CLDFB_PLC_XF]; +#if CLDFB_PLC_XF > 0 + Word32 xf_alp_fx[CLDFB_PLC_XF]; +#endif + Word16 iNumCols, fade_start_cntr, mute_cntr, fade_val; + + iNumCols = extract_l( L_mult0( iNumBlocks, iNumIterations ) ); + + /* Indicate that next transition will be from a bad frame */ + hSplitRendPLC->prev_bfi = 1; + + +#if CLDFB_PLC_XF > 0 + FOR( i = 0; i < CLDFB_PLC_XF; i++ ) + { + xf_alp_fx[i] = xf_alp_tab[i]; + } +#endif + Word16 exp1 = exp; + + FOR( n = 0; n < num_chs; n++ ) + { + FOR( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) + { + Word32 iSubSet = i % hSplitRendPLC->iNumSubSets; + FOR( k = 0; k < iNumCols; k++ ) + { + prev_real_fx[k] = L_shl_r( hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinReal_fx[n][k][i], exp - hSplitRendPLC->CldfbPLC_state.Q_Prev_Bin_fx ); + prev_imag_fx[k] = L_shl_r( hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinImag_fx[n][k][i], exp - hSplitRendPLC->CldfbPLC_state.Q_Prev_Bin_fx ); + } + adaptive_polar_ext_plc_fx( + prev_real_fx, prev_imag_fx, rec_real_fx, rec_imag_fx, + rec_real_exp, rec_imag_exp +#if CLDFB_PLC_XF > 0 + , + xf_alp_fx, hSplitRendPLC->CldfbPLC_state.xf_bet_fx[n][i], +#endif + exp, + iNumCols ); + + Word16 temp16; + + FOR( k = 0; k < iNumCols; k++ ) + { + temp16 = sub( rec_real_exp[k], exp1 ); + rec_real_fx[k] = L_shr_r_sat( rec_real_fx[k], temp16 ); + rec_real_exp[k] = sub( rec_real_exp[k], temp16 ); + + temp16 = sub( rec_imag_exp[k], exp1 ); + rec_imag_fx[k] = L_shr_r_sat( rec_imag_fx[k], temp16 ); + rec_imag_exp[k] = sub( rec_imag_exp[k], temp16 ); + // Cldfb_RealBuffer_Binaural_fx[n][k][i] = rec_real_fx[k]; + hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinReal_fx[n][k][i] = rec_real_fx[k]; // exp + // Cldfb_ImagBuffer_Binaural_fx[n][k][i] = rec_imag_fx[k] ; + hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinImag_fx[n][k][i] = rec_imag_fx[k]; // exp + if ( ppiDecodingFailed[n][iSubSet] == 1 ) + { /* only then copy to output */ + Cldfb_RealBuffer_Binaural_fx[n][k][i] = rec_real_fx[k]; + Cldfb_ImagBuffer_Binaural_fx[n][k][i] = rec_imag_fx[k]; + } + } + +#if CLDFB_PLC_XF > 0 + FOR( k = iNumCols; k < iNumCols + CLDFB_PLC_XF; k++ ) + { + + temp16 = sub( rec_real_exp[k], exp1 ); + rec_real_fx[k] = L_shr_r_sat( rec_real_fx[k], temp16 ); + rec_real_exp[k] = sub( rec_real_exp[k], temp16 ); + + temp16 = sub( rec_imag_exp[k], exp1 ); + rec_imag_fx[k] = L_shr_r_sat( rec_imag_fx[k], temp16 ); + rec_imag_exp[k] = sub( rec_imag_exp[k], temp16 ); + /*TODO: Will remove the inter conversion later*/ + hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinReal_fx[n][k][i] = rec_real_fx[k]; // exp + hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinImag_fx[n][k][i] = rec_imag_fx[k]; // exp + } +#endif + } + } + + + /* Check bf counter */ + tmp = BASOP_Util_Divide1616_Scale( PLC_FADE_CNST, iNumCols, &div_exp ); + fade_start_cntr = shr( tmp, ( 15 - div_exp ) ); + tmp = BASOP_Util_Divide1616_Scale( PLC_MUTE_CNST, iNumCols, &div_exp ); + mute_cntr = shr( tmp, ( 15 - div_exp ) ); + + IF( GE_16( hSplitRendPLC->bf_count++, fade_start_cntr ) ) + { + IF( LT_16( hSplitRendPLC->bf_count, mute_cntr ) ) + { + fade_val = extract_l( L_shr( L_mult0( sub( hSplitRendPLC->bf_count, fade_start_cntr ), iNumCols ), 4 ) ); // Q0 + temp_32 = L_mult( -16328, fade_val ); // Q15 + temp_32 = L_shl( temp_32, 1 ); // Q16 + + frac = L_Extract_lc( temp_32, &exp_fade ); /* Extract exponent of temp_32 */ + fade_fac_fx = Pow2( 14, frac ); /* Put 14 as exponent so that */ + exp_fade = 31 - add( sub( exp_fade, 14 ), 16 ); + fade_fac_fx = L_shl( fade_fac_fx, 31 - exp_fade ); // Q31 + + FOR( n = 0; n < num_chs; n++ ) + { + FOR( k = 0; k < iNumCols; k++ ) + { + v_multc_fixed( &Cldfb_RealBuffer_Binaural_fx[n][k][0], fade_fac_fx, &Cldfb_RealBuffer_Binaural_fx[n][k][0], (int16_t) CLDFB_NO_CHANNELS_MAX ); + v_multc_fixed( &Cldfb_ImagBuffer_Binaural_fx[n][k][0], fade_fac_fx, &Cldfb_ImagBuffer_Binaural_fx[n][k][0], (int16_t) CLDFB_NO_CHANNELS_MAX ); + } + } + } + ELSE + { + FOR( n = 0; n < num_chs; n++ ) + { + FOR( k = 0; k < iNumCols; k++ ) + { + set_val_Word32( &Cldfb_RealBuffer_Binaural_fx[n][k][0], 0, (int16_t) CLDFB_NO_CHANNELS_MAX ); + set_val_Word32( &Cldfb_ImagBuffer_Binaural_fx[n][k][0], 0, (int16_t) CLDFB_NO_CHANNELS_MAX ); + } + } + hSplitRendPLC->bf_count = mute_cntr; + } + } + + return; +} diff --git a/lib_isar/isar_splitRendererPost.c b/lib_isar/isar_splitRendererPost.c new file mode 100644 index 0000000000000000000000000000000000000000..632e1cdc531e44ef67149c82f693f97d882295aa --- /dev/null +++ b/lib_isar/isar_splitRendererPost.c @@ -0,0 +1,1958 @@ +/****************************************************************************************************** + + (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 +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG +#include +#endif +#include "ivas_prot_fx.h" +#include "prot_fx.h" +#include "isar_rom_post_rend.h" +#include "isar_prot.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "prot_fx.h" +#include "wmc_auto.h" +#include "basop_util.h" +#define Q31_BY_360 ( 5965232 ) // Q31 + + +/*------------------------------------------------------------------------- + * isar_splitBinPostRendOpen() + * + * + *------------------------------------------------------------------------*/ +ivas_error isar_splitBinPostRendOpen( + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE *hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const Word32 output_Fs ) +{ + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinRend; + ivas_error error; + Word16 ch; + + IF( ( hBinRend = (ISAR_BIN_HR_SPLIT_POST_REND_HANDLE) malloc( sizeof( ISAR_BIN_HR_SPLIT_POST_REND ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for bin split post renderer Module \n" ) ); + } + + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + hBinRend->cldfbSyn[ch] = NULL; + hBinRend->cldfbAna[ch] = NULL; + } +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + for ( int16_t i = 0; i < MAX_HEAD_ROT_POSES; i++ ) + { + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + hBinRend->cldfbSynReconsBinDec[i][ch] = NULL; + } + } +#endif + + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + IF( ( error = openCldfb_ivas_fx( &( hBinRend->cldfbSyn[ch] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK ) + { + return error; + } + IF( ( error = openCldfb_ivas_fx( &( hBinRend->cldfbAna[ch] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK ) + { + return error; + } + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + for ( int16_t i = 0; i < MAX_HEAD_ROT_POSES; i++ ) + { + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + if ( ( error = openCldfb_ivas_fx( &( hBinRend->cldfbSynReconsBinDec[i][ch] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } +#endif + hBinRend->cf_flag = 0; + set_fix_rotation_mat_fx( hBinRend->fix_pos_rot_mat_fx, pMultiBinPoseData ); + set_pose_types_fx( hBinRend->pose_type, pMultiBinPoseData ); + isar_split_rend_init_huff_cfg( &hBinRend->huff_cfg ); + *hBinHrSplitPostRend = hBinRend; + + return IVAS_ERR_OK; +} + +/*------------------------------------------------------------------------- + * isar_splitBinPostRendClose() + * + * + *------------------------------------------------------------------------*/ + +void isar_splitBinPostRendClose( + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE *hBinHrSplitPostRend ) +{ + Word16 ch; + + IF( ( *hBinHrSplitPostRend ) != NULL ) + { + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + IF( ( *hBinHrSplitPostRend )->cldfbSyn[ch] != NULL ) + { + deleteCldfb_ivas_fx( &( ( *hBinHrSplitPostRend )->cldfbSyn[ch] ) ); + ( *hBinHrSplitPostRend )->cldfbSyn[ch] = NULL; + } + IF( ( *hBinHrSplitPostRend )->cldfbAna[ch] != NULL ) + { + deleteCldfb_ivas_fx( &( ( *hBinHrSplitPostRend )->cldfbAna[ch] ) ); + ( *hBinHrSplitPostRend )->cldfbAna[ch] = NULL; + } + } +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + for ( int16_t i = 0; i < MAX_HEAD_ROT_POSES; i++ ) + { + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + if ( ( *hBinHrSplitPostRend )->cldfbSynReconsBinDec[i][ch] != NULL ) + { + deleteCldfb_ivas_fx( &( ( *hBinHrSplitPostRend )->cldfbSynReconsBinDec[i][ch] ) ); + ( *hBinHrSplitPostRend )->cldfbSynReconsBinDec[i][ch] = NULL; + } + } + } +#endif + + free( ( *hBinHrSplitPostRend ) ); + ( *hBinHrSplitPostRend ) = NULL; + } + + return; +} + +/*-----------------------------------------------------------------------------------------* + * Function ivas_split_rend_huffman_decode_opt() + * + * + *-----------------------------------------------------------------------------------------*/ + +static Word16 ivas_split_rend_huffman_decode_opt( + isar_split_rend_huffman_cfg_t *huff_cfg, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + const Word16 *idx_trav_list ) +{ + Word32 i, ind, code, num_bits, code_b, num_bits_read; + const Word32 *codebook; + + codebook = huff_cfg->codebook; + num_bits_read = 0; + move32(); + ind = L_sub( huff_cfg->codebook[0], 1 ); + code = 0; + move32(); + FOR( i = 0; i < huff_cfg->sym_len; i++ ) + { + codebook = codebook + idx_trav_list[i] * 3; + num_bits = codebook[1]; + move32(); + code_b = codebook[2]; + move32(); + num_bits_read = L_sub( num_bits, num_bits_read ); + code = L_shl( code, extract_l( num_bits_read ) ); + IF( GT_32( num_bits_read, 0 ) ) + { + code = L_or( code, ISAR_SPLIT_REND_BITStream_read_int32( pBits, num_bits_read ) ); + } + + IF( EQ_32( code, code_b ) ) + { + ind = codebook[0]; + move32(); + BREAK; + } + + num_bits_read = num_bits; + move32(); + codebook = huff_cfg->codebook; + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + assert( ind >= huff_cfg->codebook[0] ); +#endif + return extract_l( ind ); +} + +/*-----------------------------------------------------------------------------------------* + * Function ivas_split_rend_unquant_md() + * + * + *-----------------------------------------------------------------------------------------*/ + +static void ivas_split_rend_unquant_md_fx( + ISAR_BIN_HR_SPLIT_REND_MD_HANDLE hMd, + ISAR_SPLIT_REND_POSE_TYPE pose_type, + Word16 real_only, + Word32 fix_pos_rot_mat[][BINAURAL_CHANNELS], + const Word32 pred_quant_step ) +{ + Word16 ch1, ch2; + Word16 gd_idx_min; + + test(); + IF( EQ_32( pose_type, PRED_ONLY ) || EQ_32( pose_type, PRED_ROLL_ONLY ) ) + { + Word32 quantstep; + + quantstep = pred_quant_step; + move32(); + + IF( real_only ) + { + 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( ( ch1 == ch2 ) ? ONE_IN_Q31 : 0, Q6 ) ); /* Q25 */ + move32(); + } + } + + FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + hMd->pred_mat_im_fx[ch1][ch2] = 0; /* Q25 */ + move32(); + } + } + } + ELSE + { + 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(); + } + } + + FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + hMd->pred_mat_im_fx[ch1][ch2] = Mpy_32_16_1( quantstep, extract_l( L_shl( hMd->pred_mat_im_idx[ch1][ch2], Q9 ) ) ); /* Q25 */ + move32(); + } + } + } + } + ELSE IF( EQ_32( pose_type, COM_GAIN_ONLY ) ) + { + gd_idx_min = 0; + move16(); + hMd->gd_idx = add( hMd->gd_idx, gd_idx_min ); + hMd->gd_fx = Mpy_32_16_1( ISAR_SPLIT_REND_D_Q_STEP_Q31, extract_l( L_shl( hMd->gd_idx, Q9 ) ) ); /* Q25 */ + } + ELSE IF( EQ_32( pose_type, LR_GAIN_ONLY ) ) + { + gd_idx_min = 7; + move16(); + hMd->gd_idx = add( hMd->gd_idx, gd_idx_min ); + hMd->gd_fx = Mpy_32_16_1( ISAR_SPLIT_REND_PITCH_G_Q_STEP_Q31, extract_l( L_shl( hMd->gd_idx, Q9 ) ) ); /* Q25 */ + + hMd->gd2_idx = add( hMd->gd2_idx, gd_idx_min ); + hMd->gd2_fx = Mpy_32_16_1( ISAR_SPLIT_REND_PITCH_G_Q_STEP_Q31, extract_l( L_shl( hMd->gd2_idx, Q9 ) ) ); /* Q25 */ + } + ELSE + { + hMd->gd_fx = 0; /* Q25 */ + move32(); + } + + return; +} + +/*-----------------------------------------------------------------------------------------* + * Function isar_splitBinPostRendMdBase2Dec() + * + * + *-----------------------------------------------------------------------------------------*/ + +static void isar_splitBinPostRendMdBase2Dec( + ISAR_SPLIT_REND_BITS_HANDLE pBits, + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const Word16 num_subframes, + const Word16 pred_real_bands_yaw, + const Word16 pred_imag_bands_yaw, + const Word16 pred_quant_pnts_yaw, + const Word16 d_bands_yaw, + const Word16 bands_pitch, + const Word16 pred_real_bands_roll, + const Word16 pred_imag_bands_roll ) +{ + Word16 sf_idx, pos_idx, b, ch1, ch2; + Word16 min_pred_idx, min_gd_idx, min_p_gd_idx, pred_code_len, gd_code_len, p_gd_code_len; + Word16 min_pred_roll_idx, pred_roll_code_len; + Word16 pred_cb_idx; + Word16 code; + ISAR_BIN_HR_SPLIT_REND_MD_HANDLE hMd; + ISAR_BIN_HR_SPLIT_REND_HUFF_HANDLE pHuff_cfg; + + pHuff_cfg = &hBinHrSplitPostRend->huff_cfg; + + IF( EQ_16( pred_quant_pnts_yaw, ISAR_SPLIT_REND_PRED_63QUANT_PNTS ) ) + { + pred_cb_idx = 1; + move16(); + } + ELSE + { + pred_cb_idx = 0; + move16(); + } + min_pred_idx = extract_l( pHuff_cfg->pred[pred_cb_idx].codebook[0] ); + min_pred_roll_idx = extract_l( pHuff_cfg->pred_roll.codebook[0] ); + min_gd_idx = extract_l( pHuff_cfg->gd.codebook[0] ); + min_p_gd_idx = extract_l( pHuff_cfg->p_gd.codebook[0] ); + pred_code_len = pHuff_cfg->pred_base2_code_len[pred_cb_idx]; + move16(); + pred_roll_code_len = pHuff_cfg->pred_roll_base2_code_len; + move16(); + gd_code_len = pHuff_cfg->gd_base2_code_len; + move16(); + p_gd_code_len = pHuff_cfg->p_gd_base2_code_len; + move16(); + + FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + FOR( pos_idx = 0; pos_idx < sub( pMultiBinPoseData->num_poses, 1 ); pos_idx++ ) + { + IF( EQ_32( hBinHrSplitPostRend->pose_type[pos_idx], ANY_YAW ) ) + { + 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_re_idx[ch1][ch2] = add( code, min_pred_idx ); + move16(); + } + } + + 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(); + } + } + } + FOR( ; b < pred_real_bands_yaw; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + code = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, pred_code_len ) ); + hMd->pred_mat_re_idx[ch1][ch1] = add( code, min_pred_idx ); + move16(); + } + hMd->pred_mat_re_idx[0][1] = 0; + move16(); + hMd->pred_mat_re_idx[1][0] = 0; + move16(); + } + FOR( b = 0; b < d_bands_yaw; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + code = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, gd_code_len ) ); + hMd->gd_idx = add( code, min_gd_idx ); + move16(); + } + } + ELSE IF( EQ_32( hBinHrSplitPostRend->pose_type[pos_idx], PITCH_ONLY ) ) + { + FOR( b = 0; b < bands_pitch; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + code = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, p_gd_code_len ) ); + hMd->gd_idx = add( code, min_p_gd_idx ); + move16(); + code = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, p_gd_code_len ) ); + hMd->gd2_idx = add( code, min_p_gd_idx ); + move16(); + } + } + ELSE + { + 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_re_idx[ch1][ch2] = add( code, min_pred_roll_idx ); + move16(); + } + } + + 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(); + } + } + } + FOR( ; b < pred_real_bands_roll; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + code = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, pred_roll_code_len ) ); + hMd->pred_mat_re_idx[ch1][ch1] = add( code, min_pred_roll_idx ); + move16(); + } + hMd->pred_mat_re_idx[0][1] = 0; + move16(); + hMd->pred_mat_re_idx[1][0] = 0; + move16(); + } + } + } + } + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_splitBinPostRendMdHuffDec() + * + * + *-----------------------------------------------------------------------------------------*/ + +static void ivas_splitBinPostRendMdHuffDec( + ISAR_SPLIT_REND_BITS_HANDLE pBits, + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const Word16 num_subframes, + const Word16 pred_real_bands_yaw, + const Word16 pred_imag_bands_yaw, + const Word16 pred_quant_pnts_yaw, + const Word16 d_bands_yaw, + const Word16 bands_pitch, + const Word16 pred_real_bands_roll, + const Word16 pred_imag_bands_roll ) +{ + Word16 pos_idx, b, sf_idx; + Word16 ch1, ch2; + Word16 sym_adj_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word16 min_pred_idx, max_pred_idx; + Word16 min_pred_roll_idx, max_pred_roll_idx, pred_cb_idx; + ISAR_BIN_HR_SPLIT_REND_MD_HANDLE hMd; + ISAR_BIN_HR_SPLIT_REND_HUFF_HANDLE pHuff_cfg; + + pHuff_cfg = &hBinHrSplitPostRend->huff_cfg; + + IF( EQ_16( pred_quant_pnts_yaw, ISAR_SPLIT_REND_PRED_63QUANT_PNTS ) ) + { + pred_cb_idx = 1; + move16(); + } + ELSE + { + pred_cb_idx = 0; + move16(); + } + min_pred_idx = extract_l( pHuff_cfg->pred[pred_cb_idx].codebook[0] ); + max_pred_idx = extract_l( pHuff_cfg->pred[pred_cb_idx].codebook[( pred_quant_pnts_yaw - 1 ) * 3] ); + + min_pred_roll_idx = extract_l( pHuff_cfg->pred_roll.codebook[0] ); + max_pred_roll_idx = extract_l( pHuff_cfg->pred_roll.codebook[( ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 ) * 3] ); + + FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + FOR( pos_idx = 0; pos_idx < sub( pMultiBinPoseData->num_poses, 1 ); pos_idx++ ) + { + IF( EQ_32( hBinHrSplitPostRend->pose_type[pos_idx], ANY_YAW ) ) + { + 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_re_idx, 1, min_pred_idx, max_pred_idx ); + + 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 ); + } + FOR( ; b < pred_real_bands_yaw; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + sym_adj_idx[ch1][ch1] = 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[1][0] = 0; + move16(); + sym_adj_idx[0][1] = 0; + move16(); + isar_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_re_idx, -1, min_pred_idx, max_pred_idx ); + } + FOR( b = 0; b < d_bands_yaw; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + hMd->gd_idx = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->gd, pBits, pHuff_cfg->gd_idx_trav ); + // hMd->gd_idx = ivas_split_rend_huffman_decode( &pHuff_cfg->gd, pBits ); + } + } + ELSE IF( hBinHrSplitPostRend->pose_type[pos_idx] == PITCH_ONLY ) + { + FOR( b = 0; b < bands_pitch; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + hMd->gd_idx = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->p_gd, pBits, pHuff_cfg->p_gd_idx_trav ); + // hMd->gd_idx = ivas_split_rend_huffman_decode( &pHuff_cfg->gd, pBits ); + + hMd->gd2_idx = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->p_gd, pBits, pHuff_cfg->p_gd_idx_trav ); + } + } + ELSE + { + 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_re_idx, 1, min_pred_roll_idx, max_pred_roll_idx ); + + 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 ); + } + FOR( ; b < pred_real_bands_roll; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + + FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + sym_adj_idx[ch1][ch1] = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->pred_roll, pBits, pHuff_cfg->pred_roll_idx_trav ); + move16(); + } + sym_adj_idx[1][0] = 0; + move16(); + sym_adj_idx[0][1] = 0; + move16(); + isar_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_re_idx, -1, min_pred_roll_idx, max_pred_roll_idx ); + } + } + } + } + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function isar_splitBinPostRendMdDec() + * + * + *-----------------------------------------------------------------------------------------*/ + +void isar_splitBinPostRendMdDec_fx( + ISAR_SPLIT_REND_BITS_HANDLE pBits, + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + , + BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend +#endif +) +{ + Word16 pos_idx, b, sf_idx, num_subframes, ch1; + 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]; + Word16 num_quant_strats; + 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 + Word32 pred_quantstep_yaw_fx[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; // Q31 +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + Word16 ch1, ch2; +#endif + ISAR_BIN_HR_SPLIT_REND_MD_HANDLE hMd; + ISAR_SPLIT_REND_CONFIG_DATA split_rend_config; + ISAR_SPLIT_REND_ROT_AXIS rot_axis; + Word16 ro_md_flag, num_bits, axis_code; + + hBinHrSplitPostRend->low_Res = 1; + move16(); + + 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 ) ); + + num_bits = isar_renderSplitGetRot_axisNumBits( split_rend_config.dof ); + if ( num_bits > 0 ) + { + axis_code = (int16_t) ISAR_SPLIT_REND_BITStream_read_int32( pBits, (int32_t) num_bits ); + } + else + { + axis_code = 0; + } + 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 ); + isar_renderSplitGetMultiBinPoseData_fx( &split_rend_config, pMultiBinPoseData, rot_axis ); + + set_fix_rotation_mat_fx( hBinHrSplitPostRend->fix_pos_rot_mat_fx, pMultiBinPoseData ); + set_pose_types_fx( hBinHrSplitPostRend->pose_type, pMultiBinPoseData ); + + num_subframes = EQ_16( hBinHrSplitPostRend->low_Res, 0 ) ? MAX_PARAM_SPATIAL_SUBFRAMES : 1; + move16(); + FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + Word16 angle; + + hBinHrSplitPostRend->QuaternionsPre[sf_idx].w_fx = -12582912; /* -3.0f in Q22 */ + move32(); + + angle = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_HEAD_POSE_BITS ) ); + angle = sub( angle, 180 ); + hBinHrSplitPostRend->QuaternionsPre[sf_idx].x_fx = L_shl( angle, Q22 ); /* Q22 */ + move32(); + + angle = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_HEAD_POSE_BITS ) ); + angle = sub( angle, 180 ); + hBinHrSplitPostRend->QuaternionsPre[sf_idx].y_fx = L_shl( angle, Q22 ); /* Q22 */ + move32(); + + angle = extract_l( ISAR_SPLIT_REND_BITStream_read_int32( pBits, ISAR_SPLIT_REND_HEAD_POSE_BITS ) ); + angle = sub( angle, 180 ); + hBinHrSplitPostRend->QuaternionsPre[sf_idx].z_fx = L_shl( angle, Q22 ); /* Q22 */ + move32(); + + hBinHrSplitPostRend->QuaternionsPre[sf_idx].q_fact = Q22; + move32(); + } + + 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 ); + 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 ); + + IF( EQ_32( is_huff_coding, 0 ) ) + { + isar_splitBinPostRendMdBase2Dec( + pBits, hBinHrSplitPostRend, + pMultiBinPoseData, + num_subframes, + pred_real_bands_yaw[quant_strat], + pred_imag_bands_yaw[quant_strat], + pred_quant_pnts_yaw[quant_strat], + d_bands_yaw[quant_strat], + bands_pitch[quant_strat], + pred_real_bands_roll[quant_strat], + pred_imag_bands_roll[quant_strat] ); + } + ELSE + { + ivas_splitBinPostRendMdHuffDec( + pBits, hBinHrSplitPostRend, + pMultiBinPoseData, + num_subframes, + pred_real_bands_yaw[quant_strat], + pred_imag_bands_yaw[quant_strat], + pred_quant_pnts_yaw[quant_strat], + d_bands_yaw[quant_strat], + bands_pitch[quant_strat], + pred_real_bands_roll[quant_strat], + pred_imag_bands_roll[quant_strat] ); + } +#ifdef SPLIT_MD_CODING_DEBUG + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + int16_t val, ch2, val_ref; + char filename[200] = "split_md_debug_indices.bin"; + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + if ( hBinHrSplitPostRend->pose_type[pos_idx] == ANY_YAW ) + { + for ( b = 0; b < pred_real_bands_yaw[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_idx[ch1][ch2]; + dbgread( &val_ref, sizeof( int16_t ), 1, filename ); + if ( abs( val_ref - val ) > 0 ) + { + assert( 0 ); + } + } + } + } + for ( b = 0; b < pred_imag_bands_yaw[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_idx[ch1][ch2]; + dbgread( &val_ref, sizeof( int16_t ), 1, filename ); + if ( abs( val_ref - val ) > 0 ) + { + assert( 0 ); + } + } + } + } + for ( b = 0; b < d_bands_yaw[quant_strat]; b++ ) + { + val = hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b].gd_idx; + dbgread( &val_ref, sizeof( int16_t ), 1, filename ); + if ( abs( val_ref - val ) > 0 ) + { + assert( 0 ); + } + } + } + else if ( hBinHrSplitPostRend->pose_type[pos_idx] == PITCH_ONLY ) + { + for ( b = 0; b < bands_pitch[quant_strat]; b++ ) + { + val = hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b].gd_idx; + dbgread( &val_ref, sizeof( int16_t ), 1, filename ); + if ( abs( val_ref - val ) > 0 ) + { + assert( 0 ); + } + val = hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b].gd2_idx; + dbgread( &val_ref, sizeof( int16_t ), 1, filename ); + if ( abs( val_ref - val ) > 0 ) + { + assert( 0 ); + } + } + } + else + { + for ( b = 0; b < pred_real_bands_roll[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_idx[ch1][ch2]; + dbgread( &val_ref, sizeof( int16_t ), 1, filename ); + if ( abs( val_ref - val ) > 0 ) + { + assert( 0 ); + } + } + } + } + for ( b = 0; b < pred_imag_bands_roll[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_idx[ch1][ch2]; + dbgread( &val_ref, sizeof( int16_t ), 1, filename ); + if ( abs( val_ref - val ) > 0 ) + { + assert( 0 ); + } + } + } + } + } + } + } +#endif + + FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + FOR( pos_idx = 0; pos_idx < sub( pMultiBinPoseData->num_poses, 1 ); pos_idx++ ) + { + IF( EQ_32( hBinHrSplitPostRend->pose_type[pos_idx], ANY_YAW ) ) + { + FOR( b = 0; b < pred_imag_bands_yaw[quant_strat]; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_unquant_md_fx( hMd, PRED_ONLY, 0, hBinHrSplitPostRend->fix_pos_rot_mat_fx[pos_idx], pred_quantstep_yaw_fx[quant_strat] ); + } + FOR( ; b < pred_real_bands_yaw[quant_strat]; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_unquant_md_fx( hMd, PRED_ONLY, 1, hBinHrSplitPostRend->fix_pos_rot_mat_fx[pos_idx], pred_quantstep_yaw_fx[quant_strat] ); + } + FOR( ; b < MAX_SPLIT_REND_MD_BANDS; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + set32_fx( hMd->pred_mat_re_fx[ch1], 0, BINAURAL_CHANNELS ); + set32_fx( hMd->pred_mat_im_fx[ch1], 0, BINAURAL_CHANNELS ); + hMd->pred_mat_re_fx[ch1][ch1] = L_shl( 1, Q25 ); /* 1.0f in Q25 */ + move32(); + } + } + FOR( b = 0; b < d_bands_yaw[quant_strat]; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_unquant_md_fx( hMd, COM_GAIN_ONLY, 1, hBinHrSplitPostRend->fix_pos_rot_mat_fx[pos_idx], 0 ); + } + FOR( ; b < MAX_SPLIT_REND_MD_BANDS; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + hMd->gd_fx = 0; + move32(); + } + } + ELSE IF( EQ_32( hBinHrSplitPostRend->pose_type[pos_idx], PITCH_ONLY ) ) + { + FOR( b = 0; b < bands_pitch[quant_strat]; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_unquant_md_fx( hMd, LR_GAIN_ONLY, 1, hBinHrSplitPostRend->fix_pos_rot_mat_fx[pos_idx], 0 ); + } + FOR( ; b < MAX_SPLIT_REND_MD_BANDS; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + hMd->gd_fx = L_shl( 1, Q25 ); /* 1.0f in Q25 */ + move32(); + hMd->gd2_fx = L_shl( 1, Q25 ); /* 1.0f in Q25 */ + move32(); + } + } + ELSE + { + FOR( b = 0; b < pred_imag_bands_roll[quant_strat]; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_unquant_md_fx( hMd, PRED_ROLL_ONLY, 0, hBinHrSplitPostRend->fix_pos_rot_mat_fx[pos_idx], ISAR_SPLIT_REND_PRED_ROLL_Q_STEP_Q31 ); + } + FOR( ; b < pred_real_bands_roll[quant_strat]; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_unquant_md_fx( hMd, PRED_ROLL_ONLY, 1, hBinHrSplitPostRend->fix_pos_rot_mat_fx[pos_idx], ISAR_SPLIT_REND_PRED_ROLL_Q_STEP_Q31 ); + } + FOR( ; b < MAX_SPLIT_REND_MD_BANDS; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + set32_fx( hMd->pred_mat_re_fx[ch1], 0, BINAURAL_CHANNELS ); + set32_fx( hMd->pred_mat_im_fx[ch1], 0, BINAURAL_CHANNELS ); + hMd->pred_mat_re_fx[ch1][ch1] = L_shl( 1, Q25 ); /* 1.0f in Q25 */ + move32(); + } + } + } + } + } +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + float val; + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + if ( hBinHrSplitPostRend->pose_type[pos_idx] == ANY_YAW ) + { + for ( b = 0; b < pred_real_bands_yaw[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_idx[ch1][ch2]; + if ( fabsf( hMd->pred_mat_re_idx[ch1][ch2] - val ) > 1e-20 ) + { + assert( 0 ); + } + } + } + } + for ( b = 0; b < pred_imag_bands_yaw[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_idx[ch1][ch2]; + if ( fabsf( hMd->pred_mat_im_idx[ch1][ch2] - val ) > 1e-20 ) + { + assert( 0 ); + } + } + } + } + for ( b = 0; b < d_bands_yaw[quant_strat]; b++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd_idx; + if ( fabsf( hMd->gd_idx - val ) > 1e-20 ) + { + assert( 0 ); + } + } + } + else if ( hBinHrSplitPostRend->pose_type[pos_idx] == PITCH_ONLY ) + { + for ( b = 0; b < bands_pitch[quant_strat]; b++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd_idx; + if ( fabsf( hMd->gd_idx - val ) > 1e-20 ) + { + assert( 0 ); + } + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd2_idx; + if ( fabsf( hMd->gd2_idx - val ) > 1e-20 ) + { + assert( 0 ); + } + } + } + else + { + for ( b = 0; b < pred_real_bands_roll[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_idx[ch1][ch2]; + if ( fabsf( hMd->pred_mat_re_idx[ch1][ch2] - val ) > 1e-20 ) + { + assert( 0 ); + } + } + } + } + for ( b = 0; b < pred_imag_bands_roll[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_idx[ch1][ch2]; + if ( fabsf( hMd->pred_mat_im_idx[ch1][ch2] - val ) > 1e-20 ) + { + assert( 0 ); + } + } + } + } + } + } + } +#endif + + return; +} + +/*-----------------------------------------------------------------------------------------* + * Function wrap_around_angle() + * + * + *-----------------------------------------------------------------------------------------*/ +static void wrap_around_angle_fx( + Word32 *a_fx ) +{ + IF( GT_32( ( *a_fx ), 754974720 /*180.f in Q22*/ ) ) + { + *a_fx = L_sub( ( *a_fx ), 1509949440 /*360.f in Q22*/ ); + } + ELSE IF( LT_32( ( *a_fx ), L_negate( 754974720 /*180.f in Q22*/ ) ) ) + { + *a_fx = L_add( *a_fx, 1509949440 /*360.f in Q22*/ ); + } + return; +} + +/*-----------------------------------------------------------------------------------------* + * Function wrap_around_angle() + * + * + *-----------------------------------------------------------------------------------------*/ +static void wrap_around_ypr_fx( + IVAS_QUATERNION *Quaternions ) +{ + /*only if quat is actually yaw, pitch , roll angles*/ + IF( EQ_32( Quaternions->w_fx, L_negate( 12582912 /*3.0f in Q22*/ ) ) ) + { + wrap_around_angle_fx( &Quaternions->x_fx ); + wrap_around_angle_fx( &Quaternions->y_fx ); + wrap_around_angle_fx( &Quaternions->z_fx ); + } + return; +} + +/*-----------------------------------------------------------------------------------------* + * Function wrap_around_angle() + * + * + *-----------------------------------------------------------------------------------------*/ +static Word32 get_interp_fact_fx( + Word32 p_fx[MAX_HEAD_ROT_POSES], + const Word32 p_t_fx, + const Word16 ind[2], + Word16 *exp ) +{ + Word32 n_fx, d_fx, interp_fact_fx; + *exp = 31; + move16(); + IF( NE_16( ind[0], ind[1] ) ) + { + n_fx = L_sub( p_fx[ind[0]], p_fx[ind[1]] ); + move32(); + d_fx = L_sub( p_fx[ind[0]], p_t_fx ); + move32(); + interp_fact_fx = L_deposit_h( BASOP_Util_Divide3232_Scale( d_fx, n_fx, exp ) ); // Q31-exp + move32(); + IF( LT_32( interp_fact_fx, 0 ) ) + { + d_fx = max( -( MAX_EXTRAPOLATION_ANGLE_Q22 ), ( min( ( MAX_EXTRAPOLATION_ANGLE_Q22 ), d_fx ) ) ); + move32(); + n_fx = L_deposit_h( getSineWord16R2( extract_l( L_shr( Mpy_32_32( n_fx, Q31_BY_360 ), 7 ) ) ) ); + move32(); + d_fx = L_deposit_h( getSineWord16R2( extract_l( L_shr( Mpy_32_32( d_fx, Q31_BY_360 ), 7 ) ) ) ); + move32(); + interp_fact_fx = L_deposit_h( BASOP_Util_Divide3232_Scale( d_fx, n_fx, exp ) ); // Q31-exp + move32(); + } + } + ELSE + { + interp_fact_fx = 0; + move32(); + } + return interp_fact_fx; +} + +/*-----------------------------------------------------------------------------------------* + * Function get_nearest_pose_ind() + * + * + *-----------------------------------------------------------------------------------------*/ +static void get_nearest_pose_ind_fx( + Word32 p[MAX_HEAD_ROT_POSES], + const Word32 p_t, + Word16 ind[2], + const Word16 num_poses ) +{ + Word32 min_diff, diff; + Word16 pos_idx; + + ind[0] = 0; + ind[1] = 0; + min_diff = 1509949440; // 360 in Q22 + + /*find the closest pose from assumed poses*/ + FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) + { + diff = L_abs( L_sub( p_t, p[pos_idx] ) ); + IF( LT_32( diff, min_diff ) ) + { + ind[0] = pos_idx; + min_diff = diff; + } + } + + min_diff = 1509949440; // 360 in Q22 + FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) + { + diff = L_abs( L_sub( p_t, p[pos_idx] ) ); + IF( LT_32( diff, min_diff ) && + GT_32( L_abs( L_sub( p[pos_idx], p[ind[0]] ) ), EPSILON_FX ) ) + { + ind[1] = pos_idx; + min_diff = diff; + } + } + + return; +} + +/*-----------------------------------------------------------------------------------------* + * Function get_interpolation_vars() + * + * + *-----------------------------------------------------------------------------------------*/ +static void get_interpolation_vars( + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const IVAS_QUATERNION *Quaternions_ref, + const IVAS_QUATERNION *Quaternions_act, + int16_t interp_yaw_pose_idx[2], + int16_t interp_pitch_pose_idx[2], + int16_t interp_roll_pose_idx[2], + Word32 *interp_yaw_fact_fx, + Word32 *interp_pitch_fact_fx, + Word32 *interp_roll_fact_fx, + Word16 *q_yaw, + Word16 *q_pitch, + Word16 *q_roll ) +{ + IVAS_QUATERNION quaternions_diff, quaternions_ref_euler, quaternions_act_euler, quaternions_ref_q22, quaternions_act_q22; + Word32 y_fx[MAX_HEAD_ROT_POSES], p_fx[MAX_HEAD_ROT_POSES], r_fx[MAX_HEAD_ROT_POSES]; + + int16_t pos_idx, num_poses; + Word16 exp; + + quaternions_diff.x_fx = 0; + quaternions_diff.y_fx = 0; + quaternions_diff.z_fx = 0; + + num_poses = pMultiBinPoseData->num_poses; + + FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) + { + quaternions_diff.x_fx = pMultiBinPoseData->relative_head_poses_fx[pos_idx][0]; + quaternions_diff.y_fx = pMultiBinPoseData->relative_head_poses_fx[pos_idx][1]; + quaternions_diff.z_fx = pMultiBinPoseData->relative_head_poses_fx[pos_idx][2]; + y_fx[pos_idx] = quaternions_diff.x_fx; + p_fx[pos_idx] = quaternions_diff.y_fx; + r_fx[pos_idx] = quaternions_diff.z_fx; + } + + /*interpolation if actual pose is not same as one of assumed poses*/ + /*get the deviation*/ + modify_Quat_q_fx( Quaternions_ref, &quaternions_ref_q22, Q22 ); + modify_Quat_q_fx( Quaternions_act, &quaternions_act_q22, Q22 ); + Quat2EulerDegree_fx( quaternions_ref_q22, &quaternions_ref_euler.z_fx, &quaternions_ref_euler.y_fx, &quaternions_ref_euler.x_fx ); /*order in Quat2Euler seems to be reversed ?*/ + Quat2EulerDegree_fx( quaternions_act_q22, &quaternions_act_euler.z_fx, &quaternions_act_euler.y_fx, &quaternions_act_euler.x_fx ); + + /*order in Quat2Euler seems to be reversed ?*/ + quaternions_diff.w_fx = -12582912; /*euler*/ //-3 in Q22 + quaternions_diff.x_fx = L_sub( quaternions_act_euler.x_fx, quaternions_ref_euler.x_fx ); + quaternions_diff.y_fx = L_sub( quaternions_act_euler.y_fx, quaternions_ref_euler.y_fx ); + quaternions_diff.z_fx = L_sub( quaternions_act_euler.z_fx, quaternions_ref_euler.z_fx ); + wrap_around_ypr_fx( &quaternions_diff ); + interp_yaw_pose_idx[0] = 0; + interp_yaw_pose_idx[1] = 0; + IF( GT_32( L_abs( quaternions_diff.x_fx ), EPSILON_FX ) ) + { + get_nearest_pose_ind_fx( y_fx, quaternions_diff.x_fx, interp_yaw_pose_idx, num_poses ); + } + *interp_yaw_fact_fx = get_interp_fact_fx( y_fx, quaternions_diff.x_fx, interp_yaw_pose_idx, &exp ); + *q_yaw = Q31 - exp; + + interp_pitch_pose_idx[0] = 0; + interp_pitch_pose_idx[1] = 0; + IF( GT_32( L_abs( quaternions_diff.y_fx ), EPSILON_FX ) ) + { + get_nearest_pose_ind_fx( p_fx, quaternions_diff.y_fx, interp_pitch_pose_idx, num_poses ); + } + *interp_pitch_fact_fx = get_interp_fact_fx( p_fx, quaternions_diff.y_fx, interp_pitch_pose_idx, &exp ); + *q_pitch = Q31 - exp; + + interp_roll_pose_idx[0] = 0; + interp_roll_pose_idx[1] = 0; + IF( GT_32( L_abs( quaternions_diff.z_fx ), EPSILON_FX ) ) + { + get_nearest_pose_ind_fx( r_fx, quaternions_diff.z_fx, interp_roll_pose_idx, num_poses ); + } + *interp_roll_fact_fx = get_interp_fact_fx( r_fx, quaternions_diff.z_fx, interp_roll_pose_idx, &exp ); + *q_roll = Q31 - exp; + + return; +} + +/*-----------------------------------------------------------------------------------------* + * Function interpolate_pred_matrix() + * + * + *-----------------------------------------------------------------------------------------*/ +static void interpolate_pred_matrix_fx( + ISAR_BIN_HR_SPLIT_REND_MD rot_md[][MAX_SPLIT_MD_SUBFRAMES][MAX_SPLIT_REND_MD_BANDS], + const Word16 sf_idx, + const Word16 band_idx, + const Word16 ind[2], + const Word32 interp_fact_fx, + Word16 intrep_norm, + Word32 mat_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + Word16 *exp_mat_re, + Word32 mat_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + Word16 *exp_mat_im ) +{ + Word16 ch_idx1, ch_idx2; + ISAR_BIN_HR_SPLIT_REND_MD *pRot_md; + // ord16 intrep_norm = Q_factor_L(interp_fact); + // ord32 interp_fact_fx = floatToFixed(interp_fact, intrep_norm); + Word32 diff_fx; + Word32 mix_mat_re1_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 mix_mat_im1_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 mix_mat_re2_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 mix_mat_im2_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word16 buff_exp_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS], buff_exp_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + + FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + set32_fx( mix_mat_re1_fx[ch_idx1], 0, BINAURAL_CHANNELS ); + set32_fx( mix_mat_im1_fx[ch_idx1], 0, BINAURAL_CHANNELS ); + mix_mat_re1_fx[ch_idx1][ch_idx1] = ONE_IN_Q25; + + set32_fx( mix_mat_re2_fx[ch_idx1], 0, BINAURAL_CHANNELS ); + set32_fx( mix_mat_im2_fx[ch_idx1], 0, BINAURAL_CHANNELS ); + mix_mat_re2_fx[ch_idx1][ch_idx1] = ONE_IN_Q25; + } + + IF( ind[0] != 0 ) + { + pRot_md = &rot_md[ind[0] - 1][sf_idx][band_idx]; + + FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + FOR( ch_idx2 = 0; ch_idx2 < BINAURAL_CHANNELS; ch_idx2++ ) + { + mix_mat_re1_fx[ch_idx1][ch_idx2] = pRot_md->pred_mat_re_fx[ch_idx1][ch_idx2]; + mix_mat_im1_fx[ch_idx1][ch_idx2] = pRot_md->pred_mat_im_fx[ch_idx1][ch_idx2]; + } + } + } + + IF( ind[1] != 0 ) + { + pRot_md = &rot_md[ind[1] - 1][sf_idx][band_idx]; + + FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + FOR( ch_idx2 = 0; ch_idx2 < BINAURAL_CHANNELS; ch_idx2++ ) + { + mix_mat_re2_fx[ch_idx1][ch_idx2] = pRot_md->pred_mat_re_fx[ch_idx1][ch_idx2]; + mix_mat_im2_fx[ch_idx1][ch_idx2] = pRot_md->pred_mat_im_fx[ch_idx1][ch_idx2]; + } + } + } + + Word16 final_exp = 0, mat_re_exp = 0, mat_im_exp = 0; + FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + FOR( ch_idx2 = 0; ch_idx2 < BINAURAL_CHANNELS; ch_idx2++ ) + { + final_exp = 0; + diff_fx = BASOP_Util_Add_Mant32Exp( mix_mat_re1_fx[ch_idx1][ch_idx2], 31 - Q25, L_negate( mix_mat_re2_fx[ch_idx1][ch_idx2] ), 31 - Q25, &final_exp ); + Word64 tmp1 = W_mult_32_32( diff_fx, interp_fact_fx ); // final_exp + (31 - intrep_norm) + Word16 tmp1_nrm = W_norm( tmp1 ); + Word32 tmp1_final = W_extract_h( W_shl( tmp1, tmp1_nrm ) ); // final_exp + (31 - intrep_norm) - tmp1_nrm + mat_re_exp = 0; + mat_re_fx[ch_idx1][ch_idx2] = BASOP_Util_Add_Mant32Exp( mix_mat_re1_fx[ch_idx1][ch_idx2], 31 - Q25, L_negate( tmp1_final ), final_exp + ( 31 - intrep_norm ) - tmp1_nrm, &mat_re_exp ); + buff_exp_re[ch_idx1][ch_idx2] = mat_re_exp; + + final_exp = 0; + diff_fx = BASOP_Util_Add_Mant32Exp( mix_mat_im1_fx[ch_idx1][ch_idx2], 31 - Q25, L_negate( mix_mat_im2_fx[ch_idx1][ch_idx2] ), 31 - Q25, &final_exp ); + Word64 tmp2 = W_mult_32_32( diff_fx, interp_fact_fx ); // final_exp + (31 - intrep_norm) + Word16 tmp2_nrm = W_norm( tmp2 ); + Word32 tmp2_final = W_extract_h( W_shl( tmp2, tmp2_nrm ) ); // final_exp + (31 - intrep_norm) - tmp1_nrm + mat_im_exp = 0; + mat_im_fx[ch_idx1][ch_idx2] = BASOP_Util_Add_Mant32Exp( mix_mat_im1_fx[ch_idx1][ch_idx2], 31 - Q25, L_negate( tmp2_final ), final_exp + ( 31 - intrep_norm ) - tmp2_nrm, &mat_im_exp ); + buff_exp_im[ch_idx1][ch_idx2] = mat_im_exp; + } + } + + Word16 max_exp_re = MIN16B; + Word16 max_exp_im = MIN16B; + FOR( Word16 i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( Word16 j = 0; j < BINAURAL_CHANNELS; j++ ) + { + max_exp_re = max( max_exp_re, buff_exp_re[i][j] ); + max_exp_im = max( max_exp_im, buff_exp_im[i][j] ); + } + } + FOR( Word16 i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( Word16 j = 0; j < BINAURAL_CHANNELS; j++ ) + { + mat_re_fx[i][j] = L_shr( mat_re_fx[i][j], max_exp_re - buff_exp_re[i][j] ); + mat_im_fx[i][j] = L_shr( mat_im_fx[i][j], max_exp_im - buff_exp_im[i][j] ); + } + } + + *exp_mat_re = max_exp_re; + *exp_mat_im = max_exp_im; + + return; +} +/*-----------------------------------------------------------------------------------------* + * Function interpolate_rend_md() + * + * + *-----------------------------------------------------------------------------------------*/ + +static void interpolate_rend_md_fx( + ISAR_BIN_HR_SPLIT_REND_MD rot_md[][MAX_SPLIT_MD_SUBFRAMES][MAX_SPLIT_REND_MD_BANDS], + Word32 mix_mat_re_fx[][BINAURAL_CHANNELS], + Word16 *exp_mix_mat_re, + Word32 mix_mat_im_fx[][BINAURAL_CHANNELS], + Word16 *exp_mix_mat_im, + Word32 *gd_int_fx, + Word16 *exp_gd_int, + const Word16 sf_idx, + const Word16 band_idx, + const Word16 interp_yaw_pose_idx[2], + const Word16 interp_pitch_pose_idx[2], + const Word16 interp_roll_pose_idx[2], + const Word32 interp_yaw_fact_fx, + Word16 Q_yaw, + const Word32 interp_pitch_fact_fx, + Word16 Q_pitch, + const Word32 interp_roll_fact_fx, + Word16 Q_roll ) +{ + Word16 ch_idx1, idx1, idx2; + + Word32 mix_mat_re1_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 mix_mat_im1_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 mix_mat_re3_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 mix_mat_im3_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + + Word16 exp_mix_mat_re1 = 0; + Word16 exp_mix_mat_im1 = 0; + Word16 exp_mix_mat_re3 = 0; + Word16 exp_mix_mat_im3 = 0; + + Word16 ch_idx2; + Word16 exp_pitch_gain_r, exp_pitch_gain_l; + Word32 gd1_fx = 0, gd2_fx = 0; + Word32 gd3_fx = 0, gd4_fx = 0; + Word32 pitch_gain_r_fx, pitch_gain_l_fx; + Word32 diff_fx; + + Word16 exp_mat_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word16 exp_mat_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + + idx1 = interp_yaw_pose_idx[0]; + idx2 = interp_yaw_pose_idx[1]; + + + IF( NE_16( idx1, 0 ) || NE_16( idx2, 0 ) ) + { + interpolate_pred_matrix_fx( rot_md, sf_idx, band_idx, interp_yaw_pose_idx, interp_yaw_fact_fx, Q_yaw, mix_mat_re_fx, exp_mix_mat_re, mix_mat_im_fx, exp_mix_mat_im ); + + IF( NE_16( idx1, 0 ) ) + { + gd1_fx = rot_md[idx1 - 1][sf_idx][band_idx].gd_fx; // Q25 + } + + IF( NE_16( idx2, 0 ) ) + { + gd2_fx = rot_md[idx2 - 1][sf_idx][band_idx].gd_fx; + } + diff_fx = L_sub( gd1_fx, gd2_fx ); // Q25 + Word32 tmp1 = Mpy_32_32( diff_fx, interp_yaw_fact_fx ); // 6+Q_yaw + Word16 exp_tmp2 = 0; + Word32 tmp2 = BASOP_Util_Add_Mant32Exp( diff_fx, 31 - Q25, L_negate( tmp1 ), 6 + Q_yaw, &exp_tmp2 ); + *gd_int_fx = tmp2; + *exp_gd_int = exp_tmp2; + } + ELSE + { + /*P = P'*/ + FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + FOR( Word16 j = 0; j < BINAURAL_CHANNELS; j++ ) + { + mix_mat_re_fx[ch_idx1][j] = 0; + mix_mat_im_fx[ch_idx1][j] = 0; + mix_mat_re_fx[ch_idx1][ch_idx1] = ONE_IN_Q25; + } + } + + *exp_mix_mat_re = 6; + *exp_mix_mat_im = 6; + + *gd_int_fx = 0; + *exp_gd_int = 0; + } + + idx1 = interp_pitch_pose_idx[0]; + idx2 = interp_pitch_pose_idx[1]; + IF( NE_16( idx1, 0 ) || NE_16( idx2, 0 ) ) + { + gd1_fx = ONE_IN_Q25; + gd2_fx = ONE_IN_Q25; + + gd3_fx = ONE_IN_Q25; + gd4_fx = ONE_IN_Q25; + + IF( NE_16( idx1, 0 ) ) + { + gd1_fx = rot_md[idx1 - 1][sf_idx][band_idx].gd_fx; + gd3_fx = rot_md[idx1 - 1][sf_idx][band_idx].gd2_fx; + } + IF( NE_16( idx2, 0 ) ) + { + gd2_fx = rot_md[idx2 - 1][sf_idx][band_idx].gd_fx; + gd4_fx = rot_md[idx2 - 1][sf_idx][band_idx].gd2_fx; + } + + diff_fx = L_sub( gd1_fx, gd2_fx ); // Q25 + IF( EQ_32( diff_fx, -1 ) ) + { + diff_fx = 0; + } + Word32 tmp = Mpy_32_32( diff_fx, interp_pitch_fact_fx ); // 6 + Q_pitch + Word16 exp_tmp1 = 0; + Word32 tmp1 = BASOP_Util_Add_Mant32Exp( gd1_fx, 31 - Q25, L_negate( tmp ), 6 + 31 - Q_pitch, &exp_tmp1 ); + pitch_gain_l_fx = tmp1; + pitch_gain_l_fx = max( 0, pitch_gain_l_fx ); + exp_pitch_gain_l = exp_tmp1; + + diff_fx = L_sub( gd3_fx, gd4_fx ); + IF( EQ_32( diff_fx, -1 ) ) + { + diff_fx = 0; + } + tmp = Mpy_32_32( diff_fx, interp_pitch_fact_fx ); + exp_tmp1 = 0; + tmp1 = BASOP_Util_Add_Mant32Exp( gd3_fx, 31 - Q25, L_negate( tmp ), 6 + 31 - Q_pitch, &exp_tmp1 ); + pitch_gain_r_fx = tmp1; + pitch_gain_r_fx = max( 0, pitch_gain_r_fx ); + exp_pitch_gain_r = exp_tmp1; + + FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + mix_mat_re_fx[ch_idx1][0] = Mpy_32_32( mix_mat_re_fx[ch_idx1][0], pitch_gain_l_fx ); // exp_mix_mat_re + exp_pitch_gain_l + exp_mat_re[ch_idx1][0] = *exp_mix_mat_re + exp_pitch_gain_l; + mix_mat_re_fx[ch_idx1][1] = Mpy_32_32( mix_mat_re_fx[ch_idx1][1], pitch_gain_r_fx ); // exp_mix_mat_re + exp_pitch_gain_r + exp_mat_re[ch_idx1][1] = *exp_mix_mat_re + exp_pitch_gain_r; + mix_mat_im_fx[ch_idx1][0] = Mpy_32_32( mix_mat_im_fx[ch_idx1][0], pitch_gain_l_fx ); // exp_mix_mat_im + exp_pitch_gain_l + exp_mat_im[ch_idx1][0] = *exp_mix_mat_im + exp_pitch_gain_l; + mix_mat_im_fx[ch_idx1][1] = Mpy_32_32( mix_mat_im_fx[ch_idx1][1], pitch_gain_r_fx ); // exp_mix_mat_im + exp_pitch_gain_r + exp_mat_im[ch_idx1][1] = *exp_mix_mat_im + exp_pitch_gain_r; + } + + Word16 max_exp_re = MIN16B, max_exp_im = MIN16B; + FOR( Word16 i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( Word16 j = 0; j < BINAURAL_CHANNELS; j++ ) + { + max_exp_re = max( max_exp_re, exp_mat_re[i][j] ); + max_exp_im = max( max_exp_im, exp_mat_im[i][j] ); + } + } + + FOR( Word16 i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( Word16 j = 0; j < BINAURAL_CHANNELS; j++ ) + { + mix_mat_re_fx[i][j] = L_shr( mix_mat_re_fx[i][j], max_exp_re - exp_mat_re[i][j] ); + mix_mat_im_fx[i][j] = L_shr( mix_mat_im_fx[i][j], max_exp_im - exp_mat_im[i][j] ); + } + } + + *exp_mix_mat_re = max_exp_re; + *exp_mix_mat_im = max_exp_im; + } + ELSE + { + pitch_gain_l_fx = ONE_IN_Q25; + pitch_gain_r_fx = ONE_IN_Q25; + } + + + idx1 = interp_roll_pose_idx[0]; + idx2 = interp_roll_pose_idx[1]; + IF( NE_16( idx1, 0 ) || NE_16( idx2, 0 ) ) + { + interpolate_pred_matrix_fx( rot_md, sf_idx, band_idx, interp_roll_pose_idx, interp_roll_fact_fx, Q_roll, mix_mat_re3_fx, &exp_mix_mat_re3, mix_mat_im3_fx, &exp_mix_mat_im3 ); + + isar_mat_mult_2by2_complex_fx( mix_mat_re_fx, *exp_mix_mat_re, mix_mat_im_fx, *exp_mix_mat_im, mix_mat_re3_fx, exp_mix_mat_re3, + mix_mat_im3_fx, exp_mix_mat_im3, mix_mat_re1_fx, &exp_mix_mat_re1, mix_mat_im1_fx, &exp_mix_mat_im1 ); + + FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + FOR( ch_idx2 = 0; ch_idx2 < BINAURAL_CHANNELS; ch_idx2++ ) + { + mix_mat_re_fx[ch_idx1][ch_idx2] = mix_mat_re1_fx[ch_idx1][ch_idx2]; + mix_mat_im_fx[ch_idx1][ch_idx2] = mix_mat_im1_fx[ch_idx1][ch_idx2]; + } + } + *exp_mix_mat_re = exp_mix_mat_re1; + *exp_mix_mat_im = exp_mix_mat_im1; + } + + return; +} + +/*-----------------------------------------------------------------------------------------* + * Function isar_SplitRenderer_PostRenderer() + * + * + *-----------------------------------------------------------------------------------------*/ +#ifndef FIX_1372_ISAR_POST_REND +void isar_SplitRenderer_PostRenderer( + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + Word32 Cldfb_RealBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + Word32 Cldfb_ImagBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + const IVAS_QUATERNION Quaternion_act ) +#else +void isar_SplitRenderer_PostRenderer( + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + Word32 Cldfb_RealBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + Word32 Cldfb_ImagBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + const IVAS_QUATERNION Quaternion_act, + Word16 *Q_in ) +#endif +{ + int16_t pos_idx, b, brange[2], ch_idx1; + int16_t num_md_bands, slot_idx, b2, index_slot, num_slots, sf_idx_md; + Word32 gd_int_fx; +#ifndef FIX_1372_ISAR_POST_REND + Word32 pred_out_re_fx[BINAURAL_CHANNELS], pred_out_im_fx[BINAURAL_CHANNELS]; + Word32 tmp_re_fx, tmp_im_fx; + Word16 exp_tmp1, exp_tmp2; +#else + Word64 pred_out_re_fx64[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], pred_out_im_fx64[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + Word64 tmp_re_fx64, tmp_im_fx64, out64_re, out64_im; + Word16 shift64 = 63; +#endif + ISAR_BIN_HR_SPLIT_REND_MD rot_md_act[1][MAX_SPLIT_REND_MD_BANDS]; + int16_t interp_yaw_pose_idx[2], interp_pitch_pose_idx[2], interp_roll_pose_idx[2]; + Word32 interp_yaw_fact_fx, interp_pitch_fact_fx, interp_roll_fact_fx; + Word16 Q_yaw = Q31, Q_pitch = Q31, Q_roll = Q31; + Word32 mix_mat_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 mix_mat_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word16 fade_fx; + Word32 *pMix_mat_re_prev_fx[BINAURAL_CHANNELS]; + Word32 *pMix_mat_im_prev_fx[BINAURAL_CHANNELS]; + const int16_t *pBand_grouping = isar_split_rend_band_grouping; + + num_md_bands = MAX_SPLIT_REND_MD_BANDS; + + push_wmops( "isar_SplitRenderer_PostRenderer" ); + + num_slots = MAX_PARAM_SPATIAL_SUBFRAMES; + pos_idx = 0; + sf_idx_md = 0; + + get_interpolation_vars( pMultiBinPoseData, &hBinPostRenderer->QuaternionsPre[sf_idx_md], &Quaternion_act, interp_yaw_pose_idx, interp_pitch_pose_idx, interp_roll_pose_idx, &interp_yaw_fact_fx, &interp_pitch_fact_fx, &interp_roll_fact_fx, &Q_yaw, &Q_pitch, &Q_roll ); + + FOR( b = 0; b < num_md_bands; b++ ) + { + FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + set_l( mix_mat_re_fx[ch_idx1], 0, BINAURAL_CHANNELS ); + set_l( mix_mat_im_fx[ch_idx1], 0, BINAURAL_CHANNELS ); + mix_mat_re_fx[ch_idx1][ch_idx1] = L_shl( 1, Q25 ); + } + + Word16 exp_gd_int = 0; + + Word16 exp_mix_mat_re = 6, exp_mix_mat_im = 6; + + interpolate_rend_md_fx( hBinPostRenderer->rot_md, mix_mat_re_fx, &exp_mix_mat_re, mix_mat_im_fx, &exp_mix_mat_im, &gd_int_fx, &exp_gd_int, sf_idx_md, b, interp_yaw_pose_idx, + interp_pitch_pose_idx, interp_roll_pose_idx, interp_yaw_fact_fx, Q_yaw, interp_pitch_fact_fx, Q_pitch, interp_roll_fact_fx, Q_roll ); + + FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + /*update the prediction matrix with interpolated matrix*/ + rot_md_act[pos_idx][b].pred_mat_re_fx[ch_idx1][0] = L_shl( mix_mat_re_fx[ch_idx1][0], exp_mix_mat_re - 6 ); // Q25 + rot_md_act[pos_idx][b].pred_mat_re_fx[ch_idx1][1] = L_shl( mix_mat_re_fx[ch_idx1][1], exp_mix_mat_re - 6 ); // Q25 + rot_md_act[pos_idx][b].pred_mat_im_fx[ch_idx1][0] = L_shl( mix_mat_im_fx[ch_idx1][0], exp_mix_mat_im - 6 ); // Q25 + rot_md_act[pos_idx][b].pred_mat_im_fx[ch_idx1][1] = L_shl( mix_mat_im_fx[ch_idx1][1], exp_mix_mat_im - 6 ); // Q25 + rot_md_act[pos_idx][b].gd_fx = L_shl( gd_int_fx, exp_gd_int - 6 ); // Q25 + } + } + + pos_idx = 0; + { + FOR( slot_idx = 0; slot_idx < num_slots; slot_idx++ ) + { + index_slot = slot_idx; /* TODO: can be cleaned up */ + fade_fx = fade_table_fx[slot_idx]; + fade_fx = min( fade_fx, MAX_16 ); + FOR( b = 0; b < num_md_bands; b++ ) + { + FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + IF( hBinPostRenderer->cf_flag ) + { + pMix_mat_re_prev_fx[ch_idx1] = hBinPostRenderer->mixer_mat_re_fx[pos_idx][b][ch_idx1]; + pMix_mat_im_prev_fx[ch_idx1] = hBinPostRenderer->mixer_mat_im_fx[pos_idx][b][ch_idx1]; + mix_mat_re_fx[ch_idx1][0] = L_add( Mpy_32_16_1( rot_md_act[pos_idx][b].pred_mat_re_fx[ch_idx1][0], fade_fx ), + Mpy_32_16_1( pMix_mat_re_prev_fx[ch_idx1][0], sub( 32767, fade_fx ) ) ); + mix_mat_re_fx[ch_idx1][1] = L_add( Mpy_32_16_1( rot_md_act[pos_idx][b].pred_mat_re_fx[ch_idx1][1], fade_fx ), + Mpy_32_16_1( pMix_mat_re_prev_fx[ch_idx1][1], sub( 32767, fade_fx ) ) ); + + mix_mat_im_fx[ch_idx1][0] = L_add( Mpy_32_16_1( rot_md_act[pos_idx][b].pred_mat_im_fx[ch_idx1][0], fade_fx ), + Mpy_32_16_1( pMix_mat_im_prev_fx[ch_idx1][0], sub( 32767, fade_fx ) ) ); + mix_mat_im_fx[ch_idx1][1] = L_add( Mpy_32_16_1( rot_md_act[pos_idx][b].pred_mat_im_fx[ch_idx1][1], fade_fx ), + Mpy_32_16_1( pMix_mat_im_prev_fx[ch_idx1][1], sub( 32767, fade_fx ) ) ); + } + ELSE + { + mix_mat_re_fx[ch_idx1][0] = rot_md_act[pos_idx][b].pred_mat_re_fx[ch_idx1][0]; + mix_mat_re_fx[ch_idx1][1] = rot_md_act[pos_idx][b].pred_mat_re_fx[ch_idx1][1]; + mix_mat_im_fx[ch_idx1][0] = rot_md_act[pos_idx][b].pred_mat_im_fx[ch_idx1][0]; + mix_mat_im_fx[ch_idx1][1] = rot_md_act[pos_idx][b].pred_mat_im_fx[ch_idx1][1]; + } + } + + brange[0] = pBand_grouping[b]; + brange[1] = pBand_grouping[b + 1]; + FOR( b2 = brange[0]; b2 < brange[1]; b2++ ) + { + FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + /* Apply prediction matrix */ +#ifndef FIX_1372_ISAR_POST_REND + ivas_cmult_fix( Cldfb_RealBuffer_Ref_Binaural_fx[0][index_slot][b2], 25, Cldfb_ImagBuffer_Ref_Binaural_fx[0][index_slot][b2], 25, mix_mat_re_fx[0][ch_idx1], 6, mix_mat_im_fx[0][ch_idx1], 6, &tmp_re_fx, &tmp_im_fx, &exp_tmp1, &exp_tmp2 ); + + pred_out_re_fx[ch_idx1] = tmp_re_fx; + pred_out_im_fx[ch_idx1] = tmp_im_fx; + Word16 exp_re = exp_tmp1; + Word16 exp_im = exp_tmp2; + + ivas_cmult_fix( Cldfb_RealBuffer_Ref_Binaural_fx[1][index_slot][b2], 25, Cldfb_ImagBuffer_Ref_Binaural_fx[1][index_slot][b2], 25, mix_mat_re_fx[1][ch_idx1], 6, mix_mat_im_fx[1][ch_idx1], 6, &tmp_re_fx, &tmp_im_fx, &exp_tmp1, &exp_tmp2 ); + + pred_out_re_fx[ch_idx1] = BASOP_Util_Add_Mant32Exp( pred_out_re_fx[ch_idx1], exp_re, tmp_re_fx, exp_tmp1, &exp_re ); + pred_out_re_fx[ch_idx1] = L_shl( pred_out_re_fx[ch_idx1], exp_re - 25 ); + pred_out_im_fx[ch_idx1] = BASOP_Util_Add_Mant32Exp( pred_out_im_fx[ch_idx1], exp_im, tmp_im_fx, exp_tmp2, &exp_im ); + pred_out_im_fx[ch_idx1] = L_shl( pred_out_im_fx[ch_idx1], exp_im - 25 ); +#else + tmp_re_fx64 = W_mult_32_32( Cldfb_RealBuffer_Ref_Binaural_fx[0][index_slot][b2], mix_mat_re_fx[0][ch_idx1] ); + tmp_im_fx64 = W_mult_32_32( Cldfb_ImagBuffer_Ref_Binaural_fx[0][index_slot][b2], mix_mat_im_fx[0][ch_idx1] ); + out64_re = W_sub( tmp_re_fx64, tmp_im_fx64 ); + tmp_re_fx64 = W_mult_32_32( Cldfb_RealBuffer_Ref_Binaural_fx[0][index_slot][b2], mix_mat_im_fx[0][ch_idx1] ); + tmp_im_fx64 = W_mult_32_32( Cldfb_ImagBuffer_Ref_Binaural_fx[0][index_slot][b2], mix_mat_re_fx[0][ch_idx1] ); + out64_im = W_add( tmp_re_fx64, tmp_im_fx64 ); + move64(); + move64(); + move64(); + move64(); + move64(); + move64(); + + + tmp_re_fx64 = W_mult_32_32( Cldfb_RealBuffer_Ref_Binaural_fx[1][index_slot][b2], mix_mat_re_fx[1][ch_idx1] ); + tmp_im_fx64 = W_mult_32_32( Cldfb_ImagBuffer_Ref_Binaural_fx[1][index_slot][b2], mix_mat_im_fx[1][ch_idx1] ); + out64_re = W_add( out64_re, W_sub( tmp_re_fx64, tmp_im_fx64 ) ); + tmp_re_fx64 = W_mult_32_32( Cldfb_RealBuffer_Ref_Binaural_fx[1][index_slot][b2], mix_mat_im_fx[1][ch_idx1] ); + tmp_im_fx64 = W_mult_32_32( Cldfb_ImagBuffer_Ref_Binaural_fx[1][index_slot][b2], mix_mat_re_fx[1][ch_idx1] ); + out64_im = W_add( out64_im, W_add( tmp_re_fx64, tmp_im_fx64 ) ); + move64(); + move64(); + move64(); + move64(); + move64(); + move64(); + + + shift64 = s_min( shift64, s_min( W_norm( out64_im ), W_norm( out64_re ) ) ); + pred_out_re_fx64[ch_idx1][index_slot][b2] = out64_re; + pred_out_im_fx64[ch_idx1][index_slot][b2] = out64_im; + move16(); + move64(); + move64(); +#endif + } + +#ifndef FIX_1372_ISAR_POST_REND + FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + Cldfb_RealBuffer_Ref_Binaural_fx[ch_idx1][index_slot][b2] = pred_out_re_fx[ch_idx1]; + Cldfb_ImagBuffer_Ref_Binaural_fx[ch_idx1][index_slot][b2] = pred_out_im_fx[ch_idx1]; + } +#endif + } + } + } + +#ifdef FIX_1372_ISAR_POST_REND + FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + FOR( slot_idx = 0; slot_idx < num_slots; slot_idx++ ) + { + FOR( b2 = pBand_grouping[0]; b2 < pBand_grouping[num_md_bands]; b2++ ) + { + Cldfb_RealBuffer_Ref_Binaural_fx[ch_idx1][slot_idx][b2] = W_extract_h( W_shl( pred_out_re_fx64[ch_idx1][slot_idx][b2], shift64 ) ); + Cldfb_ImagBuffer_Ref_Binaural_fx[ch_idx1][slot_idx][b2] = W_extract_h( W_shl( pred_out_im_fx64[ch_idx1][slot_idx][b2], shift64 ) ); + move32(); + move32(); + } + } + } + *Q_in = sub( add( *Q_in, shift64 ), Q6 ); + move16(); +#endif + } + + pos_idx = 0; + { + FOR( b = 0; b < num_md_bands; b++ ) + { + FOR( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + hBinPostRenderer->mixer_mat_re_fx[pos_idx][b][ch_idx1][0] = rot_md_act[pos_idx][b].pred_mat_re_fx[ch_idx1][0]; // Q25 + hBinPostRenderer->mixer_mat_re_fx[pos_idx][b][ch_idx1][1] = rot_md_act[pos_idx][b].pred_mat_re_fx[ch_idx1][1]; // Q25 + hBinPostRenderer->mixer_mat_im_fx[pos_idx][b][ch_idx1][0] = rot_md_act[pos_idx][b].pred_mat_im_fx[ch_idx1][0]; // Q25 + hBinPostRenderer->mixer_mat_im_fx[pos_idx][b][ch_idx1][1] = rot_md_act[pos_idx][b].pred_mat_im_fx[ch_idx1][1]; // Q25 + } + hBinPostRenderer->gd_mem_fx[pos_idx][b] = rot_md_act[pos_idx][b].gd_fx; // Q25 + } + } + hBinPostRenderer->cf_flag = 1; + pop_wmops(); + return; +} + +/*-----------------------------------------------------------------------------------------* + * Function isar_rend_CldfbSplitPostRendProcessTdIn() + * + * + *-----------------------------------------------------------------------------------------*/ +static void isar_rend_CldfbSplitPostRendProcessTdIn( + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const IVAS_QUATERNION QuaternionPost, + Word32 output_fx[][L_FRAME48k], + Word16 *Q_out ) +{ + int16_t ch_idx, slot_idx, num_cldfb_bands; + Word32 Cldfb_RealBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX] = { 0 }; + Word32 Cldfb_ImagBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX] = { 0 }; + num_cldfb_bands = hBinHrSplitPostRend->cldfbSyn[0]->no_channels; + Word16 Q_output = Q11; + Word16 Q_in = Q6; + + /* Implement CLDFB analysis */ + FOR( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) + { + Scale_sig32( output_fx[ch_idx], L_FRAME48k, Q_output - Q_out[ch_idx] ); + FOR( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + Word16 Q_cldfb = Q_output; + cldfbAnalysis_ts_fx_fixed_q( &( output_fx[ch_idx][num_cldfb_bands * slot_idx] ), + Cldfb_RealBuffer_Binaural_fx[ch_idx][slot_idx], + Cldfb_ImagBuffer_Binaural_fx[ch_idx][slot_idx], + num_cldfb_bands, + hBinHrSplitPostRend->cldfbAna[ch_idx], + &Q_cldfb ); // Q_cldfb - 5 + } + } + +#ifndef FIX_1372_ISAR_POST_REND + isar_SplitRenderer_PostRenderer( hBinHrSplitPostRend, pMultiBinPoseData, Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx, QuaternionPost ); +#else + isar_SplitRenderer_PostRenderer( hBinHrSplitPostRend, pMultiBinPoseData, Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx, QuaternionPost, &Q_in ); +#endif + + /* Implement CLDFB synthesis */ + FOR( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) + { + Word32 *RealBuffer_fx[CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES]; + Word32 *ImagBuffer_fx[CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES]; + Word16 scaleFactor = 31, Q_cldfb; + + FOR( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + RealBuffer_fx[slot_idx] = Cldfb_RealBuffer_Binaural_fx[ch_idx][slot_idx]; + ImagBuffer_fx[slot_idx] = Cldfb_ImagBuffer_Binaural_fx[ch_idx][slot_idx]; + scaleFactor = s_min( scaleFactor, s_min( getScaleFactor32( RealBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX ), getScaleFactor32( ImagBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX ) ) ); + } +#ifdef OPT_IVAS_FILTER_ROM + scaleFactor = s_min( sub( scaleFactor, 6 ), Q24 ); // guarded bits +#else + scaleFactor = s_min( sub( scaleFactor, 3 ), Q24 ); // guarded bits +#endif + FOR( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + Scale_sig32( RealBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX, scaleFactor ); + Scale_sig32( ImagBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX, scaleFactor ); + } +#ifndef FIX_1372_ISAR_POST_REND + Q_cldfb = add( scaleFactor, sub( Q_output, Q5 ) ); +#else + Q_cldfb = add( scaleFactor, Q_in ); +#endif + Scale_sig32( hBinHrSplitPostRend->cldfbSyn[ch_idx]->cldfb_state_fx, hBinHrSplitPostRend->cldfbSyn[ch_idx]->p_filter_length, sub( sub( Q_cldfb, 1 ), Q11 ) ); + cldfbSynthesis_ivas_fx( RealBuffer_fx, ImagBuffer_fx, &( output_fx[ch_idx][0] ), num_cldfb_bands * CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, 0, 0, hBinHrSplitPostRend->cldfbSyn[ch_idx] ); // Q_cldfb - 1 + Scale_sig32( hBinHrSplitPostRend->cldfbSyn[ch_idx]->cldfb_state_fx, hBinHrSplitPostRend->cldfbSyn[ch_idx]->p_filter_length, sub( Q11, sub( Q_cldfb, 1 ) ) ); + Q_out[ch_idx] = sub( Q_cldfb, 1 ); + } + + return; +} +/*-----------------------------------------------------------------------------------------* + * Function isar_rend_CldfbSplitPostRendProcess() + * + * + *-----------------------------------------------------------------------------------------*/ +void isar_rend_CldfbSplitPostRendProcess( + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const IVAS_QUATERNION QuaternionPost, + Word32 Cldfb_RealBuffer_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_ImagBuffer_Binaural_fx[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + Word16 Q_cldfb_in, + Word32 output_fx[][L_FRAME48k], + Word16 *Q_out, + const Word16 cldfb_in_flag ) +{ + int16_t ch_idx, slot_idx, num_cldfb_bands; + + push_wmops( "isar_rend_CldfbSplitPostRendProcess" ); + + num_cldfb_bands = hBinHrSplitPostRend->cldfbSyn[0]->no_channels; + + IF( EQ_16( cldfb_in_flag, 0 ) ) + { + isar_rend_CldfbSplitPostRendProcessTdIn( hBinHrSplitPostRend, pMultiBinPoseData, QuaternionPost, output_fx, Q_out ); + pop_wmops(); + return; + } + +#ifndef FIX_1372_ISAR_POST_REND + isar_SplitRenderer_PostRenderer( hBinHrSplitPostRend, pMultiBinPoseData, Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx, QuaternionPost ); +#else + isar_SplitRenderer_PostRenderer( hBinHrSplitPostRend, pMultiBinPoseData, Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx, QuaternionPost, &Q_cldfb_in ); +#endif + + /* Implement CLDFB synthesis */ + FOR( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) + { + Word32 *RealBuffer_fx[CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES]; + Word32 *ImagBuffer_fx[CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES]; + Word16 scaleFactor = 31, Q_cldfb; + + FOR( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + RealBuffer_fx[slot_idx] = Cldfb_RealBuffer_Binaural_fx[ch_idx][slot_idx]; + ImagBuffer_fx[slot_idx] = Cldfb_ImagBuffer_Binaural_fx[ch_idx][slot_idx]; + scaleFactor = s_min( scaleFactor, s_min( getScaleFactor32( RealBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX ), getScaleFactor32( ImagBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX ) ) ); + } + +#ifdef OPT_IVAS_FILTER_ROM + scaleFactor = s_min( sub( scaleFactor, 6 ), Q24 ); // guarded bits +#else + scaleFactor = s_min( sub( scaleFactor, 3 ), Q24 ); // guarded bits +#endif + FOR( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + Scale_sig32( RealBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX, scaleFactor ); + Scale_sig32( ImagBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX, scaleFactor ); + } + Q_cldfb = scaleFactor + Q_cldfb_in; + Scale_sig32( hBinHrSplitPostRend->cldfbSyn[ch_idx]->cldfb_state_fx, hBinHrSplitPostRend->cldfbSyn[ch_idx]->p_filter_length, sub( sub( Q_cldfb, 1 ), Q11 ) ); + cldfbSynthesis_ivas_fx( RealBuffer_fx, ImagBuffer_fx, &( output_fx[ch_idx][0] ), num_cldfb_bands * CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, 0, 0, hBinHrSplitPostRend->cldfbSyn[ch_idx] ); // Q_cldfb - 1 + Scale_sig32( hBinHrSplitPostRend->cldfbSyn[ch_idx]->cldfb_state_fx, hBinHrSplitPostRend->cldfbSyn[ch_idx]->p_filter_length, sub( Q11, sub( Q_cldfb, 1 ) ) ); + Q_out[ch_idx] = sub( Q_cldfb, 1 ); + } + + pop_wmops(); + return; +} + +/*-----------------------------------------------------------------------------------------* + * Function isar_init_split_post_rend_handles() + * + * + *-----------------------------------------------------------------------------------------*/ + +void isar_init_split_post_rend_handles( + ISAR_SPLIT_POST_REND_WRAPPER *hSplitRendWrapper ) +{ + hSplitRendWrapper->hBinHrSplitPostRend = NULL; + hSplitRendWrapper->hSplitBinLCLDDec = NULL; + hSplitRendWrapper->hLc3plusDec = NULL; + isar_init_multi_bin_pose_data_fx( &hSplitRendWrapper->multiBinPoseData ); + hSplitRendWrapper->first_good_frame_received = 0; + + return; +} diff --git a/lib_isar/isar_splitRendererPre.c b/lib_isar/isar_splitRendererPre.c new file mode 100644 index 0000000000000000000000000000000000000000..b30f25ca7cd4d36a8b2972e9740ce5fbdaf1fbac --- /dev/null +++ b/lib_isar/isar_splitRendererPre.c @@ -0,0 +1,3134 @@ +/****************************************************************************************************** + + (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 +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG +#include +#endif +#include "ivas_prot_fx.h" +#include "prot_fx.h" +#include "lib_isar_pre_rend.h" +#include "isar_rom_post_rend.h" +#include "isar_prot.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" +#ifdef DBG_WAV_WRITER +#include "string.h" +#endif +#include "prot_fx.h" +#include "basop_util.h" + +/*---------------------------------------------------------------------* + * Local function declarations + *---------------------------------------------------------------------*/ +static void isar_SplitRenderer_GetRotMd_fx( + ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, /* i/o: binaural renderer handle */ + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + Word32 Cldfb_RealBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Reference Binaural signals */ + Word16 exp_cldfb_re, + Word32 Cldfb_ImagBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Reference Binaural signals */ + Word16 exp_cldfb_im, + const Word16 low_res, + const Word16 ro_md_flag ); + +/*------------------------------------------------------------------------- + * Local functions + * + * + *------------------------------------------------------------------------*/ + +static void isar_calc_mat_det_2by2_complex_fx( + Word32 in_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + Word16 exp_in_re, + Word32 in_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + Word16 exp_in_im, + Word32 *det_re, + Word16 *exp_det_re, + Word32 *det_im, + Word16 *exp_det_im ) +{ + Word32 re1_fx, im1_fx, re2_fx, im2_fx; + + Word16 exp_re_1 = 0, exp_re_2 = 0; + Word16 exp_im_1 = 0, exp_im_2 = 0; + ivas_cmult_fix( in_re_fx[0][0], exp_in_re, in_im_fx[0][0], exp_in_im, in_re_fx[1][1], exp_in_re, in_im_fx[1][1], exp_in_im, &re1_fx, &im1_fx, &exp_re_1, &exp_im_1 ); + ivas_cmult_fix( in_re_fx[0][1], exp_in_re, in_im_fx[0][1], exp_in_im, in_re_fx[1][0], exp_in_re, in_im_fx[1][0], exp_in_im, &re2_fx, &im2_fx, &exp_re_2, &exp_im_2 ); + + Word16 exp_re_final = 0, exp_im_final = 0; + *det_re = BASOP_Util_Add_Mant32Exp( re1_fx, exp_re_1, L_negate( re2_fx ), exp_re_2, &exp_re_final ); + *det_im = BASOP_Util_Add_Mant32Exp( im1_fx, exp_im_1, L_negate( im2_fx ), exp_im_2, &exp_im_final ); + *exp_det_re = exp_re_final; + *exp_det_im = exp_im_final; + + return; +} + +static Word16 isar_is_mat_inv_2by2_complex_fx( + Word32 in_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + Word16 exp_in_re, + Word32 in_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + Word16 exp_in_im ) +{ + Word16 is_det_zero = 1; + Word32 det, det_re, det_im; + Word16 exp_det = 0, exp_det_re = 0, exp_det_im = 0; + isar_calc_mat_det_2by2_complex_fx( in_re, exp_in_re, in_im, exp_in_im, &det_re, &exp_det_re, &det_im, &exp_det_im ); + + Word64 det_re_sq = W_mult_32_32( det_re, det_re ); + Word16 det_sq_re_nrm = W_norm( det_re_sq ); + Word32 tmp1 = W_extract_h( W_shl( det_re_sq, det_sq_re_nrm ) ); + + Word64 det_im_sq = W_mult_32_32( det_im, det_im ); + Word16 det_im_nrm = W_norm( det_im_sq ); + Word32 tmp2 = W_extract_h( W_shl( det_im_sq, det_im_nrm ) ); + + det = BASOP_Util_Add_Mant32Exp( tmp1, exp_det_re + exp_det_re - det_sq_re_nrm, tmp2, exp_det_im + exp_det_im - det_im_nrm, &exp_det ); + + Word16 res = BASOP_Util_Cmp_Mant32Exp( det, exp_det, EPSILON_FX, 31 ); + IF( EQ_16( res, -1 ) ) + { + is_det_zero = 0; + } + + return is_det_zero; +} +static void isar_calc_mat_inv_2by2_complex_fx( + Word32 in_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + Word16 exp_in_re, + Word32 in_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + Word16 exp_in_im, + Word32 out_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + Word16 *exp_out_re, + Word32 out_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + Word16 *exp_out_im ) +{ + Word16 exp_buffer_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS], exp_buffer_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + + FOR( int i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( int j = 0; j < BINAURAL_CHANNELS; j++ ) + { + exp_buffer_re[i][j] = MIN16B; + move16(); + exp_buffer_im[i][j] = MIN16B; + move16(); + } + } + Word32 det_re_fx, det_im_fx; + Word16 exp_det_re = 0, exp_det_im = 0; + move16(); + move16(); + Word32 re_fx, im_fx, det_fx; + Word16 exp_re = 0, exp_im = 0; + move16(); + move16(); + + isar_calc_mat_det_2by2_complex_fx( in_re_fx, exp_in_re, in_im_fx, exp_in_im, &det_re_fx, &exp_det_re, &det_im_fx, &exp_det_im ); + + Word16 tmp1 = W_norm( W_mult_32_32( det_re_fx, det_re_fx ) ); + Word32 tmp2 = W_extract_h( W_shl( W_mult_32_32( det_re_fx, det_re_fx ), tmp1 ) ); // 2*exp_det_re - tmp1 + Word16 tmp3 = W_norm( W_mult_32_32( det_im_fx, det_im_fx ) ); + Word32 tmp4 = W_extract_h( W_shl( W_mult_32_32( det_im_fx, det_im_fx ), tmp3 ) ); // 2*exp_im_re - tmp3 + Word16 exp_det = 0; + det_fx = BASOP_Util_Add_Mant32Exp( tmp2, 2 * exp_det_re - tmp1, tmp4, 2 * exp_det_im - tmp3, &exp_det ); + + Word16 exp_tmp5 = 0; + Word16 tmp5 = BASOP_Util_Divide3232_Scale( ONE_IN_Q30, det_fx, &exp_tmp5 ); + exp_det = add( exp_tmp5, sub( 1, exp_det ) ); + det_fx = L_deposit_h( tmp5 ); + +#ifdef DEBUGGING + /* assert to catch cases when input is singular matrix */ + assert( GT_32( det_fx, 0 ) ); +#endif + + exp_re = 0; + exp_im = 0; + move16(); + move16(); + ivas_cmult_fix( det_re_fx, exp_det_re, L_negate( det_im_fx ), exp_det_im, in_re_fx[1][1], exp_in_re, in_im_fx[1][1], exp_in_im, &re_fx, &im_fx, &exp_re, &exp_im ); + + Word64 tmp7 = W_mult_32_32( re_fx, det_fx ); + Word16 tmp7_nrm = W_norm( tmp7 ); + out_re_fx[0][0] = W_extract_h( W_shl( tmp7, tmp7_nrm ) ); // exp_re + exp_det - tmp7_nrm + move32(); + Word64 tmp8 = W_mult_32_32( im_fx, det_fx ); + Word16 tmp8_nrm = W_norm( tmp8 ); + out_im_fx[0][0] = W_extract_h( W_shl( tmp8, tmp8_nrm ) ); // exp_im + exp_det - tmp8_nrm + move32(); + + exp_buffer_re[0][0] = add( exp_re, sub( exp_det, tmp7_nrm ) ); + move16(); + exp_buffer_im[0][0] = add( exp_im, sub( exp_det, tmp8_nrm ) ); + move16(); + + ivas_cmult_fix( det_re_fx, exp_det_re, L_negate( det_im_fx ), exp_det_im, in_re_fx[0][1], exp_in_re, in_im_fx[0][1], exp_in_im, &re_fx, &im_fx, &exp_re, &exp_im ); + + Word64 tmp9 = W_mult_32_32( L_negate( re_fx ), det_fx ); + Word16 tmp9_nrm = W_norm( tmp9 ); + out_re_fx[0][1] = W_extract_h( W_shl( tmp9, tmp9_nrm ) ); + Word64 tmp10 = W_mult_32_32( L_negate( im_fx ), det_fx ); + Word16 tmp10_nrm = W_norm( tmp10 ); + out_im_fx[0][1] = W_extract_h( W_shl( tmp10, tmp10_nrm ) ); + + exp_buffer_re[0][1] = add( exp_re, sub( exp_det, tmp9_nrm ) ); + exp_buffer_im[0][1] = add( exp_im, sub( exp_det, tmp10_nrm ) ); + + ivas_cmult_fix( det_re_fx, exp_det_re, L_negate( det_im_fx ), exp_det_im, in_re_fx[1][0], exp_in_re, in_im_fx[1][0], exp_in_im, &re_fx, &im_fx, &exp_re, &exp_im ); + + + Word64 tmp11 = W_mult_32_32( L_negate( re_fx ), det_fx ); + Word16 tmp11_nrm = W_norm( tmp11 ); + out_re_fx[1][0] = W_extract_h( W_shl( tmp11, tmp11_nrm ) ); + Word64 tmp12 = W_mult_32_32( L_negate( im_fx ), det_fx ); + Word16 tmp12_nrm = W_norm( tmp12 ); + out_im_fx[1][0] = W_extract_h( W_shl( tmp12, tmp12_nrm ) ); + + exp_buffer_re[1][0] = add( exp_re, sub( exp_det, tmp11_nrm ) ); + move16(); + exp_buffer_im[1][0] = add( exp_im, sub( exp_det, tmp12_nrm ) ); + move16(); + + ivas_cmult_fix( det_re_fx, exp_det_re, L_negate( det_im_fx ), exp_det_im, in_re_fx[0][0], exp_in_re, in_im_fx[0][0], exp_in_im, &re_fx, &im_fx, &exp_re, &exp_im ); + + Word64 tmp13 = W_mult_32_32( re_fx, det_fx ); + Word16 tmp13_nrm = W_norm( tmp13 ); + out_re_fx[1][1] = W_extract_h( W_shl( tmp13, tmp13_nrm ) ); + move32(); + + Word64 tmp14 = W_mult_32_32( im_fx, det_fx ); + Word16 tmp14_nrm = W_norm( tmp14 ); + out_im_fx[1][1] = W_extract_h( W_shl( tmp14, tmp14_nrm ) ); + move32(); + + exp_buffer_re[1][1] = add( exp_re, sub( exp_det, tmp13_nrm ) ); + move16(); + exp_buffer_im[1][1] = add( exp_im, sub( exp_det, tmp14_nrm ) ); + move16(); + + Word16 max_exp_re = MIN16B, max_exp_im = MIN16B; + FOR( int i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( int j = 0; j < BINAURAL_CHANNELS; j++ ) + { + max_exp_re = s_max( max_exp_re, exp_buffer_re[i][j] ); + max_exp_im = s_max( max_exp_im, exp_buffer_im[i][j] ); + } + } + + FOR( int i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( int j = 0; j < BINAURAL_CHANNELS; j++ ) + { + out_re_fx[i][j] = L_shr( out_re_fx[i][j], max_exp_re - exp_buffer_re[i][j] ); + move32(); + out_im_fx[i][j] = L_shr( out_im_fx[i][j], max_exp_im - exp_buffer_im[i][j] ); + move32(); + } + } + + *exp_out_re = max_exp_re; + move16(); + *exp_out_im = max_exp_im; + move16(); + + return; +} +static void ComputePredMat_fx( + Word32 cov_ii_re_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_ii_re, + Word32 cov_ii_im_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_ii_im, + Word32 cov_io_re_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_io_re, + Word32 cov_io_im_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_io_im, + Word32 pred_mat_re_fx[][BINAURAL_CHANNELS], + Word16 *exp_pred_mat_re, + Word32 pred_mat_im_fx[][BINAURAL_CHANNELS], + Word16 *exp_pred_mat_im, + const Word16 num_chs, + const Word16 real_only ) +{ + Word32 cov_ii_local_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 cov_ii_inv_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 cov_ii_inv_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word16 exp_cov_ii_local_re = 0, exp_cov_ii_inv_re = 0, exp_cov_ii_inv_im = 0; + Word32 trace_cov_fx; + + Word16 i, j; + + trace_cov_fx = 0; + Word16 exp_trace_cov = 0; + FOR( i = 0; i < num_chs; i++ ) + { + trace_cov_fx = L_add( trace_cov_fx, L_shr( cov_ii_re_fx[i][i], 1 ) ); + } + exp_trace_cov = add( exp_cov_ii_re, 1 ); + + trace_cov_fx = L_max( 0, trace_cov_fx ); + Word16 flag = BASOP_Util_Cmp_Mant32Exp( trace_cov_fx, exp_cov_ii_re, EPSILON_FX, 0 ); + IF( EQ_16( flag, negate( 1 ) ) ) + { + FOR( i = 0; i < num_chs; i++ ) + { + /* protection from cases when variance of ref channels is very small */ + set32_fx( pred_mat_re_fx[i], 0, BINAURAL_CHANNELS ); + set32_fx( pred_mat_im_fx[i], 0, BINAURAL_CHANNELS ); + } + return; + } + + Word16 buff_exp[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + buff_exp[i][j] = 0; + move16(); + } + } + + FOR( i = 0; i < num_chs; i++ ) + { + Copy32( cov_ii_re_fx[i], cov_ii_local_re_fx[i], num_chs ); + set16_fx( buff_exp[i], exp_cov_ii_re, num_chs ); + } + + Word32 tmp = 0; + FOR( i = 0; i < num_chs; i++ ) + { + tmp = Mpy_32_32( trace_cov_fx, 214748 ); // exp_trace_cov + Word16 exp_tmp = 0; + cov_ii_local_re_fx[i][i] = BASOP_Util_Add_Mant32Exp( cov_ii_re_fx[i][i], exp_cov_ii_re, tmp, exp_trace_cov, &exp_tmp ); + move32(); + buff_exp[i][i] = exp_tmp; + move16(); + } + + Word16 max_exp = MIN16B; + FOR( i = 0; i < 2; i++ ) + { + FOR( j = 0; j < 2; j++ ) + { + max_exp = max( max_exp, buff_exp[i][j] ); + } + } + + FOR( i = 0; i < num_chs; i++ ) + { + FOR( j = 0; j < num_chs; j++ ) + { + cov_ii_local_re_fx[i][j] = L_shr( cov_ii_local_re_fx[i][j], max_exp - buff_exp[i][j] ); + move32(); + } + } + + exp_cov_ii_local_re = max_exp; + move16(); + + IF( isar_is_mat_inv_2by2_complex_fx( cov_ii_local_re_fx, exp_cov_ii_local_re, cov_ii_im_fx, exp_cov_ii_im ) ) + { + isar_calc_mat_inv_2by2_complex_fx( cov_ii_local_re_fx, exp_cov_ii_local_re, cov_ii_im_fx, exp_cov_ii_im, cov_ii_inv_re_fx, &exp_cov_ii_inv_re, cov_ii_inv_im_fx, &exp_cov_ii_inv_im ); + isar_mat_mult_2by2_complex_fx( cov_ii_inv_re_fx, exp_cov_ii_inv_re, cov_ii_inv_im_fx, exp_cov_ii_inv_im, cov_io_re_fx, exp_cov_io_re, cov_io_im_fx, exp_cov_io_im, pred_mat_re_fx, exp_pred_mat_re, pred_mat_im_fx, exp_pred_mat_im ); + } + ELSE + { + Word16 max_var_idx; + FOR( i = 0; i < num_chs; i++ ) + { + set32_fx( pred_mat_re_fx[i], 0, BINAURAL_CHANNELS ); + set32_fx( pred_mat_im_fx[i], 0, BINAURAL_CHANNELS ); + } + + max_var_idx = 0; + move16(); + IF( GT_32( cov_ii_local_re_fx[1][1], cov_ii_local_re_fx[0][0] ) ) + { + max_var_idx = 1; + } + + Word16 tmp1 = 0, exp_tmp1 = 0; + move16(); + move16(); + Word16 tmp2 = 0, exp_tmp2 = 0; + move16(); + move16(); + Word16 flag1 = BASOP_Util_Cmp_Mant32Exp( cov_ii_local_re_fx[max_var_idx][max_var_idx], exp_cov_ii_local_re, EPSILON_FX, 0 ); + IF( EQ_16( flag1, 1 ) ) + { + Word16 pred_mat_buf_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS], pred_mat_buf_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + set16_fx( pred_mat_buf_re[i], *exp_pred_mat_re, BINAURAL_CHANNELS ); + set16_fx( pred_mat_buf_im[i], *exp_pred_mat_im, BINAURAL_CHANNELS ); + } + FOR( j = 0; j < num_chs; j++ ) + { + tmp1 = BASOP_Util_Divide3232_Scale( cov_io_re_fx[max_var_idx][j], cov_ii_local_re_fx[max_var_idx][max_var_idx], &exp_tmp1 ); + exp_tmp1 = exp_tmp1 + ( exp_cov_io_re - exp_cov_ii_local_re ); + tmp2 = BASOP_Util_Divide3232_Scale( cov_io_im_fx[max_var_idx][j], cov_ii_local_re_fx[max_var_idx][max_var_idx], &exp_tmp2 ); + exp_tmp2 = exp_tmp2 + ( exp_cov_io_im - exp_cov_ii_local_re ); + pred_mat_re_fx[max_var_idx][j] = tmp1; + move32(); + pred_mat_im_fx[max_var_idx][j] = tmp2; + move32(); + pred_mat_buf_re[max_var_idx][j] = exp_tmp1; + move16(); + pred_mat_buf_im[max_var_idx][j] = exp_tmp2; + move16(); + } + + Word16 max_re = MIN16B, max_im = MIN16B; + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + + max_re = s_max( max_re, pred_mat_buf_re[i][j] ); + move16(); + max_im = s_max( max_im, pred_mat_buf_im[i][j] ); + move16(); + } + } + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + + pred_mat_re_fx[i][j] = L_shr( pred_mat_re_fx[i][j], max_re - pred_mat_buf_re[i][j] ); + move32(); + pred_mat_im_fx[i][j] = L_shr( pred_mat_im_fx[i][j], max_im - pred_mat_buf_im[i][j] ); + move32(); + } + } + + *exp_pred_mat_re = max_re; + move16(); + *exp_pred_mat_im = max_im; + move16(); + } + } + + IF( real_only ) + { + FOR( i = 0; i < num_chs; i++ ) + { + set32_fx( pred_mat_im_fx[i], 0, BINAURAL_CHANNELS ); + } + } + + return; +} +static void ComputePostPredCov_fx( + Word32 cov_ii_re_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_ii_re, + Word32 cov_ii_im_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_ii_im, + Word32 pred_mat_re_fx[][BINAURAL_CHANNELS], + Word16 exp_pred_mat_re, + Word32 pred_mat_im_fx[][BINAURAL_CHANNELS], + Word16 exp_pred_mat_im, + Word32 postpred_cov_re_fx[][BINAURAL_CHANNELS], + Word16 *exp_postpred_cov_re, + Word16 num_chs ) +{ + Word16 i, j; + Word32 dmx_mat_conj_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 dmx_mat_conj_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 temp_mat_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 temp_mat_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 postpred_cov_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word16 exp_postpred_cov_im = 0; + Word16 exp_temp_mat_re = 0, exp_temp_mat_im = 0; + + assert( num_chs == BINAURAL_CHANNELS ); + + FOR( i = 0; i < num_chs; i++ ) + { + FOR( j = 0; j < num_chs; j++ ) + { + dmx_mat_conj_re_fx[i][j] = pred_mat_re_fx[j][i]; + move32(); + dmx_mat_conj_im_fx[i][j] = L_negate( pred_mat_im_fx[j][i] ); + move32(); + + temp_mat_re_fx[i][j] = pred_mat_re_fx[i][j]; + move32(); + temp_mat_im_fx[i][j] = pred_mat_im_fx[i][j]; + move32(); + } + set32_fx( postpred_cov_re_fx[i], 0, BINAURAL_CHANNELS ); + } + isar_mat_mult_2by2_complex_fx( dmx_mat_conj_re_fx, exp_pred_mat_re, dmx_mat_conj_im_fx, exp_pred_mat_im, cov_ii_re_fx, exp_cov_ii_re, cov_ii_im_fx, exp_cov_ii_im, temp_mat_re_fx, &exp_temp_mat_re, temp_mat_im_fx, &exp_temp_mat_im ); + isar_mat_mult_2by2_complex_fx( temp_mat_re_fx, exp_temp_mat_re, temp_mat_im_fx, exp_temp_mat_im, pred_mat_re_fx, exp_pred_mat_re, pred_mat_im_fx, exp_pred_mat_im, postpred_cov_re_fx, exp_postpred_cov_re, postpred_cov_im_fx, &exp_postpred_cov_im ); + + /* 2x2 mult */ + + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < i; j++ ) + { + postpred_cov_re_fx[i][j] = postpred_cov_re_fx[j][i]; + move32(); + } + } + + return; +} +static void ComputeBandedCrossCov_fx( + Word32 Cldfb_RealBuffer1_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word16 exp_cldfb_re_1, + Word32 Cldfb_ImagBuffer1_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word16 exp_cldfb_im_1, + const Word16 ch_start_idx1, + Word32 Cldfb_RealBuffer2_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word16 exp_cldfb_re_2, + Word32 Cldfb_ImagBuffer2_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word16 exp_cldfb_im_2, + const Word16 ch_start_idx2, + Word32 out_cov_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + Word16 *exp_out_cov_re, + Word32 out_cov_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + Word16 *exp_out_cov_im, + const Word16 num_chs, + const Word16 *pBand_grouping, + const Word16 num_slots, + const Word16 start_slot_idx, + const Word16 md_band_idx, + const Word16 real_only ) +{ + Word16 sf, cldfb_band_idx, ch_idx1, ch_idx2; + Word16 brange[2]; + + FOR( ch_idx1 = 0; ch_idx1 < num_chs; ch_idx1++ ) + { + set_l( out_cov_re_fx[ch_idx1], 0, num_chs ); + set_l( out_cov_im_fx[ch_idx1], 0, num_chs ); + } + + brange[0] = pBand_grouping[md_band_idx]; + move16(); + brange[1] = pBand_grouping[md_band_idx + 1]; + move16(); + Word16 exp_buff_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS], exp_buff_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + FOR( ch_idx1 = 0; ch_idx1 < num_chs; ch_idx1++ ) + { + FOR( ch_idx2 = 0; ch_idx2 < num_chs; ch_idx2++ ) + { + Word32 tmp_a = out_cov_re_fx[ch_idx1][ch_idx2], tmp_b = out_cov_im_fx[ch_idx1][ch_idx2]; + Word16 exp_tmp_a = 0, exp_tmp_b = 0; + IF( EQ_16( real_only, 0 ) ) + { + FOR( sf = start_slot_idx; sf < add( start_slot_idx, num_slots ); sf++ ) + { + FOR( cldfb_band_idx = brange[0]; cldfb_band_idx < brange[1]; cldfb_band_idx++ ) + { + Word64 tmp1 = W_mult_32_32( Cldfb_RealBuffer1_fx[ch_start_idx1 + ch_idx1][sf][cldfb_band_idx], Cldfb_RealBuffer2_fx[ch_start_idx2 + ch_idx2][sf][cldfb_band_idx] ); + Word16 tmp1_nrm = W_norm( tmp1 ); + Word32 tmp1_final = W_extract_h( W_shl( tmp1, tmp1_nrm ) ); + + Word64 tmp2 = W_mult_32_32( Cldfb_ImagBuffer1_fx[ch_start_idx1 + ch_idx1][sf][cldfb_band_idx], Cldfb_ImagBuffer2_fx[ch_start_idx2 + ch_idx2][sf][cldfb_band_idx] ); + Word16 tmp2_nrm = W_norm( tmp2 ); + Word32 tmp2_final = W_extract_h( W_shl( tmp2, tmp2_nrm ) ); + + Word16 exp_tmp3 = 0; + Word32 tmp3 = BASOP_Util_Add_Mant32Exp( tmp1_final, exp_cldfb_re_1 + exp_cldfb_re_2 - tmp1_nrm, tmp2_final, exp_cldfb_im_1 + exp_cldfb_im_2 - tmp2_nrm, &exp_tmp3 ); + Word16 exp_tmp_a_tmp = 0; + tmp_a = BASOP_Util_Add_Mant32Exp( tmp_a, exp_tmp_a, tmp3, exp_tmp3, &exp_tmp_a_tmp ); + exp_tmp_a = exp_tmp_a_tmp; + + Word64 tmp4 = W_mult_32_32( Cldfb_RealBuffer1_fx[ch_start_idx1 + ch_idx1][sf][cldfb_band_idx], Cldfb_ImagBuffer2_fx[ch_start_idx2 + ch_idx2][sf][cldfb_band_idx] ); + Word16 tmp4_nrm = W_norm( tmp4 ); + Word32 tmp4_final = W_extract_h( W_shl( tmp4, tmp4_nrm ) ); // exp_cldfb_re_1 + exp_cldfb_im_2 - tmp4_nrm + + Word64 tmp5 = W_mult_32_32( Cldfb_ImagBuffer1_fx[ch_start_idx1 + ch_idx1][sf][cldfb_band_idx], Cldfb_RealBuffer2_fx[ch_start_idx2 + ch_idx2][sf][cldfb_band_idx] ); + Word16 tmp5_nrm = W_norm( tmp5 ); + Word32 tmp5_final = W_extract_h( W_shl( tmp5, tmp5_nrm ) ); // exp_cldfb_im_1 + exp_cldfb_re_2 - tmp5_nrm + + Word16 exp_tmp6 = 0; + Word32 tmp6 = BASOP_Util_Add_Mant32Exp( tmp4_final, exp_cldfb_re_1 + exp_cldfb_im_2 - tmp4_nrm, L_negate( tmp5_final ), exp_cldfb_im_1 + exp_cldfb_re_2 - tmp5_nrm, &exp_tmp6 ); + Word16 exp_tmp_b_tmp = 0; + tmp_b = BASOP_Util_Add_Mant32Exp( tmp_b, exp_tmp_b, tmp6, exp_tmp6, &exp_tmp_b_tmp ); + exp_tmp_b = exp_tmp_b_tmp; + } + } + } + ELSE + { + FOR( sf = start_slot_idx; sf < add( start_slot_idx, num_slots ); sf++ ) + { + FOR( cldfb_band_idx = brange[0]; cldfb_band_idx < brange[1]; cldfb_band_idx++ ) + { + Word64 tmp1 = W_mult_32_32( Cldfb_RealBuffer1_fx[ch_start_idx1 + ch_idx1][sf][cldfb_band_idx], Cldfb_RealBuffer2_fx[ch_start_idx2 + ch_idx2][sf][cldfb_band_idx] ); + Word16 tmp1_nrm = W_norm( tmp1 ); + Word32 tmp1_final = W_extract_h( W_shl( tmp1, tmp1_nrm ) ); + + Word64 tmp2 = W_mult_32_32( Cldfb_ImagBuffer1_fx[ch_start_idx1 + ch_idx1][sf][cldfb_band_idx], Cldfb_ImagBuffer2_fx[ch_start_idx2 + ch_idx2][sf][cldfb_band_idx] ); + Word16 tmp2_nrm = W_norm( tmp2 ); + Word32 tmp2_final = W_extract_h( W_shl( tmp2, tmp2_nrm ) ); + + Word16 exp_tmp3 = 0; + Word32 tmp3 = BASOP_Util_Add_Mant32Exp( tmp1_final, exp_cldfb_re_1 + exp_cldfb_re_2 - tmp1_nrm, tmp2_final, exp_cldfb_im_1 + exp_cldfb_im_2 - tmp2_nrm, &exp_tmp3 ); + Word16 exp_tmp_a_tmp = 0; + tmp_a = BASOP_Util_Add_Mant32Exp( tmp_a, exp_tmp_a, tmp3, exp_tmp3, &exp_tmp_a_tmp ); + exp_tmp_a = exp_tmp_a_tmp; + + tmp_b = 0; + exp_tmp_b = 0; + } + } + } + out_cov_re_fx[ch_idx1][ch_idx2] = tmp_a; + move32(); + out_cov_im_fx[ch_idx1][ch_idx2] = tmp_b; + move32(); + exp_buff_re[ch_idx1][ch_idx2] = exp_tmp_a; + move32(); + exp_buff_im[ch_idx1][ch_idx2] = exp_tmp_b; + move32(); + } + } + /*make common exponent*/ + Word16 max_cov_re = 0, max_cov_im = 0; + FOR( int i = 0; i < num_chs; i++ ) + { + FOR( int j = 0; j < num_chs; j++ ) + { + max_cov_re = max( max_cov_re, exp_buff_re[i][j] ); + max_cov_im = max( max_cov_im, exp_buff_im[i][j] ); + } + } + FOR( int i = 0; i < num_chs; i++ ) + { + FOR( int j = 0; j < num_chs; j++ ) + { + out_cov_re_fx[i][j] = L_shr( out_cov_re_fx[i][j], max_cov_re - exp_buff_re[i][j] ); + move32(); + out_cov_im_fx[i][j] = L_shr( out_cov_im_fx[i][j], max_cov_im - exp_buff_im[i][j] ); + move32(); + } + } + + *exp_out_cov_re = max_cov_re; + *exp_out_cov_im = max_cov_im; + + return; +} +static void ComputeBandedCov_fx( + Word32 Cldfb_RealBuffer_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word16 exp_cldfb_re, + Word32 Cldfb_ImagBuffer_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word16 exp_cldfb_im, + const Word16 ch_start_idx, + Word32 out_cov_re_fx[][BINAURAL_CHANNELS], + Word16 *exp_cov_re, + Word32 out_cov_im_fx[][BINAURAL_CHANNELS], + Word16 *exp_cov_im, + const Word16 num_chs, + const Word16 *pBand_grouping, + const Word16 num_slots, + const Word16 start_slot_idx, + const Word16 md_band_idx, + const Word16 real_only ) +{ + Word16 sf, cldfb_band_idx, ch_idx1, ch_idx2; + Word16 brange[2]; + + FOR( ch_idx1 = 0; ch_idx1 < num_chs; ch_idx1++ ) + { + set32_fx( out_cov_re_fx[ch_idx1], 0, num_chs ); + set32_fx( out_cov_im_fx[ch_idx1], 0, num_chs ); + } + + brange[0] = pBand_grouping[md_band_idx]; + move16(); + brange[1] = pBand_grouping[md_band_idx + 1]; + move16(); + + Word16 exp_buff_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS], exp_buff_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + FOR( int i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( int j = 0; j < BINAURAL_CHANNELS; j++ ) + { + exp_buff_re[i][j] = 0; + move16(); + exp_buff_im[i][j] = 0; + move16(); + } + } + + FOR( ch_idx1 = 0; ch_idx1 < num_chs; ch_idx1++ ) + { + FOR( ch_idx2 = 0; ch_idx2 <= ch_idx1; ch_idx2++ ) + { + Word32 tmp_a = out_cov_re_fx[ch_idx1][ch_idx2]; + Word32 tmp_b = out_cov_im_fx[ch_idx1][ch_idx2]; + Word16 exp_tmp_a = 0, exp_tmp_b = 0; + test(); + IF( ( NE_16( ch_idx2, ch_idx1 ) ) && ( EQ_16( real_only, 0 ) ) ) + { + FOR( sf = start_slot_idx; sf < add( start_slot_idx, num_slots ); sf++ ) + { + FOR( cldfb_band_idx = brange[0]; cldfb_band_idx < brange[1]; cldfb_band_idx++ ) + { + Word64 tmp1 = W_mult_32_32( Cldfb_RealBuffer_fx[ch_start_idx + ch_idx1][sf][cldfb_band_idx], Cldfb_RealBuffer_fx[ch_start_idx + ch_idx2][sf][cldfb_band_idx] ); + Word16 tmp1_nrm = W_norm( tmp1 ); + Word32 tmp1_final = W_extract_h( W_shl( tmp1, tmp1_nrm ) ); // exp_cldfb_re + exp_cldfb_re - tmp1_nrm + + Word64 tmp2 = W_mult_32_32( Cldfb_ImagBuffer_fx[ch_start_idx + ch_idx1][sf][cldfb_band_idx], Cldfb_ImagBuffer_fx[ch_start_idx + ch_idx2][sf][cldfb_band_idx] ); + Word16 tmp2_nrm = W_norm( tmp2 ); + Word32 tmp2_final = W_extract_h( W_shl( tmp2, tmp2_nrm ) ); // exp_cldfb_im + exp_cldfb_im - tmp2_nrm + + Word16 exp_tmp3 = 0; + Word32 tmp3 = BASOP_Util_Add_Mant32Exp( tmp1_final, exp_cldfb_re + exp_cldfb_re - tmp1_nrm, tmp2_final, exp_cldfb_im + exp_cldfb_im - tmp2_nrm, &exp_tmp3 ); + Word16 exp_tmp_a_tmp = 0; + tmp_a = BASOP_Util_Add_Mant32Exp( tmp_a, exp_tmp_a, tmp3, exp_tmp3, &exp_tmp_a_tmp ); + exp_tmp_a = exp_tmp_a_tmp; + + Word64 tmp4 = W_mult_32_32( Cldfb_RealBuffer_fx[ch_start_idx + ch_idx1][sf][cldfb_band_idx], Cldfb_ImagBuffer_fx[ch_start_idx + ch_idx2][sf][cldfb_band_idx] ); + Word16 tmp4_nrm = W_norm( tmp4 ); + Word32 tmp4_final = W_extract_h( W_shl( tmp4, tmp4_nrm ) ); // exp_cldfb_re + exp_cldfb_im - tmp4_nrm + + Word64 tmp5 = W_mult_32_32( Cldfb_ImagBuffer_fx[ch_start_idx + ch_idx1][sf][cldfb_band_idx], Cldfb_RealBuffer_fx[ch_start_idx + ch_idx2][sf][cldfb_band_idx] ); + Word16 tmp5_nrm = W_norm( tmp5 ); + Word32 tmp5_final = W_extract_h( W_shl( tmp5, tmp5_nrm ) ); // exp_cldfb_im + exp_cldfb_re - tmp5_nrm + + Word16 exp_tmp6 = 0; + Word32 tmp6 = BASOP_Util_Add_Mant32Exp( tmp4_final, exp_cldfb_re + exp_cldfb_im - tmp4_nrm, L_negate( tmp5_final ), exp_cldfb_im + exp_cldfb_re - tmp5_nrm, &exp_tmp6 ); + Word16 exp_tmp_b_tmp = 0; + tmp_b = BASOP_Util_Add_Mant32Exp( tmp_b, exp_tmp_b, tmp6, exp_tmp6, &exp_tmp_b_tmp ); + exp_tmp_b = exp_tmp_b_tmp; + } + } + } + ELSE + { + FOR( sf = start_slot_idx; sf < add( start_slot_idx, num_slots ); sf++ ) + { + FOR( cldfb_band_idx = brange[0]; cldfb_band_idx < brange[1]; cldfb_band_idx++ ) + { + Word64 tmp1 = W_mult_32_32( Cldfb_RealBuffer_fx[ch_start_idx + ch_idx1][sf][cldfb_band_idx], Cldfb_RealBuffer_fx[ch_start_idx + ch_idx2][sf][cldfb_band_idx] ); + Word16 tmp1_nrm = W_norm( tmp1 ); + Word32 tmp1_final = W_extract_h( W_shl( tmp1, tmp1_nrm ) ); // exp_cldfb_re + exp_cldfb_re - tmp1_nrm + + Word64 tmp2 = W_mult_32_32( Cldfb_ImagBuffer_fx[ch_start_idx + ch_idx1][sf][cldfb_band_idx], Cldfb_ImagBuffer_fx[ch_start_idx + ch_idx2][sf][cldfb_band_idx] ); + Word16 tmp2_nrm = W_norm( tmp2 ); + Word32 tmp2_final = W_extract_h( W_shl( tmp2, tmp2_nrm ) ); // exp_cldfb_im + exp_cldfb_im - tmp2_nrm + + Word16 exp_tmp3 = 0; + Word32 tmp3 = BASOP_Util_Add_Mant32Exp( tmp1_final, exp_cldfb_re + exp_cldfb_re - tmp1_nrm, tmp2_final, exp_cldfb_im + exp_cldfb_im - tmp2_nrm, &exp_tmp3 ); + + Word16 exp_tmp_a_tmp = 0; + tmp_a = BASOP_Util_Add_Mant32Exp( tmp_a, exp_tmp_a, tmp3, exp_tmp3, &exp_tmp_a_tmp ); + exp_tmp_a = exp_tmp_a_tmp; + + tmp_b = 0; + exp_tmp_b = 0; + } + } + } + out_cov_re_fx[ch_idx1][ch_idx2] = tmp_a; + move32(); + exp_buff_re[ch_idx1][ch_idx2] = exp_tmp_a; + move32(); + + out_cov_im_fx[ch_idx1][ch_idx2] = tmp_b; + move32(); + exp_buff_im[ch_idx1][ch_idx2] = exp_tmp_b; + move32(); + } + } + + Word16 exp_max_re = MIN16B, exp_max_im = MIN16B; + FOR( int i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( int j = 0; j < BINAURAL_CHANNELS; j++ ) + { + exp_max_re = max( exp_max_re, exp_buff_re[i][j] ); + exp_max_im = max( exp_max_im, exp_buff_im[i][j] ); + } + } + + FOR( int i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( int j = 0; j < BINAURAL_CHANNELS; j++ ) + { + out_cov_re_fx[i][j] = L_shr( out_cov_re_fx[i][j], exp_max_re - exp_buff_re[i][j] ); + move32(); + out_cov_im_fx[i][j] = L_shr( out_cov_im_fx[i][j], exp_max_im - exp_buff_im[i][j] ); + move32(); + } + } + + FOR( ch_idx1 = 0; ch_idx1 < num_chs; ch_idx1++ ) + { + FOR( ch_idx2 = add( ch_idx1, 1 ); ch_idx2 < num_chs; ch_idx2++ ) + { + out_cov_re_fx[ch_idx1][ch_idx2] = out_cov_re_fx[ch_idx2][ch_idx1]; + move32(); + out_cov_im_fx[ch_idx1][ch_idx2] = L_negate( out_cov_im_fx[ch_idx2][ch_idx1] ); + move32(); + } + } + + *exp_cov_re = exp_max_re; + *exp_cov_im = exp_max_im; + + return; +} +static Word32 GetNormFact_fx( + Word32 cov_ii_re_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_ii_re, + Word32 cov_ii_im_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_ii_im, + Word32 cov_io_re_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_io_re, + Word32 cov_io_im_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_io_im, + Word32 cov_oo_re_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_oo_re, + Word16 *exp_norm_fact_fx ) +{ + Word16 i, j; + Word32 norm_fact_fx = 0, abs_val_fx; + Word16 exp_abs_val = 0, exp_norm_fact = 0; + + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + ivas_calculate_abs_fx( cov_ii_re_fx[i][j], exp_cov_ii_re, cov_ii_im_fx[i][j], exp_cov_ii_im, &abs_val_fx, &exp_abs_val ); + Word16 res_1 = BASOP_Util_Cmp_Mant32Exp( norm_fact_fx, exp_norm_fact, abs_val_fx, exp_abs_val ); + IF( EQ_16( res_1, negate( 1 ) ) ) + { + norm_fact_fx = abs_val_fx; + exp_norm_fact = exp_abs_val; + } + + ivas_calculate_abs_fx( cov_io_re_fx[i][j], exp_cov_io_re, cov_io_im_fx[i][j], exp_cov_io_im, &abs_val_fx, &exp_abs_val ); + res_1 = BASOP_Util_Cmp_Mant32Exp( norm_fact_fx, exp_norm_fact, abs_val_fx, exp_abs_val ); + IF( EQ_16( res_1, negate( 1 ) ) ) + { + norm_fact_fx = abs_val_fx; + exp_norm_fact = exp_abs_val; + } + ivas_calculate_rabs_fx( cov_oo_re_fx[i][j], exp_cov_oo_re, &abs_val_fx, &exp_abs_val ); + res_1 = BASOP_Util_Cmp_Mant32Exp( norm_fact_fx, exp_norm_fact, abs_val_fx, exp_abs_val ); + IF( EQ_16( res_1, negate( 1 ) ) ) + { + norm_fact_fx = abs_val_fx; + exp_norm_fact = exp_abs_val; + } + } + } + + Word16 flag = BASOP_Util_Cmp_Mant32Exp( norm_fact_fx, exp_norm_fact, EPSILON_FX, 0 ); + IF( EQ_16( flag, negate( 1 ) ) ) + { + norm_fact_fx = ONE_IN_Q30; + exp_norm_fact = 1; + } + + Word16 exp_tmp = 0; + Word16 tmp = BASOP_Util_Divide3232_Scale( PCM16_TO_FLT_FAC_FX_Q15, norm_fact_fx, &exp_tmp ); + exp_tmp = add( exp_tmp, sub( 16, exp_norm_fact ) ); + norm_fact_fx = L_deposit_h( tmp ); + exp_norm_fact = exp_tmp; + + *exp_norm_fact_fx = exp_norm_fact; + + return norm_fact_fx; +} + +static void isar_split_rend_huffman_encode( + isar_split_rend_huffman_cfg_t *huff_cfg, + const Word16 in, + Word32 *hcode, + Word32 *hlen ) +{ + Word32 min_sym_val; + const Word32 *codebook; + + min_sym_val = huff_cfg->codebook[0]; + move32(); + + codebook = &huff_cfg->codebook[3 * ( in - min_sym_val )]; + *hlen = codebook[1]; + move32(); + *hcode = codebook[2]; + move32(); + + return; +} + +static void isar_split_rend_quant_md_fx( + ISAR_BIN_HR_SPLIT_REND_MD_HANDLE hMd, + const ISAR_SPLIT_REND_POSE_TYPE pose_type, + const int16_t real_only, + Word32 fix_pos_rot_mat[][BINAURAL_CHANNELS], + const Word32 pred_1byquantstep, // Q26 + const Word16 Q_frame +#ifdef DEBUG_QUANT_MD_FX + , + float fix_pos_rot_mat_flt[][BINAURAL_CHANNELS], + const float pred_1byquantstep_flt // Q26 +#endif +) +{ + int16_t ch1, ch2; + int16_t gd_idx_min; + Word32 quant_val; +#ifdef DEBUG_QUANT_MD_FX + float quant_val_flt; + Word16 tmp; +#endif + if ( pose_type == PRED_ONLY || pose_type == PRED_ROLL_ONLY ) + { + Word32 onebyquantstep; + + onebyquantstep = pred_1byquantstep; +#ifdef DEBUG_QUANT_MD_FX + float onebyquantstep_flt = pred_1byquantstep_flt; +#endif + IF( real_only == 1 ) + { + FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + hMd->pred_mat_re_fx[ch1][ch1] = hMd->pred_mat_re2[ch1]; + } + hMd->pred_mat_re_fx[1][0] = 0; + hMd->pred_mat_re_fx[0][1] = 0; + + FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + FOR( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + quant_val = L_sub_sat( hMd->pred_mat_re_fx[ch1][ch2], L_shr_r( ( ch1 == ch2 ) ? ONE_IN_Q31 : 0, sub( Q31, Q_frame ) ) ); + quant_val = L_min( L_shr_r( ISAR_SPLIT_REND_PRED_MAX_VAL_Q30, sub( Q30, Q_frame ) ), L_max( quant_val, L_shr_r( ISAR_SPLIT_REND_PRED_MIN_VAL_Q30, sub( Q30, Q_frame ) ) ) ); + 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++ ) + { + quant_val = L_sub_sat( hMd->pred_mat_re_fx[ch1][ch2], L_shr_r( fix_pos_rot_mat[ch1][ch2], sub( Q31, Q_frame ) ) ); + quant_val = L_min( L_shr_r( ISAR_SPLIT_REND_PRED_MAX_VAL_Q30, sub( Q30, Q_frame ) ), L_max( quant_val, L_shr_r( ISAR_SPLIT_REND_PRED_MIN_VAL_Q30, sub( Q30, Q_frame ) ) ) ); + 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 + +#ifdef DEBUG_QUANT_MD_FX + quant_val_flt = hMd->pred_mat_re[ch1][ch2] - fix_pos_rot_mat_flt[ch1][ch2]; + quant_val_flt = min( ISAR_SPLIT_REND_PRED_MAX_VAL, max( quant_val_flt, ISAR_SPLIT_REND_PRED_MIN_VAL ) ); + tmp = (int16_t) roundf( onebyquantstep_flt * quant_val_flt ); + if ( hMd->pred_mat_re_idx[ch1][ch2] != tmp ) + { + printf( "\nUNEQUAL INDEX\n" ); + } +#endif + } + } + } + + if ( real_only == 0 ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + quant_val = L_min( L_shr_r( ISAR_SPLIT_REND_PRED_MAX_VAL_Q30, sub( Q30, Q_frame ) ), L_max( hMd->pred_mat_im_fx[ch1][ch2], L_shr_r( ISAR_SPLIT_REND_PRED_MIN_VAL_Q30, sub( Q30, Q_frame ) ) ) ); + hMd->pred_mat_im_idx[ch1][ch2] = (Word16) L_shr_r( Mpy_32_32( onebyquantstep, quant_val ), sub( Q_frame, 5 ) ); + // hMd->pred_mat_im[ch1][ch2] = hMd->pred_mat_im_idx[ch1][ch2] * IVAS_SPLIT_REND_PRED_Q_STEP; + + +#ifdef DEBUG_QUANT_MD_FX + quant_val_flt = min( ISAR_SPLIT_REND_PRED_MAX_VAL, max( hMd->pred_mat_im[ch1][ch2], ISAR_SPLIT_REND_PRED_MIN_VAL ) ); + tmp = (int16_t) roundf( onebyquantstep_flt * quant_val_flt ); + if ( hMd->pred_mat_im_idx[ch1][ch2] != tmp ) + { + printf( "\nUNEQUAL INDEX\n" ); + } +#endif + } + } + } + } + else if ( pose_type == COM_GAIN_ONLY ) + { + quant_val = L_min( L_shl_r( 1, Q_frame ) /*ISAR_SPLIT_REND_D_MAX_VAL_FX*/, L_max( hMd->gd_fx, ISAR_SPLIT_REND_D_MIN_VAL_FX ) ); //_frame + gd_idx_min = 0; //(int16_t)roundf(ISAR_SPLIT_REND_D_1BYQ_STEP * ISAR_SPLIT_REND_D_MIN_VAL) + hMd->gd_idx = (Word16) L_shr_r( Mpy_32_32( ISAR_SPLIT_REND_D_1BYQ_STEP_Q27, quant_val ), sub( Q_frame, 4 ) ); + hMd->gd_fx = W_extract_l( W_shr( W_mult0_32_32( hMd->gd_idx, ISAR_SPLIT_REND_D_Q_STEP_Q31 ), sub( Q31, Q_frame ) ) ); + hMd->gd_idx = sub( hMd->gd_idx, gd_idx_min ); + +#ifdef DEBUG_QUANT_MD_FX + quant_val_flt = min( ISAR_SPLIT_REND_D_MAX_VAL, max( hMd->gd, ISAR_SPLIT_REND_D_MIN_VAL ) ); + gd_idx_min = (int16_t) roundf( ISAR_SPLIT_REND_D_1BYQ_STEP * ISAR_SPLIT_REND_D_MIN_VAL ); + tmp = (int16_t) roundf( ISAR_SPLIT_REND_D_1BYQ_STEP * quant_val_flt ); + tmp = tmp - gd_idx_min; + if ( hMd->gd_idx != tmp ) + { + printf( "\nUNEQUAL INDEX\n" ); + } +#endif + } + else if ( pose_type == LR_GAIN_ONLY ) + { + quant_val = L_min( L_shr_r( ISAR_SPLIT_REND_PITCH_G_MAX_VAL_Q30, sub( Q30, Q_frame ) ), L_max( L_add( hMd->gd_fx, shr( 20, sub( Q30, Q_frame ) ) ), L_shr_r( ISAR_SPLIT_REND_PITCH_G_MIN_VAL_Q30, sub( Q30, Q_frame ) ) ) ); // Q25 + gd_idx_min = 7; // (int16_t)roundf(ISAR_SPLIT_REND_PITCH_G_1BYQ_STEP * ISAR_SPLIT_REND_PRED_MAX_VAL) + hMd->gd_idx = (Word16) L_shr_r( Mpy_32_32( ISAR_SPLIT_REND_PITCH_G_1BYQ_STEP_Q27, quant_val ), sub( Q_frame, 4 ) ); + hMd->gd_idx = sub( hMd->gd_idx, gd_idx_min ); + +#ifdef DEBUG_QUANT_MD_FX + quant_val_flt = min( ISAR_SPLIT_REND_PITCH_G_MAX_VAL, max( hMd->gd, ISAR_SPLIT_REND_PRED_MAX_VAL ) ); + gd_idx_min = (int16_t) roundf( ISAR_SPLIT_REND_PITCH_G_1BYQ_STEP * ISAR_SPLIT_REND_PRED_MAX_VAL ); + tmp = (int16_t) roundf( ISAR_SPLIT_REND_PITCH_G_1BYQ_STEP * quant_val_flt ); + tmp = tmp - gd_idx_min; + if ( hMd->gd_idx != tmp ) + { + printf( "\nUNEQUAL INDEX\n" ); + } +#endif + quant_val = L_min( L_shr_r( ISAR_SPLIT_REND_PITCH_G_MAX_VAL_Q30, sub( Q30, Q_frame ) ), L_max( L_add( hMd->gd2_fx, shr( 20, sub( Q30, Q_frame ) ) ), L_shr_r( ISAR_SPLIT_REND_PITCH_G_MIN_VAL_Q30, sub( Q30, Q_frame ) ) ) ); // Q25 + hMd->gd2_idx = (Word16) L_shr_r( Mpy_32_32( ISAR_SPLIT_REND_PITCH_G_1BYQ_STEP_Q27, quant_val ), sub( Q_frame, 4 ) ); + hMd->gd2_idx = sub( hMd->gd2_idx, gd_idx_min ); + +#ifdef DEBUG_QUANT_MD_FX + quant_val_flt = min( ISAR_SPLIT_REND_PITCH_G_MAX_VAL, max( hMd->gd2, ISAR_SPLIT_REND_PRED_MAX_VAL ) ); + tmp = (int16_t) roundf( ISAR_SPLIT_REND_PITCH_G_1BYQ_STEP * quant_val_flt ); + tmp = tmp - gd_idx_min; + if ( hMd->gd2_idx != tmp ) + { + printf( "\nUNEQUAL INDEX\n" ); + } +#endif + } + return; +} + + +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], + const Word16 exp_cov_oo_re, + Word32 gains_fx[BINAURAL_CHANNELS], + Word16 *exp_gains_fx ) +{ + Word16 exp_gd_tmp_buf[BINAURAL_CHANNELS] = { 0 }; + Word16 exp_gd_tmp = 0, i; + + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + gains_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( gains_fx[i], exp_gd_tmp_buf[i], EPSILON_FX, 0 ); + IF( EQ_16( flag, negate( 1 ) ) ) + { + gains_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], gains_fx[i], &exp_tmp ); + exp_tmp = exp_tmp + ( exp_cov_oo_re - exp_gd_tmp_buf[i] ); + tmp_sqrt = Sqrt16( tmp, &exp_tmp ); + gains_fx[i] = L_deposit_h( tmp_sqrt ); + move32(); + exp_gd_tmp_buf[i] = exp_tmp; + move16(); + } + } + + 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++ ) + { + gains_fx[i] = L_shr( gains_fx[i], max_gd_exp - exp_gd_tmp_buf[i] ); + move32(); + } + + *exp_gains_fx = exp_gd_tmp; + move16(); + return; +} + +static void ComputeCoeffs_fx( + Word32 cov_ii_re_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_ii_re, + Word32 cov_ii_im_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_ii_im, + Word32 cov_io_re_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_io_re, + Word32 cov_io_im_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_io_im, + Word32 cov_oo_re_fx[][BINAURAL_CHANNELS], + Word16 exp_cov_oo_re, + ISAR_BIN_HR_SPLIT_REND_MD_HANDLE hMd, + const ISAR_SPLIT_REND_POSE_TYPE pose_type, + const Word16 real_only ) +{ + Word16 i, j; + Word32 gd_fx, gl2_fx, gr2_fx, cov_norm_fact_fx; + Word16 exp_gd = 0; + + Word32 postpred_cov_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word16 exp_postpred_cov_re = 0; + + Word32 cov_ii_norm_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 cov_ii_norm_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 cov_io_norm_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 cov_io_norm_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 cov_oo_norm_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + + Word16 exp_cov_ii_norm_re = 0, exp_cov_ii_norm_im = 0, exp_cov_io_norm_re = 0, exp_cov_io_norm_im = 0, exp_cov_oo_norm_re = 0; + Word16 exp_pred_re = 0, exp_pred_im = 0; + + IF( EQ_16( pose_type, PITCH_ONLY ) ) + { + 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(); + exp_gd_tmp = exp_cov_ii_re; + + Word16 flag = BASOP_Util_Cmp_Mant32Exp( gd_tmp_fx[i], exp_gd_tmp, 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 = add( exp_tmp, sub( exp_cov_oo_re, exp_gd_tmp ) ); + tmp_sqrt = Sqrt16( tmp, &exp_tmp ); + gd_tmp_fx[i] = L_deposit_h( tmp_sqrt ); + move32(); + exp_gd_tmp_buf[i] = exp_tmp; + move16(); + } + } + + Word16 max_gd_exp = MIN16B; + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + max_gd_exp = s_max( max_gd_exp, exp_gd_tmp_buf[i] ); + } + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + gd_tmp_fx[i] = L_shr( gd_tmp_fx[i], max_gd_exp - exp_gd_tmp_buf[i] ); + move32(); + } + exp_gd_tmp = max_gd_exp; + move16(); + hMd->gd_fx = gd_tmp_fx[0]; + move16(); + hMd->gd2_fx = gd_tmp_fx[1]; + move16(); + hMd->exp_gd = exp_gd_tmp; + move16(); + hMd->exp_gd2 = exp_gd_tmp; + move16(); + } + ELSE + { + IF( real_only ) + { + 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, + gd_tmp_fx, &hMd->exp_pred_mat_re2 ); + hMd->pred_mat_re_fx[1][0] = 0; + move32(); + hMd->pred_mat_re_fx[0][1] = 0; + move32(); + hMd->exp_pred_mat_re = hMd->exp_pred_mat_re2; + move16(); + hMd->exp_pred_mat_im = hMd->exp_pred_mat_re; + move16(); + for ( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + hMd->pred_mat_re_fx[i][i] = gd_tmp_fx[i]; + hMd->pred_mat_re2[i] = gd_tmp_fx[i]; + set32_fx( hMd->pred_mat_im_fx[i], 0, BINAURAL_CHANNELS ); + } + } + ELSE + { + 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 ); + 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 ); + + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + cov_ii_norm_re_fx[i][j] = Mpy_32_32( cov_ii_re_fx[i][j], cov_norm_fact_fx ); + move32(); + cov_ii_norm_im_fx[i][j] = Mpy_32_32( cov_ii_im_fx[i][j], cov_norm_fact_fx ); + move32(); + cov_io_norm_re_fx[i][j] = Mpy_32_32( cov_io_re_fx[i][j], cov_norm_fact_fx ); + move32(); + cov_io_norm_im_fx[i][j] = Mpy_32_32( cov_io_im_fx[i][j], cov_norm_fact_fx ); + move32(); + cov_oo_norm_re_fx[i][j] = Mpy_32_32( cov_oo_re_fx[i][j], cov_norm_fact_fx ); + move32(); + } + } + + exp_cov_ii_norm_re = add( exp_cov_ii_re, exp_norm_fact ); + exp_cov_ii_norm_im = add( exp_cov_ii_im, exp_norm_fact ); + exp_cov_io_norm_re = add( exp_cov_io_re, exp_norm_fact ); + exp_cov_io_norm_im = add( exp_cov_io_im, exp_norm_fact ); + exp_cov_oo_norm_re = add( exp_cov_oo_re, exp_norm_fact ); + + ComputePredMat_fx( cov_ii_norm_re_fx, exp_cov_ii_norm_re, cov_ii_norm_im_fx, exp_cov_ii_norm_im, cov_io_norm_re_fx, exp_cov_io_norm_re, cov_io_norm_im_fx, exp_cov_io_norm_im, hMd->pred_mat_re_fx, &exp_pred_re, hMd->pred_mat_im_fx, &exp_pred_im, BINAURAL_CHANNELS, real_only ); + hMd->exp_pred_mat_re = exp_pred_re; + move16(); + hMd->exp_pred_mat_im = exp_pred_im; + move16(); + + /*TODO : change this function to real only as thats what is needed*/ + ComputePostPredCov_fx( cov_ii_norm_re_fx, exp_cov_ii_norm_re, cov_ii_norm_im_fx, exp_cov_ii_norm_im, hMd->pred_mat_re_fx, exp_pred_re, hMd->pred_mat_im_fx, exp_pred_im, postpred_cov_re_fx, &exp_postpred_cov_re, BINAURAL_CHANNELS ); + + /* normalize everything to +-1 range */ + Word16 gd_16_fx = BASOP_Util_Divide3232_Scale( ONE_IN_Q30, PCM16_TO_FLT_FAC_FX_Q15, &exp_gd ); + gd_fx = L_deposit_h( gd_16_fx ); + exp_gd = add( exp_gd, sub( 1, 16 ) ); + + Word16 tmp_buff_2[BINAURAL_CHANNELS][BINAURAL_CHANNELS], tmp_buff_3[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + Word64 tmp_2 = W_mult_32_32( cov_ii_norm_re_fx[i][j], gd_fx ); + Word64 tmp_3 = W_mult_32_32( cov_oo_norm_re_fx[i][j], gd_fx ); + Word16 shift_2 = W_norm( tmp_2 ); + Word16 shift_3 = W_norm( tmp_3 ); + + postpred_cov_re_fx[i][j] = Mpy_32_32( postpred_cov_re_fx[i][j], gd_fx ); + move32(); + cov_ii_norm_re_fx[i][j] = W_extract_h( W_shl( tmp_2, shift_2 ) ); + move32(); + cov_oo_norm_re_fx[i][j] = W_extract_h( W_shl( tmp_3, shift_3 ) ); + move32(); + + tmp_buff_2[i][j] = exp_cov_ii_norm_re + exp_gd - shift_2; + move16(); + tmp_buff_3[i][j] = exp_cov_oo_norm_re + exp_gd - shift_3; + move16(); + } + } + Word16 max_2 = MIN16B, max_3 = MIN16B; + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + max_2 = s_max( max_2, tmp_buff_2[i][j] ); + max_3 = s_max( max_3, tmp_buff_3[i][j] ); + } + } + + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + cov_ii_norm_re_fx[i][j] = L_shr( cov_ii_norm_re_fx[i][j], max_2 - tmp_buff_2[i][j] ); + move32(); + cov_oo_norm_re_fx[i][j] = L_shr( cov_oo_norm_re_fx[i][j], max_3 - tmp_buff_3[i][j] ); + move32(); + } + } + + exp_postpred_cov_re = add( exp_postpred_cov_re, exp_gd ); + exp_cov_ii_norm_re = max_2; + move16(); + exp_cov_oo_norm_re = max_3; + move16(); + + hMd->gd_fx = 0; + move16(); + Word16 exp_gl2 = 0; + move16(); + Word16 check_postPred = BASOP_Util_Cmp_Mant32Exp( postpred_cov_re_fx[0][0], exp_postpred_cov_re, EPSILON_FX, 0 ); + IF( EQ_16( check_postPred, 1 ) ) + { + Word16 exp_div_res = 0; + Word16 div_res = BASOP_Util_Divide3232_Scale( cov_oo_norm_re_fx[0][0], postpred_cov_re_fx[0][0], &exp_div_res ); + exp_div_res = exp_div_res + ( exp_cov_oo_norm_re - exp_postpred_cov_re ); + gl2_fx = L_deposit_h( div_res ); + exp_gl2 = exp_div_res; + move16(); + + Word16 Cmp1 = BASOP_Util_Cmp_Mant32Exp( gl2_fx, exp_gl2, ONE_IN_Q30, 1 ); + IF( EQ_16( Cmp1, negate( 1 ) ) ) + { + gl2_fx = ONE_IN_Q30; + exp_gl2 = 1; + move16(); + move16(); + } + + gl2_fx = Sqrt32( gl2_fx, &exp_gl2 ); + } + ELSE + { + gl2_fx = ONE_IN_Q30; + exp_gl2 = 1; + move16(); + move16(); + } + + Word16 exp_gr2 = 0; + check_postPred = BASOP_Util_Cmp_Mant32Exp( postpred_cov_re_fx[1][1], exp_postpred_cov_re, EPSILON_FX, 0 ); + IF( EQ_16( check_postPred, 1 ) ) + { + Word16 exp_div_res = 0; + Word16 div_res = BASOP_Util_Divide3232_Scale( cov_oo_norm_re_fx[1][1], postpred_cov_re_fx[1][1], &exp_div_res ); + exp_div_res = exp_div_res + ( exp_cov_oo_norm_re - exp_postpred_cov_re ); + gr2_fx = L_deposit_h( div_res ); + exp_gr2 = exp_div_res; + + Word16 Cmp1 = BASOP_Util_Cmp_Mant32Exp( gr2_fx, exp_gr2, ONE_IN_Q30, 1 ); + IF( EQ_16( Cmp1, negate( 1 ) ) ) + { + gr2_fx = ONE_IN_Q30; + move16(); + exp_gr2 = 1; + move16(); + } + + gr2_fx = Sqrt32( gr2_fx, &exp_gr2 ); + } + ELSE + { + gr2_fx = ONE_IN_Q30; + move16(); + exp_gr2 = 1; + move16(); + } + + Word16 pred_mat_buf_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word16 pred_mat_buf_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + pred_mat_buf_re[i][j] = exp_pred_re; + move16(); + pred_mat_buf_im[i][j] = exp_pred_im; + move16(); + } + } + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + hMd->pred_mat_re_fx[i][0] = Mpy_32_32( hMd->pred_mat_re_fx[i][0], gl2_fx ); + move32(); + hMd->pred_mat_re_fx[i][1] = Mpy_32_32( hMd->pred_mat_re_fx[i][1], gr2_fx ); + move32(); + pred_mat_buf_re[i][0] = add( exp_pred_re, exp_gl2 ); + move16(); + pred_mat_buf_re[i][1] = add( exp_pred_re, exp_gr2 ); + move16(); + } + + IF( EQ_16( real_only, 0 ) ) + { + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + hMd->pred_mat_im_fx[i][0] = Mpy_32_32( hMd->pred_mat_im_fx[i][0], gl2_fx ); + move32(); + hMd->pred_mat_im_fx[i][1] = Mpy_32_32( hMd->pred_mat_im_fx[i][1], gr2_fx ); + move32(); + + pred_mat_buf_im[i][0] = add( exp_pred_im, exp_gl2 ); + move16(); + pred_mat_buf_im[i][1] = add( exp_pred_im, exp_gr2 ); + move16(); + } + } + + Word16 max_exp_pred_re = MIN16B, max_exp_pred_im = MIN16B; + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + max_exp_pred_re = s_max( max_exp_pred_re, pred_mat_buf_re[i][j] ); + max_exp_pred_im = s_max( max_exp_pred_im, pred_mat_buf_im[i][j] ); + } + } + + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + hMd->pred_mat_re_fx[i][j] = L_shr( hMd->pred_mat_re_fx[i][j], max_exp_pred_re - pred_mat_buf_re[i][j] ); + move32(); + hMd->pred_mat_im_fx[i][j] = L_shr( hMd->pred_mat_im_fx[i][j], max_exp_pred_im - pred_mat_buf_im[i][j] ); + move32(); + } + } + + hMd->exp_pred_mat_re = max_exp_pred_re; + move16(); + hMd->exp_pred_mat_im = max_exp_pred_im; + move16(); + } + } + + return; +} + +static void get_base2_bits( + const ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const Word16 num_subframes, + const Word16 num_quant_strats, + const Word16 pred_real_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + const Word16 pred_imag_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + Word16 pred_quant_pnts_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + const Word16 d_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + const Word16 bands_pitch[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + const Word16 pred_real_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + const Word16 pred_imag_bands_roll[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + Word32 base2bits[ISAR_SPLIT_REND_NUM_QUANT_STRATS] ) +{ + Word16 pred_roll_bits; + Word16 d_gain_bits, pitch_gain_bits, pose_idx, q; + Word16 pred_yaw_bits[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; + Word16 bin_ch_2, bin_ch_2_num_sf, bin_ch_num_sf; + + ISAR_SPLIT_REND_POSE_TYPE pose_type; + + FOR( q = 0; q < num_quant_strats; q++ ) + { + pred_yaw_bits[q] = ceil_log_2( pred_quant_pnts_yaw[q] ); + move16(); + } + pred_roll_bits = ceil_log_2( ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS ); + + d_gain_bits = ceil_log_2( ISAR_SPLIT_REND_D_QUANT_PNTS ); + pitch_gain_bits = d_gain_bits; + move16(); + + FOR( q = 0; q < num_quant_strats; q++ ) + { + base2bits[q] = 0; + move32(); + } + + bin_ch_2 = DEPR_i_mult( BINAURAL_CHANNELS, BINAURAL_CHANNELS ); + bin_ch_2_num_sf = DEPR_i_mult( bin_ch_2, num_subframes ); + bin_ch_num_sf = DEPR_i_mult( BINAURAL_CHANNELS, num_subframes ); + + FOR( q = 0; q < num_quant_strats; q++ ) + { + FOR( pose_idx = 0; pose_idx < sub( pMultiBinPoseData->num_poses, 1 ); pose_idx++ ) + { + pose_type = hBinHrSplitPreRend->pose_type[pose_idx]; + IF( EQ_32( pose_type, ANY_YAW ) ) + { + 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(); + + + base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( d_gain_bits, d_bands_yaw[q] ), num_subframes ) ); + move32(); + } + ELSE IF( EQ_32( pose_type, PITCH_ONLY ) ) + { + base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pitch_gain_bits, bands_pitch[q] ), num_subframes ) ); + move32(); + base2bits[q] = L_add( base2bits[q], L_mult0( DEPR_i_mult( pitch_gain_bits, bands_pitch[q] ), num_subframes ) ); + 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(); + } + } + } + + return; +} + + +static void isar_SplitRenderer_code_md_base2( + const ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const Word16 num_subframes, + const Word16 pred_real_bands_yaw, + const Word16 pred_imag_bands_yaw, + const Word16 pred_quant_pnts_yaw, + const Word16 d_bands_yaw, + const Word16 bands_pitch, + const Word16 pred_real_bands_roll, + const Word16 pred_imag_bands_roll, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word16 pos_idx, b, ch1, ch2, sf_idx; + Word16 min_pred_idx, min_gd_idx, min_p_gd_idx, pred_code_len, gd_code_len, p_gd_code_len, num_poses; + Word16 min_pred_roll_idx, pred_roll_code_len; + Word16 pred_cb_idx; + Word32 code; + ISAR_BIN_HR_SPLIT_REND_MD_HANDLE hMd; + ISAR_BIN_HR_SPLIT_REND_HUFF_HANDLE pHuff_cfg; + + pHuff_cfg = &hBinHrSplitPreRend->huff_cfg; + IF( EQ_16( pred_quant_pnts_yaw, ISAR_SPLIT_REND_PRED_63QUANT_PNTS ) ) + { + pred_cb_idx = 1; + move16(); + } + ELSE + { + pred_cb_idx = 0; + move16(); + } + min_pred_idx = extract_l( pHuff_cfg->pred[pred_cb_idx].codebook[0] ); + min_pred_roll_idx = extract_l( pHuff_cfg->pred_roll.codebook[0] ); + min_gd_idx = extract_l( pHuff_cfg->gd.codebook[0] ); + min_p_gd_idx = extract_l( pHuff_cfg->p_gd.codebook[0] ); + + pred_code_len = pHuff_cfg->pred_base2_code_len[pred_cb_idx]; + move16(); + pred_roll_code_len = pHuff_cfg->pred_roll_base2_code_len; + move16(); + gd_code_len = pHuff_cfg->gd_base2_code_len; + move16(); + p_gd_code_len = pHuff_cfg->p_gd_base2_code_len; + move16(); + + num_poses = pMultiBinPoseData->num_poses; + move16(); + + FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + FOR( pos_idx = 0; pos_idx < sub( num_poses, 1 ); pos_idx++ ) + { + IF( EQ_32( hBinHrSplitPreRend->pose_type[pos_idx], ANY_YAW ) ) + { + 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_re_idx[ch1][ch2], min_pred_idx ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_code_len ); + } + } + + 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 ); + } + } + } + FOR( ; b < pred_real_bands_yaw; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + code = L_sub( hMd->pred_mat_re_idx[ch1][ch1], min_pred_idx ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_code_len ); + } + } + FOR( b = 0; b < d_bands_yaw; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + code = L_sub( hMd->gd_idx, min_gd_idx ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, gd_code_len ); + } + } + ELSE IF( EQ_32( hBinHrSplitPreRend->pose_type[pos_idx], PITCH_ONLY ) ) + { + FOR( b = 0; b < bands_pitch; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + code = L_sub( hMd->gd_idx, min_p_gd_idx ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, p_gd_code_len ); + + code = L_sub( hMd->gd2_idx, min_p_gd_idx ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, p_gd_code_len ); + } + } + ELSE + { + 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_re_idx[ch1][ch2], min_pred_roll_idx ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_roll_code_len ); + } + } + + 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 ); + } + } + } + FOR( ; b < pred_real_bands_roll; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + FOR( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + code = L_sub( hMd->pred_mat_re_idx[ch1][ch1], min_pred_roll_idx ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, pred_roll_code_len ); + } + } + } + } + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + { + static int16_t num_bits = 0; + static int16_t cntr = 0; + float fnum_bits; + + cntr++; + + num_bits += pBits->bits_written; + /* collect bits for every second */ + if ( cntr == 50 ) + { + cntr = 0; + fnum_bits = (float) num_bits / 1000.0f; + dbgwrite_txt( &fnum_bits, 1, "split_rend_MD_bitrate.txt", "MD bitrate (kbps)" ); + num_bits = 0; + } + } +#endif + return; +} + + +static void isar_SplitRenderer_code_md_huff( + const ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const Word16 num_subframes, + const Word16 pred_real_bands_yaw, + const Word16 pred_imag_bands_yaw, + const Word16 pred_quant_pnts_yaw, + const Word16 d_bands_yaw, + const Word16 bands_pitch, + const Word16 pred_real_bands_roll, + const Word16 pred_imag_bands_roll, + ISAR_SPLIT_REND_BITS_HANDLE pBits ) +{ + Word16 pos_idx, b, ch1, ch2, sf_idx, num_poses; + Word16 sym_adj_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word16 min_pred_idx, max_pred_idx; + Word16 min_pred_roll_idx, max_pred_roll_idx, pred_cb_idx; + Word32 code, len; + ISAR_BIN_HR_SPLIT_REND_MD_HANDLE hMd; + ISAR_BIN_HR_SPLIT_REND_HUFF_HANDLE pHuff_cfg; + + pHuff_cfg = &hBinHrSplitPreRend->huff_cfg; + + IF( EQ_16( pred_quant_pnts_yaw, ISAR_SPLIT_REND_PRED_63QUANT_PNTS ) ) + { + pred_cb_idx = 1; + move16(); + } + ELSE + { + pred_cb_idx = 0; + move16(); + } + + min_pred_idx = extract_l( pHuff_cfg->pred[pred_cb_idx].codebook[0] ); + max_pred_idx = extract_l( pHuff_cfg->pred[pred_cb_idx].codebook[DEPR_i_mult( sub( pred_quant_pnts_yaw, 1 ), 3 )] ); + min_pred_roll_idx = extract_l( pHuff_cfg->pred_roll.codebook[0] ); + max_pred_roll_idx = extract_l( pHuff_cfg->pred_roll.codebook[DEPR_i_mult( sub( ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS, 1 ), 3 )] ); + + num_poses = pMultiBinPoseData->num_poses; + move16(); + + FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + FOR( pos_idx = 0; pos_idx < sub( num_poses, 1 ); pos_idx++ ) + { + IF( EQ_32( hBinHrSplitPreRend->pose_type[pos_idx], ANY_YAW ) ) + { + FOR( b = 0; b < pred_imag_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 ); + } + } + + 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 ); + } + } + } + FOR( ; 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++ ) + { + isar_split_rend_huffman_encode( &pHuff_cfg->pred[pred_cb_idx], sym_adj_idx[ch1][ch1], &code, &len ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len ); + } + } + FOR( b = 0; b < d_bands_yaw; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + isar_split_rend_huffman_encode( &pHuff_cfg->gd, hMd->gd_idx, &code, &len ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len ); + } + } + ELSE IF( EQ_32( hBinHrSplitPreRend->pose_type[pos_idx], PITCH_ONLY ) ) + { + FOR( b = 0; b < bands_pitch; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + isar_split_rend_huffman_encode( &pHuff_cfg->p_gd, hMd->gd_idx, &code, &len ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len ); + + isar_split_rend_huffman_encode( &pHuff_cfg->p_gd, hMd->gd2_idx, &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]; + 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 ); + } + } + + 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 ); + } + } + } + FOR( ; 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++ ) + { + isar_split_rend_huffman_encode( &pHuff_cfg->pred_roll, sym_adj_idx[ch1][ch1], &code, &len ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, code, len ); + } + } + } + } + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + { + static int16_t num_bits = 0; + static int16_t cntr = 0; + float fnum_bits; + + cntr++; + num_bits += pBits->bits_written; + /* collect bits for every second */ + IF( cntr == 50 ) + { + cntr = 0; + fnum_bits = (float) num_bits / 1000.0f; + dbgwrite_txt( &fnum_bits, 1, "split_rend_MD_bitrate.txt", "MD bitrate (kbps)" ); + num_bits = 0; + } + } +#endif + return; +} + +static void isar_SplitRenderer_quant_code( + const ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, + const IVAS_QUATERNION headPosition, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + const Word16 low_res_pre_rend_rot, + const int16_t ro_md_flag, + const Word32 target_md_bits, + Word16 Q_frame ) +{ + Word16 q, num_subframes, sf_idx, pos_idx, b, num_quant_strats; + 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]; + Word16 d_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], bands_pitch[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; + Word32 base2bits[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; + Word16 pred_quant_pnts_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; + Word32 pred_1byquantstep_yaw_fx[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; + Word32 pred_quantstep_yaw_fx[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; +#ifdef DEBUG_QUANT_MD_FX + float pred_1byquantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; + float pred_quantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS]; +#endif + ISAR_BIN_HR_SPLIT_REND_MD_HANDLE hMd; + Word16 rot_axis_code, num_bits; + + IF( low_res_pre_rend_rot ) + { + num_subframes = 1; + } + ELSE + { + num_subframes = MAX_PARAM_SPATIAL_SUBFRAMES; + } + + overhead_bits = pBits->bits_written; + + 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 ); + 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 ); + + /* code ref pose*/ + FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + Word16 angle; + IVAS_QUATERNION head_pos_euler, headPosition_q22; + + modify_Quat_q_fx( &headPosition, &headPosition_q22, Q22 ); + Quat2EulerDegree_fx( headPosition_q22, &head_pos_euler.z_fx, &head_pos_euler.y_fx, &head_pos_euler.x_fx ); + angle = (Word16) L_shr_r( head_pos_euler.x_fx, Q22 ); + angle = add( angle, 180 ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, angle, ISAR_SPLIT_REND_HEAD_POSE_BITS ); + + angle = (Word16) L_shr_r( head_pos_euler.y_fx, Q22 ); + angle = add( angle, 180 ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, angle, ISAR_SPLIT_REND_HEAD_POSE_BITS ); + + angle = (Word16) L_shr_r( head_pos_euler.z_fx, Q22 ); + angle = add( angle, 180 ); + + ISAR_SPLIT_REND_BITStream_write_int32( pBits, angle, ISAR_SPLIT_REND_HEAD_POSE_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 ); +#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 ); +#endif + + quant_strat_bits = ceil_log_2( num_quant_strats ); + + overhead_bits = L_add( L_add( L_sub( pBits->bits_written, overhead_bits ), quant_strat_bits ), 1 ); /* 1 for base2 vs huff */ + + get_base2_bits( hBinHrSplitPreRend, pMultiBinPoseData, num_subframes, num_quant_strats, pred_real_bands_yaw, pred_imag_bands_yaw, + pred_quant_pnts_yaw, + d_bands_yaw, bands_pitch, pred_real_bands_roll, pred_imag_bands_roll, base2bits ); + + FOR( q = 0; q < num_quant_strats; q++ ) + { + FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + FOR( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + IF( hBinHrSplitPreRend->pose_type[pos_idx] == ANY_YAW ) + { + FOR( b = 0; b < pred_imag_bands_yaw[q]; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + isar_split_rend_quant_md_fx( hMd, PRED_ONLY, 0, hBinHrSplitPreRend->fix_pos_rot_mat_fx[pos_idx], pred_1byquantstep_yaw_fx[q], Q_frame +#ifdef DEBUG_QUANT_MD_FX + , + hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx], pred_1byquantstep_yaw[q] +#endif + ); + } + FOR( ; b < pred_real_bands_yaw[q]; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + isar_split_rend_quant_md_fx( hMd, PRED_ONLY, 1, hBinHrSplitPreRend->fix_pos_rot_mat_fx[pos_idx], pred_1byquantstep_yaw_fx[q], Q_frame +#ifdef DEBUG_QUANT_MD_FX + , + hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx], pred_1byquantstep_yaw[q] +#endif + ); + } + + FOR( b = 0; b < d_bands_yaw[q]; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + isar_split_rend_quant_md_fx( hMd, COM_GAIN_ONLY, 1, hBinHrSplitPreRend->fix_pos_rot_mat_fx[pos_idx], 0, Q_frame +#ifdef DEBUG_QUANT_MD_FX + , + hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx], 0.0f +#endif + ); + } + } + ELSE IF( hBinHrSplitPreRend->pose_type[pos_idx] == PITCH_ONLY ) + { + FOR( b = 0; b < bands_pitch[q]; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + isar_split_rend_quant_md_fx( hMd, LR_GAIN_ONLY, 1, hBinHrSplitPreRend->fix_pos_rot_mat_fx[pos_idx], 0, Q_frame +#ifdef DEBUG_QUANT_MD_FX + , + hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx], 0.0f +#endif + ); + } + } + ELSE + { + FOR( b = 0; b < pred_imag_bands_roll[q]; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + isar_split_rend_quant_md_fx( hMd, PRED_ROLL_ONLY, 0, hBinHrSplitPreRend->fix_pos_rot_mat_fx[pos_idx], ISAR_SPLIT_REND_PRED_ROLL_1BYQ_STEP_Q26, Q_frame +#ifdef DEBUG_QUANT_MD_FX + , + hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx], ISAR_SPLIT_REND_PRED_ROLL_1BYQ_STEP +#endif + ); + } + FOR( ; b < pred_real_bands_roll[q]; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + isar_split_rend_quant_md_fx( hMd, PRED_ROLL_ONLY, 1, hBinHrSplitPreRend->fix_pos_rot_mat_fx[pos_idx], ISAR_SPLIT_REND_PRED_ROLL_1BYQ_STEP_Q26, Q_frame +#ifdef DEBUG_QUANT_MD_FX + , + hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx], ISAR_SPLIT_REND_PRED_ROLL_1BYQ_STEP +#endif + ); + } + } + } + } + + /*get base2 bits and check if its within target. if yes then code with base2 to save complexity on post renderer*/ + start_bit = pBits->bits_written; + + ISAR_SPLIT_REND_BITStream_write_int32( pBits, 1, 1 ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, q, quant_strat_bits ); + + huff_bits = pBits->bits_written; + isar_SplitRenderer_code_md_huff( + hBinHrSplitPreRend, + pMultiBinPoseData, + num_subframes, + pred_real_bands_yaw[q], + pred_imag_bands_yaw[q], + pred_quant_pnts_yaw[q], + d_bands_yaw[q], + bands_pitch[q], + pred_real_bands_roll[q], + pred_imag_bands_roll[q], + pBits ); + + huff_bits = L_sub( pBits->bits_written, huff_bits ); + test(); + test(); + test(); + IF( GE_32( target_md_bits, ( base2bits[q] + overhead_bits ) ) || GE_32( target_md_bits, ( huff_bits + overhead_bits ) ) || EQ_16( q, sub( num_quant_strats, 1 ) ) ) + { + IF( GT_32( huff_bits, base2bits[q] ) ) + { + pBits->bits_written = start_bit; + + ISAR_SPLIT_REND_BITStream_write_int32( pBits, 0, 1 ); + ISAR_SPLIT_REND_BITStream_write_int32( pBits, q, quant_strat_bits ); + + isar_SplitRenderer_code_md_base2( hBinHrSplitPreRend, pMultiBinPoseData, num_subframes, pred_real_bands_yaw[q], pred_imag_bands_yaw[q], + pred_quant_pnts_yaw[q], + d_bands_yaw[q], bands_pitch[q], pred_real_bands_roll[q], pred_imag_bands_roll[q], pBits ); + } + BREAK; + } + + pBits->bits_written = start_bit; + } + +#ifdef SPLIT_MD_CODING_DEBUG + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + int16_t val, quant_strat, ch1, ch2; + char filename[200] = "split_md_debug_indices.bin"; + quant_strat = q; + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + if ( hBinHrSplitPreRend->pose_type[pos_idx] == ANY_YAW ) + { + for ( b = 0; b < pred_real_bands_yaw[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_idx[ch1][ch2]; + dbgwrite( &val, sizeof( int16_t ), 1, 1, filename ); + } + } + } + for ( b = 0; b < pred_imag_bands_yaw[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_idx[ch1][ch2]; + dbgwrite( &val, sizeof( int16_t ), 1, 1, filename ); + } + } + } + for ( b = 0; b < d_bands_yaw[quant_strat]; b++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd_idx; + dbgwrite( &val, sizeof( int16_t ), 1, 1, filename ); + } + } + else if ( hBinHrSplitPreRend->pose_type[pos_idx] == PITCH_ONLY ) + { + for ( b = 0; b < bands_pitch[quant_strat]; b++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd_idx; + dbgwrite( &val, sizeof( int16_t ), 1, 1, filename ); + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd2_idx; + dbgwrite( &val, sizeof( int16_t ), 1, 1, filename ); + } + } + else + { + for ( b = 0; b < pred_real_bands_roll[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_idx[ch1][ch2]; + dbgwrite( &val, sizeof( int16_t ), 1, 1, filename ); + } + } + } + for ( b = 0; b < pred_imag_bands_roll[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_idx[ch1][ch2]; + dbgwrite( &val, sizeof( int16_t ), 1, 1, filename ); + } + } + } + } + } + } +#endif + + return; +} +/*------------------------------------------------------------------------- + * Function isar_SplitRenderer_GetRotMd() + * + * + *------------------------------------------------------------------------*/ + +static void isar_SplitRenderer_GetRotMd_fx( + ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, /* i/o: binaural renderer handle */ + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + Word32 Cldfb_RealBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Reference Binaural signals */ + Word16 exp_cldfb_re, + Word32 Cldfb_ImagBuffer_Ref_Binaural_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Reference Binaural signals */ + Word16 exp_cldfb_im, + const Word16 low_res, + const Word16 ro_md_flag ) +{ + Word32 cov_ii_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS] = { 0 }; + Word32 cov_oo_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS] = { 0 }; + Word32 cov_io_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS] = { 0 }; + Word32 cov_ii_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS] = { 0 }; + Word32 cov_oo_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS] = { 0 }; + Word32 cov_io_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS] = { 0 }; + Word16 exp_cov_io_re = 0, exp_cov_io_im = 0; + Word16 exp_cov_ii_re = 0, exp_cov_ii_im = 0; + Word16 exp_cov_oo_re = 0, exp_cov_oo_im = 0; + + Word16 real_only = 0; + Word16 pos_idx, b, sf_idx, start_slot_idx, num_slots, num_subframes, ch_s_idx1, ch_s_idx2; + Word16 num_md_bands, num_poses; + const Word16 *pBand_grouping = isar_split_rend_band_grouping; + + push_wmops( "isar_SplitRenderer_GetRotMd_fx" ); + + num_md_bands = MAX_SPLIT_REND_MD_BANDS; + move16(); + num_poses = pMultiBinPoseData->num_poses; + move16(); + + IF( low_res ) + { + num_slots = CLDFB_NO_COL_MAX; + move16(); + num_subframes = 1; + move16(); + } + ELSE + { + num_slots = MAX_PARAM_SPATIAL_SUBFRAMES; + move16(); + num_subframes = MAX_PARAM_SPATIAL_SUBFRAMES; + move16(); + } + + /* compute reference signal covariance */ + FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + start_slot_idx = imult1616( sf_idx, num_slots ); + FOR( b = 0; b < num_md_bands; b++ ) + { + test(); + IF( LT_16( b, SPLIT_REND_RO_MD_BAND_THRESH ) || ( !ro_md_flag && b < COMPLEX_MD_BAND_THRESH ) ) + { + real_only = 0; + move16(); + } + ELSE + { + real_only = 1; + move16(); + } + + ch_s_idx1 = 0; + + ComputeBandedCov_fx( Cldfb_RealBuffer_Ref_Binaural_fx, exp_cldfb_re, Cldfb_ImagBuffer_Ref_Binaural_fx, exp_cldfb_im, ch_s_idx1, cov_ii_re_fx, &exp_cov_ii_re, cov_ii_im_fx, &exp_cov_ii_im, BINAURAL_CHANNELS, pBand_grouping, num_slots, start_slot_idx, b, real_only ); + + /* compute rotated signal covariance */ + FOR( pos_idx = 0; pos_idx < num_poses - 1; pos_idx++ ) + { + IF( hBinHrSplitPreRend->pose_type[pos_idx] == ANY_ROLL ) + { + IF( GE_16( b, SPLIT_REND_RO_MD_BAND_THRESH ) ) + { + real_only = 1; + } + } + ch_s_idx2 = imult1616( add( pos_idx, 1 ), BINAURAL_CHANNELS ); + + ComputeBandedCrossCov_fx( Cldfb_RealBuffer_Ref_Binaural_fx, exp_cldfb_re, Cldfb_ImagBuffer_Ref_Binaural_fx, exp_cldfb_im, ch_s_idx1, Cldfb_RealBuffer_Ref_Binaural_fx, exp_cldfb_re, Cldfb_ImagBuffer_Ref_Binaural_fx, exp_cldfb_im, ch_s_idx2, cov_io_re_fx, &exp_cov_io_re, cov_io_im_fx, &exp_cov_io_im, BINAURAL_CHANNELS, pBand_grouping, num_slots, start_slot_idx, b, real_only ); + + ComputeBandedCov_fx( Cldfb_RealBuffer_Ref_Binaural_fx, exp_cldfb_re, Cldfb_ImagBuffer_Ref_Binaural_fx, exp_cldfb_im, ch_s_idx2, cov_oo_re_fx, &exp_cov_oo_re, cov_oo_im_fx, &exp_cov_oo_im, BINAURAL_CHANNELS, pBand_grouping, num_slots, start_slot_idx, b, real_only ); + + ComputeCoeffs_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, &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b], hBinHrSplitPreRend->pose_type[pos_idx], real_only ); + } + } + } + + pop_wmops(); + return; +} +/*------------------------------------------------------------------------- + * Function isar_rend_CldfbSplitPreRendProcess() + * + * + *------------------------------------------------------------------------*/ +void isar_rend_CldfbSplitPreRendProcess( + const ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, + const IVAS_QUATERNION headPosition, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + Word32 Cldfb_In_BinReal_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word16 exp_cldfb_re, + Word32 Cldfb_In_BinImag_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word16 exp_cldfb_im, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + const Word32 target_md_bits, + const Word16 low_res_pre_rend_rot, + const Word16 ro_md_flag ) +{ + push_wmops( "isar_rend_CldfbSplitPreRendProcess" ); + + isar_SplitRenderer_GetRotMd_fx( hBinHrSplitPreRend, pMultiBinPoseData, Cldfb_In_BinReal_fx, exp_cldfb_re, Cldfb_In_BinImag_fx, exp_cldfb_im, low_res_pre_rend_rot, ro_md_flag ); + + Word16 num_md_bands, num_poses; + Word16 pos_idx, b, sf_idx, num_subframes; + + num_md_bands = MAX_SPLIT_REND_MD_BANDS; + num_poses = pMultiBinPoseData->num_poses; + + IF( low_res_pre_rend_rot ) + { + num_subframes = 1; + } + ELSE + { + num_subframes = MAX_PARAM_SPATIAL_SUBFRAMES; + } + + /*FILE *filePointer_gd, *filePointer_gd2; + FILE *filePointer_re, *filePointer_im; + filePointer_gd = fopen("Fixed_code_cov_gd_complete.txt", "a"); + filePointer_gd2 = fopen("Fixed_code_cov_gd2_complete.txt", "a"); + filePointer_re = fopen("Fixed_code_re_complete.txt", "a"); + filePointer_im = fopen("Fixed_code_im_complete.txt", "a");*/ + +#ifdef DUMP_GETROTMD_OUTPUT + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + for ( b = 0; b < num_md_bands; b++ ) + { + for ( pos_idx = 0; pos_idx < num_poses - 1; pos_idx++ ) + { + if ( hBinHrSplitPreRend->pose_type[pos_idx] == PITCH_ONLY ) + { + hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd = me2f( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd_fx, hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_gd ); + hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd2 = me2f( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd2_fx, hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_gd2 ); + /*fprintf(filePointer_gd, "%f\n", hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd); + fprintf(filePointer_gd2, "%f\n", hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd2);*/ + } + else + { + for ( int i = 0; i < BINAURAL_CHANNELS; i++ ) + { + for ( int j = 0; j < BINAURAL_CHANNELS; j++ ) + { + hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re[i][j] = me2f( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_fx[i][j], hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_re ); + hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im[i][j] = me2f( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_fx[i][j], hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_im ); + /*fprintf(filePointer_re, "%f\n", hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re[i][j]); + fprintf(filePointer_im, "%f\n", hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im[i][j]);*/ + } + } + } + } + } + } +#endif + + /*fclose(filePointer_gd); + fclose(filePointer_gd2); + fclose(filePointer_re); + fclose(filePointer_im);*/ + + /* Check if rescaling can be simplified/avoid */ + + Word16 exp_frame = 0; + // Word32 L_temp_max = 0; + FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + FOR( b = 0; b < num_md_bands; b++ ) + { + FOR( pos_idx = 0; pos_idx < num_poses - 1; pos_idx++ ) + { + IF( hBinHrSplitPreRend->pose_type[pos_idx] == PITCH_ONLY ) + { + exp_frame = s_max( exp_frame, hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_gd ); + exp_frame = s_max( exp_frame, hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_gd2 ); + } + ELSE + { + exp_frame = s_max( exp_frame, hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_re ); + exp_frame = s_max( exp_frame, hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_re2 ); + exp_frame = s_max( exp_frame, hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_pred_mat_im ); + } + } + } + } + // exp_frame = s_min( exp_frame, sub( 31, norm_l( L_temp_max ) ) ); + exp_frame = s_min( exp_frame, 15 ); // Considering the max value as of prediction matrices as 300 + + Word16 Q_frame = sub( Q31, exp_frame ); + FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + FOR( b = 0; b < num_md_bands; b++ ) + { + FOR( pos_idx = 0; pos_idx < num_poses - 1; pos_idx++ ) + { + IF( hBinHrSplitPreRend->pose_type[pos_idx] == PITCH_ONLY ) + { + hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd_fx = L_shr_r( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd_fx, sub( exp_frame, hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_gd ) ); + hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd2_fx = L_shr_r( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd2_fx, sub( exp_frame, hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].exp_gd2 ) ); + /*fprintf(filePointer_gd, "%f\n", hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd); + fprintf(filePointer_gd2, "%f\n", hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd2);*/ + } + ELSE + { + FOR( Word16 i = 0; i < BINAURAL_CHANNELS; i++ ) + { + 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 ) ); + } + 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 ) ); + } + } + } + } + + isar_SplitRenderer_quant_code( hBinHrSplitPreRend, headPosition, pMultiBinPoseData, pBits, low_res_pre_rend_rot, ro_md_flag, target_md_bits, Q_frame ); +#ifdef DEBUG_QUANT_CODE_OUT + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + for ( b = 0; b < num_md_bands; b++ ) + { + for ( pos_idx = 0; pos_idx < num_poses - 1; pos_idx++ ) + { + if ( hBinHrSplitPreRend->pose_type[pos_idx] == PITCH_ONLY ) + { + hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd = fixedToFloat( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd_fx, Q_frame ); + hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd2 = fixedToFloat( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd2_fx, Q_frame ); + /*fprintf(filePointer_gd, "%f\n", hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd); + fprintf(filePointer_gd2, "%f\n", hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd2);*/ + } + else + { + for ( int i = 0; i < BINAURAL_CHANNELS; i++ ) + { + fixedToFloat_arrL( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_fx[i], hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re[i], Q_frame, BINAURAL_CHANNELS ); + fixedToFloat_arrL( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_fx[i], hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im[i], Q_frame, BINAURAL_CHANNELS ); + // for ( int j = 0; j < BINAURAL_CHANNELS; j++ ) + //{ + // hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re[i][j] = me2f( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_fx[i][j], Q6 ); + // hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im[i][j] = me2f( hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_fx[i][j], Q6 ); + // /*fprintf(filePointer_re, "%f\n", hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re[i][j]); + // fprintf(filePointer_im, "%f\n", hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im[i][j]);*/ + // } + } + } + } + } + } +#endif +#ifdef SPLIT_POSE_CORRECTION_DEBUG + float tmpCrendBuffer[2][L_FRAME48k], quant_val, step, minv, maxv; + IVAS_QUATERNION QuaternionsPost[MAX_PARAM_SPATIAL_SUBFRAMES], head_pos_euler; + float Cldfb_RealBuffer_Binaural_5ms[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural_5ms[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + int16_t sf_idx, pos_idx, b, ch1, ch2; + int32_t read_off, write_off; + for ( sf_idx = 0; sf_idx < MAX_PARAM_SPATIAL_SUBFRAMES; sf_idx++ ) + { + QuaternionsPost[sf_idx].w = -3.0f; + QuaternionsPost[sf_idx].x = 0.0f; + QuaternionsPost[sf_idx].y = 0.0f; + QuaternionsPost[sf_idx].z = 0.0f; + } + + hBinHrSplitPreRend->hBinHrSplitPostRend->low_Res = 1; + set_fix_rotation_mat( hBinHrSplitPreRend->hBinHrSplitPostRend->fix_pos_rot_mat, pMultiBinPoseData ); + set_pose_types( hBinHrSplitPreRend->hBinHrSplitPostRend->pose_type, pMultiBinPoseData ); + for ( sf_idx = 0; sf_idx < MAX_PARAM_SPATIAL_SUBFRAMES; sf_idx++ ) + { + Quat2EulerDegree( headPosition, &head_pos_euler.z, &head_pos_euler.y, &head_pos_euler.x ); + hBinHrSplitPreRend->hBinHrSplitPostRend->QuaternionsPre[sf_idx].w = -3.0f; + hBinHrSplitPreRend->hBinHrSplitPostRend->QuaternionsPre[sf_idx].x = roundf( head_pos_euler.x ); + hBinHrSplitPreRend->hBinHrSplitPostRend->QuaternionsPre[sf_idx].y = roundf( head_pos_euler.y ); + hBinHrSplitPreRend->hBinHrSplitPostRend->QuaternionsPre[sf_idx].z = roundf( head_pos_euler.z ); + } + for ( sf_idx = 0; sf_idx < 1; sf_idx++ ) + { + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + for ( b = 0; b < MAX_SPLIT_REND_MD_BANDS; b++ ) + { + hBinHrSplitPreRend->hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b] = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + BIN_HR_SPLIT_REND_MD_HANDLE hMd; + hMd = &hBinHrSplitPreRend->hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + minv = -1.4f; + maxv = 1.4f; + step = ( maxv - minv ) / 62.0f; + if ( b >= 20 ) + { + float sign; + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + sign = ( hMd->pred_mat_re[ch1][ch2] >= 0.0f ) ? 1.0f : -1.0f; + IVAS_CALCULATE_ABS( hMd->pred_mat_re[ch1][ch2], hMd->pred_mat_im[ch1][ch2], hMd->pred_mat_re[ch1][ch2] ); + hMd->pred_mat_re[ch1][ch2] *= sign; + hMd->pred_mat_im[ch1][ch2] = 0.0f; + } + } + } + + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + quant_val = hMd->pred_mat_re[ch1][ch2] - hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx][ch1][ch2]; + quant_val = min( maxv, max( quant_val, minv ) ); + quant_val = (int16_t) roundf( quant_val / step ); + hMd->pred_mat_re[ch1][ch2] = quant_val * step; + hMd->pred_mat_re[ch1][ch2] += hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx][ch1][ch2]; + + quant_val = hMd->pred_mat_im[ch1][ch2]; + quant_val = min( maxv, max( quant_val, minv ) ); + quant_val = (int16_t) roundf( quant_val / step ); + hMd->pred_mat_im[ch1][ch2] = quant_val * step; + } + } + } + } + } + + for ( sf_idx = 0; sf_idx < MAX_PARAM_SPATIAL_SUBFRAMES; sf_idx++ ) + { + mvr2r( (float *) Cldfb_In_BinReal[0][sf_idx * MAX_PARAM_SPATIAL_SUBFRAMES], (float *) Cldfb_RealBuffer_Binaural_5ms[0], MAX_PARAM_SPATIAL_SUBFRAMES * CLDFB_NO_CHANNELS_MAX ); + mvr2r( (float *) Cldfb_In_BinReal[1][sf_idx * MAX_PARAM_SPATIAL_SUBFRAMES], (float *) Cldfb_RealBuffer_Binaural_5ms[1], MAX_PARAM_SPATIAL_SUBFRAMES * CLDFB_NO_CHANNELS_MAX ); + mvr2r( (float *) Cldfb_In_BinImag[0][sf_idx * MAX_PARAM_SPATIAL_SUBFRAMES], (float *) Cldfb_ImagBuffer_Binaural_5ms[0], MAX_PARAM_SPATIAL_SUBFRAMES * CLDFB_NO_CHANNELS_MAX ); + mvr2r( (float *) Cldfb_In_BinImag[1][sf_idx * MAX_PARAM_SPATIAL_SUBFRAMES], (float *) Cldfb_ImagBuffer_Binaural_5ms[1], MAX_PARAM_SPATIAL_SUBFRAMES * CLDFB_NO_CHANNELS_MAX ); + isar_rend_CldfbSplitPostRendProcess( hBinHrSplitPreRend->hBinHrSplitPostRend, pMultiBinPoseData, QuaternionsPost[0], Cldfb_RealBuffer_Binaural_5ms, Cldfb_ImagBuffer_Binaural_5ms, tmpCrendBuffer, 1 ); + + { + float *pOut[2]; + char fname[200] = "ref_act_pos.wav"; + pOut[0] = tmpCrendBuffer[0]; + pOut[1] = tmpCrendBuffer[1]; + dbgwrite_wav( pOut, CLDFB_NO_COL_MAX * hBinHrSplitPreRend->hBinHrSplitPostRend->cldfbSyn[0]->no_channels, fname, 48000, 2 ); + } + } +#endif + + pop_wmops(); + return; +} + +/*------------------------------------------------------------------------- + * Function isar_splitBinPreRendOpen() + * + * + *------------------------------------------------------------------------*/ +ivas_error isar_splitBinPreRendOpen( + ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE *hBinHrSplitPreRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + , + const int32_t output_Fs +#endif +) +{ + ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinRend; +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + ivas_error error; + int16_t ch; +#endif + Word16 pos_idx, sf_idx, bandIdx; + + IF( ( hBinRend = (ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE) malloc( sizeof( ISAR_BIN_HR_SPLIT_PRE_REND ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for bin split pre renderer Module \n" ) ); + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + for ( int16_t i = 0; i < MAX_HEAD_ROT_POSES + 1; i++ ) + { + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + hBinRend->cldfbSynRotBinDec[i][ch] = NULL; + } + } + + for ( int16_t i = 0; i < MAX_HEAD_ROT_POSES + 1; i++ ) + { + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + if ( ( error = openCldfb_ivas_fx( &( hBinRend->cldfbSynRotBinDec[i][ch] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } +#endif + + FOR( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + FOR( sf_idx = 0; sf_idx < MAX_SPLIT_MD_SUBFRAMES; sf_idx++ ) + { + FOR( bandIdx = 0; bandIdx < MAX_SPLIT_REND_MD_BANDS; bandIdx++ ) + { + hBinRend->rot_md[pos_idx][sf_idx][bandIdx].gd_fx = 0; + } + } + } + set_fix_rotation_mat_fx( hBinRend->fix_pos_rot_mat_fx, pMultiBinPoseData ); + set_pose_types_fx( hBinRend->pose_type, pMultiBinPoseData ); + + isar_split_rend_init_huff_cfg( &hBinRend->huff_cfg ); + +#ifdef SPLIT_POSE_CORRECTION_DEBUG + ivas_error error; + if ( ( error = isar_splitBinPostRendOpen( &hBinRend->hBinHrSplitPostRend, pMultiBinPoseData, 48000 ) ) != IVAS_ERR_OK ) + { + return error; + } +#endif + + *hBinHrSplitPreRend = hBinRend; + + return IVAS_ERR_OK; +} + +/*------------------------------------------------------------------------- + * Function isar_splitBinPreRendClose() + * + * + *------------------------------------------------------------------------*/ + +void isar_splitBinPreRendClose( + ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE *hBinHrSplitPreRend ) +{ + IF( ( *hBinHrSplitPreRend ) != NULL ) + { +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + { + Word16 i, n; + FOR( i = 0; i < MAX_HEAD_ROT_POSES + 1; i++ ) + { + FOR( n = 0; n < BINAURAL_CHANNELS; n++ ) + { + IF( ( *hBinHrSplitPreRend )->cldfbSynRotBinDec[i][n] != NULL ) + { + deleteCldfb_ivas_fx( &( ( *hBinHrSplitPreRend )->cldfbSynRotBinDec[i][n] ) ); + ( *hBinHrSplitPreRend )->cldfbSynRotBinDec[i][n] = NULL; + } + } + } + } +#endif +#ifdef SPLIT_POSE_CORRECTION_DEBUG + isar_splitBinPostRendClose( &( *hBinHrSplitPreRend )->hBinHrSplitPostRend ); +#endif + + free( ( *hBinHrSplitPreRend ) ); + ( *hBinHrSplitPreRend ) = NULL; + } + + return; +} + + +/*-------------------------------------------------------------------------* + * isar_set_split_rend_ht_setup() + * + * + *-------------------------------------------------------------------------*/ +void isar_set_split_rend_ht_setup_fx( + SPLIT_REND_WRAPPER *hSplitrend, + IVAS_QUATERNION Quaternions[MAX_PARAM_SPATIAL_SUBFRAMES], + Word32 Rmat_fx[MAX_PARAM_SPATIAL_SUBFRAMES][3][3] ) +{ + Word16 sf, i, j; + IF( hSplitrend->multiBinPoseData.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + FOR( sf = 1; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) + { + Quaternions[sf] = Quaternions[0]; + + FOR( i = 0; i < 3; i++ ) + { + FOR( j = 0; j < 3; j++ ) + { + Rmat_fx[sf][i][j] = Rmat_fx[0][i][j]; + move32(); + } + } + } + } + + return; +} + +/*------------------------------------------------------------------------- + * Function isar_init_split_rend_handles() + * + * + *------------------------------------------------------------------------*/ + +void isar_init_split_rend_handles( + SPLIT_REND_WRAPPER *hSplitRendWrapper ) +{ + Word16 i; + + hSplitRendWrapper->hBinHrSplitPreRend = NULL; + hSplitRendWrapper->hCldfbHandles = NULL; + hSplitRendWrapper->hSplitBinLCLDEnc = NULL; + hSplitRendWrapper->hLc3plusEnc = NULL; + + FOR( i = 0; i < MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS; ++i ) + { + hSplitRendWrapper->lc3plusDelayBuffers_fx[i] = NULL; + } + hSplitRendWrapper->lc3plusDelaySamples = 0; + move32(); + + isar_init_multi_bin_pose_data_fx_enc( &hSplitRendWrapper->multiBinPoseData ); + + return; +} + + +/*------------------------------------------------------------------------- + * Function split_renderer_open_lc3plus() + * + * + *------------------------------------------------------------------------*/ + +ivas_error split_renderer_open_lc3plus( + SPLIT_REND_WRAPPER *hSplitRendWrapper, + const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, + const Word32 OutSampleRate, + const IVAS_RENDER_FRAMESIZE isar_frame_size ) +{ + ivas_error error; + Word16 i, delayBufferLength; + LC3PLUS_CONFIG config; + int16_t isar_frame_size_ms; + + if ( ( error = isar_framesize_to_ms( isar_frame_size, &isar_frame_size_ms ) ) != IVAS_ERR_OK ) + { + return error; + } + /* 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" ); + } + + config.lc3plus_frame_duration_us = pSplitRendConfig->codec_frame_size_ms * 1000; + config.samplerate = OutSampleRate; + config.isar_frame_duration_us = isar_frame_size_ms * 1000; + config.high_res_mode_enabled = ( pSplitRendConfig->lc3plus_highres != 0 ); + config.channels = BINAURAL_CHANNELS; + + if ( ( error = ISAR_LC3PLUS_ENC_Open( config, + isar_get_lcld_bitrate( pSplitRendConfig->splitRendBitRate, pSplitRendConfig->poseCorrectionMode ), + &hSplitRendWrapper->hLc3plusEnc ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* This returns delay of entire LC3plus chain (enc + dec) */ + IF( ( error = ISAR_LC3PLUS_ENC_GetDelay( hSplitRendWrapper->hLc3plusEnc, &hSplitRendWrapper->lc3plusDelaySamples ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Alocate buffers for delay compensation */ + IF( pSplitRendConfig->codec == ISAR_SPLIT_REND_CODEC_LC3PLUS ) + { + delayBufferLength = (Word16) ( OutSampleRate / (int32_t) FRAMES_PER_SEC + hSplitRendWrapper->lc3plusDelaySamples ); + FOR( i = 0; i < hSplitRendWrapper->multiBinPoseData.num_poses * BINAURAL_CHANNELS; ++i ) + { + IF( ( hSplitRendWrapper->lc3plusDelayBuffers_fx[i] = malloc( delayBufferLength * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for multiBinPoseData handle\n" ) ); + } + + set32_fx( hSplitRendWrapper->lc3plusDelayBuffers_fx[i], 0, delayBufferLength ); + } + hSplitRendWrapper->lc3plusDelayBuffers_q = 31; + } + ELSE + { + /* Delay is always expected to be exactly 2 CLDFB columns */ + assert( hSplitRendWrapper->lc3plusDelaySamples % ( OutSampleRate / FRAMES_PER_SEC / CLDFB_NO_COL_MAX ) == 0 ); + assert( hSplitRendWrapper->lc3plusDelaySamples / ( OutSampleRate / FRAMES_PER_SEC / CLDFB_NO_COL_MAX ) == 2 ); + + delayBufferLength = 2 /* Columns */ * 2 /* real and imag */ * CLDFB_NO_CHANNELS_MAX; + FOR( i = 0; i < hSplitRendWrapper->multiBinPoseData.num_poses * BINAURAL_CHANNELS; ++i ) + { + IF( ( hSplitRendWrapper->lc3plusDelayBuffers_fx[i] = malloc( delayBufferLength * sizeof( Word32 ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for multiBinPoseData handle\n" ) ); + } + + set32_fx( hSplitRendWrapper->lc3plusDelayBuffers_fx[i], 0, delayBufferLength ); + } + hSplitRendWrapper->lc3plusDelayBuffers_q = 31; + } + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * Function splitRendLc3plusEncodeAndWrite() + * + * + *------------------------------------------------------------------------*/ +ivas_error splitRendLc3plusEncodeAndWrite( + SPLIT_REND_WRAPPER *hSplitBin, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + const int32_t available_bits, + Word32 *in[], + Word16 Q_sig ) +{ + ivas_error error; + int16_t i; + int32_t lc3plusBitstreamSize; + Word32 *channel_ptrs[MAX_HEAD_ROT_POSES * 2]; + Word16 Q_in[16]; + assert( hSplitBin->hLc3plusEnc != NULL ); + + /* Find next byte boundary and zero-pad to it */ + while ( pBits->bits_written % 8 != 0 ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, 0L, 1 ); + } + + for ( i = 0; i < BINAURAL_CHANNELS * hSplitBin->multiBinPoseData.num_poses; ++i ) + { + channel_ptrs[i] = in[i]; + } + + if ( ( error = IVAS_LC3PLUS_ENC_SetBitrate( hSplitBin->hLc3plusEnc, available_bits * FRAMES_PER_SEC ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( ( error = ISAR_LC3PLUS_ENC_GetOutputBitstreamSize( hSplitBin->hLc3plusEnc, &lc3plusBitstreamSize ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Write bitstream */ + 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 ) + { + return error; + } + + pBits->bits_written += 8 * lc3plusBitstreamSize; + 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 ); + pBits->isar_frame_size_ms = (int16_t) ( hSplitBin->hLc3plusEnc->config.isar_frame_duration_us / 1000 ); + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * Function isar_renderMultiTDBinToSplitBinaural() + * + * + *------------------------------------------------------------------------*/ +ivas_error isar_renderMultiTDBinToSplitBinaural( + SPLIT_REND_WRAPPER *hSplitBin, + const IVAS_QUATERNION headPosition, + const Word32 SplitRendBitRate, + const int16_t isar_frame_size_ms, + const Word16 codec_frame_size_ms, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + const Word16 max_bands, + // float *in[], + Word32 *in_fx[], // Q11 + Word16 Q_sig, + const Word16 low_res_pre_rend_rot, + const Word16 pcm_out_flag, + const Word16 ro_md_flag ) +{ + ivas_error error; + int32_t bit_len, available_bits, target_md_bits, tmp_32; + 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 }; + Word32 Cldfb_In_BinImag_fx[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] = { 0 }; + Word16 Q_in = Q_sig, q_final = 0; + move16(); + move16(); + UWord8 useLc3plus; + Word32 *in_delayed_fx[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS]; + Word16 i; + Word32 num_slots; + + push_wmops( "isar_renderMultiTDBinToSplitBinaural" ); + + error = IVAS_ERR_OK; + num_poses = hSplitBin->multiBinPoseData.num_poses; + + useLc3plus = hSplitBin->hLc3plusEnc != NULL; + + IF( useLc3plus ) + { + /*this should always have the time resolution of pose correction MD. Note that this does not change frame size of LC3plus*/ + // Word16 frame_size = (Word16) ( hSplitBin->hLc3plusEnc->config.samplerate / (Word32) FRAMES_PER_SECOND ); + tmp_e = 0; + tmp = BASOP_Util_Divide3232_Scale( hSplitBin->hLc3plusEnc->config.samplerate, FRAMES_PER_SEC, &tmp_e ); + Word16 frame_size = shr( tmp, sub( 15, tmp_e ) ); // Q0 + FOR( i = 0; i < num_poses * BINAURAL_CHANNELS; ++i ) + { + /* Artificially delay input to head pose correction analysis by LC3plus coding delay, so that audio and metadata are in sync after decoding */ + mvl2l( hSplitBin->lc3plusDelayBuffers_fx[i] + frame_size, hSplitBin->lc3plusDelayBuffers_fx[i], (Word16) hSplitBin->lc3plusDelaySamples ); + in_delayed_fx[i] = hSplitBin->lc3plusDelayBuffers_fx[i]; + Scale_sig32( hSplitBin->lc3plusDelayBuffers_fx[i], (Word16) hSplitBin->lc3plusDelaySamples, sub( Q_in, hSplitBin->lc3plusDelayBuffers_q ) ); + mvl2l( in_fx[i], hSplitBin->lc3plusDelayBuffers_fx[i] + hSplitBin->lc3plusDelaySamples, frame_size ); + } + hSplitBin->lc3plusDelayBuffers_q = Q_in; + } + ELSE + { + FOR( i = 0; i < num_poses * BINAURAL_CHANNELS; ++i ) + { + in_delayed_fx[i] = in_fx[i]; + move32(); + } + } + + + test(); + test(); + IF( ( hSplitBin->multiBinPoseData.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) || ( !useLc3plus && !pcm_out_flag ) ) + { + Word32 in_delayed_cldfb[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][L_FRAME48k] = { 0 }; + Word16 gd_bits = sub( Q_sig, Q11 ); + FOR( i = 0; i < num_poses * BINAURAL_CHANNELS; i++ ) + { + Copy32( in_delayed_fx[i], in_delayed_cldfb[i], L_FRAME48k ); + Scale_sig32( in_delayed_cldfb[i], L_FRAME48k, -gd_bits ); + } + Q_sig = sub( Q_sig, gd_bits ); + num_slots = ( hSplitBin->multiBinPoseData.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) ? CLDFB_NO_COL_MAX : ( hSplitBin->hSplitBinLCLDEnc->iNumBlocks * hSplitBin->hSplitBinLCLDEnc->iNumIterations ); + move32(); + num_cldfb_bands = hSplitBin->hCldfbHandles->cldfbAna[0]->no_channels; + move16(); + /* CLDFB Analysis*/ + FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) + { +#ifdef SPLIT_POSE_CORRECTION_DEBUG + { + float *pOut[2]; + char fname[200] = "ref_out_pos"; + char tag[2]; + tag[0] = (char) ( '0' + pos_idx ); + tag[1] = '\0'; + strcat( fname, tag ); + strcat( fname, ".wav" ); + + pOut[0] = in_delayed[2 * pos_idx]; + pOut[1] = in_delayed[2 * pos_idx + 1]; + dbgwrite_wav( pOut, CLDFB_NO_COL_MAX * max_bands, fname, 48000, 2 ); + } + +#endif + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + HANDLE_CLDFB_FILTER_BANK temp_cldfbAna = hSplitBin->hCldfbHandles->cldfbAna[pos_idx * BINAURAL_CHANNELS + ch]; + Scale_sig32( temp_cldfbAna->cldfb_state_fx, + sub( temp_cldfbAna->p_filter_length, temp_cldfbAna->no_channels ), sub( Q_sig, temp_cldfbAna->Q_cldfb_state ) ); + temp_cldfbAna->Q_cldfb_state = Q_sig; + move16(); + FOR( slot_idx = 0; slot_idx < num_slots; slot_idx++ ) + { + Word16 Q_cldfb = Q_sig; + // floatToFixed_arrL(hSplitBin->hCldfbHandles->cldfbAna[pos_idx * BINAURAL_CHANNELS + ch]->cldfb_state, hSplitBin->hCldfbHandles->cldfbAna[pos_idx * BINAURAL_CHANNELS + ch]->cldfb_state_fx, Q_output, hSplitBin->hCldfbHandles->cldfbAna[pos_idx * BINAURAL_CHANNELS + ch]->p_filter_length - hSplitBin->hCldfbHandles->cldfbAna[pos_idx * BINAURAL_CHANNELS + ch]->no_channels); + cldfbAnalysis_ts_fx_fixed_q( &( in_delayed_cldfb[pos_idx * BINAURAL_CHANNELS + ch][num_cldfb_bands * slot_idx] ), + Cldfb_In_BinReal_fx[pos_idx * BINAURAL_CHANNELS + ch][slot_idx], + Cldfb_In_BinImag_fx[pos_idx * BINAURAL_CHANNELS + ch][slot_idx], + max_bands, + temp_cldfbAna, + &Q_cldfb ); + /*fixedToFloat_arrL(hSplitBin->hCldfbHandles->cldfbAna[pos_idx * BINAURAL_CHANNELS + ch]->cldfb_state_fx, hSplitBin->hCldfbHandles->cldfbAna[pos_idx * BINAURAL_CHANNELS + ch]->cldfb_state, Q_output, hSplitBin->hCldfbHandles->cldfbAna[pos_idx * BINAURAL_CHANNELS + ch]->p_filter_length - hSplitBin->hCldfbHandles->cldfbAna[pos_idx * BINAURAL_CHANNELS + ch]->no_channels); + fixedToFloat_arrL(Cldfb_In_BinReal_fx[pos_idx * BINAURAL_CHANNELS + ch][slot_idx], Cldfb_In_BinReal[pos_idx * BINAURAL_CHANNELS + ch][slot_idx], Q_cldfb, max_bands); + fixedToFloat_arrL(Cldfb_In_BinImag_fx[pos_idx * BINAURAL_CHANNELS + ch][slot_idx], Cldfb_In_BinImag[pos_idx * BINAURAL_CHANNELS + ch][slot_idx], Q_cldfb, max_bands);*/ + /*for (int k = 0; k < max_bands; k++) { + printf("\n%f %f ", Cldfb_In_BinReal[pos_idx * BINAURAL_CHANNELS + ch][slot_idx][k], Cldfb_In_BinImag[pos_idx * BINAURAL_CHANNELS + ch][slot_idx][k]); + }*/ + } + } + } + q_final = sub( Q_sig, 5 ); + } + + 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; + target_md_bits = W_extract_l( W_mult0_32_32( isar_get_split_rend_md_target_brate( SplitRendBitRate, pcm_out_flag ), L_FRAME48k ) ); + tmp_e = 0; + 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 + + /*scaling to max Q*/ + Word16 scale_factor = 31; + move32(); + FOR( i = 0; i < num_poses * BINAURAL_CHANNELS; i++ ) + { + FOR( Word16 j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + scale_factor = s_min( scale_factor, s_min( getScaleFactor32( Cldfb_In_BinReal_fx[i][j], CLDFB_NO_CHANNELS_MAX ), getScaleFactor32( Cldfb_In_BinImag_fx[i][j], CLDFB_NO_CHANNELS_MAX ) ) ); + } + } + scale_factor = sub( scale_factor, 2 ); + FOR( i = 0; i < num_poses * BINAURAL_CHANNELS; i++ ) + { + FOR( Word16 j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + Scale_sig32( Cldfb_In_BinReal_fx[i][j], CLDFB_NO_CHANNELS_MAX, scale_factor ); + Scale_sig32( Cldfb_In_BinImag_fx[i][j], CLDFB_NO_CHANNELS_MAX, scale_factor ); + } + } + q_final = add( q_final, scale_factor ); + Word16 exp_cldfb_re = sub( 31, q_final ); + Word16 exp_cldfb_im = sub( 31, q_final ); + isar_rend_CldfbSplitPreRendProcess( hSplitBin->hBinHrSplitPreRend, headPosition, &hSplitBin->multiBinPoseData, Cldfb_In_BinReal_fx, exp_cldfb_re, Cldfb_In_BinImag_fx, exp_cldfb_im, pBits, target_md_bits, low_res_pre_rend_rot, ro_md_flag ); + } + + IF( EQ_16( pcm_out_flag, 0 ) ) + { + pBits->pose_correction = hSplitBin->multiBinPoseData.poseCorrectionMode; + pBits->codec = useLc3plus ? ISAR_SPLIT_REND_CODEC_LC3PLUS : ISAR_SPLIT_REND_CODEC_LCLD; + + IF( !useLc3plus ) + { + // available_bits = ( SplitRendBitRate * hSplitBin->hSplitBinLCLDEnc->iNumBlocks * hSplitBin->hSplitBinLCLDEnc->iNumIterations ) / ( 16 * FRAMES_PER_SEC ); + available_bits = W_extract_l( W_mult0_32_32( SplitRendBitRate, L_mult0( hSplitBin->hSplitBinLCLDEnc->iNumBlocks, hSplitBin->hSplitBinLCLDEnc->iNumIterations ) ) ); + 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 + available_bits = L_sub( available_bits, pBits->bits_written ); + pBits->codec_frame_size_ms = codec_frame_size_ms; + move16(); + pBits->isar_frame_size_ms = isar_frame_size_ms; + move16(); + isar_splitBinLCLDEncProcess( hSplitBin->hSplitBinLCLDEnc, Cldfb_In_BinReal_fx, Cldfb_In_BinImag_fx, available_bits, pBits, &q_final ); + } + ELSE + { + 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 + { + pBits->pose_correction = hSplitBin->multiBinPoseData.poseCorrectionMode; + pBits->codec = ISAR_SPLIT_REND_CODEC_NONE; + } + + /*zero pad*/ + IF( pcm_out_flag ) + { + tmp_e = 0; + tmp = BASOP_Util_Divide3232_Scale( SplitRendBitRate, FRAMES_PER_SEC, &tmp_e ); + bit_len = L_deposit_l( shr( tmp, sub( 15, tmp_e ) ) ); // Q0 + // bit_len = SplitRendBitRate / FRAMES_PER_SEC; + } + ELSE + { + IF( !useLc3plus ) + { + // bit_len = ( SplitRendBitRate * hSplitBin->hSplitBinLCLDEnc->iNumBlocks * hSplitBin->hSplitBinLCLDEnc->iNumIterations ) / ( 16 * FRAMES_PER_SEC ); + + bit_len = W_extract_l( W_mult0_32_32( SplitRendBitRate, L_mult0( hSplitBin->hSplitBinLCLDEnc->iNumBlocks, hSplitBin->hSplitBinLCLDEnc->iNumIterations ) ) ); + tmp_e = 0; + tmp_32 = BASOP_Util_Divide3232_Scale_cadence( bit_len, L_mult0( 16, FRAMES_PER_SEC ), &tmp_e ); + bit_len = L_shr( tmp_32, sub( 31, tmp_e ) ); // Q0 + } + ELSE + { + tmp_e = 0; + tmp = BASOP_Util_Divide3232_Scale( (Word32) hSplitBin->hLc3plusEnc->config.isar_frame_duration_us, 1000, &tmp_e ); + bit_len = L_deposit_l( shr( tmp, sub( 15, tmp_e ) ) ); // Q0 + // bit_len = hSplitBin->hLc3plusEnc->config.ivas_frame_duration_us / 1000; + // bit_len = SplitRendBitRate * bit_len / 1000; + tmp_e = 0; + tmp_32 = BASOP_Util_Divide3232_Scale_cadence( W_extract_l( W_mult0_32_32( SplitRendBitRate, bit_len ) ), 1000, &tmp_e ); + bit_len = L_shr( tmp_32, sub( 31, tmp_e ) ); // Q0 + } + } + + + WHILE( LT_32( pBits->bits_written, bit_len ) ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, 0L, 1 ); + } + + pop_wmops(); + + return error; +} + +/*------------------------------------------------------------------------- + * Function lc3plusTimeAlignCldfbPoseCorr() + * + * + *------------------------------------------------------------------------*/ +void lc3plusTimeAlignCldfbPoseCorr( + SPLIT_REND_WRAPPER *hSplitBin, + Word32 Cldfb_In_BinReal_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_In_BinImag_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word16 *Q_in ) +{ + Word32 Cldfb_In_BinReal_tmp_fx[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][2][CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_In_BinImag_tmp_fx[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][2][CLDFB_NO_CHANNELS_MAX]; + Word16 pose, ch, slot_idx; + Word32 *bufRead_fx, *bufWrite_fx; + + IF( GT_16( hSplitBin->lc3plusDelayBuffers_q, *Q_in ) ) + { + // hSplitBin->lc3plusDelayBuffers_q[0] = *Q_in; + FOR( Word16 i = 0; i < hSplitBin->multiBinPoseData.num_poses * BINAURAL_CHANNELS; i++ ) + { + + Scale_sig32( hSplitBin->lc3plusDelayBuffers_fx[i], 4 * CLDFB_NO_CHANNELS_MAX, sub( *Q_in, hSplitBin->lc3plusDelayBuffers_q ) ); + } + hSplitBin->lc3plusDelayBuffers_q = *Q_in; + } + ELSE + { + FOR( Word16 i = 0; i < CLDFB_NO_COL_MAX; i++ ) + { + for ( Word16 j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + Scale_sig32( Cldfb_In_BinReal_fx[i][j], CLDFB_NO_CHANNELS_MAX, sub( hSplitBin->lc3plusDelayBuffers_q, *Q_in ) ); + Scale_sig32( Cldfb_In_BinImag_fx[i][j], CLDFB_NO_CHANNELS_MAX, sub( hSplitBin->lc3plusDelayBuffers_q, *Q_in ) ); + } + } + *Q_in = hSplitBin->lc3plusDelayBuffers_q; + } + + FOR( pose = 0; pose < hSplitBin->multiBinPoseData.num_poses; ++pose ) + { + FOR( ch = 0; ch < BINAURAL_CHANNELS; ++ch ) + { + bufRead_fx = hSplitBin->lc3plusDelayBuffers_fx[pose * BINAURAL_CHANNELS + ch]; + bufWrite_fx = bufRead_fx; + + /* Save last 2 columns for next frame */ + FOR( slot_idx = 0; slot_idx < 2; ++slot_idx ) + { + Copy32( Cldfb_In_BinReal_fx[pose * BINAURAL_CHANNELS + ch][CLDFB_NO_COL_MAX - 2 + slot_idx], Cldfb_In_BinReal_tmp_fx[pose][ch][slot_idx], CLDFB_NO_CHANNELS_MAX ); + Copy32( Cldfb_In_BinImag_fx[pose * BINAURAL_CHANNELS + ch][CLDFB_NO_COL_MAX - 2 + slot_idx], Cldfb_In_BinImag_tmp_fx[pose][ch][slot_idx], CLDFB_NO_CHANNELS_MAX ); + } + + /* Delay existing columns by 2 slots */ + /*TODO : shouldnt the delay be 7.5 ms ? 5ms + LC3plus delay */ + FOR( slot_idx = CLDFB_NO_COL_MAX - 2 - 1; slot_idx >= 0; --slot_idx ) + { + Copy32( Cldfb_In_BinReal_fx[pose * BINAURAL_CHANNELS + ch][slot_idx], Cldfb_In_BinReal_fx[pose * BINAURAL_CHANNELS + ch][slot_idx + 2], CLDFB_NO_CHANNELS_MAX ); + Copy32( Cldfb_In_BinImag_fx[pose * BINAURAL_CHANNELS + ch][slot_idx], Cldfb_In_BinImag_fx[pose * BINAURAL_CHANNELS + ch][slot_idx + 2], CLDFB_NO_CHANNELS_MAX ); + } + + /* Fill 2 first columns from buffer */ + FOR( slot_idx = 0; slot_idx < 2; ++slot_idx ) + { + Copy32( bufRead_fx, Cldfb_In_BinReal_fx[pose * BINAURAL_CHANNELS + ch][slot_idx], CLDFB_NO_CHANNELS_MAX ); + bufRead_fx += CLDFB_NO_CHANNELS_MAX; + Copy32( bufRead_fx, Cldfb_In_BinImag_fx[pose * BINAURAL_CHANNELS + ch][slot_idx], CLDFB_NO_CHANNELS_MAX ); + bufRead_fx += CLDFB_NO_CHANNELS_MAX; + } + + /* Copy last 2 columns to buffer */ + FOR( slot_idx = 0; slot_idx < 2; ++slot_idx ) + { + Copy32( Cldfb_In_BinReal_tmp_fx[pose][ch][slot_idx], bufWrite_fx, CLDFB_NO_CHANNELS_MAX ); + bufWrite_fx += CLDFB_NO_CHANNELS_MAX; + Copy32( Cldfb_In_BinImag_tmp_fx[pose][ch][slot_idx], bufWrite_fx, CLDFB_NO_CHANNELS_MAX ); + bufWrite_fx += CLDFB_NO_CHANNELS_MAX; + } + } + } + + return; +} diff --git a/lib_isar/isar_splitRenderer_utils.c b/lib_isar/isar_splitRenderer_utils.c new file mode 100644 index 0000000000000000000000000000000000000000..62f3870d3d3d3a46a3e9979009668414e64c12f6 --- /dev/null +++ b/lib_isar/isar_splitRenderer_utils.c @@ -0,0 +1,1360 @@ +/****************************************************************************************************** + + (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 +#include "ivas_prot_fx.h" +#include "prot_fx.h" +#include "cnst.h" +#include "isar_cnst.h" +#include "ivas_rom_rend.h" +#include "ivas_rom_com.h" +#include "isar_rom_post_rend.h" +#include "ivas_rom_binauralRenderer.h" +#include "lib_isar_post_rend.h" +#include "isar_prot.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" +#include "basop_settings.h" +#include "prot_fx.h" + +#include "basop_util.h" + + +/*------------------------------------------------------------------------- + * Function ivas_mat_mult_2by2_complex() + * + * + *------------------------------------------------------------------------*/ +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 ) +{ + Word16 shift_1 = W_norm( W_mult_32_32( in1_re_fx, in2_re_fx ) ); + Word16 shift_2 = W_norm( W_mult_32_32( in1_im_fx, in2_im_fx ) ); + Word32 tmp1 = W_extract_h( W_shl( W_mult_32_32( in1_re_fx, in2_re_fx ), shift_1 ) ); + Word32 tmp2 = W_extract_h( W_shl( W_mult_32_32( in1_im_fx, in2_im_fx ), shift_2 ) ); + Word16 exp_tmp1 = 0; + move16(); + *out1_re_fx = BASOP_Util_Add_Mant32Exp( tmp1, exp_re1 + exp_re2 - shift_1, L_negate( tmp2 ), exp_im1 + exp_im2 - shift_2, &exp_tmp1 ); + *exp_out1_re = exp_tmp1; + Word16 shift_3 = W_norm( W_mult_32_32( in1_re_fx, in2_im_fx ) ); + Word16 shift_4 = W_norm( W_mult_32_32( in2_re_fx, in1_im_fx ) ); + Word32 tmp3 = W_extract_h( W_shl( W_mult_32_32( in1_re_fx, in2_im_fx ), shift_3 ) ); + Word32 tmp4 = W_extract_h( W_shl( W_mult_32_32( in2_re_fx, in1_im_fx ), shift_4 ) ); + Word16 exp_tmp2 = 0; + move16(); + *out1_im_fx = BASOP_Util_Add_Mant32Exp( tmp3, exp_re1 + exp_im2 - shift_3, tmp4, exp_re2 + exp_im1 - shift_4, &exp_tmp2 ); + *exp_out1_im = exp_tmp2; + move16(); +} + +void ivas_calculate_abs_fx( Word32 re_fx, Word16 exp_re, Word32 im_fx, Word16 exp_im, Word32 *out_fx, Word16 *exp_out ) +{ + Word16 shift_1 = W_norm( W_mult_32_32( re_fx, re_fx ) ); + Word16 shift_2 = W_norm( W_mult_32_32( im_fx, im_fx ) ); + Word32 tmp1 = W_extract_h( W_shl( W_mult_32_32( re_fx, re_fx ), shift_1 ) ); + Word32 tmp2 = W_extract_h( W_shl( W_mult_32_32( im_fx, im_fx ), shift_2 ) ); + Word16 exp_tmp1 = 0; + Word32 tmp3 = BASOP_Util_Add_Mant32Exp( tmp1, exp_re + exp_re - shift_1, tmp2, exp_im + exp_im - shift_2, &exp_tmp1 ); + *out_fx = Sqrt32( tmp3, &exp_tmp1 ); + *exp_out = exp_tmp1; +} + +void ivas_calculate_rabs_fx( Word32 re_fx, Word16 exp_re, Word32 *out_fx, Word16 *exp_out ) +{ + Word16 shift_1 = W_norm( W_mult_32_32( re_fx, re_fx ) ); + Word32 tmp1 = W_extract_h( W_shl( W_mult_32_32( re_fx, re_fx ), shift_1 ) ); + Word16 exp_tmp1 = exp_re + exp_re - shift_1; + Word32 tmp2 = Sqrt32( tmp1, &exp_tmp1 ); + *out_fx = tmp2; + *exp_out = exp_tmp1; +} + +void isar_mat_mult_2by2_complex_fx( + Word32 in_re1_fx[2][2], + Word16 exp_re1, + Word32 in_im1_fx[2][2], + Word16 exp_im1, + Word32 in_re2_fx[2][2], + Word16 exp_re2, + Word32 in_im2_fx[2][2], + Word16 exp_im2, + Word32 out_re2_fx[2][2], + Word16 *final_exp_re_1, + Word32 out_im2_fx[2][2], + Word16 *final_exp_im_1 ) +{ + Word16 i, j; + Word32 tmp_re_fx, tmp_im_fx; + + Word16 exp_tmp1 = 0, exp_tmp2 = 0, exp_tmp3 = 0, exp_tmp4 = 0; + Word16 final_exp_re = 0, final_exp_im = 0; + Word16 BuffExp_re[2][2]; + Word16 BuffExp_im[2][2]; + + FOR( i = 0; i < 2; i++ ) + { + FOR( j = 0; j < 2; j++ ) + { + ivas_cmult_fix( in_re1_fx[i][0], exp_re1, in_im1_fx[i][0], exp_im1, in_re2_fx[0][j], exp_re2, in_im2_fx[0][j], exp_im2, &tmp_re_fx, &tmp_im_fx, &exp_tmp1, &exp_tmp2 ); + + out_re2_fx[i][j] = tmp_re_fx; + move32(); + out_im2_fx[i][j] = tmp_im_fx; + move32(); + + ivas_cmult_fix( in_re1_fx[i][1], exp_re1, in_im1_fx[i][1], exp_im1, in_re2_fx[1][j], exp_re2, in_im2_fx[1][j], exp_im2, &tmp_re_fx, &tmp_im_fx, &exp_tmp3, &exp_tmp4 ); + + out_re2_fx[i][j] = BASOP_Util_Add_Mant32Exp( out_re2_fx[i][j], exp_tmp1, tmp_re_fx, exp_tmp3, &final_exp_re ); + move32(); + out_im2_fx[i][j] = BASOP_Util_Add_Mant32Exp( out_im2_fx[i][j], exp_tmp2, tmp_im_fx, exp_tmp4, &final_exp_im ); + move32(); + + BuffExp_re[i][j] = final_exp_re; + move16(); + BuffExp_im[i][j] = final_exp_im; + move16(); + } + } + + Word16 max_exp_re = 0; + Word16 max_exp_im = 0; + move16(); + move16(); + FOR( i = 0; i < 2; i++ ) + { + FOR( j = 0; j < 2; j++ ) + { + max_exp_re = s_max( max_exp_re, BuffExp_re[i][j] ); + max_exp_im = s_max( max_exp_im, BuffExp_im[i][j] ); + } + } + + FOR( i = 0; i < 2; i++ ) + { + FOR( j = 0; j < 2; j++ ) + { + out_re2_fx[i][j] = L_shr( out_re2_fx[i][j], max_exp_re - BuffExp_re[i][j] ); + move32(); + out_im2_fx[i][j] = L_shr( out_im2_fx[i][j], max_exp_im - BuffExp_im[i][j] ); + move32(); + } + } + *final_exp_re_1 = max_exp_re; + move16(); + *final_exp_im_1 = max_exp_im; + move16(); + + return; +} + +void ivas_mat_mult_2by2_complex( + float in_re1[2][2], + float in_im1[2][2], + float in_re2[2][2], + float in_im2[2][2], + float out_re2[2][2], + float out_im2[2][2] ) +{ + int16_t i, j; + float tmp_re, tmp_im; + + for ( i = 0; i < 2; i++ ) + { + for ( j = 0; j < 2; j++ ) + { + IVAS_CMULT_FLOAT( in_re1[i][0], in_im1[i][0], in_re2[0][j], in_im2[0][j], tmp_re, tmp_im ); + out_re2[i][j] = tmp_re; + out_im2[i][j] = tmp_im; + + IVAS_CMULT_FLOAT( in_re1[i][1], in_im1[i][1], in_re2[1][j], in_im2[1][j], tmp_re, tmp_im ); + out_re2[i][j] += tmp_re; + out_im2[i][j] += tmp_im; + } + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function ISAR_SPLIT_REND_BITStream_init() + * + * + *------------------------------------------------------------------------*/ + +void ISAR_SPLIT_REND_BITStream_init( + ISAR_SPLIT_REND_BITS_HANDLE pBits, + const Word32 buf_len_bytes, + UWord8 *pbuf ) +{ + pBits->bits_buf = pbuf; + pBits->buf_len = buf_len_bytes; + move32(); + pBits->bits_read = 0; + move32(); + pBits->bits_written = 0; + move32(); + + return; +} + + +/*------------------------------------------------------------------------- + * Function isar_split_rend_huffman_dec_init_min_max_len() + * + * + *------------------------------------------------------------------------*/ + +void isar_split_rend_huffman_dec_init_min_max_len( + isar_split_rend_huffman_cfg_t *p_huff_cfg ) +{ + Word16 i, code_len; + const Word32 *codebook; + + codebook = p_huff_cfg->codebook; + + p_huff_cfg->min_len = p_huff_cfg->sym_len; + move16(); + p_huff_cfg->max_len = 0; + move16(); + + FOR( i = 0; i < p_huff_cfg->sym_len; i++ ) + { + code_len = extract_l( codebook[1] ); + IF( GT_16( p_huff_cfg->min_len, code_len ) ) + { + p_huff_cfg->min_len = code_len; + move16(); + } + IF( LT_16( p_huff_cfg->max_len, code_len ) ) + { + p_huff_cfg->max_len = code_len; + move16(); + } + codebook = codebook + 3; + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function is_idx_present() + * + * + *------------------------------------------------------------------------*/ + +static Word16 is_idx_present( + Word16 *idx_list, + const Word16 idx, + const Word16 len ) +{ + Word16 i; + + FOR( i = 0; i < len; i++ ) + { + IF( EQ_16( idx_list[i], idx ) ) + { + return 1; + } + } + + return 0; +} + + +/*------------------------------------------------------------------------- + * Function ivas_split_huff_get_idx_trav_list() + * + * + *------------------------------------------------------------------------*/ + +static void ivas_split_huff_get_idx_trav_list( + Word16 *idx_list, + isar_split_rend_huffman_cfg_t *p_huff_cfg ) +{ + Word16 i, j, min_idx; + Word32 min_bits; + const Word32 *codebook; + + FOR( i = 0; i < p_huff_cfg->sym_len; i++ ) + { + idx_list[i] = -1; + move16(); + } + + FOR( i = 0; i < p_huff_cfg->sym_len; i++ ) + { + codebook = p_huff_cfg->codebook; + min_bits = p_huff_cfg->max_len; + move16(); + min_idx = -1; + move16(); + FOR( j = 0; j < p_huff_cfg->sym_len; j++ ) + { + test(); + IF( GE_32( min_bits, codebook[1] ) && EQ_16( is_idx_present( idx_list, j, i + 1 ), 0 ) ) + { + min_bits = codebook[1]; + move16(); + min_idx = j; + move16(); + } + codebook += 3; + } + idx_list[i] = min_idx; + move16(); + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function isar_split_rend_init_huff_cfg() + * + * + *------------------------------------------------------------------------*/ + +void isar_split_rend_init_huff_cfg( + ISAR_BIN_HR_SPLIT_REND_HUFF_HANDLE pHuff_cfg ) +{ + pHuff_cfg->pred[0].codebook = &ivas_split_rend_huff_pred31_consts[0][0]; + pHuff_cfg->pred[0].sym_len = ISAR_SPLIT_REND_PRED_31QUANT_PNTS; + move16(); + isar_split_rend_huffman_dec_init_min_max_len( &pHuff_cfg->pred[0] ); + ivas_split_huff_get_idx_trav_list( pHuff_cfg->pred_idx_trav[0], &pHuff_cfg->pred[0] ); + pHuff_cfg->pred_base2_code_len[0] = ISAR_SPLIT_REND_PRED_31QUANT_PNTS_LOG2_CEIL; + move16(); + + pHuff_cfg->pred[1].codebook = &ivas_split_rend_huff_pred63_consts[0][0]; + pHuff_cfg->pred[1].sym_len = ISAR_SPLIT_REND_PRED_63QUANT_PNTS; + move16(); + isar_split_rend_huffman_dec_init_min_max_len( &pHuff_cfg->pred[1] ); + ivas_split_huff_get_idx_trav_list( pHuff_cfg->pred_idx_trav[1], &pHuff_cfg->pred[1] ); + pHuff_cfg->pred_base2_code_len[1] = ISAR_SPLIT_REND_PRED_63QUANT_PNTS_LOG2_CEIL; + move16(); + + + pHuff_cfg->pred_roll.codebook = &ivas_split_rend_huff_roll_pred_consts[0][0]; + pHuff_cfg->pred_roll.sym_len = ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS; + move16(); + isar_split_rend_huffman_dec_init_min_max_len( &pHuff_cfg->pred_roll ); + ivas_split_huff_get_idx_trav_list( pHuff_cfg->pred_roll_idx_trav, &pHuff_cfg->pred_roll ); + pHuff_cfg->pred_roll_base2_code_len = ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS_LOG2_CEIL; + move16(); + + pHuff_cfg->gd.codebook = &ivas_split_rend_huff_d_consts[0][0]; + pHuff_cfg->gd.sym_len = ISAR_SPLIT_REND_D_QUANT_PNTS; + move16(); + isar_split_rend_huffman_dec_init_min_max_len( &pHuff_cfg->gd ); + ivas_split_huff_get_idx_trav_list( pHuff_cfg->gd_idx_trav, &pHuff_cfg->gd ); + pHuff_cfg->gd_base2_code_len = ISAR_SPLIT_REND_D_QUANT_PNTS_LOG2_CEIL; + move16(); + + pHuff_cfg->p_gd.codebook = &ivas_split_rend_huff_p_d_consts[0][0]; + pHuff_cfg->p_gd.sym_len = ISAR_SPLIT_REND_D_QUANT_PNTS; + move16(); + isar_split_rend_huffman_dec_init_min_max_len( &pHuff_cfg->p_gd ); + ivas_split_huff_get_idx_trav_list( pHuff_cfg->p_gd_idx_trav, &pHuff_cfg->p_gd ); + pHuff_cfg->p_gd_base2_code_len = ISAR_SPLIT_REND_D_QUANT_PNTS_LOG2_CEIL; + move16(); + + pHuff_cfg->p_gd_diff.codebook = &ivas_split_rend_huff_p_d_diff_consts[0][0]; + pHuff_cfg->p_gd_diff.sym_len = ISAR_SPLIT_REND_D_QUANT_PNTS; + move16(); + isar_split_rend_huffman_dec_init_min_max_len( &pHuff_cfg->p_gd_diff ); + ivas_split_huff_get_idx_trav_list( pHuff_cfg->p_gd_diff_idx_trav, &pHuff_cfg->p_gd_diff ); + pHuff_cfg->p_gd_diff_base2_code_len = ISAR_SPLIT_REND_D_QUANT_PNTS_LOG2_CEIL; + move16(); + + return; +} + + +/*------------------------------------------------------------------------- + * Function set_fix_rotation_mat() + * + * + *------------------------------------------------------------------------*/ + +void set_fix_rotation_mat_fx( + Word32 fix_pos_rot_mat[][BINAURAL_CHANNELS][BINAURAL_CHANNELS], + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData ) +{ + Word32 cos_yaw, sin_yaw; + Word16 pos_idx; + Word16 ind = 0; + + // pMultiBinPoseData->relative_head_poses can take only take -30, -22.5, -15, 0, 15, 22.5 and 30 degrees. + // cos(180 - theta) = cos(theta). + // Need only 4 values in LUT + + FOR( pos_idx = 0; pos_idx < sub( pMultiBinPoseData->num_poses, 1 ); pos_idx++ ) + { + ind = extract_l( L_shr( L_abs( pMultiBinPoseData->relative_head_poses_fx[pos_idx + 1][0] ), Q22 ) ); + + ind = shr( ind, 3 ); /* Values: 0, 1, 2 and 3 */ + cos_yaw = ivas_split_rend_fix_pos_rot_mat_cos_fx[ind]; /* Q31 */ + sin_yaw = 0; + + fix_pos_rot_mat[pos_idx][0][0] = cos_yaw; /* Q31 */ + fix_pos_rot_mat[pos_idx][1][1] = cos_yaw; /* Q31 */ + fix_pos_rot_mat[pos_idx][0][1] = sin_yaw; /* Q31 */ + fix_pos_rot_mat[pos_idx][1][0] = L_negate( sin_yaw ); /* Q31 */ + } + + return; +} + +/*------------------------------------------------------------------------- + * Function set_pose_types() + * + * + *------------------------------------------------------------------------*/ + +void set_pose_types_fx( + ISAR_SPLIT_REND_POSE_TYPE pose_type[MAX_HEAD_ROT_POSES - 1], + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData ) +{ + Word16 pos_idx; + + FOR( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + IF( GT_32( L_abs( pMultiBinPoseData->relative_head_poses_fx[pos_idx + 1][0] ), EPSILON_FX ) ) + { + pose_type[pos_idx] = ANY_YAW; + move32(); + } + ELSE IF( GT_32( L_abs( pMultiBinPoseData->relative_head_poses_fx[pos_idx + 1][2] ), EPSILON_FX ) ) + { + pose_type[pos_idx] = ANY_ROLL; + move32(); + } + ELSE + { + pose_type[pos_idx] = PITCH_ONLY; + move32(); + } + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function wrap_a() + * + * + *------------------------------------------------------------------------*/ + +Word16 wrap_a( + Word16 val, + const Word16 min_val, + const Word16 max_val ) +{ + IF( LT_16( val, min_val ) ) + { + val = add( add( sub( max_val, min_val ), val ), 1 ); + } + + IF( GT_16( val, max_val ) ) + { + val = sub( sub( add( min_val, val ), max_val ), 1 ); + } + + return val; +} + + +/*------------------------------------------------------------------------- + * Function isar_SplitRenderer_getdiagdiff() + * + * + *------------------------------------------------------------------------*/ + +void isar_SplitRenderer_getdiagdiff( + Word16 in_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + Word16 out_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + const Word16 sign, + const Word16 min_val, + const Word16 max_val ) +{ + out_idx[0][0] = in_idx[0][0]; + move16(); + out_idx[0][1] = in_idx[0][1]; + move16(); + // DEPR_i_mult used instead of i_mult becuase it is not available + out_idx[1][1] = add( in_idx[1][1], DEPR_i_mult( sign, out_idx[0][0] ) ); + move16(); + out_idx[1][1] = wrap_a( out_idx[1][1], min_val, max_val ); + move16(); + out_idx[1][0] = add( in_idx[1][0], DEPR_i_mult( sign, out_idx[0][1] ) ); + move16(); + out_idx[1][0] = wrap_a( out_idx[1][0], min_val, max_val ); + move16(); + + return; +} + + +/*------------------------------------------------------------------------- + * Function ISAR_SPLIT_REND_BITStream_read_int32() + * + * + *------------------------------------------------------------------------*/ +Word32 ISAR_SPLIT_REND_BITStream_read_int32( + ISAR_SPLIT_REND_BITS_HANDLE pBits, + const Word32 bits ) +{ + Word32 val, k, bit_val; + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + assert( ( pBits->bits_written - pBits->bits_read ) >= bits ); + assert( bits <= 32 ); +#endif + + /* write bit by bit */ + val = 0; + move32(); + FOR( k = L_sub( bits, 1 ); k >= 0; k-- ) + { + bit_val = NE_32( L_and( pBits->bits_buf[L_shr( pBits->bits_read, 3 )], ( L_shl( 1, (Word16) ( L_and( pBits->bits_read, 7 ) ) ) ) ), 0 ); + val = L_or( val, L_shl( bit_val, (Word16) k ) ); + pBits->bits_read = L_add( pBits->bits_read, 1 ); + } + + return val; +} + + +/*------------------------------------------------------------------------- + * Function ISAR_SPLIT_REND_BITStream_write_int32() + * + * + *------------------------------------------------------------------------*/ + +void ISAR_SPLIT_REND_BITStream_write_int32( + ISAR_SPLIT_REND_BITS_HANDLE pBits, + const Word32 val, + const Word32 bits ) +{ + Word32 mask, k; + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + /*protection check*/ + if ( ( pBits->buf_len << 3 ) < ( pBits->bits_written + bits ) ) + { + assert( 0 ); + } +#endif + + mask = L_shl( 1, extract_l( L_sub( bits, 1 ) ) ); + /* write bit by bit */ + FOR( k = 0; k < bits; k++ ) + { + IF( L_and( val, mask ) ) + { + pBits->bits_buf[L_shr( pBits->bits_written, 3 )] = (UWord8) L_or( pBits->bits_buf[L_shr( pBits->bits_written, 3 )], L_shl( 1, extract_l( L_and( pBits->bits_written, 7 ) ) ) ); + } + ELSE + { + pBits->bits_buf[L_shr( pBits->bits_written, 3 )] = (UWord8) L_and( pBits->bits_buf[L_shr( pBits->bits_written, 3 )], ~L_shl( 1, extract_l( L_and( pBits->bits_written, 7 ) ) ) ); + } + pBits->bits_written++; + mask = L_shr( mask, 1 ); + } + + return; +} + + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG +/*------------------------------------------------------------------------- + * ivas_mat_mult_2by2_complex() + * + * + *------------------------------------------------------------------------*/ + +void isar_log_cldfb2wav_data( + float Cldfb_In_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_In_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + HANDLE_CLDFB_FILTER_BANK *cldfbSyn, + const int16_t num_chs, + const int16_t num_freq_bands, + const int32_t output_Fs, + const int16_t num_slots, + const int16_t start_slot_idx, + const char *filename ) +{ + float *RealBuffer[CLDFB_NO_COL_MAX]; + float *ImagBuffer[CLDFB_NO_COL_MAX]; + float pcm_out[BINAURAL_CHANNELS][L_FRAME48k]; + float *pPcm[BINAURAL_CHANNELS]; + float Cldfb_local_Real[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_local_Imag[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + int16_t sf, ch; + + assert( num_chs <= BINAURAL_CHANNELS ); + for ( ch = 0; ch < num_chs; ch++ ) + { + for ( sf = start_slot_idx; sf < start_slot_idx + num_slots; sf++ ) + { + mvr2r( Cldfb_In_Real[ch][sf], Cldfb_local_Real[ch][sf], num_freq_bands ); + mvr2r( Cldfb_In_Imag[ch][sf], Cldfb_local_Imag[ch][sf], num_freq_bands ); + RealBuffer[sf - start_slot_idx] = Cldfb_local_Real[ch][sf]; + ImagBuffer[sf - start_slot_idx] = Cldfb_local_Imag[ch][sf]; + } + cldfbSynthesis( RealBuffer, ImagBuffer, &( pcm_out[ch][0] ), num_freq_bands * num_slots, cldfbSyn[ch] ); + pPcm[ch] = pcm_out[ch]; + } + dbgwrite_wav( pPcm, num_freq_bands * num_slots, filename, output_Fs, num_chs ); + + return; +} +#endif + + +/*------------------------------------------------------------------------- + * Function isar_get_split_rend_md_target_brate() + * + * + *------------------------------------------------------------------------*/ + +Word32 isar_get_split_rend_md_target_brate( + const Word32 SplitRendBitRate, + const Word16 pcm_out_flag ) +{ + Word32 md_bitrate; + + IF( EQ_16( pcm_out_flag, 1 ) ) + { + md_bitrate = SplitRendBitRate; + move32(); + } + ELSE + { + SWITCH( SplitRendBitRate ) + { + case SPLIT_REND_768k: + { + md_bitrate = 256000; + move32(); + BREAK; + } + case SPLIT_REND_512k: + { + md_bitrate = 128000; + move32(); + BREAK; + } + case SPLIT_REND_384k: + { + md_bitrate = 128000; + move32(); + BREAK; + } + default: + { + return -1; + } + } + } + + return md_bitrate; +} + + +/*------------------------------------------------------------------------- + * Function isar_get_lcld_bitrate() + * + * + *------------------------------------------------------------------------*/ + +Word32 isar_get_lcld_bitrate( + const Word32 SplitRendBitRate, + const ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode ) +{ + IF( EQ_32( poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) ) + { + SWITCH( SplitRendBitRate ) + { + case SPLIT_REND_768k: + { + return IVAS_512k; + } + case SPLIT_REND_512k: + { + return IVAS_384k; + } + case SPLIT_REND_384k: + { + return IVAS_256k; + } + default: + { + assert( 0 ); + } + } + } + ELSE + { + return SplitRendBitRate; + } + + return -1; +} + + +/*------------------------------------------------------------------------- + * Function isar_split_rend_validate_config() + * + * + *------------------------------------------------------------------------*/ + +ivas_error isar_split_rend_validate_config( + const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, + const Word16 is_pcm_out ) +{ + /* Valid DOF range is 0-3 */ + test(); + IF( LT_16( pSplitRendConfig->dof, 0 ) || GT_16( pSplitRendConfig->dof, 3 ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "Valid DOF range is 0-3" ); + } + + /* Only CLDFB pose correction supports HQ mode */ + test(); + IF( NE_32( pSplitRendConfig->poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) && NE_16( pSplitRendConfig->hq_mode, 0 ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "Only CLDFB pose correction supports HQ mode" ); + } + + /* Split rendering with no pose correction - 0 DOF and pose correction NONE must only ever be set together */ + test(); + test(); + test(); + IF( ( EQ_32( pSplitRendConfig->poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) && NE_16( pSplitRendConfig->dof, 0 ) ) || + ( NE_32( pSplitRendConfig->poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) && EQ_16( pSplitRendConfig->dof, 0 ) ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "0 DOF and pose correction NONE must only ever be set together" ); + } + + IF( NE_16( pSplitRendConfig->codec_frame_size_ms, 0 ) ) /* 0 means "default for current codec", will be set to actual value at a later stage */ + { + test(); + test(); + test(); + IF( EQ_32( pSplitRendConfig->codec, ISAR_SPLIT_REND_CODEC_LCLD ) && NE_16( pSplitRendConfig->codec_frame_size_ms, 5 ) && NE_16( pSplitRendConfig->codec_frame_size_ms, 10 ) && NE_16( pSplitRendConfig->codec_frame_size_ms, 20 ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "Invalid framing for LCLD codec" ); + } + + test(); + test(); + IF( EQ_32( pSplitRendConfig->codec, ISAR_SPLIT_REND_CODEC_LC3PLUS ) && NE_16( pSplitRendConfig->codec_frame_size_ms, 5 ) && NE_16( pSplitRendConfig->codec_frame_size_ms, 10 ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "Invalid framing for LC3plus codec" ); + } + } + + /* Validate bitrate */ + IF( EQ_16( is_pcm_out, 0 ) ) + { + SWITCH( pSplitRendConfig->splitRendBitRate ) + { + case SPLIT_REND_256k: + IF( NE_16( pSplitRendConfig->dof, 0 ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "Bitrates of 320 kbps and lower are only valid with 0 DOF" ); + } + BREAK; + case SPLIT_REND_320k: + /* Only valid with 0 DOF */ + IF( NE_16( pSplitRendConfig->dof, 0 ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "Bitrates of 320 kbps and lower are only valid with 0 DOF" ); + } + BREAK; + case SPLIT_REND_384k: + case SPLIT_REND_512k: + case SPLIT_REND_768k: + /* Always valid */ + BREAK; + default: + return IVAS_ERR_LC3PLUS_INVALID_BITRATE; + } + } + ELSE + { + 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" ); + } + } + } + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * Function isar_split_rend_get_quant_params() + * + * + *------------------------------------------------------------------------*/ + +void isar_split_rend_get_quant_params_fx( + const Word16 num_md_bands, + Word16 pred_real_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + Word16 pred_imag_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + Word16 pred_quant_pnts_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + Word32 pred_quantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + Word32 pred_1byquantstep_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + Word16 d_bands_yaw[ISAR_SPLIT_REND_NUM_QUANT_STRATS], + 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], + const Word16 ro_flag, + Word16 *num_quant_strats ) +{ + Word16 q; + + *num_quant_strats = ISAR_SPLIT_REND_NUM_QUANT_STRATS; + move16(); + + pred_quant_pnts_yaw[0] = ISAR_SPLIT_REND_PRED_63QUANT_PNTS; + move16(); + pred_quantstep_yaw[0] = ISAR_SPLIT_REND_PRED63_Q_STEP_FX_Q31; + move32(); + pred_1byquantstep_yaw[0] = ISAR_SPLIT_REND_PRED63_1BYQ_STEP_FX_Q26; + move32(); + FOR( q = 1; q < *num_quant_strats; q++ ) + { + pred_quant_pnts_yaw[q] = ISAR_SPLIT_REND_PRED_31QUANT_PNTS; + move16(); + pred_quantstep_yaw[q] = ISAR_SPLIT_REND_PRED31_Q_STEP_FX_Q31; + move32(); + pred_1byquantstep_yaw[q] = ISAR_SPLIT_REND_PRED31_1BYQ_STEP_FX_Q26; + move32(); + } + + FOR( q = 0; q < *num_quant_strats; q++ ) + { + pred_real_bands_yaw[q] = num_md_bands; + move16(); + pred_real_bands_roll[q] = num_md_bands; + move16(); + } + + IF( ro_flag ) + { + FOR( q = 0; q < *num_quant_strats; q++ ) + { + pred_imag_bands_yaw[q] = SPLIT_REND_RO_MD_BAND_THRESH; + move16(); + } + } + ELSE + { + FOR( q = 0; q < *num_quant_strats - 2; q++ ) + { + pred_imag_bands_yaw[q] = num_md_bands; + move16(); + } + pred_imag_bands_yaw[( *num_quant_strats - 2 )] = COMPLEX_MD_BAND_THRESH_HIGH; + move16(); + pred_imag_bands_yaw[( *num_quant_strats - 1 )] = COMPLEX_MD_BAND_THRESH_LOW; + move16(); + } + + FOR( q = 0; q < *num_quant_strats; q++ ) + { + pred_imag_bands_roll[q] = SPLIT_REND_RO_MD_BAND_THRESH; + move16(); + } + + FOR( q = 0; q < *num_quant_strats; q++ ) + { + d_bands_yaw[q] = 0; + move16(); + bands_pitch[q] = num_md_bands; + move16(); + } + + return; +} + +/*------------------------------------------------------------------------- + * Function isar_renderSplitGetRot_axisNumBits() + * + * + *------------------------------------------------------------------------*/ + +Word16 isar_renderSplitGetRot_axisNumBits( + const Word16 dof ) +{ + Word16 num_bits; + IF( dof < 3 ) + { + num_bits = 2; + } + ELSE + { + num_bits = 0; + } + return num_bits; +} + +/*------------------------------------------------------------------------- + * Function isar_renderSplitGetRot_axisFromCode() + * + * + *------------------------------------------------------------------------*/ + +ISAR_SPLIT_REND_ROT_AXIS isar_renderSplitGetRot_axisFromCode( + const Word16 dof, + const Word16 code ) +{ + ISAR_SPLIT_REND_ROT_AXIS rot_axis; + + IF( dof == 1 ) + { + rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) code; + } + else if ( dof == 2 ) + { + IF( code == 0 ) + { + rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) code; + } + ELSE + { + rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) ( code - 1 ) + YAW_PITCH; + } + } + ELSE + { + rot_axis = (ISAR_SPLIT_REND_ROT_AXIS) DEFAULT_AXIS; + } + + return rot_axis; +} + +/*------------------------------------------------------------------------- + * Function isar_renderSplitGetCodeFromRot_axis() + * + * + *------------------------------------------------------------------------*/ + +Word16 isar_renderSplitGetCodeFromRot_axis( + const Word16 dof, + const ISAR_SPLIT_REND_ROT_AXIS rot_axis, + Word16 *num_bits ) +{ + Word16 code = 0; + IF( dof == 1 ) + { + code = (Word16) rot_axis; + } + else if ( dof == 2 ) + { + IF( rot_axis == DEFAULT_AXIS ) + { + code = (Word16) rot_axis; + } + ELSE + { + code = (Word16) ( rot_axis - YAW_PITCH ) + 1; + } + } + ELSE + { + code = (Word16) DEFAULT_AXIS; + } + *num_bits = isar_renderSplitGetRot_axisNumBits( dof ); + + return code; +} + +/*------------------------------------------------------------------------- + * Function isar_renderSplitGetMultiBinPoseData() + * + * + *------------------------------------------------------------------------*/ + +void isar_renderSplitGetMultiBinPoseData_fx( + const ISAR_SPLIT_REND_CONFIG_DATA *pSplit_rend_config, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const ISAR_SPLIT_REND_ROT_AXIS rot_axis ) +{ + Word16 pos_idx, num_yaw_poses, num_pitch_poses, num_roll_poses; + const Word32 *relative_yaw_angles; + const Word32 *relative_pitch_angles; + const Word32 *relative_roll_angles; + + FOR( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) + { + pMultiBinPoseData->relative_head_poses_fx[pos_idx][0] = 0; + move32(); + pMultiBinPoseData->relative_head_poses_fx[pos_idx][1] = 0; + move32(); + pMultiBinPoseData->relative_head_poses_fx[pos_idx][2] = 0; + move32(); + } + + /* 0 DOF defaults */ + num_yaw_poses = 0; + move16(); + num_pitch_poses = 0; + move16(); + num_roll_poses = 0; + move16(); + + /* defaults for all DOF except 3DOF HQ */ + relative_yaw_angles = ivas_split_rend_relative_yaw_pos_angles_hq_fx; + relative_pitch_angles = ivas_split_rend_relative_pitch_pos_angles_hq_fx; + relative_roll_angles = ivas_split_rend_relative_roll_pos_angles_hq_fx; + + IF( EQ_16( pSplit_rend_config->dof, 1 ) ) + { + SWITCH( rot_axis ) + { + case DEFAULT_AXIS: + case YAW: + { + num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; + move16(); + BREAK; + } + case PITCH: + { + num_pitch_poses = SPLIT_REND_MAX_PITCH_ONLY_POSES; + move16(); + BREAK; + } + case ROLL: + { + num_roll_poses = SPLIT_REND_MAX_ROLL_ONLY_POSES; + move16(); + BREAK; + } + default: + { + assert( 0 && "unsupported rotation axis value" ); + } + } + } + ELSE IF( EQ_16( pSplit_rend_config->dof, 2 ) ) + { + SWITCH( rot_axis ) + { + case DEFAULT_AXIS: + case YAW_PITCH: + { + num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; + move16(); + num_pitch_poses = SPLIT_REND_MAX_PITCH_ONLY_POSES; + move16(); + BREAK; + } + case YAW_ROLL: + { + num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; + move16(); + num_roll_poses = SPLIT_REND_MAX_ROLL_ONLY_POSES; + move16(); + BREAK; + } + case PITCH_ROLL: + { + num_pitch_poses = SPLIT_REND_MAX_PITCH_ONLY_POSES; + move16(); + num_roll_poses = SPLIT_REND_MAX_ROLL_ONLY_POSES; + move16(); + BREAK; + } + default: + { + assert( 0 && "unsupported rotation axis value" ); + } + } + } + ELSE IF( EQ_16( pSplit_rend_config->dof, 3 ) ) + { + IF( EQ_16( pSplit_rend_config->hq_mode, 1 ) ) + { + relative_yaw_angles = ivas_split_rend_relative_yaw_pos_angles_hq_fx; + relative_pitch_angles = ivas_split_rend_relative_pitch_pos_angles_hq_fx; + relative_roll_angles = ivas_split_rend_relative_roll_pos_angles_hq_fx; + num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; + move16(); + num_pitch_poses = SPLIT_REND_MAX_PITCH_ONLY_POSES; + move16(); + num_roll_poses = SPLIT_REND_MAX_ROLL_ONLY_POSES; + move16(); + } + ELSE + { + relative_yaw_angles = ivas_split_rend_relative_yaw_pos_angles_fx; + relative_pitch_angles = ivas_split_rend_relative_pitch_pos_angles_fx; + relative_roll_angles = ivas_split_rend_relative_roll_pos_angles_fx; + num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; + move16(); + num_pitch_poses = 1; + move16(); + num_roll_poses = 1; + move16(); + } + } + + pMultiBinPoseData->num_poses = add( add( num_yaw_poses, num_pitch_poses ), add( num_roll_poses, 1 ) ); + assert( LE_16( pMultiBinPoseData->num_poses, MAX_HEAD_ROT_POSES ) ); + + FOR( pos_idx = 0; pos_idx < num_yaw_poses; pos_idx++ ) + { + pMultiBinPoseData->relative_head_poses_fx[pos_idx + 1][0] = relative_yaw_angles[pos_idx]; + move32(); + } + + FOR( pos_idx = 0; pos_idx < num_pitch_poses; pos_idx++ ) + { + pMultiBinPoseData->relative_head_poses_fx[pos_idx + num_yaw_poses + 1][1] = relative_pitch_angles[pos_idx]; + move32(); + } + + FOR( pos_idx = 0; pos_idx < num_roll_poses; pos_idx++ ) + { + pMultiBinPoseData->relative_head_poses_fx[pos_idx + num_yaw_poses + num_pitch_poses + 1][2] = relative_roll_angles[pos_idx]; + move32(); + } + pMultiBinPoseData->dof = pSplit_rend_config->dof; + move16(); + pMultiBinPoseData->hq_mode = pSplit_rend_config->hq_mode; + move16(); + pMultiBinPoseData->rot_axis = rot_axis; + move32(); + pMultiBinPoseData->poseCorrectionMode = pSplit_rend_config->poseCorrectionMode; + move32(); + + return; +} + +/*------------------------------------------------------------------------- + * Function isar_renderSplitUpdateNoCorrectionPoseData() + * + * + *------------------------------------------------------------------------*/ + +void isar_renderSplitUpdateNoCorrectionPoseData( + const ISAR_SPLIT_REND_CONFIG_DATA *pSplit_rend_config, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData ) +{ + pMultiBinPoseData->num_poses = 1; + move16(); + assert( pSplit_rend_config->dof == 0 ); + pMultiBinPoseData->dof = pSplit_rend_config->dof; + move16(); + assert( pSplit_rend_config->poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ); + pMultiBinPoseData->poseCorrectionMode = pSplit_rend_config->poseCorrectionMode; + move32(); + + return; +} + + +/*------------------------------------------------------------------------- + * Function isar_init_multi_bin_pose_data() + * + * + *------------------------------------------------------------------------*/ + +void isar_init_multi_bin_pose_data_fx( + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData ) +{ + Word16 pos_idx; + + FOR( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) + { + pMultiBinPoseData->relative_head_poses_fx[pos_idx][0] = 0; + move32(); + pMultiBinPoseData->relative_head_poses_fx[pos_idx][1] = 0; + move32(); + pMultiBinPoseData->relative_head_poses_fx[pos_idx][2] = 0; + move32(); + } + pMultiBinPoseData->num_poses = 1; + move16(); + pMultiBinPoseData->dof = 3; + move16(); + pMultiBinPoseData->hq_mode = 0; + move16(); + pMultiBinPoseData->rot_axis = DEFAULT_AXIS; + move32(); + + return; +} + +/* Copy for encoder, to be removed */ +void isar_init_multi_bin_pose_data_fx_enc( + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData ) +{ + Word16 pos_idx; + + FOR( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) + { + pMultiBinPoseData->relative_head_poses_fx[pos_idx][0] = 0; + move32(); + pMultiBinPoseData->relative_head_poses_fx[pos_idx][1] = 0; + move32(); + pMultiBinPoseData->relative_head_poses_fx[pos_idx][2] = 0; + move32(); + } + pMultiBinPoseData->num_poses = 1; + move16(); + pMultiBinPoseData->dof = 3; + move16(); + pMultiBinPoseData->hq_mode = 0; + move16(); + pMultiBinPoseData->rot_axis = DEFAULT_AXIS; + move32(); + + return; +} + +ivas_error isar_framesize_to_ms( + const IVAS_RENDER_FRAMESIZE frame_size, /* i : frame size enum */ + int16_t *ms /* o : frame size in ms */ +) +{ + switch ( frame_size ) + { + case IVAS_RENDER_FRAMESIZE_5MS: + *ms = 5; + break; + case IVAS_RENDER_FRAMESIZE_10MS: + *ms = 10; + break; + case IVAS_RENDER_FRAMESIZE_20MS: + *ms = 20; + break; + default: + return IVAS_ERROR( IVAS_ERR_INTERNAL, "Unsupported ISAR frame size" ); + } + + return IVAS_ERR_OK; +} + +/*------------------------------------------------------------------------- + * Function isar_split_rend_choose_default_codec() + * + * + *------------------------------------------------------------------------*/ + +ivas_error isar_split_rend_choose_default_codec( + ISAR_SPLIT_REND_CODEC *pCodec, /* i/o: pointer to codec setting */ + 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 ) ) + { + IF( EQ_32( *pCodec, ISAR_SPLIT_REND_CODEC_DEFAULT ) ) + { + *pCodec = cldfb_in_flag ? ISAR_SPLIT_REND_CODEC_LCLD : ISAR_SPLIT_REND_CODEC_LC3PLUS; + move32(); + } + } + ELSE + { + *pCodec = ISAR_SPLIT_REND_CODEC_NONE; + move32(); + } + + IF( EQ_16( *pCodec_frame_size_ms, 0 ) ) /* codec frame size hasn't been set yet - use default for current configuration */ + { + SWITCH( *pCodec ) + { + case ISAR_SPLIT_REND_CODEC_LCLD: + *pCodec_frame_size_ms = DEPR_i_mult( num_subframes, 5 ); + BREAK; + case ISAR_SPLIT_REND_CODEC_LC3PLUS: + case ISAR_SPLIT_REND_CODEC_NONE: + *pCodec_frame_size_ms = 5; + move16(); + BREAK; + default: + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Unknown split codec value" ); + } + } + IF( *pIsar_frame_size_ms == 0 ) /* isar frame size hasn't been set yet - use default for current configuration */ + { + *pIsar_frame_size_ms = 20; + } + + return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------* + * Function get_bit() + * + * + *-------------------------------------------------------------------*/ + +Word32 get_bit( + const Word32 state, + const Word32 bit_id ) +{ + return L_and( state, ( L_shl( 1, (Word16) bit_id ) ) ); +} diff --git a/lib_isar/isar_stat.h b/lib_isar/isar_stat.h new file mode 100644 index 0000000000000000000000000000000000000000..3fc1580e25d6b864a58e2d400ce9dfaaac5428f3 --- /dev/null +++ b/lib_isar/isar_stat.h @@ -0,0 +1,256 @@ +/****************************************************************************************************** + + (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 ISAR_STAT_H +#define ISAR_STAT_H + + +#include +#include "options.h" +#include "stat_com.h" +#include "ivas_stat_com.h" +#include "isar_lcld_prot.h" +#include "isar_lc3plus_enc.h" +#include "isar_lc3plus_dec.h" +#include "isar_cnst.h" + + +/*-------------------------------------------------------------------* + * ISAR post rend constants + *-------------------------------------------------------------------*/ + +#define MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL ( MAX_BUFFER_LENGTH_PER_CHANNEL * 2 ) +#define MAX_CLDFB_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) +#define MAX_BIN_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) +#define MAX_CLDFB_BIN_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) + +/*-------------------------------------------------------------------* + * ISAR post rend structs + *-------------------------------------------------------------------*/ + +typedef struct +{ + int8_t headRotEnabled; + IVAS_QUATERNION headPositions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; + IVAS_VECTOR3 Pos[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; + Word32 crossfade_fx[L_FRAME48k / IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; + ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; + +} ISAR_POST_REND_HeadRotData; + +typedef struct +{ +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + HANDLE_CLDFB_FILTER_BANK cldfbAna[( 1 + MAX_HEAD_ROT_POSES ) * BINAURAL_CHANNELS]; +#else + HANDLE_CLDFB_FILTER_BANK cldfbAna[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS]; +#endif + HANDLE_CLDFB_FILTER_BANK cldfbSyn[BINAURAL_CHANNELS]; + +} CLDFB_HANDLES_WRAPPER, *CLDFB_HANDLES_WRAPPER_HANDLE; + +typedef struct isar_split_rend_huffman_cfg_t +{ + const int32_t *codebook; + int16_t min_len; + int16_t max_len; + int16_t sym_len; + +} isar_split_rend_huffman_cfg_t; + +typedef struct isar_binaural_head_rot_split_rendering_huff_struct +{ + isar_split_rend_huffman_cfg_t pred[2]; + int16_t pred_idx_trav[2][ISAR_SPLIT_REND_PRED_63QUANT_PNTS]; + int16_t pred_base2_code_len[2]; + isar_split_rend_huffman_cfg_t pred_roll; + int16_t pred_roll_idx_trav[ISAR_SPLIT_REND_ROLL_PRED_QUANT_PNTS]; + int16_t pred_roll_base2_code_len; + isar_split_rend_huffman_cfg_t gd; + int16_t gd_base2_code_len; + int16_t gd_idx_trav[ISAR_SPLIT_REND_D_QUANT_PNTS]; + isar_split_rend_huffman_cfg_t p_gd; + int16_t p_gd_base2_code_len; + int16_t p_gd_idx_trav[ISAR_SPLIT_REND_D_QUANT_PNTS]; + isar_split_rend_huffman_cfg_t p_gd_diff; + int16_t p_gd_diff_base2_code_len; + int16_t p_gd_diff_idx_trav[ISAR_SPLIT_REND_D_QUANT_PNTS]; + +} ISAR_BIN_HR_SPLIT_REND_HUFF, *ISAR_BIN_HR_SPLIT_REND_HUFF_HANDLE; + +/* binaural split rendering head rotation data structure */ +typedef struct isar_binaural_head_rot_split_rendering_md_struct +{ + Word32 pred_mat_re_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; /* Q25 */ + Word16 exp_pred_mat_re; + Word32 pred_mat_im_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; /* Q25 */ + Word16 exp_pred_mat_im; + Word32 pred_mat_re2[BINAURAL_CHANNELS]; + Word16 exp_pred_mat_re2; + Word32 gd_fx; /* Q25 */ + Word32 gd2_fx; /* Q25 */ + Word16 exp_gd; + Word16 exp_gd2; + int16_t pred_mat_re_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + int16_t pred_mat_im_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + int16_t gd_idx; + int16_t gd2_idx; + +} ISAR_BIN_HR_SPLIT_REND_MD, *ISAR_BIN_HR_SPLIT_REND_MD_HANDLE; +typedef struct isar_binaural_head_rot_split_pre_rendering_struct +{ + ISAR_BIN_HR_SPLIT_REND_MD rot_md[MAX_HEAD_ROT_POSES - 1][MAX_SPLIT_MD_SUBFRAMES][MAX_SPLIT_REND_MD_BANDS]; + Word32 fix_pos_rot_mat_fx[MAX_HEAD_ROT_POSES - 1][BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float fix_pos_rot_mat[MAX_HEAD_ROT_POSES - 1][BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + ISAR_SPLIT_REND_POSE_TYPE pose_type[MAX_HEAD_ROT_POSES - 1]; + ISAR_BIN_HR_SPLIT_REND_HUFF huff_cfg; +} ISAR_BIN_HR_SPLIT_PRE_REND, *ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE; +/*----------------------------------------------------------------------------------* + * Output configuration for renderer (e.g. DirAC, MASA, Binaural Renderer...) + *----------------------------------------------------------------------------------*/ + +typedef struct isar_binaural_head_rot_split_rendering_lcld_enc_struct +{ + void *pLcld_enc; + Word16 iChannels; + LCLDEncoder *psLCLDEncoder; + Word32 ***pppfLCLDReal_fx; + Word32 ***pppfLCLDImag_fx; +#ifdef CLDFB_DEBUG + FILE *cldfbIn; + int16_t numFrame; +#endif + Word16 iNumIterations; + Word16 iNumBlocks; + +} ISAR_BIN_HR_SPLIT_LCLD_ENC, *ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE; + +typedef struct +{ + Word32 Cldfb_Prev_BinReal_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX + CLDFB_PLC_XF][CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_Prev_BinImag_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX + CLDFB_PLC_XF][CLDFB_NO_CHANNELS_MAX]; + Word16 Q_Prev_Bin_fx; + Word32 xf_bet_fx[2][CLDFB_NO_CHANNELS_MAX][CLDFB_PLC_XF]; + +} ISAR_CLDFB_PLC, *ISAR_CLDFB_PLC_HANDLE; +typedef struct +{ + ISAR_CLDFB_PLC CldfbPLC_state; + Word16 prev_bfi; + Word16 bf_count; + Word16 iNumSubSets; + +} ISAR_SPLIT_REND_PLC_STRUCT, *ISAR_SPLIT_REND_PLC_HANDLE; +typedef struct isar_binaural_head_rot_split_rendering_lcld_dec_struct +{ + void *pLcld_dec; + Word32 iChannels; + LCLDDecoder *psLCLDDecoder; + Word32 ***pppfDecLCLDReal_fx; + Word32 ***pppfDecLCLDImag_fx; +#ifdef CLDFB_DEBUG + FILE *cldfbOut; + int16_t numFrame; +#endif + ISAR_SPLIT_REND_PLC_HANDLE hSplitRendPLC; + + Word16 iNumBlocks; + Word16 iNumIterations; + +} ISAR_BIN_HR_SPLIT_LCLD_DEC, *ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE; +typedef struct isar_binaural_head_rot_split_post_rendering_struct +{ + ISAR_BIN_HR_SPLIT_REND_MD rot_md[MAX_HEAD_ROT_POSES][MAX_SPLIT_MD_SUBFRAMES][MAX_SPLIT_REND_MD_BANDS]; + IVAS_QUATERNION QuaternionsPre[MAX_PARAM_SPATIAL_SUBFRAMES]; + int16_t low_Res; + + float fix_pos_rot_mat[MAX_HEAD_ROT_POSES - 1][BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 fix_pos_rot_mat_fx[MAX_HEAD_ROT_POSES - 1][BINAURAL_CHANNELS][BINAURAL_CHANNELS]; /* Q31 */ + ISAR_SPLIT_REND_POSE_TYPE pose_type[MAX_HEAD_ROT_POSES - 1]; + ISAR_BIN_HR_SPLIT_REND_HUFF huff_cfg; +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + Word32 mixer_mat_re_fx[MAX_HEAD_ROT_POSES][MAX_SPLIT_REND_MD_BANDS][BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 mixer_mat_im_fx[MAX_HEAD_ROT_POSES][MAX_SPLIT_REND_MD_BANDS][BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 gd_mem_fx[MAX_HEAD_ROT_POSES][MAX_SPLIT_REND_MD_BANDS]; +#else + Word32 mixer_mat_re_fx[1][MAX_SPLIT_REND_MD_BANDS][BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 mixer_mat_im_fx[1][MAX_SPLIT_REND_MD_BANDS][BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + Word32 gd_mem_fx[1][MAX_SPLIT_REND_MD_BANDS]; +#endif + int16_t cf_flag; + HANDLE_CLDFB_FILTER_BANK cldfbAna[BINAURAL_CHANNELS]; + HANDLE_CLDFB_FILTER_BANK cldfbSyn[BINAURAL_CHANNELS]; +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + HANDLE_CLDFB_FILTER_BANK cldfbSynReconsBinDec[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS]; +#endif + +} ISAR_BIN_HR_SPLIT_POST_REND, *ISAR_BIN_HR_SPLIT_POST_REND_HANDLE; + +typedef struct +{ + int16_t num_poses; + // float relative_head_poses[MAX_HEAD_ROT_POSES][3]; + Word32 relative_head_poses_fx[MAX_HEAD_ROT_POSES][3]; /* Q22 */ + int16_t dof; + int16_t hq_mode; + ISAR_SPLIT_REND_ROT_AXIS rot_axis; + ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode; + +} MULTI_BIN_REND_POSE_DATA; + +typedef struct +{ + MULTI_BIN_REND_POSE_DATA multiBinPoseData; + ISAR_BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend; + ISAR_BIN_HR_SPLIT_LCLD_DEC_HANDLE hSplitBinLCLDDec; + int16_t first_good_frame_received; + ISAR_LC3PLUS_DEC_HANDLE hLc3plusDec; + Word16 Q_last; + +} ISAR_SPLIT_POST_REND_WRAPPER; + + +typedef struct +{ + MULTI_BIN_REND_POSE_DATA multiBinPoseData; + ISAR_BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend; + ISAR_BIN_HR_SPLIT_LCLD_ENC_HANDLE hSplitBinLCLDEnc; + CLDFB_HANDLES_WRAPPER_HANDLE hCldfbHandles; + ISAR_LC3PLUS_ENC_HANDLE hLc3plusEnc; + // float *lc3plusDelayBuffers[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS]; /* Used to time-align head pose correction metadata with LC3plus-coded reference audio */ + Word32 *lc3plusDelayBuffers_fx[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS]; /* Used to time-align head pose correction metadata with LC3plus-coded reference audio */ + Word16 lc3plusDelayBuffers_q; + Word32 lc3plusDelaySamples; +} SPLIT_REND_WRAPPER; + + +#endif /* ISAR_STAT_H */ diff --git a/lib_isar/lib_isar_post_rend.c b/lib_isar/lib_isar_post_rend.c new file mode 100644 index 0000000000000000000000000000000000000000..c0a199e95a033f1eda6ce38061923baf06859501 --- /dev/null +++ b/lib_isar/lib_isar_post_rend.c @@ -0,0 +1,1804 @@ +/****************************************************************************************************** + + (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 "options.h" +#include "lib_isar_post_rend.h" +#include "isar_stat.h" +#include "isar_prot.h" +#include "prot_fx.h" +#include "ivas_prot_fx.h" +#include "prot_fx.h" + +#include "ivas_prot_rend_fx.h" +#include +#include +#include "wmc_auto.h" +#include "prot_fx.h" + + +/*-------------------------------------------------------------------* + * Local constants + *-------------------------------------------------------------------*/ + +/*-------------------------------------------------------------------* + * Local types + *-------------------------------------------------------------------*/ + +/* EFAP wrapper to simplify writing panning gains to a vector that includes LFE channels */ +typedef struct +{ + EFAP_HANDLE hEfap; + AUDIO_CONFIG speakerConfig; + const LSSETUP_CUSTOM_STRUCT *pCustomLsSetup; /* Pointer to main custom LS struct from renderer handle - doesn't need freeing */ +} EFAP_WRAPPER; + +/* Lightweight helper struct that gathers all information required for rendering + * any config to any other config. Used to simplify signatures of rendering functions. + * + * This struct should store ONLY CONST POINTERS to data existing elsewhere. + * Storing pointers instead of data itself ensures that no additional updates + * are required when any of these are changed in the renderer. Making the pointers + * const ensures that this data is only read, but not modified by the rendering functions. */ +typedef struct +{ + const int32_t *pOutSampleRate; + const AUDIO_CONFIG *pOutConfig; + const ISAR_POST_REND_HeadRotData *pHeadRotData; + const int16_t *pSplitRendBFI; + const ISAR_SPLIT_REND_CONFIG_DATA *pSplitRenderConfig; +} rendering_context; + +/* Common base for input structs */ +typedef struct +{ + AUDIO_CONFIG inConfig; + ISAR_POST_REND_InputId id; + IVAS_REND_AudioBuffer inputBuffer; + Word32 gain_fx; /* Linear, not in dB */ + rendering_context ctx; + int32_t numNewSamplesPerChannel; /* Used to keep track how much new audio was fed before rendering current frame */ +} input_base; + +typedef struct +{ + input_base base; + ISAR_SPLIT_POST_REND_WRAPPER splitPostRendWrapper; + Word32 *bufferData_fx; + int16_t numCachedSamples; /* Number of decoded samples in bufferData that have not yet been played out */ + ISAR_POST_REND_BitstreamBuffer *hBits; +} input_split_post_rend; + +struct ISAR_POST_REND +{ + int32_t sampleRateOut; + + IVAS_LIMITER_HANDLE hLimiter; +#ifdef DEBUGGING + int32_t numClipping; /* Counter of clipped output samples */ +#endif + + input_split_post_rend inputsSplitPost[RENDERER_MAX_BIN_INPUTS]; + + AUDIO_CONFIG inputConfig; + AUDIO_CONFIG outputConfig; + + ISAR_POST_REND_HeadRotData headRotData; + int16_t splitRendBFI; + + int8_t rendererConfigEnabled; + ISAR_SPLIT_REND_CONFIG_DATA splitRenderConfig; + + int16_t num_subframes; +}; + +/*-------------------------------------------------------------------* + * getAudioConfigType() + * + * + *-------------------------------------------------------------------*/ +ISAR_POST_REND_AudioConfigType isar_getAudioConfigType( + const AUDIO_CONFIG config ) +{ + ISAR_POST_REND_AudioConfigType type; + + SWITCH( config ) + { + case IVAS_AUDIO_CONFIG_BINAURAL: + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + type = ISAR_POST_REND_AUDIO_CONFIG_TYPE_BINAURAL; + BREAK; + default: + type = ISAR_POST_REND_AUDIO_CONFIG_TYPE_UNKNOWN; + BREAK; + } + + return type; +} + +/*-------------------------------------------------------------------* + * Local function prototypes + *-------------------------------------------------------------------*/ + +/*-------------------------------------------------------------------* + * Local functions + *-------------------------------------------------------------------*/ + +static ivas_error allocateInputBaseBufferData_fx( + Word32 **data, + const Word16 data_size ) +{ + *data = (Word32 *) malloc( data_size * sizeof( Word32 ) ); + IF( *data == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for input base buffer data" ); + } + + return IVAS_ERR_OK; +} +static void freeInputBaseBufferData_fx( + Word32 **data ) +{ + IF( *data != NULL ) + { + free( *data ); + *data = NULL; + } + + return; +} + +static IVAS_QUATERNION quaternionInit( + void ) +{ + IVAS_QUATERNION q; + q.w_fx = ONE_IN_Q22; + q.x_fx = q.y_fx = q.z_fx = 0; + return q; +} + +static void convertBitsBufferToInternalBitsBuff( + const ISAR_POST_REND_BitstreamBuffer outBits, + ISAR_SPLIT_REND_BITS_HANDLE hBits ) +{ + hBits->bits_buf = outBits.bits; + hBits->bits_read = outBits.config.bitsRead; + hBits->bits_written = outBits.config.bitsWritten; + hBits->buf_len = outBits.config.bufLenInBytes; + hBits->codec = outBits.config.codec; + hBits->pose_correction = outBits.config.poseCorrection; + hBits->codec_frame_size_ms = outBits.config.codec_frame_size_ms; + hBits->isar_frame_size_ms = outBits.config.isar_frame_size_ms; + hBits->lc3plus_highres = outBits.config.lc3plusHighRes; + + return; +} + +static void convertInternalBitsBuffToBitsBuffer( + ISAR_POST_REND_BitstreamBuffer *hOutBits, + const ISAR_SPLIT_REND_BITS_DATA bits ) +{ + hOutBits->bits = bits.bits_buf; + hOutBits->config.bitsRead = bits.bits_read; + hOutBits->config.bitsWritten = bits.bits_written; + hOutBits->config.bufLenInBytes = bits.buf_len; + hOutBits->config.codec = bits.codec; + hOutBits->config.poseCorrection = bits.pose_correction; + hOutBits->config.codec_frame_size_ms = bits.codec_frame_size_ms; + hOutBits->config.isar_frame_size_ms = bits.isar_frame_size_ms; + hOutBits->config.lc3plusHighRes = bits.lc3plus_highres; + + return; +} + +static void copyBufferTo2dArray_fx( + const IVAS_REND_AudioBuffer buffer, + Word32 array[][L_FRAME48k] ) +{ + UWord32 smplIdx; + UWord32 chnlIdx; + const Word32 *readPtr; + + assert( ( buffer.config.is_cldfb == 0 ) && "for CLDFB input call copyBufferToCLDFBarray()" ); + readPtr = buffer.data_fx; + + FOR( chnlIdx = 0; chnlIdx < (UWord32) buffer.config.numChannels; ++chnlIdx ) + { + FOR( smplIdx = 0; smplIdx < (UWord32) buffer.config.numSamplesPerChannel; ++smplIdx ) + { + array[chnlIdx][smplIdx] = *readPtr++; + } + } + + return; +} + +static void accumulate2dArrayToBuffer_fx( + Word32 array[][L_FRAME48k], + Word16 Q_out[][BINAURAL_CHANNELS], + Word16 Q_max, + const IVAS_REND_AudioBuffer *buffer, + Word16 num_subframes, + Word16 subframe_length ) +{ + Word16 smplIdx, chnlIdx; + Word32 *writePtr; + + writePtr = buffer->data_fx; + FOR( chnlIdx = 0; chnlIdx < buffer->config.numChannels; ++chnlIdx ) + { + FOR( Word16 sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + FOR( smplIdx = 0; smplIdx < subframe_length; ++smplIdx ) + { + //*writePtr++ += (float) array[chnlIdx][( sf_idx * subframe_length ) + smplIdx] / powf( 2, Q_out[sf_idx][chnlIdx] ); + *writePtr++ += L_shl( array[chnlIdx][( sf_idx * subframe_length ) + smplIdx], sub( Q_max, Q_out[sf_idx][chnlIdx] ) ); + } + } + } + + return; +} + +/*-------------------------------------------------------------------* + * limitRendererOutput() + * + * In-place saturation control for multichannel buffers with adaptive release time + *-------------------------------------------------------------------*/ + +#ifndef DISABLE_LIMITER +/*! r: number of clipped output samples */ +static Word32 limitRendererOutput_fx( + IVAS_LIMITER_HANDLE hLimiter, /* i/o: limiter struct handle */ + Word32 *output, /* i/o: I/O buffer */ + const Word16 output_frame, /* i : number of samples per channel in the buffer */ + const Word32 threshold, /* i : signal amplitude above which limiting starts to be applied */ + Word16 q_factor ) /* i : q factor of output samples */ +{ + Word16 i; + Word32 **channels; + Word16 num_channels; + Word32 numClipping = 0; + + /* return early if given bad parameters */ + IF( hLimiter == NULL || output == NULL || output_frame <= 0 ) + { + return 0; + } + + channels = hLimiter->channel_ptrs_fx; + num_channels = hLimiter->num_channels; + + FOR( i = 0; i < num_channels; ++i ) + { + channels[i] = output + i * output_frame; + } + + limiter_process_fx( hLimiter, output_frame, threshold, 0, NULL, q_factor ); + + /* Apply clipping to buffer in case the limiter let through some samples > 1.0f */ + FOR( i = 0; i < output_frame * num_channels; ++i ) + { + + output[i] = min( max( L_shl( INT16_MIN, q_factor ), output[i] ), L_shl( INT16_MAX, q_factor ) ); + } + + return numClipping; +} + +#endif + + +/*-------------------------------------------------------------------* + * validateOutputSampleRate() + * + * + *-------------------------------------------------------------------*/ +static ivas_error validateOutputSampleRate( + const Word32 sampleRate, + const AUDIO_CONFIG outConfig ) +{ + IF( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) && NE_32( sampleRate, 48000 ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "Error: Only 48kHz output sampling rate is supported for split rendering." ); + } + ELSE + { + /* Otherwise rendering to binaural, support the same set as IVAS decoder */ + SWITCH( sampleRate ) + { + case 8000: + case 16000: + case 32000: + case 48000: + return IVAS_ERR_OK; + } + + return IVAS_ERR_INVALID_SAMPLING_RATE; + } +} + +/*-------------------------------------------------------------------* + * Local functions + *-------------------------------------------------------------------*/ +static ivas_error initLimiter( + IVAS_LIMITER_HANDLE *phLimiter, + const Word16 numChannels, + const Word32 sampleRate ) +{ + ivas_error error; + + /* If re-initializing with unchanged values, return early */ + IF( *phLimiter != NULL && ( *phLimiter )->num_channels == numChannels && ( *phLimiter )->sampling_rate == sampleRate ) + { + return IVAS_ERR_OK; + } + + /* Support re-init: close if already allocated */ + IF( *phLimiter != NULL ) + { + ivas_limiter_close_fx( phLimiter ); + } + + IF( ( error = ivas_limiter_open_fx( phLimiter, numChannels, sampleRate ) ) != IVAS_ERR_OK ) + { + return error; + } + + return IVAS_ERR_OK; +} + +static ivas_error initHeadRotation( + ISAR_POST_REND_HANDLE hIvasRend ) +{ + Word16 i, crossfade_len; + Word32 tmp; + + /* Head rotation is enabled by default */ + hIvasRend->headRotData.headRotEnabled = 1; + + /* Initialize 5ms crossfade */ + crossfade_len = 240 /*L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES*/; + tmp = 8985287 /*1.f / ( crossfade_len - 1 )*/; + FOR( i = 0; i < crossfade_len; i++ ) + { + hIvasRend->headRotData.crossfade_fx[i] = W_extract_l( W_mult0_32_32( i, tmp ) ); + } + + /* Initialize with unit quaternions */ + FOR( i = 0; i < hIvasRend->num_subframes; ++i ) + { + hIvasRend->headRotData.headPositions[i] = quaternionInit(); + } + + hIvasRend->headRotData.sr_pose_pred_axis = DEFAULT_AXIS; + + return IVAS_ERR_OK; +} +static void initRendInputBase_fx( + input_base *inputBase, + const AUDIO_CONFIG inConfig, + const IVAS_REND_InputId id, + const rendering_context rendCtx, + Word32 *dataBuf, + const Word16 dataBufSize ) +{ + inputBase->inConfig = inConfig; + inputBase->id = id; + inputBase->gain_fx = MAX_32; + inputBase->ctx = rendCtx; + inputBase->numNewSamplesPerChannel = 0; + + inputBase->inputBuffer.config.numSamplesPerChannel = 0; + inputBase->inputBuffer.config.numChannels = 0; + inputBase->inputBuffer.data_fx = dataBuf; + IF( inputBase->inputBuffer.data_fx != NULL ) + { + set_l( inputBase->inputBuffer.data_fx, 0, dataBufSize ); + } + + return; +} + +static rendering_context getRendCtx( + ISAR_POST_REND_HANDLE hIvasRend ) +{ + rendering_context ctx; + + /* Note: when refactoring this, always take the ADDRESS of a member of the + * renderer struct, so that the context stores a POINTER to the member, even + * if the member is a pointer or handle itself. */ + ctx.pOutConfig = &hIvasRend->outputConfig; + ctx.pOutSampleRate = &hIvasRend->sampleRateOut; + ctx.pHeadRotData = &hIvasRend->headRotData; + ctx.pSplitRendBFI = &hIvasRend->splitRendBFI; + ctx.pSplitRenderConfig = &hIvasRend->splitRenderConfig; + + return ctx; +} + + +static ivas_error getRendInputNumChannels( + const void *rendInput, + Word16 *numInChannels ) +{ + /* Using a void pointer for this function to be reusable for any input type (input_ism, input_mc, input_sba). + Assumptions: - input_base is always the first member in the input struct */ + (void) rendInput; + + *numInChannels = 2; + + return IVAS_ERR_OK; +} + +static ivas_error updateSplitPostRendPanGains( + input_split_post_rend *inputSplitPostRend, + const AUDIO_CONFIG outConfig, + ISAR_SPLIT_REND_CONFIG_DATA *hRendCfg ) +{ + ivas_error error; + rendering_context rendCtx; + LC3PLUS_CONFIG config; + Word16 iNumBlocksPerFrame, iNumLCLDIterationsPerFrame; + + (void) outConfig; + + rendCtx = inputSplitPostRend->base.ctx; + isar_renderSplitGetMultiBinPoseData_fx( hRendCfg, &inputSplitPostRend->splitPostRendWrapper.multiBinPoseData, rendCtx.pHeadRotData->sr_pose_pred_axis ); + + config.high_res_mode_enabled = ( hRendCfg->lc3plus_highres != 0 ); + config.lc3plus_frame_duration_us = hRendCfg->codec_frame_size_ms * 1000; + config.isar_frame_duration_us = hRendCfg->isar_frame_size_ms * 1000; + + IF( GT_16( hRendCfg->codec_frame_size_ms, 0 ) ) + { + iNumLCLDIterationsPerFrame = (Word16) config.isar_frame_duration_us / ( 1000 * hRendCfg->codec_frame_size_ms ); + iNumLCLDIterationsPerFrame = max( 1, iNumLCLDIterationsPerFrame ); + iNumBlocksPerFrame = CLDFB_NO_COL_MAX * hRendCfg->codec_frame_size_ms / 20; + } + ELSE + { + iNumLCLDIterationsPerFrame = 1; + iNumBlocksPerFrame = CLDFB_NO_COL_MAX; + } + + config.channels = BINAURAL_CHANNELS; + config.samplerate = *inputSplitPostRend->base.ctx.pOutSampleRate; + + IF( hRendCfg->codec == ISAR_SPLIT_REND_CODEC_LCLD ) + { + IF( ( error = isar_splitBinLCLDDecOpen( &inputSplitPostRend->splitPostRendWrapper.hSplitBinLCLDDec, *inputSplitPostRend->base.ctx.pOutSampleRate, BINAURAL_CHANNELS, iNumBlocksPerFrame, iNumLCLDIterationsPerFrame ) ) != IVAS_ERR_OK ) + { + return error; + } + } + ELSE IF( hRendCfg->codec == ISAR_SPLIT_REND_CODEC_LC3PLUS ) + { + IF( ( error = ISAR_LC3PLUS_DEC_Open( config, + &inputSplitPostRend->splitPostRendWrapper.hLc3plusDec ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + IF( ( error = isar_splitBinPostRendOpen( &inputSplitPostRend->splitPostRendWrapper.hBinHrSplitPostRend, &inputSplitPostRend->splitPostRendWrapper.multiBinPoseData, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) + { + return error; + } + + return IVAS_ERR_OK; +} + +static ivas_error setRendInputActiveSplitPostRend( + void *input, + const AUDIO_CONFIG inConfig, + const IVAS_REND_InputId id, + ISAR_SPLIT_REND_CONFIG_DATA *hRendCfg ) +{ + ivas_error error; + rendering_context rendCtx; + AUDIO_CONFIG outConfig; + input_split_post_rend *inputSplitPostRend; + + inputSplitPostRend = (input_split_post_rend *) input; + rendCtx = inputSplitPostRend->base.ctx; + outConfig = *rendCtx.pOutConfig; + + IF( ( error = allocateInputBaseBufferData_fx( &inputSplitPostRend->bufferData_fx, MAX_CLDFB_BIN_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) + { + return error; + } + + initRendInputBase_fx( &inputSplitPostRend->base, inConfig, id, rendCtx, inputSplitPostRend->bufferData_fx, MAX_CLDFB_BIN_BUFFER_LENGTH ); + + inputSplitPostRend->numCachedSamples = 0; + + if ( ( error = updateSplitPostRendPanGains( inputSplitPostRend, outConfig, hRendCfg ) ) != IVAS_ERR_OK ) + { + return error; + } + + return IVAS_ERR_OK; +} + +static void clearInputSplitRend( + input_split_post_rend *inputSplitRend ) +{ + rendering_context rendCtx; + + rendCtx = inputSplitRend->base.ctx; + + freeInputBaseBufferData_fx( &inputSplitRend->bufferData_fx ); + + initRendInputBase_fx( &inputSplitRend->base, IVAS_AUDIO_CONFIG_INVALID, 0, rendCtx, NULL, 0 ); + + IF( inputSplitRend->splitPostRendWrapper.hBinHrSplitPostRend != NULL ) + { + isar_splitBinPostRendClose( &inputSplitRend->splitPostRendWrapper.hBinHrSplitPostRend ); + } + + IF( inputSplitRend->splitPostRendWrapper.hSplitBinLCLDDec != NULL ) + { + isar_splitBinLCLDDecClose( &inputSplitRend->splitPostRendWrapper.hSplitBinLCLDDec ); + } + + IF( inputSplitRend->splitPostRendWrapper.hLc3plusDec != NULL ) + { + ISAR_LC3PLUS_DEC_Close( &inputSplitRend->splitPostRendWrapper.hLc3plusDec ); + } + + return; +} + + +/*------------------------------------------------------------------------- + * ISAR_POST_REND_open() + * + * + *------------------------------------------------------------------------*/ +ivas_error ISAR_POST_REND_open( + ISAR_POST_REND_HANDLE *phIvasRend, /* i/o: Pointer to renderer handle */ + const Word32 outputSampleRate, /* i : output sampling rate */ + const AUDIO_CONFIG outConfig, /* i : output audio config */ + const bool asHrtfBinary, /* i : load hrtf binary file */ + const Word16 nonDiegeticPan, /* i : non-diegetic object flag */ + const Word32 nonDiegeticPanGain, /* i : non-diegetic panning gain */ + const Word16 num_subframes ) /* i : number of subframes */ +{ + Word16 i; + ISAR_POST_REND_HANDLE hIvasRend; + ivas_error error; + Word16 numOutChannels; + + (void) asHrtfBinary; + (void) nonDiegeticPan; + (void) nonDiegeticPanGain; + + /* Validate function arguments */ + IF( phIvasRend == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + IF( ( error = validateOutputSampleRate( outputSampleRate, outConfig ) ) != IVAS_ERR_OK ) + { + return error; + } + + *phIvasRend = (ISAR_POST_REND_HANDLE) malloc( sizeof( struct ISAR_POST_REND ) ); + IF( *phIvasRend == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + + hIvasRend = *phIvasRend; + hIvasRend->sampleRateOut = outputSampleRate; + hIvasRend->outputConfig = outConfig; + hIvasRend->hLimiter = NULL; + hIvasRend->num_subframes = 1; +#ifdef DEBUGGING + hIvasRend->numClipping = 0; +#endif + hIvasRend->num_subframes = num_subframes; + + /* Initialize limiter */ + IF( ( error = ISAR_POST_REND_NumOutChannels( hIvasRend, &numOutChannels ) ) != IVAS_ERR_OK ) + { + return error; + } + + IF( ( error = initLimiter( &hIvasRend->hLimiter, numOutChannels, outputSampleRate ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Initialize headrotation data */ + IF( ( error = initHeadRotation( hIvasRend ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Initialize inputs */ + + FOR( i = 0; i < RENDERER_MAX_BIN_INPUTS; ++i ) + { + initRendInputBase_fx( &hIvasRend->inputsSplitPost[i].base, IVAS_AUDIO_CONFIG_INVALID, 0, getRendCtx( hIvasRend ), NULL, 0 ); + + isar_init_split_post_rend_handles( &hIvasRend->inputsSplitPost[i].splitPostRendWrapper ); + + hIvasRend->splitRendBFI = 0; + hIvasRend->inputsSplitPost[i].bufferData_fx = NULL; + } + + return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------* + * ISAR_POST_REND_NumOutChannels() + * + * + *-------------------------------------------------------------------*/ +ivas_error ISAR_POST_REND_NumOutChannels( + ISAR_POST_REND_CONST_HANDLE hIvasRend, /* i : Renderer handle */ + Word16 *numOutChannels /* o : number of output channels */ +) +{ + /* Validate function arguments */ + IF( hIvasRend == NULL || numOutChannels == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + *numOutChannels = 2; + + return IVAS_ERR_OK; +} + +static IVAS_REND_InputId makeInputId( + AUDIO_CONFIG config, + const Word32 inputIndex ) +{ + /* Put config type in second byte (from LSB), put index + 1 in first byte + * + * Index is incremented here so that a valid ID can never be 0. */ + return (IVAS_REND_InputId) ( ( ( (UWord32) isar_getAudioConfigType( config ) ) << 8 ) | ( inputIndex + 1 ) ); +} + +static ivas_error getInputById( + ISAR_POST_REND_HANDLE hIvasRend, + const IVAS_REND_InputId inputId, + void **ppInput ) +{ + Word32 inputIndex; + IVAS_REND_AudioConfigType configType; + input_base *pInputBase; + + /* Reverse makeInputId() */ + inputIndex = ( inputId & 0xFF ) - 1; + configType = ( inputId & 0xFF00 ) >> 8; + + /* Validate values derived from input ID */ + IF( inputIndex < 0 ) + { + return IVAS_ERR_INVALID_INPUT_ID; + } + SWITCH( configType ) + { + case ISAR_POST_REND_AUDIO_CONFIG_TYPE_BINAURAL: + if ( inputIndex > RENDERER_MAX_BIN_INPUTS ) + { + return IVAS_ERR_INVALID_INPUT_ID; + } + pInputBase = &hIvasRend->inputsSplitPost[inputIndex].base; + BREAK; + default: + return IVAS_ERR_INVALID_INPUT_ID; + } + + /* Ensure input ID matches and that input is active */ + IF( pInputBase->id != inputId || pInputBase->inConfig == IVAS_AUDIO_CONFIG_INVALID ) + { + return IVAS_ERR_INVALID_INPUT_ID; + } + + /* Validation done, set value via output parameter */ + *ppInput = pInputBase; + + return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------* + * ISAR_POST_REND_SetInputGain() + * + * + *-------------------------------------------------------------------*/ +ivas_error ISAR_POST_REND_SetInputGain( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const ISAR_POST_REND_InputId inputId, /* i : ID of the input */ + const Word32 gain /* i : linear gain (not in dB) */ +) +{ + input_base *inputBase; + ivas_error error; + + /* Validate function arguments */ + IF( hIvasRend == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + IF( ( error = getInputById( hIvasRend, inputId, (void **) &inputBase ) ) != IVAS_ERR_OK ) + { + printf( "Hoo\n" ); + return error; + } + + inputBase->gain_fx = gain; + + return IVAS_ERR_OK; +} + +static ivas_error getConstInputById( + ISAR_POST_REND_CONST_HANDLE hIvasRend, + const ISAR_POST_REND_InputId inputId, + const void **ppInput ) +{ + Word32 inputIndex; + IVAS_REND_AudioConfigType configType; + const input_base *pInputBase; + + /* Reverse makeInputId() */ + inputIndex = ( inputId & 0xFF ) - 1; + configType = ( inputId & 0xFF00 ) >> 8; + + /* Validate values derived from input ID */ + IF( inputIndex < 0 ) + { + return IVAS_ERR_INVALID_INPUT_ID; + } + SWITCH( configType ) + { + case ISAR_POST_REND_AUDIO_CONFIG_TYPE_BINAURAL: + IF( inputIndex > RENDERER_MAX_BIN_INPUTS ) + { + return IVAS_ERR_INVALID_INPUT_ID; + } + pInputBase = &hIvasRend->inputsSplitPost[inputIndex].base; + BREAK; + default: + return IVAS_ERR_INVALID_INPUT_ID; + } + + /* Ensure input ID matches and that input is active */ + IF( pInputBase->id != inputId || pInputBase->inConfig == IVAS_AUDIO_CONFIG_INVALID ) + { + return IVAS_ERR_INVALID_INPUT_ID; + } + + /* Validation done, set value via output parameter */ + *ppInput = pInputBase; + + return IVAS_ERR_OK; +} + +static ivas_error findFreeInputSlot( + const void *inputs, + const Word32 inputStructSize, + const Word32 maxInputs, + Word32 *inputIndex ) +{ + /* Using a void pointer and a separately provided size is a hack for this function + to be reusable for arrays of any input type (input_ism, input_mc, input_sba, input_masa). + Assumptions: + - input_base is always the first member in the input struct + - provided size is correct + */ + + Word32 i; + bool canAddInput; + const UWord8 *pByte; + const input_base *pInputBase; + + canAddInput = false; + pByte = inputs; + /* Find first unused input in array */ + FOR( i = 0; i < maxInputs; ++i ) + { + pInputBase = (const input_base *) pByte; + + IF( pInputBase->inConfig == IVAS_AUDIO_CONFIG_INVALID ) + { + *inputIndex = i; + canAddInput = true; + BREAK; + } + pByte += inputStructSize; + } + + IF( !canAddInput ) + { + return IVAS_ERR_TOO_MANY_INPUTS; + } + + return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------* + * ISAR_POST_REND_AddInput() + * + * + *-------------------------------------------------------------------*/ + +ivas_error ISAR_POST_REND_AddInput( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const IVAS_AUDIO_CONFIG inConfig, /* i : audio config for a new input */ + ISAR_POST_REND_InputId *inputId /* o : ID of the new input */ +) +{ + ivas_error error; + Word32 maxNumInputsOfType; + void *inputsArray; + Word32 inputStructSize; + ivas_error ( *activateInput )( void *, AUDIO_CONFIG, IVAS_REND_InputId, ISAR_SPLIT_REND_CONFIG_DATA * ); + Word32 inputIndex; + + /* Validate function arguments */ + IF( hIvasRend == NULL || inputId == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + SWITCH( isar_getAudioConfigType( inConfig ) ) + { + case ISAR_POST_REND_AUDIO_CONFIG_TYPE_BINAURAL: + maxNumInputsOfType = RENDERER_MAX_BIN_INPUTS; + inputsArray = hIvasRend->inputsSplitPost; + inputStructSize = sizeof( *hIvasRend->inputsSplitPost ); + activateInput = setRendInputActiveSplitPostRend; + BREAK; + default: + return IVAS_ERR_INVALID_INPUT_FORMAT; + } + + /* Find first free input in array corresponding to input type */ + IF( ( error = findFreeInputSlot( inputsArray, inputStructSize, maxNumInputsOfType, &inputIndex ) ) != IVAS_ERR_OK ) + { + return error; + } + + *inputId = makeInputId( inConfig, inputIndex ); + if ( ( error = activateInput( (uint8_t *) inputsArray + inputStructSize * inputIndex, inConfig, *inputId, &hIvasRend->splitRenderConfig ) ) != IVAS_ERR_OK ) + { + return error; + } + + return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------* + * ISAR_POST_REND_GetInputNumChannels() + * + * + *-------------------------------------------------------------------*/ + +ivas_error ISAR_POST_REND_GetInputNumChannels( + ISAR_POST_REND_CONST_HANDLE hIvasRend, /* i : Renderer handle */ + const ISAR_POST_REND_InputId inputId, /* i : ID of the input */ + Word16 *numChannels /* o : number of channels of the input */ +) +{ + ivas_error error; + const input_base *pInput; + + /* Validate function arguments */ + IF( hIvasRend == NULL || numChannels == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + IF( ( error = getConstInputById( hIvasRend, inputId, (const void **) &pInput ) ) != IVAS_ERR_OK ) + { + return error; + } + + IF( ( error = getRendInputNumChannels( pInput, numChannels ) ) != IVAS_ERR_OK ) + { + return error; + } + + return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------* + * ISAR_POST_REND_GetDelay() + * + * + *-------------------------------------------------------------------*/ + +ivas_error ISAR_POST_REND_GetDelay( + ISAR_POST_REND_CONST_HANDLE hIvasRend, /* i : Renderer state */ + Word16 *nSamples, /* o : Renderer delay in samples */ + Word32 *timeScale /* o : Time scale of the delay, equal to renderer output sampling rate */ +) +{ + Word16 i; + Word32 latency_ns; + Word32 max_latency_ns; + + /* Validate function arguments */ + IF( hIvasRend == NULL || nSamples == NULL || timeScale == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + *timeScale = hIvasRend->sampleRateOut; + *nSamples = 0; + max_latency_ns = 0; + + /* Compute the maximum delay across all inputs */ + FOR( i = 0; i < RENDERER_MAX_BIN_INPUTS; i++ ){ + IF( hIvasRend->inputsSplitPost[i].base.inConfig != IVAS_AUDIO_CONFIG_INVALID ){ + latency_ns = 0; + IF( hIvasRend->inputsSplitPost[i].splitPostRendWrapper.hLc3plusDec != NULL ) + { + int32_t lc3plusDelaySamples; + ISAR_LC3PLUS_DEC_GetDelay( hIvasRend->inputsSplitPost[i].splitPostRendWrapper.hLc3plusDec, &lc3plusDelaySamples ); + latency_ns = (Word32) ( ( ( (Word64) lc3plusDelaySamples * 1000000000 ) + ( *timeScale / 2 ) ) / *timeScale ); + } + IF( hIvasRend->inputsSplitPost[i].splitPostRendWrapper.multiBinPoseData.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + latency_ns += IVAS_FB_DEC_DELAY_NS; + } + ELSE IF( hIvasRend->inputsSplitPost[i].splitPostRendWrapper.hSplitBinLCLDDec != NULL ) + { + latency_ns += IVAS_FB_DEC_DELAY_NS; + } + max_latency_ns = max( max_latency_ns, latency_ns ); +} +} + +*nSamples = (Word16) ( ( ( (Word64) max_latency_ns * *timeScale ) + 500000000 ) / 1000000000 ); + +return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------* + * ISAR_POST_REND_FeedInputAudio() + * + * + *-------------------------------------------------------------------*/ +ivas_error ISAR_POST_REND_FeedInputAudio( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const ISAR_POST_REND_InputId inputId, /* i : ID of the input */ + const ISAR_POST_REND_ReadOnlyAudioBuffer inputAudio /* i : buffer with input audio */ +) +{ + ivas_error error; + input_base *inputBase; + Word16 numInputChannels; + Word16 cldfb2tdSampleFact; + + /* Validate function arguments */ + IF( hIvasRend == NULL || inputAudio.data_fx == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + cldfb2tdSampleFact = ( inputAudio.config.is_cldfb ) ? 2 : 1; + + IF( LE_16( inputAudio.config.numSamplesPerChannel, 0 ) || ( LT_16( MAX_BUFFER_LENGTH_PER_CHANNEL, inputAudio.config.numSamplesPerChannel ) && EQ_16( inputAudio.config.is_cldfb, 0 ) ) || + ( LT_16( DEPR_i_mult( MAX_BUFFER_LENGTH_PER_CHANNEL, cldfb2tdSampleFact ), inputAudio.config.numSamplesPerChannel ) && EQ_16( inputAudio.config.is_cldfb, 1 ) ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Buffer size outside of supported range" ); + } + + IF( LE_16( inputAudio.config.numChannels, 0 ) || LT_16( MAX_INPUT_CHANNELS, inputAudio.config.numChannels ) ) + { + return IVAS_ERR_WRONG_NUM_CHANNELS; + } + + IF( isar_getAudioConfigType( hIvasRend->outputConfig ) == ISAR_POST_REND_AUDIO_CONFIG_TYPE_BINAURAL && + hIvasRend->outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && + hIvasRend->outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM && + ( inputAudio.config.numSamplesPerChannel * 1000 / cldfb2tdSampleFact ) != ( BINAURAL_RENDERING_FRAME_SIZE_MS * hIvasRend->num_subframes ) * hIvasRend->sampleRateOut ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Binaural rendering requires specific frame size" ); + } + + IF( ( error = getInputById( hIvasRend, inputId, (void **) &inputBase ) ) != IVAS_ERR_OK ) + { + printf( "Foo\n" ); + return error; + } + + IF( ( error = getRendInputNumChannels( inputBase, &numInputChannels ) ) != IVAS_ERR_OK ) + { + return error; + } + + IF( numInputChannels != inputAudio.config.numChannels ) + { + return IVAS_ERR_WRONG_NUM_CHANNELS; + } + + inputBase->inputBuffer.config = inputAudio.config; + + mvl2l( inputAudio.data_fx, inputBase->inputBuffer.data_fx, inputAudio.config.numSamplesPerChannel * inputAudio.config.numChannels ); + + inputBase->numNewSamplesPerChannel = inputAudio.config.numSamplesPerChannel / cldfb2tdSampleFact; + + return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------* + * ISAR_POST_REND_InitConfig() + * + * + *-------------------------------------------------------------------*/ +ivas_error ISAR_POST_REND_InitConfig( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const AUDIO_CONFIG outAudioConfig /* i : output audioConfig */ +) +{ + bool rendererConfigEnabled; + + rendererConfigEnabled = ( isar_getAudioConfigType( outAudioConfig ) == ISAR_POST_REND_AUDIO_CONFIG_TYPE_BINAURAL ); + + IF( rendererConfigEnabled ) + { + hIvasRend->rendererConfigEnabled = 1; + } + ELSE + { + hIvasRend->rendererConfigEnabled = 0; + } + + IF( rendererConfigEnabled ) + { + hIvasRend->splitRenderConfig.splitRendBitRate = SPLIT_REND_768k; + hIvasRend->splitRenderConfig.dof = 3; + 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" */ + hIvasRend->splitRenderConfig.isar_frame_size_ms = 0; /* 0 means "use default for selected codec" */ + 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; + } + + return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------* + * ISAR_POST_REND_GetRenderConfig() + * + * + *-------------------------------------------------------------------*/ +Word16 ISAR_POST_REND_GetRenderConfig( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + const ISAR_SPLIT_REND_CONFIG_HANDLE splitRenderConfig /* o : Render configuration handle */ +) +{ + ISAR_SPLIT_REND_CONFIG_DATA hRCin; + + IF( hIvasRend == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + hRCin = hIvasRend->splitRenderConfig; + + splitRenderConfig->splitRendBitRate = SPLIT_REND_768k; + splitRenderConfig->dof = 3; + splitRenderConfig->hq_mode = 0; + splitRenderConfig->codec_delay_ms = 0; + splitRenderConfig->codec_frame_size_ms = 0; /* 0 means "use default for selected codec" */ + splitRenderConfig->isar_frame_size_ms = 0; /* 0 means "use default for selected codec" */ + splitRenderConfig->codec = ISAR_SPLIT_REND_CODEC_DEFAULT; + splitRenderConfig->poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; + splitRenderConfig->rendererSelection = hRCin.rendererSelection; + + return IVAS_ERR_OK; +} +/*-------------------------------------------------------------------* + * ISAR_POST_REND_FeedSplitBinauralBitstream() + * + * + *-------------------------------------------------------------------*/ +ivas_error ISAR_POST_REND_FeedSplitBinauralBitstream( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const IVAS_REND_InputId inputId, /* i : ID of the input */ + ISAR_POST_REND_BitstreamBuffer *hBits /* i : buffer for input bitstream */ +) +{ + ivas_error error; + input_base *inputBase; + input_split_post_rend *inputSplitPostRend; + + /* Validate function arguments */ + IF( hIvasRend == NULL || hBits == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + IF( ( error = getInputById( hIvasRend, inputId, (void **) &inputBase ) ) != IVAS_ERR_OK ) + { + printf( "Goo\n" ); + return error; + } + + inputSplitPostRend = (input_split_post_rend *) inputBase; + inputSplitPostRend->hBits = hBits; + + return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------* + * ISAR_POST_REND_SetHeadRotation() + * + * + *-------------------------------------------------------------------*/ + +ivas_error ISAR_POST_REND_SetHeadRotation( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const IVAS_QUATERNION headRot, /* i : head orientations for next rendering call */ + const IVAS_VECTOR3 Pos, /* i : listener positions for next rendering call */ + const ISAR_SPLIT_REND_ROT_AXIS rot_axis, /* i : external control for rotation axis for split rendering */ + const Word16 sf_idx /* i : subframe index */ +) +{ + IVAS_QUATERNION rotQuat; + + /* Validate function arguments */ + IF( hIvasRend == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + IF( isar_getAudioConfigType( hIvasRend->outputConfig ) != ISAR_POST_REND_AUDIO_CONFIG_TYPE_BINAURAL ) + { + /* Head rotation can be set only with binaural output */ + return IVAS_ERR_INVALID_OUTPUT_FORMAT; + } + + hIvasRend->headRotData.headRotEnabled = 1; + + /* check for Euler angle signaling */ + IF( EQ_32( headRot.w_fx, -12582912 ) && EQ_32( headRot.q_fact, Q22 ) ) + { + Euler2Quat_fx( deg2rad_fx( headRot.x_fx ), deg2rad_fx( headRot.y_fx ), deg2rad_fx( headRot.z_fx ), &rotQuat ); + modify_Quat_q_fx( &rotQuat, &rotQuat, Q29 ); + } + ELSE + { + rotQuat = headRot; + } + + hIvasRend->headRotData.headPositions[sf_idx] = rotQuat; + hIvasRend->headRotData.Pos[sf_idx] = Pos; + hIvasRend->headRotData.sr_pose_pred_axis = rot_axis; + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * ISAR_POST_REND_SetSplitRendBFI() + * + * + *-------------------------------------------------------------------*/ + +ivas_error ISAR_POST_REND_SetSplitRendBFI( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const Word16 bfi /* i: BFI flag */ +) +{ + hIvasRend->splitRendBFI = bfi; + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * Local functions + *-------------------------------------------------------------------*/ + +static ivas_error splitBinLc3plusDecode( + ISAR_SPLIT_POST_REND_WRAPPER *hSplitBin, + ISAR_SPLIT_REND_BITS_HANDLE bits, + Word32 outputBuffer[BINAURAL_CHANNELS][L_FRAME48k], + const int16_t SplitRendBFI ) +{ + ivas_error error; + Word32 *channel_ptrs[MAX_HEAD_ROT_POSES * 2]; + Word32 lc3plusBitstreamSize; + + push_wmops( "splitBinLc3plusDecode" ); + assert( hSplitBin->hLc3plusDec != NULL ); + + for ( Word16 i = 0; i < BINAURAL_CHANNELS * hSplitBin->multiBinPoseData.num_poses; ++i ) + { + channel_ptrs[i] = outputBuffer[i]; + } + + if ( SplitRendBFI == 0 ) + { + /* Find next byte boundary */ + while ( bits->bits_read % 8 != 0 ) + { + ++bits->bits_read; + } + /* Size is in bytes */ + assert( ( bits->bits_written - bits->bits_read ) % 8 == 0 ); + lc3plusBitstreamSize = ( bits->bits_written - bits->bits_read ) / 8; + + if ( ( error = ISAR_LC3PLUS_DEC_Decode( hSplitBin->hLc3plusDec, &bits->bits_buf[bits->bits_read / 8], lc3plusBitstreamSize, channel_ptrs ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + if ( ( error = ISAR_LC3PLUS_DEC_Conceal( hSplitBin->hLc3plusDec, channel_ptrs ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + pop_wmops(); + return IVAS_ERR_OK; +} + +static ivas_error renderSplitBinauralWithPostRot( + input_split_post_rend *splitBinInput, + IVAS_REND_AudioBuffer outAudio, + const Word16 SplitRendBFI, + const Word16 num_subframes ) +{ + Word32 Cldfb_RealBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_ImagBuffer_Binaural_fx[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + ivas_error error; + Word32 Cldfb_RealBuffer_Binaural_5ms_fx[MAX_PARAM_SPATIAL_SUBFRAMES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX] = { 0 }; + Word32 Cldfb_ImagBuffer_Binaural_5ms_fx[MAX_PARAM_SPATIAL_SUBFRAMES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX] = { 0 }; + + IVAS_QUATERNION QuaternionsPost[MAX_PARAM_SPATIAL_SUBFRAMES]; + int16_t sf_idx, ch_idx; + ISAR_SPLIT_REND_BITS_DATA bits; + Word32 tmpCrendBuffer_fx[BINAURAL_CHANNELS][L_FRAME48k] = { 0 }; + Word32 tmpCrendBuffer_sf_fx[BINAURAL_CHANNELS][L_FRAME48k] = { 0 }; + + ISAR_SPLIT_POST_REND_WRAPPER *hSplitBin; + Word8 isPostRendInputCldfb; + Word16 chnlIdx, slotIdx, smplIdx; + Word16 preRendFrameSize_ms; + Word16 outBufNumSamplesPerChannel, outBufNumColPerChannel; + Word16 numSamplesPerChannelCacheSize, numColPerChannelCacheSize; + + Word32 *readPtr_fx, *writePtr_fx; + Word16 Q_cldfb_final[MAX_PARAM_SPATIAL_SUBFRAMES] = { 0 }; + Word16 Q_out[MAX_PARAM_SPATIAL_SUBFRAMES][BINAURAL_CHANNELS] = { 0 }; + + Word16 iNumBlocksPerFrame, iNumLCLDIterationsPerFrame; + const ISAR_POST_REND_HeadRotData *pHeadRotData; + + isPostRendInputCldfb = 0; + push_wmops( "renderSplitBinauralWithPostRot" ); + error = IVAS_ERR_OK; + + if ( outAudio.config.numSamplesPerChannel / *splitBinInput->base.ctx.pOutSampleRate > splitBinInput->hBits->config.isar_frame_size_ms ) + { + return IVAS_ERR_INTERNAL_FATAL; + } + + pHeadRotData = splitBinInput->base.ctx.pHeadRotData; + hSplitBin = &splitBinInput->splitPostRendWrapper; + convertBitsBufferToInternalBitsBuff( *splitBinInput->hBits, &bits ); + + + iNumLCLDIterationsPerFrame = 1; + iNumBlocksPerFrame = CLDFB_NO_COL_MAX; + IF( splitBinInput->splitPostRendWrapper.hSplitBinLCLDDec != NULL ) + { + iNumBlocksPerFrame = splitBinInput->splitPostRendWrapper.hSplitBinLCLDDec->iNumBlocks; + iNumLCLDIterationsPerFrame = splitBinInput->splitPostRendWrapper.hSplitBinLCLDDec->iNumIterations; + } + + outBufNumSamplesPerChannel = outAudio.config.numSamplesPerChannel / num_subframes; + FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + QuaternionsPost[sf_idx] = pHeadRotData->headPositions[sf_idx]; + } + + IF( !SplitRendBFI ) + { + hSplitBin->first_good_frame_received = 1; + } + + IF( EQ_16( hSplitBin->first_good_frame_received, 1 ) ) + { + IF( bits.pose_correction == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + IF( !SplitRendBFI ) + { +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + isar_splitBinPostRendMdDec_fx( &bits, hSplitBin->hBinHrSplitPostRend, &hSplitBin->multiBinPoseData, hSplitBin->hBinHrSplitPreRend ); +#else + isar_splitBinPostRendMdDec_fx( &bits, hSplitBin->hBinHrSplitPostRend, &hSplitBin->multiBinPoseData ); +#endif + } + } + + /*copy pose correction after MD is parsed*/ + hSplitBin->multiBinPoseData.poseCorrectionMode = bits.pose_correction; + + /* decode audio */ + IF( splitBinInput->base.inConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) + { + IF( bits.codec == ISAR_SPLIT_REND_CODEC_LCLD ) + { + isPostRendInputCldfb = 1; + } + numSamplesPerChannelCacheSize = (int16_t) ( *splitBinInput->base.ctx.pOutSampleRate * bits.isar_frame_size_ms / 1000 ) - outBufNumSamplesPerChannel; + + outBufNumColPerChannel = MAX_PARAM_SPATIAL_SUBFRAMES; + numColPerChannelCacheSize = sub( DEPR_i_mult( iNumBlocksPerFrame, iNumLCLDIterationsPerFrame ), outBufNumColPerChannel ); + + FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + IF( splitBinInput->numCachedSamples == 0 ) + { + IF( bits.codec == ISAR_SPLIT_REND_CODEC_LCLD ) + { + isar_splitBinLCLDDecProcess( hSplitBin->hSplitBinLCLDDec, &bits, Cldfb_RealBuffer_Binaural_fx, Cldfb_ImagBuffer_Binaural_fx, &Q_cldfb_final[sf_idx], SplitRendBFI ); // Q_cldfb_final + + hSplitBin->Q_last = Q_cldfb_final[sf_idx]; + /* copy data over to 5ms buffer */ + FOR( chnlIdx = 0; chnlIdx < BINAURAL_CHANNELS; ++chnlIdx ) + { + FOR( slotIdx = 0; slotIdx < 4 /*CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES*/; ++slotIdx ) + { + mvl2l( Cldfb_RealBuffer_Binaural_fx[chnlIdx][slotIdx], Cldfb_RealBuffer_Binaural_5ms_fx[sf_idx][chnlIdx][slotIdx], CLDFB_NO_CHANNELS_MAX ); + mvl2l( Cldfb_ImagBuffer_Binaural_fx[chnlIdx][slotIdx], Cldfb_ImagBuffer_Binaural_5ms_fx[sf_idx][chnlIdx][slotIdx], CLDFB_NO_CHANNELS_MAX ); + } + } + + /* cache the remaining 15ms */ + splitBinInput->numCachedSamples = numColPerChannelCacheSize; + writePtr_fx = splitBinInput->bufferData_fx; + FOR( slotIdx = 4 /*CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES*/; slotIdx < DEPR_i_mult( iNumBlocksPerFrame, iNumLCLDIterationsPerFrame ); ++slotIdx ) + { + FOR( chnlIdx = 0; chnlIdx < BINAURAL_CHANNELS; ++chnlIdx ) + { + FOR( smplIdx = 0; smplIdx < CLDFB_NO_CHANNELS_MAX; ++smplIdx ) + { + *writePtr_fx++ = Cldfb_RealBuffer_Binaural_fx[chnlIdx][slotIdx][smplIdx]; + } + FOR( smplIdx = 0; smplIdx < CLDFB_NO_CHANNELS_MAX; ++smplIdx ) + { + *writePtr_fx++ = Cldfb_ImagBuffer_Binaural_fx[chnlIdx][slotIdx][smplIdx]; + } + } + } + } + ELSE + { + Q_out[sf_idx][0] = 0; + Q_out[sf_idx][1] = 0; + if ( ( error = splitBinLc3plusDecode( hSplitBin, &bits, tmpCrendBuffer_fx, + SplitRendBFI ) ) != IVAS_ERR_OK ) // Q0 + { + return error; + } + hSplitBin->Q_last = Q_out[sf_idx][0]; + + /* cache the remaining 15ms */ + splitBinInput->numCachedSamples = numSamplesPerChannelCacheSize; + mvl2l( &tmpCrendBuffer_fx[0][outBufNumSamplesPerChannel], splitBinInput->bufferData_fx, numSamplesPerChannelCacheSize ); + mvl2l( &tmpCrendBuffer_fx[1][outBufNumSamplesPerChannel], splitBinInput->bufferData_fx + numSamplesPerChannelCacheSize, numSamplesPerChannelCacheSize ); + } + } + ELSE + { + /* copy from cache */ + IF( bits.codec == ISAR_SPLIT_REND_CODEC_LCLD ) + { + Word16 readOffset = sub( numColPerChannelCacheSize, splitBinInput->numCachedSamples ); + readPtr_fx = splitBinInput->bufferData_fx; + Q_cldfb_final[sf_idx] = hSplitBin->Q_last; + isPostRendInputCldfb = 1; + + readPtr_fx += 2 * readOffset * CLDFB_NO_CHANNELS_MAX * BINAURAL_CHANNELS; + FOR( slotIdx = 0; slotIdx < 4 /*CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES*/; ++slotIdx ) + { + FOR( chnlIdx = 0; chnlIdx < BINAURAL_CHANNELS; ++chnlIdx ) + { + FOR( smplIdx = 0; smplIdx < CLDFB_NO_CHANNELS_MAX; ++smplIdx ) + { + Cldfb_RealBuffer_Binaural_5ms_fx[sf_idx][chnlIdx][slotIdx][smplIdx] = *readPtr_fx++; + } + FOR( smplIdx = 0; smplIdx < CLDFB_NO_CHANNELS_MAX; ++smplIdx ) + { + Cldfb_ImagBuffer_Binaural_5ms_fx[sf_idx][chnlIdx][slotIdx][smplIdx] = *readPtr_fx++; + } + } + } + + splitBinInput->numCachedSamples -= outBufNumColPerChannel; + } + ELSE + { + Word16 readOffset = numSamplesPerChannelCacheSize - splitBinInput->numCachedSamples; + mvl2l( splitBinInput->bufferData_fx + readOffset, &tmpCrendBuffer_fx[0][sf_idx * outBufNumSamplesPerChannel], outBufNumSamplesPerChannel ); + mvl2l( splitBinInput->bufferData_fx + readOffset + numSamplesPerChannelCacheSize, &tmpCrendBuffer_fx[1][sf_idx * outBufNumSamplesPerChannel], outBufNumSamplesPerChannel ); + Q_out[sf_idx][0] = hSplitBin->Q_last; + Q_out[sf_idx][1] = hSplitBin->Q_last; + splitBinInput->numCachedSamples -= outBufNumSamplesPerChannel; + } + } + } + } + ELSE + { + copyBufferTo2dArray_fx( splitBinInput->base.inputBuffer, tmpCrendBuffer_fx ); + IF( splitBinInput->numCachedSamples == 0 ) + { + preRendFrameSize_ms = splitBinInput->base.ctx.pSplitRenderConfig->isar_frame_size_ms; + numSamplesPerChannelCacheSize = (Word16) ( *splitBinInput->base.ctx.pOutSampleRate * preRendFrameSize_ms / 1000 ); + numSamplesPerChannelCacheSize -= outAudio.config.numSamplesPerChannel; + splitBinInput->numCachedSamples = numSamplesPerChannelCacheSize; + } + ELSE + { + splitBinInput->numCachedSamples -= outAudio.config.numSamplesPerChannel; + } + } + + /* apply pose correction if enabled */ + FOR( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + IF( bits.pose_correction == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE && isPostRendInputCldfb ) + { + /* 0DOF with LCLD codec requires CLDFB synthesis */ + Word16 slot_idx; + + FOR( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) + { + Word32 *RealBuffer_fx[CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES]; + Word32 *ImagBuffer_fx[CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES]; + Word16 scaleFactor = 31, Q_cldfb; + + FOR( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + RealBuffer_fx[slot_idx] = Cldfb_RealBuffer_Binaural_5ms_fx[sf_idx][ch_idx][slot_idx]; + ImagBuffer_fx[slot_idx] = Cldfb_ImagBuffer_Binaural_5ms_fx[sf_idx][ch_idx][slot_idx]; + + scaleFactor = s_min( scaleFactor, s_min( getScaleFactor32( RealBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX ), getScaleFactor32( ImagBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX ) ) ); + } +#ifdef OPT_IVAS_FILTER_ROM + scaleFactor = sub( scaleFactor, 6 ); // guarded bits +#else + scaleFactor = sub( scaleFactor, 3 ); // guarded bits +#endif + + FOR( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + Scale_sig32( RealBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX, scaleFactor ); + Scale_sig32( ImagBuffer_fx[slot_idx], CLDFB_NO_CHANNELS_MAX, scaleFactor ); + } + Q_cldfb = scaleFactor + Q_cldfb_final[sf_idx]; + Scale_sig32( hSplitBin->hBinHrSplitPostRend->cldfbSyn[ch_idx]->cldfb_state_fx, hSplitBin->hBinHrSplitPostRend->cldfbSyn[ch_idx]->p_filter_length, sub( sub( Q_cldfb, 1 ), Q11 ) ); + cldfbSynthesis_ivas_fx( RealBuffer_fx, + ImagBuffer_fx, + &( tmpCrendBuffer_fx[ch_idx][sf_idx * outBufNumSamplesPerChannel] ), + hSplitBin->hBinHrSplitPostRend->cldfbSyn[0]->no_channels * CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, + 0, + 0, + hSplitBin->hBinHrSplitPostRend->cldfbSyn[ch_idx] ); // Q_cldfb - 1 + Scale_sig32( hSplitBin->hBinHrSplitPostRend->cldfbSyn[ch_idx]->cldfb_state_fx, hSplitBin->hBinHrSplitPostRend->cldfbSyn[ch_idx]->p_filter_length, sub( Q11, sub( Q_cldfb, 1 ) ) ); + Q_out[sf_idx][ch_idx] = sub( Q_cldfb, 1 ); + } + } + ELSE IF( bits.pose_correction == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + mvl2l( &tmpCrendBuffer_fx[0][sf_idx * outBufNumSamplesPerChannel], tmpCrendBuffer_sf_fx[0], outBufNumSamplesPerChannel ); + mvl2l( &tmpCrendBuffer_fx[1][sf_idx * outBufNumSamplesPerChannel], tmpCrendBuffer_sf_fx[1], outBufNumSamplesPerChannel ); + + isar_rend_CldfbSplitPostRendProcess( hSplitBin->hBinHrSplitPostRend, &hSplitBin->multiBinPoseData, QuaternionsPost[sf_idx], Cldfb_RealBuffer_Binaural_5ms_fx[sf_idx], Cldfb_ImagBuffer_Binaural_5ms_fx[sf_idx], Q_cldfb_final[sf_idx], tmpCrendBuffer_sf_fx, Q_out[sf_idx], isPostRendInputCldfb ); // Q_out[2] + + mvl2l( tmpCrendBuffer_sf_fx[0], &tmpCrendBuffer_fx[0][sf_idx * outBufNumSamplesPerChannel], outBufNumSamplesPerChannel ); + mvl2l( tmpCrendBuffer_sf_fx[1], &tmpCrendBuffer_fx[1][sf_idx * outBufNumSamplesPerChannel], outBufNumSamplesPerChannel ); + } + } + } + ELSE + { + IF( splitBinInput->base.inConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) + { + FOR( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) + { + set_l( tmpCrendBuffer_fx[ch_idx], 0, outAudio.config.numSamplesPerChannel ); + } + } + ELSE + { + copyBufferTo2dArray_fx( splitBinInput->base.inputBuffer, tmpCrendBuffer_fx ); + } + } + + convertInternalBitsBuffToBitsBuffer( splitBinInput->hBits, bits ); + + Word16 Q_max = 0, Q_temp; + FOR( Word16 i = 0; i < num_subframes; i++ ) + { + maximum_s( Q_out[i], BINAURAL_CHANNELS, &Q_temp ); + Q_max = s_max( Q_max, Q_temp ); + } + Q_max = s_min( Q_max, Q13 ); + accumulate2dArrayToBuffer_fx( tmpCrendBuffer_fx, Q_out, Q_max, &outAudio, num_subframes, outBufNumSamplesPerChannel ); + *outAudio.pq_fact = Q_max; + + pop_wmops(); + return error; +} + +static ivas_error renderInputSplitBin( + input_split_post_rend *splitBinInput, + const AUDIO_CONFIG outConfig, + IVAS_REND_AudioBuffer outAudio, + const Word16 SplitRendBFI, + const Word16 num_subframes ) +{ + ivas_error error; + IVAS_REND_AudioBuffer inAudio; + + inAudio = splitBinInput->base.inputBuffer; + + splitBinInput->base.numNewSamplesPerChannel = 0; + + /* Apply input gain to new audio */ + v_multc_fixed( inAudio.data_fx, + splitBinInput->base.gain_fx, + inAudio.data_fx, + inAudio.config.numSamplesPerChannel * inAudio.config.numChannels ); + + SWITCH( outConfig ) + { + case IVAS_AUDIO_CONFIG_BINAURAL: + error = renderSplitBinauralWithPostRot( splitBinInput, outAudio, SplitRendBFI, num_subframes ); + BREAK; + default: + return IVAS_ERR_INVALID_OUTPUT_FORMAT; + } + + return error; +} + +static ivas_error renderActiveInputsSplitBin( + ISAR_POST_REND_HANDLE hIvasRend, + IVAS_REND_AudioBuffer outAudio ) +{ + int16_t i; + input_split_post_rend *pCurrentInput; + ivas_error error; + pCurrentInput = hIvasRend->inputsSplitPost; + FOR( i = 0; i < RENDERER_MAX_BIN_INPUTS; ++i ) + { + IF( pCurrentInput->base.inConfig == IVAS_AUDIO_CONFIG_INVALID ) + { + /* Skip inactive inputs */ + ++pCurrentInput; + continue; + } + + IF( ( error = renderInputSplitBin( pCurrentInput, hIvasRend->outputConfig, outAudio, hIvasRend->splitRendBFI, hIvasRend->num_subframes ) ) != IVAS_ERR_OK ) + { + return error; + } + ++pCurrentInput; + } + + return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------* + * ISAR_POST_REND_getSamples() + * + * + *-------------------------------------------------------------------*/ + +ivas_error ISAR_POST_REND_getSamples( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + IVAS_REND_AudioBuffer outAudio /* i/o: buffer for output audio */ +) +{ + ivas_error error; + Word16 numOutChannels; + Word16 cldfb2tdSampleFact; + + /* Validate function arguments */ + IF( hIvasRend == NULL || outAudio.data_fx == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + cldfb2tdSampleFact = ( outAudio.config.is_cldfb ) ? 2 : 1; + + IF( outAudio.config.numSamplesPerChannel <= 0 || ( MAX_BUFFER_LENGTH_PER_CHANNEL < outAudio.config.numSamplesPerChannel && outAudio.config.is_cldfb == 0 ) || + ( ( MAX_BUFFER_LENGTH_PER_CHANNEL * cldfb2tdSampleFact ) < outAudio.config.numSamplesPerChannel && outAudio.config.is_cldfb == 1 ) ) + { + return IVAS_ERR_INVALID_BUFFER_SIZE; + } + + IF( LT_16( outAudio.config.numChannels, 0 ) || LT_16( MAX_OUTPUT_CHANNELS, outAudio.config.numChannels ) ) + { + return IVAS_ERR_WRONG_NUM_CHANNELS; + } + + IF( isar_getAudioConfigType( hIvasRend->outputConfig ) == ISAR_POST_REND_AUDIO_CONFIG_TYPE_BINAURAL && + ( outAudio.config.numSamplesPerChannel * 1000 / cldfb2tdSampleFact ) != ( hIvasRend->num_subframes * BINAURAL_RENDERING_FRAME_SIZE_MS ) * hIvasRend->sampleRateOut ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Binaural rendering requires specific frame size" ); + } + + IF( ( error = ISAR_POST_REND_NumOutChannels( hIvasRend, &numOutChannels ) ) != IVAS_ERR_OK ) + { + return error; + } + + IF( numOutChannels != outAudio.config.numChannels && hIvasRend->outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED && hIvasRend->outputConfig != IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + return IVAS_ERR_WRONG_NUM_CHANNELS; + } + + /* Clear original output buffer */ + set_l( outAudio.data_fx, 0, outAudio.config.numChannels * outAudio.config.numSamplesPerChannel ); + + IF( ( error = renderActiveInputsSplitBin( hIvasRend, outAudio ) ) != IVAS_ERR_OK ) + { + return error; + } + +#ifndef DISABLE_LIMITER + Word32 limiter_thresold; +#ifdef DEBUGGING + hIvasRend->numClipping += +#endif + limiter_thresold = L_shl( IVAS_LIMITER_THRESHOLD, *outAudio.pq_fact ); + limitRendererOutput_fx( hIvasRend->hLimiter, outAudio.data_fx, outAudio.config.numSamplesPerChannel, limiter_thresold, *outAudio.pq_fact ); +#endif + + return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------* + * ISAR_POST_REND_GetSplitBinauralSamples() + * + * + *-------------------------------------------------------------------*/ + +ivas_error ISAR_POST_REND_GetSplitBinauralSamples( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + IVAS_REND_AudioBuffer outAudio, /* i/o: buffer for output audio */ + bool *needNewFrame ) +{ + ivas_error error; + + IF( ( error = ISAR_POST_REND_getSamples( hIvasRend, outAudio ) ) != IVAS_ERR_OK ) + { + return error; + } + *needNewFrame = hIvasRend->inputsSplitPost[0].numCachedSamples == 0; + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * ISAR_POST_REND_Close() + * + * + *-------------------------------------------------------------------*/ +void ISAR_POST_REND_Close( + ISAR_POST_REND_HANDLE *phIvasRend /* i/o: Pointer to renderer handle */ +) +{ + UWord16 i; + ISAR_POST_REND_HANDLE hIvasRend; + + /* Validate function arguments */ + IF( phIvasRend == NULL || *phIvasRend == NULL ) + { + return; + } + hIvasRend = *phIvasRend; + + FOR( i = 0; i < RENDERER_MAX_BIN_INPUTS; ++i ) + { + clearInputSplitRend( &hIvasRend->inputsSplitPost[i] ); + } + + ivas_limiter_close_fx( &hIvasRend->hLimiter ); + + free( hIvasRend ); + *phIvasRend = NULL; + + return; +} + + +ivas_error ISAR_REND_SetSplitRendBitstreamHeader( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: IVAS renderer handle */ + 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 */ + , + 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 */ +) +{ + IF( hIvasRend == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + hIvasRend->splitRenderConfig.codec = codec; + hIvasRend->splitRenderConfig.isar_frame_size_ms = isar_frame_size_ms; + hIvasRend->splitRenderConfig.codec_frame_size_ms = codec_frame_size_ms; + hIvasRend->splitRenderConfig.poseCorrectionMode = poseCorrection; + hIvasRend->splitRenderConfig.lc3plus_highres = lc3plus_highres; + return IVAS_ERR_OK; +} + +#ifdef DEBUGGING +/*-------------------------------------------------------------------* + * ISAR_POST_REND_GetNoCLipping() + * + * + *-------------------------------------------------------------------*/ + +int32_t ISAR_POST_REND_GetNoCLipping( + ISAR_POST_REND_HANDLE hIvasRend ) +{ + return hIvasRend->numClipping; +} + +int32_t ISAR_POST_REND_GetCntFramesLimited( + ISAR_POST_REND_CONST_HANDLE hIvasRend ) +{ + if ( hIvasRend->hLimiter == NULL ) + { + return 0; + } + + return hIvasRend->hLimiter->cnt_frames_limited; +} +#endif diff --git a/lib_isar/lib_isar_post_rend.h b/lib_isar/lib_isar_post_rend.h new file mode 100644 index 0000000000000000000000000000000000000000..70b46f57cc08d3f674b9b3c199e2bfa7733856de --- /dev/null +++ b/lib_isar/lib_isar_post_rend.h @@ -0,0 +1,215 @@ +/****************************************************************************************************** + + (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 LIB_ISAR_POST_REND_H +#define LIB_ISAR_POST_REND_H + +#include "common_api_types.h" +#include + + +/*---------------------------------------------------------------------* + * Renderer constants + *---------------------------------------------------------------------*/ + +#define RENDERER_MAX_ISAR_MD_INPUTS 1 +#define RENDERER_MAX_BIN_INPUTS 1 + +/*---------------------------------------------------------------------* + * Renderer structures + *---------------------------------------------------------------------*/ + +typedef struct +{ + int32_t bufLenInBytes; + int32_t bitsWritten; + int32_t bitsRead; + ISAR_SPLIT_REND_CODEC codec; + ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection; + int16_t codec_frame_size_ms; + int16_t isar_frame_size_ms; + int16_t lc3plusHighRes; +} ISAR_POST_REND_BitstreamBufferConfig; + +typedef struct +{ + ISAR_POST_REND_BitstreamBufferConfig config; + uint8_t *bits; +} ISAR_POST_REND_BitstreamBuffer; + +typedef enum +{ + ISAR_POST_REND_AUDIO_CONFIG_TYPE_BINAURAL = 0, + ISAR_POST_REND_AUDIO_CONFIG_TYPE_UNKNOWN, +} ISAR_POST_REND_AudioConfigType; + +typedef struct +{ + IVAS_REND_AudioBufferConfig config; + const Word32 *data_fx; +} ISAR_POST_REND_ReadOnlyAudioBuffer; + +typedef struct ISAR_POST_REND *ISAR_POST_REND_HANDLE; +typedef struct ISAR_POST_REND const *ISAR_POST_REND_CONST_HANDLE; + +typedef uint16_t ISAR_POST_REND_InputId; + +typedef enum _ISAR_POST_REND_COMPLEXITY_LEVEL +{ + ISAR_POST_REND_COMPLEXITY_LEVEL_ONE = 1, + ISAR_POST_REND_COMPLEXITY_LEVEL_TWO = 2, + ISAR_POST_REND_COMPLEXITY_LEVEL_THREE = 3 +} ISAR_POST_REND_COMPLEXITY_LEVEL; + + +/* clang-format off */ +/*----------------------------------------------------------------------------------* + * Renderer function prototypes + *----------------------------------------------------------------------------------*/ + +/* Functions to be called before rendering */ +ivas_error ISAR_POST_REND_open( + ISAR_POST_REND_HANDLE *phIvasRend, /* i/o: Pointer to renderer handle */ + const Word32 outputSampleRate, /* i : output sampling rate */ + const IVAS_AUDIO_CONFIG outConfig, /* i : output audio config */ + const bool asHrtfBinary, /* i : load hrtf binary file */ + const Word16 nonDiegeticPan, /* i : non-diegetic object flag */ + const Word32 nonDiegeticPanGain, /* i : non-diegetic panning gain */ + const Word16 num_subframes /* i : number of subframes */ +); + +/* Functions to be called before/during rendering */ +ivas_error ISAR_POST_REND_NumOutChannels( + ISAR_POST_REND_CONST_HANDLE hIvasRend, /* i : Renderer handle */ + Word16 *numOutChannels /* o : number of output channels */ +); + +ivas_error ISAR_POST_REND_AddInput( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const IVAS_AUDIO_CONFIG inConfig, /* i : audio config for a new input */ + ISAR_POST_REND_InputId *inputId /* o : ID of the new input */ +); + +ivas_error ISAR_POST_REND_SetInputGain( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const ISAR_POST_REND_InputId inputId, /* i : ID of the input */ + const Word32 gain /* i : linear gain (not in dB) */ +); + +ivas_error ISAR_POST_REND_GetInputNumChannels( + ISAR_POST_REND_CONST_HANDLE hIvasRend, /* i : Renderer handle */ + const ISAR_POST_REND_InputId inputId, /* i : ID of the input */ + Word16 *numChannels /* o : number of channels of the input */ +); +ivas_error ISAR_POST_REND_GetDelay( + ISAR_POST_REND_CONST_HANDLE hIvasRend, /* i : Renderer state */ + Word16 *nSamples, /* o : Renderer delay in samples */ + Word32 *timeScale /* o : Time scale of the delay, equal to renderer output sampling rate */ +); + +/* Functions to be called during rendering */ + +ivas_error ISAR_POST_REND_FeedInputAudio( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const ISAR_POST_REND_InputId inputId, /* i : ID of the input */ + const ISAR_POST_REND_ReadOnlyAudioBuffer inputAudio /* i : buffer with input audio */ +); + +ivas_error ISAR_POST_REND_InitConfig( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const IVAS_AUDIO_CONFIG outAudioConfig /* i : output audioConfig */ +); +Word16 ISAR_POST_REND_GetRenderConfig( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + const ISAR_SPLIT_REND_CONFIG_HANDLE splitRenderConfig /* o : Render configuration handle */ +); +ivas_error ISAR_POST_REND_FeedSplitBinauralBitstream( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const ISAR_POST_REND_InputId inputId, /* i : ID of the input */ + ISAR_POST_REND_BitstreamBuffer *hBits /* i : buffer for input bitstream */ +); + +ivas_error ISAR_POST_REND_GetSplitBinauralSamples( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + IVAS_REND_AudioBuffer outAudio, /* i/o: buffer for output audio */ + bool* needNewFrame +); + +ivas_error ISAR_POST_REND_SetHeadRotation( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const IVAS_QUATERNION headRot, /* i : head orientations for next rendering call */ + const IVAS_VECTOR3 Pos, /* i : listener positions for next rendering call */ + const ISAR_SPLIT_REND_ROT_AXIS rot_axis, /* i : external control for rotation axis for split rendering */ + const Word16 sf_idx /* i : subframe index */ +); + +ivas_error ISAR_POST_REND_SetSplitRendBFI( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const Word16 bfi /* i: BFI flag */ +); + +ivas_error ISAR_POST_REND_getSamples( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + IVAS_REND_AudioBuffer outAudio /* i/o: buffer for output audio */ +); + +/* Functions to be called after rendering */ + +void ISAR_POST_REND_Close( + ISAR_POST_REND_HANDLE* phIvasRend /* i/o: Pointer to renderer handle */ +); + +ivas_error ISAR_REND_SetSplitRendBitstreamHeader( + ISAR_POST_REND_HANDLE hIvasRend, /* i/o: IVAS renderer handle */ + 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 */ + , + 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 */ +); + + +#ifdef DEBUGGING +int32_t ISAR_POST_REND_GetNoCLipping( + ISAR_POST_REND_HANDLE hIvasRend /* i : Renderer handle */ +); + +int32_t ISAR_POST_REND_GetCntFramesLimited( + ISAR_POST_REND_CONST_HANDLE hIvasRend /* i : Renderer handle */ +); +#endif + + +/* clang-format on */ + +#endif /* LIB_ISAR_POST_REND_H */ diff --git a/lib_isar/lib_isar_pre_rend.c b/lib_isar/lib_isar_pre_rend.c new file mode 100644 index 0000000000000000000000000000000000000000..cecea02aedc3eab2de191f9defadf57e96e467a0 --- /dev/null +++ b/lib_isar/lib_isar_pre_rend.c @@ -0,0 +1,590 @@ +/****************************************************************************************************** + + (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 +#include "ivas_prot_fx.h" +#include "prot_fx.h" +#include "prot_fx.h" +#include "isar_cnst.h" +#include "isar_rom_post_rend.h" +#include "lib_isar_pre_rend.h" +#include "isar_prot.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" + + +/*-------------------------------------------------------------------* + * Local constants + *-------------------------------------------------------------------*/ + +/*-------------------------------------------------------------------* + * Local types + *-------------------------------------------------------------------*/ + +/*-------------------------------------------------------------------* + * Local function prototypes + *-------------------------------------------------------------------*/ + +/*-------------------------------------------------------------------* + * Local functions + *-------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------- + * Function ISAR_PRE_REND_open() + * + * + *------------------------------------------------------------------------*/ + +ivas_error ISAR_PRE_REND_open( + SPLIT_REND_WRAPPER *hSplitRendWrapper, + ISAR_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, + const Word32 OutSampleRate, + const Word16 cldfb_in_flag, + const Word16 pcm_out_flag, + const IVAS_RENDER_FRAMESIZE ivas_frame_size, /* i: IVAS frame size */ + const int16_t mixed_td_cldfb_flag ) +{ + ivas_error error, ch, num_ch; + UWord8 isCldfbNeeded = 0; + Word16 cldfb_in_flag_local = cldfb_in_flag; + + if ( ( error = isar_split_rend_choose_default_codec( &( pSplitRendConfig->codec ), + &pSplitRendConfig->isar_frame_size_ms, + &pSplitRendConfig->codec_frame_size_ms, + cldfb_in_flag_local, + pcm_out_flag, (int16_t) ivas_frame_size ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( mixed_td_cldfb_flag ) + { + cldfb_in_flag_local = 0; + } + + IF( ( error = isar_split_rend_validate_config( pSplitRendConfig, pcm_out_flag ) ) != IVAS_ERR_OK ) + { + return error; + } + + IF( EQ_16( cldfb_in_flag_local, 0 ) ) + { + isCldfbNeeded = 1; + } + ELSE IF( EQ_16( pSplitRendConfig->codec, ISAR_SPLIT_REND_CODEC_LC3PLUS ) && cldfb_in_flag_local ) + { + isCldfbNeeded = 1; + } + ELSE IF( pcm_out_flag && cldfb_in_flag_local ) + { + isCldfbNeeded = 1; + } + + hSplitRendWrapper->hCldfbHandles = NULL; + + IF( isCldfbNeeded ) + { + 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 = MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS; + FOR( ch = 0; ch < num_ch; ch++ ) + { + hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] = NULL; + } + + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] = NULL; + } + + num_ch = hSplitRendWrapper->multiBinPoseData.num_poses * BINAURAL_CHANNELS; + + FOR( ch = 0; ch < num_ch; ch++ ) + { + if ( ( error = openCldfb_ivas_fx( &( hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] ), + CLDFB_ANALYSIS, + OutSampleRate, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + IF( ( error = openCldfb_ivas_fx( &( hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] ), CLDFB_SYNTHESIS, OutSampleRate, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + + IF( EQ_16( pSplitRendConfig->poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) ) + { + if ( ( error = isar_splitBinPreRendOpen( &hSplitRendWrapper->hBinHrSplitPreRend, &hSplitRendWrapper->multiBinPoseData +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + , + OutSampleRate +#endif + ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + IF( EQ_16( pcm_out_flag, 0 ) ) + { + IF( EQ_16( pSplitRendConfig->codec, ISAR_SPLIT_REND_CODEC_LC3PLUS ) ) + { + if ( ( error = split_renderer_open_lc3plus( hSplitRendWrapper, pSplitRendConfig, OutSampleRate, + ivas_frame_size ) ) != IVAS_ERR_OK ) + { + return error; + } + } + ELSE + { + Word16 iNumBlocksPerFrame; + iNumBlocksPerFrame = ( CLDFB_NO_COL_MAX * pSplitRendConfig->codec_frame_size_ms ) / 20; + + IF( ( error = isar_splitBinLCLDEncOpen( &hSplitRendWrapper->hSplitBinLCLDEnc, OutSampleRate, BINAURAL_CHANNELS, isar_get_lcld_bitrate( pSplitRendConfig->splitRendBitRate, hSplitRendWrapper->multiBinPoseData.poseCorrectionMode ), iNumBlocksPerFrame, 1 ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + + return IVAS_ERR_OK; +} + +/*------------------------------------------------------------------------- + * Function ISAR_PRE_REND_close() + * + * + *------------------------------------------------------------------------*/ +void ISAR_PRE_REND_close( + SPLIT_REND_WRAPPER *hSplitBinRend, /* i/o: Split renderer pre-renerer handle */ + IVAS_REND_AudioBuffer *pSplitRendEncBuffer /* i/o: Split renderer data buffer */ +) +{ + Word16 i; + + IF( hSplitBinRend->hBinHrSplitPreRend != NULL ) + { + isar_splitBinPreRendClose( &hSplitBinRend->hBinHrSplitPreRend ); + } + + IF( hSplitBinRend->hSplitBinLCLDEnc != NULL ) + { + isar_splitBinLCLDEncClose( &hSplitBinRend->hSplitBinLCLDEnc ); + } + + IF( hSplitBinRend->hCldfbHandles != NULL ) + { + Word16 num_ch, ch; + num_ch = MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS; + FOR( ch = 0; ch < num_ch; ch++ ) + { + IF( hSplitBinRend->hCldfbHandles->cldfbAna[ch] != NULL ) + { + deleteCldfb_ivas_fx( &hSplitBinRend->hCldfbHandles->cldfbAna[ch] ); + hSplitBinRend->hCldfbHandles->cldfbAna[ch] = NULL; + } + } + + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + IF( hSplitBinRend->hCldfbHandles->cldfbSyn[ch] != NULL ) + { + deleteCldfb_ivas_fx( &hSplitBinRend->hCldfbHandles->cldfbSyn[ch] ); + hSplitBinRend->hCldfbHandles->cldfbSyn[ch] = NULL; + } + } + + free( hSplitBinRend->hCldfbHandles ); + hSplitBinRend->hCldfbHandles = NULL; + } + + IF( hSplitBinRend->hLc3plusEnc != NULL ) + { + ISAR_LC3PLUS_ENC_Close( &hSplitBinRend->hLc3plusEnc ); + } + + FOR( i = 0; i < MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS; ++i ) + { + if ( hSplitBinRend->lc3plusDelayBuffers_fx[i] != NULL ) + { + free( hSplitBinRend->lc3plusDelayBuffers_fx[i] ); + hSplitBinRend->lc3plusDelayBuffers_fx[i] = NULL; + } + } + + IF( pSplitRendEncBuffer != NULL ) + { + + IF( pSplitRendEncBuffer->data_fx != NULL ) + { + free( pSplitRendEncBuffer->data_fx ); + pSplitRendEncBuffer->data_fx = NULL; + } + + pSplitRendEncBuffer->config.numChannels = 0; + pSplitRendEncBuffer->config.numSamplesPerChannel = 0; + } + + return; +} + + +/*-------------------------------------------------------------------------* + * ISAR_PRE_REND_GetMultiBinPoseData() + * + * + *-------------------------------------------------------------------------*/ + +void ISAR_PRE_REND_GetMultiBinPoseData( + const ISAR_SPLIT_REND_CONFIG_DATA *pSplit_rend_config, /* i: Split renderer pre-renerer config */ + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, /* i/o: pose correction data handle */ + const ISAR_SPLIT_REND_ROT_AXIS rot_axis /* i: Rotation axis */ +) +{ + isar_renderSplitGetMultiBinPoseData_fx( pSplit_rend_config, pMultiBinPoseData, rot_axis ); +} + +/*------------------------------------------------------------------------- + * Function ISAR_PRE_REND_MultiBinToSplitBinaural() + * + * + *------------------------------------------------------------------------*/ +ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( + SPLIT_REND_WRAPPER *hSplitBin, + const IVAS_QUATERNION headPosition, + const Word32 SplitRendBitRate, + ISAR_SPLIT_REND_CODEC splitCodec, + const Word16 isar_frame_size_ms, /* i: ISAR framesize */ + Word16 codec_frame_size_ms, + ISAR_SPLIT_REND_BITS_HANDLE pBits, + Word32 Cldfb_In_BinReal_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_In_BinImag_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const Word16 max_bands, + Word32 *pOutput_fx[], + const Word16 low_res_pre_rend_rot, + const Word16 cldfb_in_flag, + const Word16 pcm_out_flag, + const Word16 ro_md_flag, + Word16 Q_buff, + Word16 *Q_out ) +{ + ivas_error error; + int32_t bit_len, target_md_bits, available_bits, tmp_32; + Word16 q1 = 31, q2 = 31, q_final, Q_cldfb, tmp, tmp_e; + Word16 i, j; + error = IVAS_ERR_OK; + Word16 Q_buff_re, Q_buff_im; + push_wmops( "ISAR_PRE_REND_MultiBinToSplitBinaural" ); +#ifdef CLDFB_SYNTH_DEBUG + /* FILE *fp = fopen( "Fixed_code_output.txt", "ab+" ); + FILE *fp1 = fopen( "Fixed_code_cldfb_state.txt", "ab+" ); + FILE *fp = fopen( "Float_code_output.txt", "ab+" ); + FILE *fp1 = fopen( "Float_code_cldfb_state.txt", "ab+" );*/ +#endif + Q_buff_re = Q_buff; + move16(); + Q_buff_im = Q_buff; + move16(); + IF( hSplitBin->multiBinPoseData.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + set_fix_rotation_mat_fx( hSplitBin->hBinHrSplitPreRend->fix_pos_rot_mat_fx, &hSplitBin->multiBinPoseData ); + set_pose_types_fx( hSplitBin->hBinHrSplitPreRend->pose_type, &hSplitBin->multiBinPoseData ); + } + + IF( EQ_16( cldfb_in_flag, 0 ) ) + { + error = isar_renderMultiTDBinToSplitBinaural( hSplitBin, headPosition, SplitRendBitRate, + isar_frame_size_ms, + 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]; + move16(); + pop_wmops(); + return error; + } + + IF( splitCodec == ISAR_SPLIT_REND_CODEC_LC3PLUS && hSplitBin->multiBinPoseData.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + /* Time-align pose correction to delay of LC3plus */ + lc3plusTimeAlignCldfbPoseCorr( hSplitBin, Cldfb_In_BinReal_fx, Cldfb_In_BinImag_fx, &Q_buff ); + Q_buff_re = Q_buff; + move16(); + Q_buff_im = Q_buff; + move16(); + } + + 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; + + /*float2fix, to be removed*/ + Word16 Q_Cldfb_re = 31, Q_Cldfb_im = 31; + move16(); + move16(); + FOR( i = 0; i < hSplitBin->multiBinPoseData.num_poses * BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + Q_Cldfb_re = s_min( getScaleFactor32( Cldfb_In_BinReal_fx[i][j], CLDFB_NO_CHANNELS_MAX ), Q_Cldfb_re ); + Q_Cldfb_im = s_min( getScaleFactor32( Cldfb_In_BinImag_fx[i][j], CLDFB_NO_CHANNELS_MAX ), Q_Cldfb_im ); + } + } + FOR( i = 0; i < hSplitBin->multiBinPoseData.num_poses * BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + Scale_sig32( Cldfb_In_BinReal_fx[i][j], CLDFB_NO_CHANNELS_MAX, Q_Cldfb_re ); + Scale_sig32( Cldfb_In_BinImag_fx[i][j], CLDFB_NO_CHANNELS_MAX, Q_Cldfb_im ); + } + } + Q_buff_re = add( Q_Cldfb_re, Q_buff ); + Q_buff_im = add( Q_Cldfb_im, Q_buff ); + Word16 exp_cldfb_re = sub( 31, Q_buff_re ); + Word16 exp_cldfb_im = sub( 31, Q_buff_im ); + isar_rend_CldfbSplitPreRendProcess( hSplitBin->hBinHrSplitPreRend, headPosition, &hSplitBin->multiBinPoseData, Cldfb_In_BinReal_fx, exp_cldfb_re, Cldfb_In_BinImag_fx, exp_cldfb_im, pBits, target_md_bits, low_res_pre_rend_rot, ro_md_flag ); + } + + IF( EQ_16( pcm_out_flag, 0 ) ) + { + pBits->codec = splitCodec; + pBits->pose_correction = hSplitBin->multiBinPoseData.poseCorrectionMode; + + IF( splitCodec == ISAR_SPLIT_REND_CODEC_LCLD ) + { + // available_bits = ( SplitRendBitRate * hSplitBin->hSplitBinLCLDEnc->iNumBlocks * hSplitBin->hSplitBinLCLDEnc->iNumIterations ) / ( 16 * FRAMES_PER_SEC ); + available_bits = W_extract_l( W_mult0_32_32( SplitRendBitRate, L_mult0( hSplitBin->hSplitBinLCLDEnc->iNumBlocks, hSplitBin->hSplitBinLCLDEnc->iNumIterations ) ) ); + 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 + available_bits = L_sub( available_bits, pBits->bits_written ); + 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++ ) + { + FOR( j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + Scale_sig32( Cldfb_In_BinReal_fx[i][j], CLDFB_NO_CHANNELS_MAX, sub( q_final, Q_buff_re ) ); + Scale_sig32( Cldfb_In_BinImag_fx[i][j], CLDFB_NO_CHANNELS_MAX, sub( q_final, Q_buff_im ) ); + } + } + isar_splitBinLCLDEncProcess( hSplitBin->hSplitBinLCLDEnc, Cldfb_In_BinReal_fx, Cldfb_In_BinImag_fx, available_bits, pBits, &q_final ); + Q_buff_re = q_final; + move16(); + Q_buff_im = q_final; + move16(); + } + ELSE + { + Word16 ch, slot_idx, num_slots, ivas_fs; + tmp_e = 0; + tmp = BASOP_Util_Divide3232_Scale( hSplitBin->hLc3plusEnc->config.isar_frame_duration_us, 1000, &tmp_e ); + ivas_fs = shr( tmp, sub( 15, tmp_e ) ); // Q0 + // ivas_fs = (Word16) hSplitBin->hLc3plusEnc->config.ivas_frame_duration_us / 1000; + + tmp_e = 0; + tmp = BASOP_Util_Divide3232_Scale( L_mult0( CLDFB_NO_COL_MAX, ivas_fs ), 20, &tmp_e ); + num_slots = shr( tmp, sub( 15, tmp_e ) ); // Q0 + // num_slots = (Word16) CLDFB_NO_COL_MAX * ivas_fs / 20; + /* CLDFB synthesis of main pose */ + { + q1 = 31; + q2 = 31; + move16(); + move16(); + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + FOR( j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + q1 = s_min( getScaleFactor32( Cldfb_In_BinReal_fx[ch][j], CLDFB_NO_CHANNELS_MAX ), q1 ); + q2 = s_min( getScaleFactor32( Cldfb_In_BinImag_fx[ch][j], CLDFB_NO_CHANNELS_MAX ), q2 ); + } + } + + q_final = s_min( q1, q2 ); + q_final = s_min( add( Q_buff_re, q_final ), add( Q_buff_im, q_final ) ); +#ifdef OPT_IVAS_FILTER_ROM + q_final = sub( q_final, 6 ); // guard bits +#else + q_final = sub( q_final, 3 ); // guard bits +#endif + q_final = s_min( q_final, Q25 ); + + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + FOR( j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + Scale_sig32( Cldfb_In_BinReal_fx[ch][j], CLDFB_NO_CHANNELS_MAX, sub( q_final, Q_buff_re ) ); + Scale_sig32( Cldfb_In_BinImag_fx[ch][j], CLDFB_NO_CHANNELS_MAX, sub( q_final, Q_buff_im ) ); + } + } + } + + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + Word32 *Cldfb_In_BinReal_p_fx[CLDFB_NO_COL_MAX]; + Word32 *Cldfb_In_BinImag_p_fx[CLDFB_NO_COL_MAX]; + + + FOR( slot_idx = 0; slot_idx < num_slots; slot_idx++ ) + { + Cldfb_In_BinReal_p_fx[slot_idx] = Cldfb_In_BinReal_fx[ch][slot_idx]; + move32(); + Cldfb_In_BinImag_p_fx[slot_idx] = Cldfb_In_BinImag_fx[ch][slot_idx]; + move32(); + } + + Q_cldfb = q_final; + move16(); + Scale_sig32( hSplitBin->hCldfbHandles->cldfbSyn[ch]->cldfb_state_fx, hSplitBin->hCldfbHandles->cldfbSyn[ch]->p_filter_length, sub( sub( Q_cldfb, 1 ), hSplitBin->hCldfbHandles->cldfbSyn[ch]->Q_cldfb_state ) ); + 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 + Q_out[ch] = sub( Q_cldfb, 1 ); + move16(); + hSplitBin->hCldfbHandles->cldfbSyn[ch]->Q_cldfb_state = Q_out[ch]; + move16(); + } + assert( Q_out[0] == Q_out[1] ); + + available_bits = ( SplitRendBitRate / FRAMES_PER_SEC ) - pBits->bits_written; + IF( ( error = splitRendLc3plusEncodeAndWrite( hSplitBin, pBits, available_bits, pOutput_fx, Q_out[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + ELSE + { + Word16 ch, slot_idx; + /* CLDFB synthesis of main pose */ + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + Word32 *Cldfb_In_BinReal_p_fx[CLDFB_NO_COL_MAX]; + Word32 *Cldfb_In_BinImag_p_fx[CLDFB_NO_COL_MAX]; + q1 = 31; + move16(); + q2 = 31; + move16(); + FOR( j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + q1 = s_min( getScaleFactor32( Cldfb_In_BinReal_fx[ch][j], CLDFB_NO_CHANNELS_MAX ), q1 ); + q2 = s_min( getScaleFactor32( Cldfb_In_BinImag_fx[ch][j], CLDFB_NO_CHANNELS_MAX ), q2 ); + } + q_final = s_min( q1, q2 ); + q_final = s_min( add( Q_buff_re, q_final ), add( Q_buff_im, q_final ) ); +#ifdef OPT_IVAS_FILTER_ROM + q_final = sub( q_final, 6 ); // guard bits +#else + q_final = sub( q_final, 3 ); // guard bits +#endif + q_final = s_min( q_final, Q25 ); + FOR( j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + Scale_sig32( Cldfb_In_BinReal_fx[ch][j], CLDFB_NO_CHANNELS_MAX, sub( q_final, Q_buff_re ) ); + Scale_sig32( Cldfb_In_BinImag_fx[ch][j], CLDFB_NO_CHANNELS_MAX, sub( q_final, Q_buff_im ) ); + } + + FOR( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX; slot_idx++ ) + { + Cldfb_In_BinReal_p_fx[slot_idx] = Cldfb_In_BinReal_fx[ch][slot_idx]; + move32(); + Cldfb_In_BinImag_p_fx[slot_idx] = Cldfb_In_BinImag_fx[ch][slot_idx]; + move32(); + } + + Q_cldfb = q_final; + move16(); + Scale_sig32( hSplitBin->hCldfbHandles->cldfbSyn[ch]->cldfb_state_fx, hSplitBin->hCldfbHandles->cldfbSyn[ch]->p_filter_length, sub( sub( Q_cldfb, 1 ), hSplitBin->hCldfbHandles->cldfbSyn[ch]->Q_cldfb_state ) ); + cldfbSynthesis_ivas_fx( Cldfb_In_BinReal_p_fx, Cldfb_In_BinImag_p_fx, pOutput_fx[ch], hSplitBin->hCldfbHandles->cldfbSyn[0]->no_channels * CLDFB_NO_COL_MAX, 0, 0, hSplitBin->hCldfbHandles->cldfbSyn[ch] ); // Q_cldfb - 1 + Q_out[ch] = sub( Q_cldfb, 1 ); + move16(); + hSplitBin->hCldfbHandles->cldfbSyn[ch]->Q_cldfb_state = Q_out[ch]; + move16(); + } + + pBits->pose_correction = hSplitBin->multiBinPoseData.poseCorrectionMode; + pBits->codec = ISAR_SPLIT_REND_CODEC_NONE; + } + + /*zero pad*/ + IF( pcm_out_flag ) + { + tmp_e = 0; + tmp = BASOP_Util_Divide3232_Scale( SplitRendBitRate, FRAMES_PER_SEC, &tmp_e ); + bit_len = L_deposit_l( shr( tmp, sub( 15, tmp_e ) ) ); // Q0 + // bit_len = SplitRendBitRate / FRAMES_PER_SEC; + } + ELSE + { + IF( splitCodec == ISAR_SPLIT_REND_CODEC_LCLD ) + { + // bit_len = ( SplitRendBitRate * hSplitBin->hSplitBinLCLDEnc->iNumBlocks * hSplitBin->hSplitBinLCLDEnc->iNumIterations ) / ( 16 * FRAMES_PER_SEC ); + + bit_len = W_extract_l( W_mult0_32_32( SplitRendBitRate, L_mult0( hSplitBin->hSplitBinLCLDEnc->iNumBlocks, hSplitBin->hSplitBinLCLDEnc->iNumIterations ) ) ); + tmp_e = 0; + tmp_32 = BASOP_Util_Divide3232_Scale_cadence( bit_len, L_mult0( 16, FRAMES_PER_SEC ), &tmp_e ); + bit_len = L_shr( tmp_32, sub( 31, tmp_e ) ); // Q0 + } + ELSE + { + tmp_e = 0; + tmp = BASOP_Util_Divide3232_Scale( hSplitBin->hLc3plusEnc->config.isar_frame_duration_us, 1000, &tmp_e ); + bit_len = L_deposit_l( shr( tmp, sub( 15, tmp_e ) ) ); // Q0 + // bit_len = hSplitBin->hLc3plusEnc->config.ivas_frame_duration_us / 1000; + // bit_len = SplitRendBitRate * bit_len / 1000; + tmp_e = 0; + tmp_32 = BASOP_Util_Divide3232_Scale_cadence( W_extract_l( W_mult0_32_32( SplitRendBitRate, bit_len ) ), 1000, &tmp_e ); + bit_len = L_shr( tmp_32, sub( 31, tmp_e ) ); // Q0 + } + } + + WHILE( LT_32( pBits->bits_written, bit_len ) ) + { + ISAR_SPLIT_REND_BITStream_write_int32( pBits, 0L, 1 ); + } + + pop_wmops(); + /* fclose(fp); + fclose(fp1);*/ + return error; +} diff --git a/lib_isar/lib_isar_pre_rend.h b/lib_isar/lib_isar_pre_rend.h new file mode 100644 index 0000000000000000000000000000000000000000..dd0ad575579a2359d68ca2b974dd203c5e6c20ae --- /dev/null +++ b/lib_isar/lib_isar_pre_rend.h @@ -0,0 +1,79 @@ +/****************************************************************************************************** + + (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 LIB_ISAR_PRE_REND_H +#define LIB_ISAR_PRE_REND_H + +#include "isar_stat.h" +#include "isar_prot.h" + +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 */ + const IVAS_RENDER_FRAMESIZE ivas_frame_size, /* i: IVAS frame size */ + const int16_t mixed_td_cldfb_flag /* i: Flag to indicate combined TD and CLDFB input */ +); + +void ISAR_PRE_REND_close( + SPLIT_REND_WRAPPER *hSplitBinRend, /* i/o: Split renderer pre-renerer handle */ + IVAS_REND_AudioBuffer *pSplitRendEncBuffer /* i/o: Split renderer data buffer */ +); + +void ISAR_PRE_REND_GetMultiBinPoseData( + const ISAR_SPLIT_REND_CONFIG_DATA *pSplit_rend_config, /* i: Split renderer pre-renerer config */ + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, /* i/o: pose correction data handle */ + const ISAR_SPLIT_REND_ROT_AXIS rot_axis /* i: Rotation axis */ +); + +ivas_error ISAR_PRE_REND_MultiBinToSplitBinaural( + SPLIT_REND_WRAPPER *hSplitBin, /* i/o: Split renderer pre-renerer handle */ + 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 */ + const Word16 isar_frame_size_ms, /* i: ISAR framesize */ + 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 */ + Word32 Cldfb_In_BinImag_fx[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o: CLDFB imag buffer */ + const Word16 max_bands, /* i: CLDFB bands */ + Word32 *pOutput_fx[], /* i: low time resolution pre-renderer flag */ + const Word16 low_res_pre_rend_rot, /* i: low time resolution pre-renderer flag */ + const Word16 cldfb_in_flag, /* i: Flag to indicate CLDFB or time doamin input */ + const Word16 pcm_out_flag, /* i: Flag to indicate PCM output */ + const Word16 ro_md_flag, /* i: Flag to indicate real only metadata for yaw */ + Word16 Q_buff, + Word16 *Q_out ); + +#endif /* LIB_ISAR_PRE_REND_H */ diff --git a/lib_lc3plus/.clang-format b/lib_lc3plus/.clang-format new file mode 100644 index 0000000000000000000000000000000000000000..47a38a93f2dbdd6d944f9dddc3465e3fb65aec29 --- /dev/null +++ b/lib_lc3plus/.clang-format @@ -0,0 +1,2 @@ +DisableFormat: true +SortIncludes: Never diff --git a/lib_lc3plus/adjust_global_gain_fx.c b/lib_lc3plus/adjust_global_gain_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..c6067b59122b40b106640b462b10d4af167ca80f --- /dev/null +++ b/lib_lc3plus/adjust_global_gain_fx.c @@ -0,0 +1,186 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + + + +void processAdjustGlobalGain_fx(Word16 *gg_idx, Word16 gg_idx_min, Word16 gg_idx_off, +#ifdef ENABLE_HR_MODE + Word32 *gain, +#else + Word16 *gain, +#endif + Word16 *gain_e, + Word16 target, Word16 nBits, Word16 *gainChange, Word16 fs_idx +#ifdef ENABLE_HR_MODE + , Word16 hrmode, Word16 frame_dms +#endif + ) +{ + + Word32 L_tmp; + Word16 delta, delta2; +#ifdef ENABLE_HR_MODE + Word16 gg_idx_inc; + Word16 gg_idx_inc_max; + Word16 gg_idx_inc_s; +# ifdef CR8_G_ADD_75MS + Word32 factor; +# else + Word16 factor; +# endif +#endif + +#ifdef DYNMEM_COUNT +#if defined(ENABLE_HR_MODE) + Dyn_Mem_In("processAdjustGlobalGain_fx", sizeof(struct { + Word32 L_tmp; + Word16 delta, delta2; + Word16 gg_idx_inc; + Word16 gg_idx_inc_max; + Word16 gg_idx_inc_s; + Word16 factor; + })); +#else + Dyn_Mem_In("processAdjustGlobalGain_fx", sizeof(struct { + Word32 L_tmp; + Word16 delta, delta2; + })); +#endif /* ENABLE_HR_MODE */ +#endif /* DYNMEM_COUNT */ + +#ifdef ENABLE_HR_MODE + IF (sub(frame_dms, 25) == 0) + { + IF (sub(target, 520) < 0) + { + factor = 3; move16(); + gg_idx_inc_max = 30; move16(); + } ELSE { + factor = 4; move16(); + gg_idx_inc_max = 40; move16(); + } + } + ELSE IF (sub(frame_dms, 50) == 0) + { + factor = 2; move16(); + gg_idx_inc_max = 20; move16(); + } +#ifdef CR8_G_ADD_75MS + ELSE IF (sub(frame_dms, 75) == 0) + { + factor = 40265318; move16(); // factor = 1.2 * 2^25 + gg_idx_inc_max = 12 ; move16(); + } +#endif + ELSE + { + factor = 1; move16(); + gg_idx_inc_max = 10; move16(); + } +#endif + + IF (sub(nBits, adjust_global_gain_tables[0][fs_idx]) < 0) + { + delta = mult_r(add(nBits, 48), 2048); + } + ELSE IF (sub(nBits, adjust_global_gain_tables[1][fs_idx]) < 0) + { + delta = mult_r(add(nBits, adjust_global_gain_tables[4][fs_idx]), adjust_global_gain_tables[3][fs_idx]); + } + ELSE IF (sub(nBits, adjust_global_gain_tables[2][fs_idx]) < 0) + { + delta = mult_r(nBits, 683); + } + ELSE + { + delta = mult_r(adjust_global_gain_tables[2][fs_idx], 683); + } + delta2 = add(delta, 2); + + *gainChange = 0; move16(); + + test(); + IF (sub(*gg_idx, 255) == 0 && sub(nBits, target) > 0) + { + *gainChange = 1; move16(); + } + + test(); test(); test(); + IF ((sub(*gg_idx, 255) < 0 && sub(nBits, target) > 0) || (*gg_idx > 0 && sub(nBits, sub(target, delta2)) < 0)) + { +#ifdef ENABLE_HR_MODE + IF (hrmode) + { + IF (sub(nBits, target) > 0) + { + gg_idx_inc = sub(nBits, target); +#ifdef CR8_G_ADD_75MS + IF (sub(frame_dms, 75) == 0) + { + gg_idx_inc = extract_l(L_shr_pos(Mpy_32_16_lc3plus(factor, gg_idx_inc), 10)); // Mpy_32_16_lc3plus(1.2*2^25, gg_idx_inc), 25 - 15) + gg_idx_inc = BASOP_Util_Divide1616_Scale_lc3plus(gg_idx_inc, delta, &gg_idx_inc_s); + gg_idx_inc = shr_sat(gg_idx_inc, sub(15, gg_idx_inc_s)); + gg_idx_inc = add(gg_idx_inc, 1); // adding 1 instead of 1.2 + } + ELSE +#endif + { + gg_idx_inc = extract_l(L_mult0(gg_idx_inc, factor)); + gg_idx_inc = BASOP_Util_Divide1616_Scale_lc3plus(gg_idx_inc, delta, &gg_idx_inc_s); + gg_idx_inc = shr_sat(gg_idx_inc, sub(15, gg_idx_inc_s)); + gg_idx_inc = add(gg_idx_inc, factor); + } + gg_idx_inc = s_min(gg_idx_inc, gg_idx_inc_max); + + *gg_idx = add(*gg_idx, gg_idx_inc); move16(); + } + + *gg_idx = s_min(*gg_idx, 255); move16(); + } + ELSE +#endif + { + test(); + IF (sub(nBits, sub(target, delta2)) < 0) + { + *gg_idx = sub(*gg_idx, 1); move16(); + } + ELSE IF (sub(*gg_idx, 254) == 0 || sub(nBits, add(target, delta)) < 0) + { + *gg_idx = add(*gg_idx, 1); move16(); + } + ELSE + { + *gg_idx = add(*gg_idx, 2); move16(); + } + } + + *gg_idx = s_max(*gg_idx, sub(gg_idx_min, gg_idx_off)); move16(); + +#ifdef ENABLE_HR_MODE + L_tmp = Mpy_32_16_lc3plus(0x3CBE6B83, L_shl_pos(add(*gg_idx, gg_idx_off), 7)); +#else + L_tmp = L_shl_pos(L_mult0(add(*gg_idx, gg_idx_off), 0x797D), 7); /* 6Q25; 0x797D -> log2(10)/28 (Q18) */ +#endif + *gain_e = add(extract_l(L_shr_pos(L_tmp, 25)), 1); /* get exponent */ +#ifdef ENABLE_HR_MODE + *gain = BASOP_Util_InvLog2_lc3plus(L_or(L_tmp, (Word32)0xFE000000)); +#else + *gain = round_fx(BASOP_Util_InvLog2_lc3plus(L_or(L_tmp, (Word32)0xFE000000))); +#endif + *gainChange = 1; move16(); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + diff --git a/lib_lc3plus/al_fec.c b/lib_lc3plus/al_fec.c new file mode 100644 index 0000000000000000000000000000000000000000..c659a90e0521f35ab0e6b5873e0d8c778b7ddf66 --- /dev/null +++ b/lib_lc3plus/al_fec.c @@ -0,0 +1,2379 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" + + +#include "functions.h" +#include "rom_basop_util_lc3plus.h" +#include +#include +#include +#include + +/* channel coder specific constants and macros */ +#define RS16_CW_LEN_MAX 15 + +#define FEC_N_MODES 4 +#define FEC_N_SYNDROMES_MAX 6 +#define FEC_N_ERR_POS_MAX 3 +#define FEC_N_ELP_COEFF_MAX 4 +#define FEC_N_ERR_SYMB_MAX 3 +#define FEC_N_MODE_DETECTION_CW 6 + +#define SYNDROME_IDX(mode_index, cw_index) (((mode_index)*FEC_N_MODE_DETECTION_CW + (cw_index)) * FEC_N_SYNDROMES_MAX) +#define ELP_IDX(mode_index, cw_index) (((mode_index)*FEC_N_MODE_DETECTION_CW + (cw_index)) * FEC_N_ELP_COEFF_MAX) +#define ERR_POS_IDX(mode_index, cw_index) (((mode_index)*FEC_N_MODE_DETECTION_CW + (cw_index)) * FEC_N_ERR_POS_MAX) +#define ERR_SYMB_IDX(mode_index, cw_index) (((mode_index)*FEC_N_MODE_DETECTION_CW + (cw_index)) * FEC_N_ERR_SYMB_MAX) +#define DEG_ELP_IDX(mode_index, cw_index) ((mode_index)*FEC_N_MODE_DETECTION_CW + (cw_index)) + +#define FEC_TOTAL_SYNDROME_SIZE (FEC_N_SYNDROMES_MAX * FEC_N_MODES * FEC_N_MODE_DETECTION_CW) +#define FEC_TOTAL_ELP_SIZE (FEC_N_ELP_COEFF_MAX * FEC_N_MODES * FEC_N_MODE_DETECTION_CW) +#define FEC_TOTAL_ERR_POS_SIZE (FEC_N_ERR_POS_MAX * FEC_N_MODES * FEC_N_MODE_DETECTION_CW) +#define FEC_TOTAL_ERROR_SIZE (FEC_N_ERR_SYMB_MAX * FEC_N_MODES * FEC_N_MODE_DETECTION_CW) +#define FEC_TOTAL_DEG_ELP_SIZE (FEC_N_MODES * FEC_N_MODE_DETECTION_CW) + +#define ERROR_REPORT_BEC_MASK ((0x0FFF)>>1) +#define ERROR_REPORT_EP1_OK ((0x1000)>>1) +#define ERROR_REPORT_EP2_OK ((0x2000)>>1) +#define ERROR_REPORT_EP3_OK ((0x4000)>>1) +#define ERROR_REPORT_EP4_OK ((0x8000)>>1) +#define ERROR_REPORT_ALL_OK (ERROR_REPORT_EP1_OK | ERROR_REPORT_EP2_OK | ERROR_REPORT_EP3_OK | ERROR_REPORT_EP4_OK) + +/* debugging switches */ + +/* constants concerning mode detection */ +#define EP_RISK_THRESH_NS_M 21990 +#define EP_RISK_THRESH_NS_E -23 +#define EP_RISK_THRESH_OS_M 25166 +#define EP_RISK_THRESH_OS_E -10 + +#define SIMPLE_FLOAT_1_MANTISSA 16384 + +#define FEC_STATIC static + +/* DISCLAIMER: Strict instrumentation of GF16 arithmetic would have to take into account + * the initial conversion of the arguments from UWord8 to Word16 (one move16() per argument). + * Behind this is the assumption that one would store GF16 elements in Word16 for strict BASOP + * implementation. + */ + +#define GF16_MUL(a, b) (UWord8)(move16(), gf16_mult_table[s_or((a), shl((b), 4))]) +#define GF16_MUL0(a, b) (UWord8)(move16(), gf16_mult_table[s_or((a), (b))]) +#define GF16_ADD(a, b) (UWord8) s_xor((a), (b)) + +/* tables for finite field arithmetic */ +/* tables for arithmetic in GF(16) * + * generator polynomial: 19 + * unit group generator (g): 2 + */ + +static const UWord8 gf16_g_pow[16] = {1, 2, 4, 8, 3, 6, 12, 11, 5, 10, 7, 14, 15, 13, 9, 1}; +/* g_pow[i] contains g^i*/ + +static const UWord8 gf16_log_g[16] = {255, 0, 1, 4, 2, 8, 5, 10, 3, 14, 9, 7, 6, 13, 11, 12}; +/* log_g[n] contains contains the value i such that g^i = n for n=1, 2, ..., 15, log_g[0] is set to 255 */ + +static const UWord8 gf16_inv_table[16] = {255, 1, 9, 14, 13, 11, 7, 6, 15, 2, 12, 5, 10, 4, 3, 8}; +/* gf16_inv_table[n] contains the multiplicative inverse of n in GF(16) (1/0 is set to 255)*/ + +/* RS16 generating polynomials (from lowest to highest coefficient without leading 1)*/ + +static const UWord8 rs16_gp_d3[] = {8, 6}; +static const UWord8 rs16_gp_d5[] = {7, 8, 12, 13}; +static const UWord8 rs16_gp_d7[] = {12, 10, 12, 3, 9, 7}; + +/* FEC mode signaling polynomials */ + +#define EP_SIG_POLY_DEG 12 + +static const UWord8 sig_polys[4][15] = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {7, 15, 5, 6, 14, 9, 1, 3, 12, 10, 13, 3, 2, 0, 0}, + {7, 11, 14, 1, 2, 3, 12, 11, 6, 15, 7, 6, 12, 0, 0}, + {6, 15, 12, 2, 9, 15, 2, 8, 12, 3, 10, 5, 4, 0, 0}}; + +static const UWord8 sig_poly_syndr[4][6] = { + {0, 0, 0, 0, 0, 0}, {0, 4, 5, 11, 5, 8}, {0, 5, 9, 0, 1, 7}, {0, 12, 5, 12, 9, 8}}; + +/* bit count table for error report (0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111) */ + +static const UWord8 rs16_bit_count_table[] = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4}; + +/* List of RS16 generators by Hamming distance */ + +static const UWord8 *const rs16_gp_by_hd[8] = {NULL, NULL, NULL, rs16_gp_d3, NULL, rs16_gp_d5, NULL, rs16_gp_d7}; + +/* fec config data */ + +static const UWord8 hamming_distance_by_mode0[] = {1, 3, 3, 5, 7}; +static const UWord8 hamming_distance_by_mode1[] = {1, 1, 3, 5, 7}; + +static const UWord8 crc1_bytes_by_mode0[] = {0, 3, 2, 2, 2}; +static const UWord8 crc1_bytes_by_mode1[] = {0, 3, 3, 3, 3}; +static const UWord8 crc2_bytes_by_mode[] = {0, 0, 2, 2, 2}; + +/* fec mode risk table */ +typedef struct +{ + UWord32 mantissa; + Word16 exponent; +} simple_float; + +static const simple_float risk_table_f[4][4] = {{{16384, 0}, {16384, 0}, {16384, 0}, {16384, 0}}, + {{16384, -8}, {26880, -1}, {16384, 0}, {16384, 0}}, + {{16384, -16}, {26880, -9}, {20475, -2}, {16384, 0}}, + {{16384, -24}, {26880, -17}, {20475, -10}, {19195, -4}}}; +/* bit error limits for slot size 40 */ +static Word16 const low_br_max_bit_errors_by_mode[] = {0, 0, 3, 9, 18}; + +/* +corresponding float values: + {1.f, 1.f, 1.f, 1.f}, + {0.00390625f, 0.820312f, 1.f, 1.f}, + {1.52588e-05f, 0.00320435f, 0.312424f, 1.f}, + {5.96046e-08f, 1.2517e-05f, 0.00122041f, 0.0732243f} +*/ + +/* internal encoder routines */ + +FEC_STATIC void fec_interleave_pack(UWord8 *out, UWord8 *in, Word16 n_nibbles, Word16 n_codewords); + +FEC_STATIC void rs16_enc(UWord8 *iobuf, Word16 codeword_length, Word16 hamming_distance, Word16 fec_mode, + Word16 signal_mode); + +/* internal decoder routines */ + +FEC_STATIC void fec_deinterleave_unpack(UWord8 *out, UWord8 *in, Word16 n_nibbles, Word16 n_codewords); + +FEC_STATIC Word16 fec_data_preproc(Word16 mode, Word16 epmr, UWord8 *iobuf, UWord8 *cw_buf, Word16 data_bytes, + Word16 slot_bytes, Word16 pc_split); + +FEC_STATIC void fec_data_postproc(Word16 mode, Word16 *epmr, UWord8 *iobuf, Word16 data_bytes, UWord8 *cw_buf, + Word16 slot_bytes, Word16 pc_split, int *bfi); + +FEC_STATIC int rs16_detect_and_correct(UWord8 *iobuf, int n_symb, int n_codewords, Word16 *epmr, Word16 *error_report, + int *bfi, UWord8 *array_of_trust, int ccc_flag_flag, Word16 *n_pccw, void *scratch); + +FEC_STATIC void rs16_calculate_six_syndromes(UWord8 *syndromes, UWord8 *cw, int cw_poly_deg); + +FEC_STATIC void rs16_calculate_four_syndromes(UWord8 *syndromes, UWord8 *cw, int cw_poly_deg); + +FEC_STATIC void rs16_calculate_two_syndromes(UWord8 *syndromes, UWord8 *cw, int cw_poly_deg); + +FEC_STATIC Word8 rs16_calculate_elp(UWord8 *elp, UWord8 *syndromes, Word16 hamming_distance); + +FEC_STATIC Word16 rs16_factorize_elp(UWord8 *error_locations, UWord8 *elp, Word16 deg_elp, Word16 max_pos); + +FEC_STATIC void rs16_calculate_errors(UWord8 *errors, UWord8 *err_pos, UWord8 *syndromes, Word8 deg_elp, Word8 t); + +/* auxiliary routines */ + +FEC_STATIC Word16 crc1(UWord8 *data, Word16 data_size, Word16 epmr, UWord8 *hash, Word16 hash_size, Word16 check); + +FEC_STATIC Word16 fec_estimate_epmr_from_cw0(UWord8 *cw0, Word8 *t, UWord8 *syndromes, UWord8 *elp, Word8 *deg_elp, + UWord8 *err_pos, UWord8 *err_symb, Word16 n_codewords, Word16 n_symb); + +FEC_STATIC void dw0_bitswap(UWord8 *dw0, Word16 mode, Word16 slot_bytes); + +FEC_STATIC Word16 cw0_get_epmr(UWord8 *cw0, Word16 epmr_position); + +FEC_STATIC Word16 dw0_get_epmr(UWord8 *dw0, Word16 mode, Word16 slot_size); + +FEC_STATIC Word16 crc2(UWord8 *data, Word16 data_size, UWord8 *hash, Word16 hash_size, Word16 check); + +FEC_STATIC simple_float simple_float_mul(simple_float op1, simple_float op2); + +FEC_STATIC Word16 simple_float_cmp(simple_float op1, simple_float op2); + +FEC_STATIC Word16 get_total_crc_size(Word16 slot_bytes, Word16 fec_mode, Word16 pc_split); + +FEC_STATIC Word16 get_n_codewords(Word16 slot_bytes); + +FEC_STATIC Word16 get_codeword_length(Word16 n_codewords, Word16 slot_nibbles, Word16 codeword_index); + + + +Word16 fec_get_n_pccw(Word16 slot_bytes, Word16 fec_mode, Word16 ccc_flag) +{ + Dyn_Mem_Deluxe_In( + Word16 n_pccw; + ); + + IF (sub(fec_mode, 3) == 0) + { + n_pccw = round_fx(L_sub(L_mult(2636, slot_bytes), 117377)); + } + ELSE IF (sub(fec_mode, 4) == 0) + { + n_pccw = round_fx(L_sub(L_mult(2178, slot_bytes), 129115)); + } + ELSE + { + n_pccw = 0; move16(); + } + + if (ccc_flag == 1 || sub(slot_bytes, 80) < 0) + { + n_pccw = 0; move16(); + } + + Dyn_Mem_Deluxe_Out(); + return n_pccw; +} + +FEC_STATIC Word16 get_total_crc_size(Word16 slot_bytes, Word16 fec_mode, Word16 pc_split) +{ + Dyn_Mem_Deluxe_In( + Word16 n_crc; + ); + + n_crc = crc1_bytes_by_mode1[fec_mode]; move16(); + if (sub(slot_bytes, 40) == 0) + { + n_crc = crc1_bytes_by_mode0[fec_mode]; move16(); + } + + IF (pc_split > 0) + { + n_crc = add(n_crc, crc2_bytes_by_mode[fec_mode]); + } + Dyn_Mem_Deluxe_Out(); + return n_crc; +} + +FEC_STATIC Word16 get_n_codewords(Word16 slot_bytes) +{ + Dyn_Mem_Deluxe_In( + Word16 i; + ); + + slot_bytes = shl(slot_bytes, 1); + + FOR (i = 0; slot_bytes > 0; i++) + { + slot_bytes = sub(slot_bytes, RS16_CW_LEN_MAX); + } + + Dyn_Mem_Deluxe_Out(); + return i; +} + +FEC_STATIC Word16 get_codeword_length(Word16 n_codewords, Word16 slot_nibbles, Word16 codeword_index) +{ + Dyn_Mem_Deluxe_In( + Word16 i; + ); + + slot_nibbles = sub(slot_nibbles, add(codeword_index, 1)); + slot_nibbles = sub(slot_nibbles, DEPR_i_mult(n_codewords, 13)); + + FOR (i = 12; slot_nibbles >= 0; i++) + { + slot_nibbles = sub(slot_nibbles, n_codewords); + } + + Dyn_Mem_Deluxe_Out(); + return add(i, 1); +} + +/* Encoder */ + +Word16 fec_get_data_size(Word16 fec_mode, Word16 ccc_flag, Word16 slot_bytes) +/* not time critical */ +{ + Dyn_Mem_Deluxe_In( + Word16 n_codewords, payload_size; + ); + + n_codewords = get_n_codewords(slot_bytes); + + assert(n_codewords == (2 * slot_bytes + RS16_CW_LEN_MAX - 1) / RS16_CW_LEN_MAX); + payload_size = slot_bytes; move16(); + + IF (fec_mode > 0) + { + IF (fec_mode == 1) + { + payload_size = sub(payload_size, 1); + } + ELSE + { + payload_size = sub(payload_size, DEPR_i_mult(sub(fec_mode, 1), n_codewords)); + } + IF (slot_bytes == 40) + { + payload_size = sub(payload_size, crc1_bytes_by_mode0[fec_mode]); move16(); + } + ELSE + { + payload_size = sub(payload_size, crc1_bytes_by_mode1[fec_mode]); move16(); + } + + IF (ccc_flag == 0 && fec_mode > 2 && slot_bytes >= 80) + { + payload_size = sub(payload_size, crc2_bytes_by_mode[fec_mode]); + } + } + + Dyn_Mem_Deluxe_Out(); + return payload_size; +} + +Word16 fec_get_n_pc(Word16 fec_mode, Word16 n_pccw, Word16 slot_bytes) +/* not time critical */ +{ + Dyn_Mem_Deluxe_In( + Word16 n_codewords, pc_split, tmp; + int i; + ); + + n_codewords = get_n_codewords(slot_bytes); + + assert(n_codewords == (2 * slot_bytes + RS16_CW_LEN_MAX - 1) / RS16_CW_LEN_MAX); + pc_split = DEPR_i_mult(DEPR_i_mult(n_pccw, -2), sub(fec_mode, 1)); + + IF (fec_mode == 1 || slot_bytes < 80) + { + pc_split = 0; move16(); + } + ELSE + { + FOR (i = 0; i < n_pccw; i++) + { + tmp = get_codeword_length(n_codewords, add(slot_bytes, slot_bytes), sub(n_codewords, i + 1)); + assert(tmp == (2 * slot_bytes + i) / n_codewords); + pc_split = add(pc_split, tmp); + } + } + + Dyn_Mem_Deluxe_Out(); + return pc_split; +} + +/* functions for EPMR handling */ +FEC_STATIC void dw0_bitswap(UWord8 *dw0, Word16 mode, Word16 slot_bytes) +/* swap epmr bits with bits that will be positioned at 30 and 32 in code word 0 */ +{ + Dyn_Mem_Deluxe_In( + UWord8 tmp; + int ind0, ind1, position; + ); + + position = sub(get_codeword_length(get_n_codewords(slot_bytes), shl(slot_bytes, 1), 0), 1); + + IF (sub(slot_bytes, 40) == 0) + { + ind0 = sub(shl(crc1_bytes_by_mode0[mode], 1), 1); + } + ELSE + { + ind0 = sub(shl(crc1_bytes_by_mode1[mode], 1), 1); + } + + ind1 = sub(position, sub(hamming_distance_by_mode0[mode], 1)); + + /* swap bits 2 and 3 of dw0[ind0] with bits 0 and 1 of dw0[ind1] */ + tmp = (UWord8) s_and(shr(dw0[ind0],2), 3); + dw0[ind0] = (UWord8) s_and(dw0[ind0], 3); + dw0[ind0] = (UWord8) s_or(dw0[ind0], shl(s_and(dw0[ind1], 3),2)); + dw0[ind1] = (UWord8) s_and(dw0[ind1], 12); + dw0[ind1] = (UWord8) s_or(dw0[ind1], tmp); + + Dyn_Mem_Deluxe_Out(); +} + +FEC_STATIC Word16 cw0_get_epmr(UWord8 *cw0, Word16 position) +{ + Dyn_Mem_Deluxe_In( + Word16 epmr; + ); + epmr = s_and(cw0[position], 3); + + Dyn_Mem_Deluxe_Out(); + return epmr; +} + +FEC_STATIC Word16 dw0_get_epmr(UWord8 *dw0, Word16 mode, Word16 slot_size) +{ + Dyn_Mem_Deluxe_In( + int ncrc1; + Word16 epmr; + ); + + ncrc1 = crc1_bytes_by_mode1[mode]; + + if (sub(slot_size, 40) == 0) + { + ncrc1 = crc1_bytes_by_mode0[mode]; + } + + epmr = shr(dw0[2 * ncrc1 - 1], 2); + + Dyn_Mem_Deluxe_Out(); + return epmr; +} + + +FEC_STATIC Word16 fec_data_preproc(Word16 mode, Word16 epmr, UWord8 *iobuf, UWord8 *cw_buf, Word16 data_bytes, + Word16 slot_bytes, Word16 pc_split) +{ + Dyn_Mem_Deluxe_In( + Word16 data_offset, n_crc1, n_crc2, tmp; + int i, j; + ); + + tmp = sub(slot_bytes, data_bytes); + data_offset = add(tmp, tmp); + + /* extract and reverse data*/ + j = sub(add(slot_bytes, slot_bytes), 1); + FOR (i = 0; i < data_bytes; i++) + { + cw_buf[j--] = (UWord8)s_and(iobuf[i], 15); move16(); + cw_buf[j--] = (UWord8)shr(iobuf[i], 4); move16(); + } + + /* add crc hashes */ + IF (sub(slot_bytes, 40) == 0) + { + n_crc1 = crc1_bytes_by_mode0[mode]; move16(); + } + ELSE + { + n_crc1 = crc1_bytes_by_mode1[mode]; move16(); + } + + IF (pc_split > 0 && sub(mode, 1) > 0) + { + n_crc2 = crc2_bytes_by_mode[mode]; move16(); + } + ELSE + { + n_crc2 = 0; move16(); + } + + IF (n_crc2) + { + crc2(cw_buf + data_offset + 2 * data_bytes - pc_split, pc_split, cw_buf + data_offset - 2 * n_crc2, n_crc2, 0); + } + IF (n_crc1) + { + crc1(cw_buf + data_offset, 2 * data_bytes - pc_split, epmr, cw_buf + data_offset - 2 * (n_crc1 + n_crc2), n_crc1, + 0); + } + + tmp = add(n_crc1, n_crc2); + data_offset = sub(data_offset, add(tmp, tmp)); + + dw0_bitswap(cw_buf + data_offset, mode, slot_bytes); + + Dyn_Mem_Deluxe_Out(); + return data_offset; +} + +void fec_encoder(Word16 mode, Word16 epmr, UWord8 *iobuf, Word16 data_bytes, Word16 slot_bytes, Word16 n_pccw, + void *scratch) +{ + Dyn_Mem_Deluxe_In( + Word16 n_codewords, codeword_length, hd, redundancy_nibbles, cw_offset, dw_offset, pc_split; + int i, j; + UWord8 *cw_buf; + ); + + cw_offset = 0; move16(); + dw_offset = 0; move16(); + pc_split = 0; move16(); + cw_buf = scratch; + + n_codewords = get_n_codewords(slot_bytes); + assert(n_codewords == (2 * slot_bytes + RS16_CW_LEN_MAX - 1) / RS16_CW_LEN_MAX); + + /* some sanity checks */ + { + int tmp = slot_bytes; + assert((slot_bytes >= FEC_SLOT_BYTES_MIN && slot_bytes <= FEC_SLOT_BYTES_MAX) && + "fec_encoder: slot_bytes out of range"); + tmp -= mode == 1 ? 1 : n_codewords * (mode - 1); // reed solomon redundancy + tmp -= slot_bytes == 40 ? crc1_bytes_by_mode0[mode] : crc1_bytes_by_mode1[mode]; // crc1 + tmp -= (n_pccw > 0) && (mode > 1) ? crc2_bytes_by_mode[mode] : 0; // crc2 + assert(data_bytes == tmp && "fec_encoder: inconsistent payload size"); + assert(n_codewords - n_pccw >= 6); + } + + /* data preproc: re-ordering and hash extension */ + pc_split = fec_get_n_pc(mode, n_pccw, slot_bytes); + + dw_offset = fec_data_preproc(mode, epmr, iobuf, cw_buf, data_bytes, slot_bytes, pc_split); + + /* encoding of first data word*/ + hd = hamming_distance_by_mode0[mode]; move16(); + redundancy_nibbles = sub(hd, 1); + codeword_length = get_codeword_length(n_codewords, add(slot_bytes, slot_bytes), 0); + + assert(codeword_length == (2 * slot_bytes - 1) / n_codewords + 1); + + FOR (j = redundancy_nibbles; j < codeword_length; (j++, dw_offset++)) + { + cw_buf[j] = cw_buf[dw_offset]; move16(); + } + + rs16_enc(cw_buf, codeword_length, hd, mode, 1); + + cw_offset = add(cw_offset, codeword_length); + + /* encoding of remaining data words */ + hd = hamming_distance_by_mode1[mode]; move16(); + redundancy_nibbles = sub(hd, 1); + + FOR (i = 1; i < n_codewords; i++) + { + codeword_length = get_codeword_length(n_codewords, add(slot_bytes, slot_bytes), i); + + assert(codeword_length == (2 * slot_bytes - i - 1) / n_codewords + 1); + FOR (j = redundancy_nibbles; j < codeword_length; (j++, dw_offset++)) + { + cw_buf[cw_offset + j] = cw_buf[dw_offset]; move16(); + } + + rs16_enc(cw_buf + cw_offset, codeword_length, hd, mode, sub(i, 6) < 0); + + cw_offset = add(cw_offset, codeword_length); + } + + assert(cw_offset == 2 * slot_bytes && dw_offset == 2 * slot_bytes); + + fec_interleave_pack(iobuf, cw_buf, add(slot_bytes, slot_bytes), n_codewords); + + + Dyn_Mem_Deluxe_Out(); +} + +FEC_STATIC void rs16_enc(UWord8 *iobuf, Word16 codeword_length, Word16 hamming_distance, Word16 fec_mode, + Word16 signal_mode) +/* expects (data polynomial) * x^(hamming_distance - 1) in iobuf */ +{ + + Dyn_Mem_Deluxe_In( + UWord8 const *gp; + UWord8 shift_buffer[RS16_CW_LEN_MAX + 1], lc; + int i, j, deg_gp; + ); + + basop_memset(shift_buffer, 0, sizeof(shift_buffer)); + gp = rs16_gp_by_hd[hamming_distance]; move16(); + deg_gp = sub(hamming_distance, 1); + + IF (sub(hamming_distance, 1) > 0) + { + assert(codeword_length > deg_gp); + + /* initialize redundancy part to zero */ + basop_memset(iobuf, 0, deg_gp); + + /* initialize shift_buffer */ + basop_memmove(shift_buffer + 1, iobuf + codeword_length - deg_gp, deg_gp); + + /* calculate remainder */ + FOR (i = codeword_length - deg_gp - 1; i >= 0; i--) + { + shift_buffer[0] = iobuf[i]; move16(); + lc = (UWord8)shl(shift_buffer[deg_gp], 4); move16(); + FOR (j = deg_gp - 1; j >= 0; j--) + { + shift_buffer[j + 1] = GF16_ADD(shift_buffer[j], GF16_MUL0(gp[j], lc)); move16(); + } + } + + /* add remainder to shifted data polynomial */ + FOR (i = 0; i < deg_gp; i++) + { + iobuf[i] = shift_buffer[i + 1]; move16(); + } + + /* add signaling polynomial */ + IF (signal_mode) + { + assert(codeword_length > EP_SIG_POLY_DEG); + FOR (i = 0; i <= EP_SIG_POLY_DEG; i++) + { + iobuf[i] = GF16_ADD(iobuf[i], sig_polys[fec_mode - 1][i]); move16(); + } + } + } + + Dyn_Mem_Deluxe_Out(); +} + +FEC_STATIC void fec_interleave_pack(UWord8 *out, UWord8 *in, Word16 n_nibbles, Word16 n_codewords) +{ + Dyn_Mem_Deluxe_In( + Word16 out_offset, cw_offset, codeword_length; + int i, j; + ); + + out_offset = 0; move16(); + cw_offset = 0; move16(); + + /* initialize output buffer to zero */ + basop_memset(out, 0, shr(n_nibbles, 1)); + + /* interleave and pack codewords */ + FOR (i = 0; i < n_codewords; i++) + { + codeword_length = get_codeword_length(n_codewords, n_nibbles, i); + + assert(codeword_length == (n_nibbles - i - 1) / n_codewords + 1); + FOR (j = 0; j < codeword_length; j++) + { + out_offset = add(DEPR_i_mult(j, n_codewords), i); + out_offset = sub(n_nibbles, add(out_offset, 1)); + out[out_offset >> 1] = + (UWord8)s_or(out[out_offset >> 1], shl(in[cw_offset], shl(s_and(out_offset, 1), 2))); move16(); + cw_offset = add(cw_offset, 1); + } + } + + assert(cw_offset == n_nibbles); + Dyn_Mem_Deluxe_Out(); +} + +/* Decoder */ +FEC_STATIC void fec_data_postproc(Word16 mode, Word16 *epmr, UWord8 *obuf, Word16 data_bytes, UWord8 *cw_buf, + Word16 slot_bytes, Word16 pc_split, int *bfi) +{ + Dyn_Mem_Deluxe_In( + Word16 i; + Word16 n_crc1, n_crc2; + Word16 cw_buf_len; + Word16 tmp_epmr; + ); + + n_crc1 = crc1_bytes_by_mode1[mode]; move16(); + if (sub(slot_bytes, 40) == 0) + { + n_crc1 = crc1_bytes_by_mode0[mode]; move16(); + } + + n_crc2 = 0; move16(); + if (pc_split > 0) + { + n_crc2 = crc2_bytes_by_mode[mode]; move16(); + } + + assert(n_crc1 == (slot_bytes == 40 ? crc1_bytes_by_mode0[mode] : crc1_bytes_by_mode1[mode])); + assert(n_crc2 == ((pc_split > 0) && (mode > 1) ? crc2_bytes_by_mode[mode] : 0)); + + cw_buf_len = 2 * (data_bytes + n_crc1 + n_crc2); + + IF (sub(mode, 1)) + { + /* reverse bit-swap */ + dw0_bitswap(cw_buf, mode, slot_bytes); + tmp_epmr = dw0_get_epmr(cw_buf, mode, slot_bytes); + + IF (crc1(cw_buf + shl(add(n_crc1, n_crc2), 1), sub(shl(data_bytes, 1), pc_split), tmp_epmr, cw_buf, n_crc1, 1)) + { + *bfi = 1; move32(); + + Dyn_Mem_Deluxe_Out(); + return; + } + else + { + *epmr = tmp_epmr; + } + } + + test(); + IF (pc_split > 0 && sub(*bfi, 2) != 0) + { + IF (crc2(cw_buf + sub(shl(add(data_bytes, add(n_crc1, n_crc2)), 1), pc_split), pc_split, + cw_buf + shl(n_crc1, 1), n_crc2, 1)) + { + *bfi = 2; move32(); + } + } + + FOR (i = 0; i < data_bytes; i++) + { + obuf[i] = (UWord8)s_or(cw_buf[cw_buf_len - 2 * i - 1], shl(cw_buf[cw_buf_len - 2 * i - 2], 4)); move16(); + } + Dyn_Mem_Deluxe_Out(); +} + +int fec_decoder(UWord8 *iobuf, Word16 slot_bytes, int *data_bytes, Word16 *epmr, Word16 ccc_flag, Word16 *n_pccw, + int *bfi, Word16 *be_bp_left, Word16 *be_bp_right, Word16 *n_pc, Word16 *m_fec, void *scratch) +{ + Dyn_Mem_Deluxe_In( + UWord8 *my_scratch; + UWord8 *cw_buf; + UWord8 *array_of_trust; + Word16 i, j; + Word16 cw_offset, dw_offset; + Word16 n_codewords, redundancy_nibbles, codeword_length; + Word16 mode, error_report; + Word16 n_crc; + Word16 first_bad_cw; + Word16 pc_split; + ); + + IF (*bfi == 1) + { + Dyn_Mem_Deluxe_Out(); + return ERROR_REPORT_BEC_MASK; + } + + if (slot_bytes < FEC_SLOT_BYTES_MIN || slot_bytes > FEC_SLOT_BYTES_MAX) + { + *bfi = 1; + return ERROR_REPORT_BEC_MASK; + } + + my_scratch = (UWord8 *)scratch; move32(); + cw_buf = my_scratch; move32(); + my_scratch += 2 * slot_bytes; + + IF (ccc_flag == 0) + { + *be_bp_left = -1; move16(); + *be_bp_right = -1; move16(); + } + + n_codewords = get_n_codewords(slot_bytes); + + array_of_trust = my_scratch; move32(); + my_scratch += n_codewords; + + /* extract and de-interleave nibbles */ + fec_deinterleave_unpack(cw_buf, iobuf, 2 * slot_bytes, n_codewords); + + /* mode detection and error correction */ + mode = rs16_detect_and_correct(cw_buf, 2 * slot_bytes, n_codewords, epmr, &error_report, bfi, array_of_trust, + ccc_flag, n_pccw, (void *)my_scratch); + + /* for normal slots the maximal number of bit errors is limited */ + test(); +#ifndef APPLY_MAX_ERRORS + IF (sub(slot_bytes, 40) == 0 && mode > 0) + { + IF (sub(error_report & ERROR_REPORT_BEC_MASK, low_br_max_bit_errors_by_mode[mode]) > 0) + { + error_report &= ERROR_REPORT_BEC_MASK; + mode = -1; move16(); + *bfi = 1; move32(); + } + ELSE + { + IF (sub(error_report & ERROR_REPORT_BEC_MASK, low_br_max_bit_errors_by_mode[2]) > 0) + { + error_report &= ~ERROR_REPORT_EP2_OK; + } + IF (sub(error_report & ERROR_REPORT_BEC_MASK, low_br_max_bit_errors_by_mode[3])>0) + { + error_report &= ~ERROR_REPORT_EP3_OK; + } + } + } +#endif + + IF (sub(*bfi, 1) == 0) + { + *data_bytes = 0; move16(); + + Dyn_Mem_Deluxe_Out(); + return error_report; + } + + /* initialization for decoding */ + *data_bytes = fec_get_data_size(mode, ccc_flag, slot_bytes); move32(); + pc_split = fec_get_n_pc(mode, *n_pccw, slot_bytes); + n_crc = get_total_crc_size(slot_bytes, mode, pc_split); + + /* decoding of first code word */ + redundancy_nibbles = sub(hamming_distance_by_mode0[mode], 1); + codeword_length = get_codeword_length(n_codewords, add(slot_bytes, slot_bytes), 0); + + dw_offset = 0; move16(); + cw_offset = 0; move16(); + + FOR (j = redundancy_nibbles; j < codeword_length; j++) + { + cw_buf[dw_offset++] = cw_buf[j]; move16(); + } + cw_offset = add(cw_offset, codeword_length); + + /* decoding of remaining code words */ + redundancy_nibbles = sub(hamming_distance_by_mode1[mode], 1); + + FOR (i = 1; i < n_codewords; i++) + { + codeword_length = get_codeword_length(n_codewords, add(slot_bytes, slot_bytes), i); + + FOR (j = redundancy_nibbles; j < codeword_length; j++) + { + cw_buf[dw_offset++] = cw_buf[j + cw_offset]; move16(); + } + + cw_offset = add(cw_offset, codeword_length); + } + + assert(2 * (*data_bytes + n_crc) == dw_offset && 2 * slot_bytes == cw_offset); + + /* data postproc: hash validation and re-ordering */ + + fec_data_postproc(mode, epmr, iobuf, *data_bytes, cw_buf, slot_bytes, pc_split, bfi); + + IF (sub(*bfi, 1) == 0) + { + *data_bytes = 0; move32(); + error_report &= ERROR_REPORT_BEC_MASK; + Dyn_Mem_Deluxe_Out(); + return error_report; + } + + IF (*bfi == 2) + { + first_bad_cw = 0; move16(); + array_of_trust[*n_pccw] = 0; move16(); + WHILE (array_of_trust[first_bad_cw] != 0) + { + first_bad_cw = add(first_bad_cw, 1); + } + IF (sub(first_bad_cw, *n_pccw) == 0) + { + /* this is the case when CRC failed */ + *be_bp_left = 0; move16(); + } + ELSE + { + *be_bp_left = extract_l(L_mult0(fec_get_n_pc(mode, first_bad_cw, slot_bytes), 4)); move16(); + } + + FOR (i = *n_pccw - 1; i >= 0; i--) + { + if (!array_of_trust[i]) + { + BREAK; + } + } + IF (i < 0) + { + i = sub(*n_pccw, 1); + } + *be_bp_right = sub(extract_l(L_mult0(fec_get_n_pc(mode, i+1, slot_bytes), 4)), 1); move16(); + + } + + IF (ccc_flag == 0) + { + *n_pc = pc_split; move16(); + *m_fec = mode; move16(); + } + + + Dyn_Mem_Deluxe_Out(); + return error_report; +} + +FEC_STATIC void fec_deinterleave_unpack(UWord8 *out, UWord8 *in, Word16 n_nibbles, Word16 n_codewords) +{ + Dyn_Mem_Deluxe_In( + Word16 in_offset, out_offset, codeword_length; + int i, j; + ); + + in_offset = 0; move16(); + out_offset = 0; move16(); + + /* unpack nibbles in input buffer and deinterleave codewords */ + FOR (i = 0; i < n_codewords; i++) + { + codeword_length = get_codeword_length(n_codewords, n_nibbles, i); + FOR (j = 0; j < codeword_length; (j++, out_offset++)) + { + in_offset = add(DEPR_i_mult(j, n_codewords), i); + in_offset = sub(n_nibbles, add(in_offset, 1)); + out[out_offset] = (UWord8)s_and(shr(in[in_offset >> 1], shl(s_and(in_offset, 1), 2)), 15); move16(); + } + } + + assert(out_offset == n_nibbles); + Dyn_Mem_Deluxe_Out(); +} + +FEC_STATIC Word16 fec_estimate_epmr_from_cw0(UWord8 *cw0, Word8 *t, UWord8 *syndromes, UWord8 *elp, Word8 *deg_elp, + UWord8 *err_pos, UWord8 *err_symb, Word16 n_codewords, Word16 n_symb) +{ + Dyn_Mem_Deluxe_In( + int epmr_lowest_risk_exp; + int start, inc, i, n_candidates; + int first_codeword_length; + int mode_counter; + Word16 epmr; + ); + + epmr_lowest_risk_exp = 0; + first_codeword_length = get_codeword_length(n_codewords, n_symb, 0); + start = 2; + inc = 1; + n_candidates = 0; + + /* test if first code word decodes in mode 0 or 1 without error correction */ + test(); + IF (s_or(syndromes[SYNDROME_IDX(0, 0)], syndromes[SYNDROME_IDX(0, 0) + 1]) == 0 || + s_or(syndromes[SYNDROME_IDX(1, 0)], syndromes[SYNDROME_IDX(1, 0) + 1]) == 0) + { + epmr_lowest_risk_exp = risk_table_f[1][0].exponent; move16(); + } + /* test if first code word decodes in mode 2 or 3 with lower risk */ + IF (sub(deg_elp[DEG_ELP_IDX(2, 0)], t[2]) <= 0) + { + IF (add(risk_table_f[2][deg_elp[DEG_ELP_IDX(2, 0)]].exponent, 8) <= 0) + { + n_candidates++; + start = 2; + } + } + + IF (sub(deg_elp[DEG_ELP_IDX(3, 0)], t[3]) <= 0) + { + IF (add(risk_table_f[3][deg_elp[DEG_ELP_IDX(3, 0)]].exponent, 8) <= 0) + { + n_candidates++; + start = 3; + } + } + + IF (sub(n_candidates, 1) > 0) + { + /* decide on order if mode 2 and 3 are considered */ + IF (simple_float_cmp(risk_table_f[2][deg_elp[DEG_ELP_IDX(2, 0)]], risk_table_f[3][deg_elp[DEG_ELP_IDX(3, 0)]]) < + 0) + { + start = 2; + inc = 1; + } + ELSE + { + start = 3; + inc = -1; + } + } + + FOR ((mode_counter = start, i = 0); i < n_candidates; (mode_counter += inc, i++)) + { + IF (sub(risk_table_f[mode_counter][deg_elp[DEG_ELP_IDX(mode_counter, 0)]].exponent, epmr_lowest_risk_exp) < 0) + { + IF (!rs16_factorize_elp(err_pos + ERR_POS_IDX(mode_counter, 0), elp + ELP_IDX(mode_counter, 0), + deg_elp[DEG_ELP_IDX(mode_counter, 0)], sub(first_codeword_length, 1))) + { + /* code word is decodable with error correction */ + epmr_lowest_risk_exp = risk_table_f[mode_counter][deg_elp[DEG_ELP_IDX(mode_counter, 0)]].exponent; + + rs16_calculate_errors(err_symb + ERR_SYMB_IDX(mode_counter, 0), err_pos + ERR_POS_IDX(mode_counter, 0), + syndromes + SYNDROME_IDX(mode_counter, 0), deg_elp[DEG_ELP_IDX(mode_counter, 0)], + t[mode_counter]); + + FOR (i = 0; i < deg_elp[DEG_ELP_IDX(mode_counter, 0)]; i++) + { + cw0[err_pos[ERR_POS_IDX(mode_counter, 0) + i]] = GF16_ADD( + cw0[err_pos[ERR_POS_IDX(mode_counter, 0) + i]], err_symb[ERR_SYMB_IDX(mode_counter, 0) + i]); + } + BREAK; + } + } + } + + epmr = cw0_get_epmr(cw0, sub(first_codeword_length, 1)); + + IF (add(epmr_lowest_risk_exp, 16) > 0) + { + epmr = add(epmr, 4); move16(); + } + IF (add(epmr_lowest_risk_exp, 8) > 0) + { + epmr = add(epmr, 4); move16(); + } + + Dyn_Mem_Deluxe_Out(); + return epmr; +} + +FEC_STATIC int rs16_detect_and_correct(UWord8 *iobuf, int n_symb, int n_codewords, Word16 *epmr, Word16 *error_report, + int *bfi, UWord8 *array_of_trust, int ccc_flag, Word16 *n_pccw, void *scratch) +{ + Dyn_Mem_Deluxe_In( + UWord8 * syndromes; + UWord8 * elp; + UWord8 * err_pos; + UWord8 * err_symb; + Word8 t[FEC_N_MODES]; + Word8 * deg_elp; + UWord8 * my_scratch; + UWord8 blacklist[FEC_N_MODES]; + UWord8 const *hamming_distance; + + Word16 i, cw_counter, mode_counter, cw_offset; + Word16 codeword_length; + Word16 mode; + Word16 mode_candidates[4]; + Word16 mode_broken[4]; + Word16 error_report_ep_ok[4]; + Word16 n_mode_candidates; + Word16 broken_cw, n_broken_cw; + Word16 j, idx_min; + Word16 n_pccw0; + simple_float val_min_f; + Word16 tmp; + Word16 epmr_position; + simple_float dec_risk_f[FEC_N_MODES]; + simple_float risk_min_f; + simple_float ep_risk_thresh; + + int epmr_dec_fail_increment; + + void (*syndr_calc[3])(UWord8 *, UWord8 *, int); + ); + + /* initialization */ + blacklist[0] = 0; move16(); + blacklist[1] = 0; move16(); + blacklist[2] = 0; move16(); + blacklist[3] = 0; move16(); + mode_broken[0] = 0; move16(); + mode_broken[1] = 0; move16(); + mode_broken[2] = 0; move16(); + mode_broken[3] = 0; move16(); + error_report_ep_ok[0] = ERROR_REPORT_EP1_OK; + error_report_ep_ok[1] = ERROR_REPORT_EP2_OK; + error_report_ep_ok[2] = ERROR_REPORT_EP3_OK; + error_report_ep_ok[3] = ERROR_REPORT_EP4_OK; + my_scratch = (UWord8 *)scratch; + hamming_distance = &hamming_distance_by_mode0[1]; + mode = -1; move16(); + n_mode_candidates = 0; move16(); + risk_min_f.mantissa = SIMPLE_FLOAT_1_MANTISSA; move16(); + risk_min_f.exponent = 0; move16(); + + IF (n_symb <= 80) + { + ep_risk_thresh.mantissa = EP_RISK_THRESH_NS_M; move16(); + ep_risk_thresh.exponent = EP_RISK_THRESH_NS_E; move16(); + } + ELSE + { + ep_risk_thresh.mantissa = EP_RISK_THRESH_OS_M; move16(); + ep_risk_thresh.exponent = EP_RISK_THRESH_OS_E; move16(); + } + + syndr_calc[0] = &rs16_calculate_two_syndromes; + syndr_calc[1] = &rs16_calculate_four_syndromes; + syndr_calc[2] = &rs16_calculate_six_syndromes; + + FOR (i = 0; i < FEC_N_MODES; i++) + { + t[i] = (Word8)shr(sub(hamming_distance[i], 1), 1); move16(); + } + + syndromes = my_scratch; + my_scratch += FEC_TOTAL_SYNDROME_SIZE; + elp = my_scratch; + my_scratch += FEC_TOTAL_ELP_SIZE; + err_pos = my_scratch; + my_scratch += FEC_TOTAL_ERR_POS_SIZE; + err_symb = my_scratch; + my_scratch += FEC_TOTAL_ERROR_SIZE; + deg_elp = (Word8 *)my_scratch; + my_scratch += FEC_TOTAL_DEG_ELP_SIZE; + + *error_report = 0; move16(); + *bfi = 0; move32(); + + /* mode detection (stage 1) */ + codeword_length = get_codeword_length(n_codewords, n_symb, 0); + + epmr_position = sub(codeword_length, 1); + + rs16_calculate_two_syndromes(syndromes + SYNDROME_IDX(0, 0), iobuf, sub(codeword_length, 1)); + + IF (s_or(syndromes[0 + SYNDROME_IDX(0, 0)], syndromes[1 + SYNDROME_IDX(0, 0)]) == 0) + { + + /* data validation for fec mode 1 */ + *epmr = cw0_get_epmr(iobuf, epmr_position); + + dw0_bitswap(iobuf + 2, 1, n_symb / 2); + + IF (!crc1(iobuf + 8, sub(n_symb, 8), *epmr, iobuf + 2, 3, 1)) + { + mode = 0; move16(); + *error_report |= ERROR_REPORT_ALL_OK; + Dyn_Mem_Deluxe_Out(); + return add(mode, 1); + } + ELSE + { + /* reverse bit swap */ + dw0_bitswap(iobuf + 2, 1, n_symb / 2); + + *epmr = add(*epmr, 4); move16(); + } + } + + blacklist[0] = 1; move16(); + + /* mode detection (stage 2) */ + + /* calculate syndromes of code words 0 to 5 and modes 1 to 3 */ + cw_offset = 0; move16(); + + FOR (cw_counter = 0; cw_counter < 6; cw_counter++) + { + codeword_length = get_codeword_length(n_codewords, n_symb, cw_counter); + + rs16_calculate_six_syndromes(syndromes + SYNDROME_IDX(1, cw_counter), iobuf + cw_offset, + sub(codeword_length, 1)); + + cw_offset = add(cw_offset, codeword_length); + + FOR (mode_counter = FEC_N_MODES - 1; mode_counter >= 1; mode_counter--) + { + FOR (i = 0; i < sub(hamming_distance[mode_counter], 1); i++) + { + syndromes[SYNDROME_IDX(mode_counter, cw_counter) + i] = GF16_ADD( + syndromes[SYNDROME_IDX(1, cw_counter) + i], sig_poly_syndr[mode_counter][i]); move16(); + } + } + } + + /* check for valid code words */ + FOR (mode_counter = 1; mode_counter < FEC_N_MODES; mode_counter++) + { + n_broken_cw = 0; + FOR (cw_counter = 0; cw_counter < 6; cw_counter++) + { + broken_cw = 0; + FOR (i = 0; i < sub(hamming_distance[mode_counter], 1); i++) + { + broken_cw = s_or(broken_cw, syndromes[SYNDROME_IDX(mode_counter, cw_counter) + i]); move16(); + } + IF (broken_cw != 0) + { + n_broken_cw = add(n_broken_cw, 1); + } + } + + IF (n_broken_cw == 0) + { + mode = mode_counter; move16(); + cw_offset = 0; move16(); + + *epmr = cw0_get_epmr(iobuf, epmr_position); + + FOR (cw_counter = 0; cw_counter < 6; cw_counter++) + { + codeword_length = get_codeword_length(n_codewords, n_symb, cw_counter); + FOR (i = 0; i <= EP_SIG_POLY_DEG; i++) + { + iobuf[cw_offset + i] = GF16_ADD(iobuf[cw_offset + i], sig_polys[mode][i]); + } + cw_offset = add(cw_offset, codeword_length); + } + } + } + + IF (mode < 0) /* mode hasn't been detected so far -> errors occurred in transmission */ + { + /* calculate error locator polynomials for code words 0 to 5 */ + FOR (mode_counter = 1; mode_counter < FEC_N_MODES; mode_counter++) + { + FOR (cw_counter = 0; cw_counter < 6; cw_counter++) + { + deg_elp[DEG_ELP_IDX(mode_counter, cw_counter)] = rs16_calculate_elp( + elp + ELP_IDX(mode_counter, cw_counter), syndromes + SYNDROME_IDX(mode_counter, cw_counter), + t[mode_counter]); move16(); + IF (sub(deg_elp[DEG_ELP_IDX(mode_counter, cw_counter)], t[mode_counter]) > 0) + { + blacklist[mode_counter] = 1; move16(); + BREAK; + } + } + } + + /* risk analysis for mode candidate selection */ + FOR (mode_counter = 1; mode_counter < FEC_N_MODES; mode_counter++) + { + dec_risk_f[mode_counter].mantissa = SIMPLE_FLOAT_1_MANTISSA; move16(); + dec_risk_f[mode_counter].exponent = 0; move16(); + + IF (blacklist[mode_counter] == 0) + { + FOR (cw_counter = 0; cw_counter < 6; cw_counter++) + { + dec_risk_f[mode_counter] = simple_float_mul( + dec_risk_f[mode_counter], + risk_table_f[mode_counter][deg_elp[DEG_ELP_IDX(mode_counter, cw_counter)]]); move16(); + } + + IF (simple_float_cmp(dec_risk_f[mode_counter], ep_risk_thresh) <= 0) + { + mode_candidates[n_mode_candidates++] = mode_counter; move16(); + } + + IF (simple_float_cmp(dec_risk_f[mode_counter], risk_min_f) < 0) + { + risk_min_f = dec_risk_f[mode_counter]; move16(); + } + } + } + assert(n_mode_candidates <= 4); // suppress false gcc warning when OPTIM=3 + + /* sort mode candidates by risk */ + FOR (i = 0; i < n_mode_candidates; i++) + { + idx_min = i; move16(); + val_min_f = dec_risk_f[mode_candidates[i]]; move16(); + + FOR (j = i + 1; j < n_mode_candidates; j++) + { + IF (simple_float_cmp(dec_risk_f[mode_candidates[j]], val_min_f) < 0) + { + val_min_f = dec_risk_f[mode_candidates[j]]; move16(); + idx_min = j; move16(); + } + } + + IF (sub(idx_min, i) > 0) + { + tmp = mode_candidates[i]; move16(); + mode_candidates[i] = mode_candidates[idx_min]; move16(); + mode_candidates[idx_min] = tmp; move16(); + } + } + + /* try out candidate modes */ + FOR (i = 0; i < n_mode_candidates; i++) + { + mode = mode_candidates[i]; move16(); + + FOR (cw_counter = 0; cw_counter < 6; cw_counter++) + { + codeword_length = get_codeword_length(n_codewords, n_symb, cw_counter); + + IF (deg_elp[DEG_ELP_IDX(mode, cw_counter)]) + { + IF (rs16_factorize_elp(err_pos + ERR_POS_IDX(mode, cw_counter), elp + ELP_IDX(mode, cw_counter), + deg_elp[DEG_ELP_IDX(mode, cw_counter)], sub(codeword_length, 1))) + { + /* elp did not split into distinct linear factors or error position was out of range */ + mode = -1; move16(); + BREAK; + } + } + } + IF (mode > 0) + { + /* decodable mode with lowest risk has been found */ + BREAK; + } + } + + IF (mode < 0) + { + /* no decodable mode has been found */ + *error_report = ERROR_REPORT_BEC_MASK; move16(); + *bfi = 1; move32(); + mode = -1; move16(); + + *epmr = fec_estimate_epmr_from_cw0(iobuf, t, syndromes, elp, deg_elp, err_pos, err_symb, n_codewords, + n_symb); + + Dyn_Mem_Deluxe_Out(); + return mode; + } + + /* perform error correction */ + cw_offset = 0; move16(); + *error_report = 0; move16(); + FOR (cw_counter = 0; cw_counter < 6; cw_counter++) + { + codeword_length = get_codeword_length(n_codewords, n_symb, cw_counter); + + IF (deg_elp[DEG_ELP_IDX(mode, cw_counter)]) + { + rs16_calculate_errors( + err_symb + ERR_SYMB_IDX(mode, cw_counter), err_pos + ERR_POS_IDX(mode, cw_counter), + syndromes + SYNDROME_IDX(mode, cw_counter), deg_elp[DEG_ELP_IDX(mode, cw_counter)], t[mode]); + + /* correct errors and sum up number of corrected bits */ + FOR (i = 0; i < deg_elp[DEG_ELP_IDX(mode, cw_counter)]; i++) + { + iobuf[err_pos[ERR_POS_IDX(mode, cw_counter) + i] + cw_offset] = + GF16_ADD(iobuf[err_pos[ERR_POS_IDX(mode, cw_counter) + i] + cw_offset], + err_symb[ERR_SYMB_IDX(mode, cw_counter) + i]); + *error_report = add(*error_report, + rs16_bit_count_table[err_symb[ERR_SYMB_IDX(mode, cw_counter) + i]]); move16(); + } + + FOR (i = 0; i < mode; i ++) + { + IF(deg_elp[DEG_ELP_IDX(mode, cw_counter)] > i) + { + mode_broken[i] = 1; + } + } + } + + FOR (i = 0; i <= EP_SIG_POLY_DEG; i++) + { + iobuf[cw_offset + i] = GF16_ADD(iobuf[cw_offset + i], sig_polys[mode][i]); + } + cw_offset = add(cw_offset, codeword_length); + } + + /* set epmr according to risk value of cw0 */ + epmr_dec_fail_increment = 8; + + IF (add(risk_table_f[mode][deg_elp[DEG_ELP_IDX(mode, 0)]].exponent, 8) <= 0) + { + epmr_dec_fail_increment = sub(epmr_dec_fail_increment, 4); + } + IF (add(risk_table_f[mode][deg_elp[DEG_ELP_IDX(mode, 0)]].exponent, 16) <= 0) + { + epmr_dec_fail_increment = sub(epmr_dec_fail_increment, 4); + } + + *epmr = cw0_get_epmr(iobuf, epmr_position) + epmr_dec_fail_increment; + } + + /* mode has been successfully detected -> now check and try to correct remaining code words*/ + *n_pccw = fec_get_n_pccw(n_symb / 2, mode + 1, ccc_flag); + IF (ccc_flag == 0) + { + n_pccw0 = fec_get_n_pccw(n_symb / 2, mode + 1, ccc_flag); + *n_pccw = n_pccw0; + } + ELSE + { + n_pccw0 = 0; + } + + FOR (cw_counter = 6; cw_counter < n_codewords; cw_counter++) + { + /* usual error correction scheme: syndromes -> elp's, errors, etc. */ + codeword_length = get_codeword_length(n_codewords, n_symb, cw_counter); + array_of_trust[n_codewords - 1 - cw_counter] = 1; move16(); + + syndr_calc[sub(t[mode], 1)](syndromes, iobuf + cw_offset, sub(codeword_length, 1)); + + deg_elp[0] = rs16_calculate_elp(elp, syndromes, t[mode]); move16(); + + FOR (i = 0; i < mode; i ++) + { + IF(deg_elp[0] > i) + { + mode_broken[i] = 1; + } + } + IF (sub(deg_elp[0], t[mode]) > 0) + { + FOR (i = 0; i < 4; i ++) + { + mode_broken[i] = 1; + } + cw_offset = add(cw_offset, codeword_length); + IF (cw_counter < n_codewords - n_pccw0) + { + *error_report = ERROR_REPORT_BEC_MASK; move16(); + mode = -1; move16(); + *bfi = 1; move32(); + + BREAK; + } + ELSE + { + *bfi = 2; move32(); + array_of_trust[n_codewords - 1 - cw_counter] = 0; move16(); + CONTINUE; + } + } + + IF (deg_elp[0]) + { + IF (rs16_factorize_elp(err_pos, elp, deg_elp[0], sub(codeword_length, 1))) + { + cw_offset = add(cw_offset, codeword_length); + FOR (i = 0; i < 4; i ++) + { + mode_broken[i] = 1; + } + IF (add(n_pccw0, sub(cw_counter, n_codewords)) < 0) + { + *error_report = ERROR_REPORT_BEC_MASK; move16(); + mode = -1; move16(); + *bfi = 1; move32(); + + BREAK; + } + ELSE + { + *bfi = 2; move32(); + array_of_trust[n_codewords - 1 - cw_counter] = 0; move16(); + CONTINUE; + } + } + + rs16_calculate_errors(err_symb, err_pos, syndromes, deg_elp[0], t[mode]); + + /* correct errors and sum up number of corrected bits */ + FOR (i = 0; i < deg_elp[0]; i++) + { + iobuf[err_pos[i] + cw_offset] = GF16_ADD(iobuf[err_pos[i] + cw_offset], err_symb[i]); + *error_report = add(*error_report, rs16_bit_count_table[err_symb[i]]); + } + } + cw_offset = add(cw_offset, codeword_length); + if (add(risk_table_f[mode][deg_elp[0]].exponent, 16) > 0) + { + array_of_trust[n_codewords - 1 - cw_counter] = 0; move16(); + } + } + + *error_report &= ERROR_REPORT_BEC_MASK; + FOR (i = 0; i < 4; i ++) + { + IF (!mode_broken[i]) + { + *error_report |= error_report_ep_ok[i]; + } + } + + Dyn_Mem_Deluxe_Out(); + IF (mode >= 0) + { + return add(mode, 1); + } + + return -1; +} + +FEC_STATIC void rs16_calculate_six_syndromes(UWord8 *syndromes, UWord8 *cw, int cw_poly_deg) +{ + Dyn_Mem_Deluxe_In( + int i; + UWord8 buffer[15]; + ); + + assert(cw_poly_deg >= 12); + + FOR (i = 0; i <= cw_poly_deg; i++) + { + buffer[i] = cw[i]; move16(); + } + + syndromes[0] = buffer[0]; move16(); + syndromes[1] = buffer[0]; move16(); + syndromes[2] = buffer[0]; move16(); + syndromes[3] = buffer[0]; move16(); + syndromes[4] = buffer[0]; move16(); + syndromes[5] = buffer[0]; move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[1], 32)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[1], 64)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[1], 128)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[1], 48)); move16(); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[1], 96)); move16(); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[1], 192)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[2], 64)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[2], 48)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[2], 192)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[2], 80)); move16(); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[2], 112)); move16(); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[2], 240)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[3], 128)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[3], 192)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[3], 160)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[3], 240)); move16(); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[3], 16)); move16(); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[3], 128)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[4], 48)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[4], 80)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[4], 240)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[4], 32)); move16(); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[4], 96)); move16(); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[4], 160)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[5], 96)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[5], 112)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[5], 16)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[5], 96)); move16(); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[5], 112)); move16(); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[5], 16)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[6], 192)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[6], 240)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[6], 128)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[6], 160)); move16(); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[6], 16)); move16(); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[6], 192)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[7], 176)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[7], 144)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[7], 192)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[7], 208)); move16(); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[7], 96)); move16(); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[7], 240)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[8], 80)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[8], 32)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[8], 160)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[8], 64)); move16(); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[8], 112)); move16(); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[8], 128)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[9], 160)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[9], 128)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[9], 240)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[9], 192)); move16(); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[9], 16)); move16(); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[9], 160)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[10], 112)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[10], 96)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[10], 16)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[10], 112)); move16(); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[10], 96)); move16(); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[10], 16)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[11], 224)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[11], 176)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[11], 128)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[11], 144)); move16(); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[11], 112)); move16(); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[11], 192)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[12], 240)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[12], 160)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[12], 192)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[12], 128)); move16(); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[12], 16)); move16(); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[12], 240)); move16(); + + IF (sub(cw_poly_deg, 13) >= 0) + { + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[13], 208)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[13], 224)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[13], 160)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[13], 176)); move16(); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[13], 96)); move16(); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[13], 128)); move16(); + } + + IF (sub(cw_poly_deg, 14) >= 0) + { + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[14], 144)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[14], 208)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[14], 240)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[14], 224)); move16(); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[14], 112)); move16(); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[14], 160)); move16(); + } + + Dyn_Mem_Deluxe_Out(); +} + +FEC_STATIC void rs16_calculate_four_syndromes(UWord8 *syndromes, UWord8 *cw, int cw_poly_deg) +{ + Dyn_Mem_Deluxe_In( + int i; + UWord8 buffer[15]; + ); + + assert(cw_poly_deg >= 12); + + FOR (i = 0; i <= cw_poly_deg; i++) + { + buffer[i] = cw[i]; move16(); + } + + syndromes[0] = buffer[0]; move16(); + syndromes[1] = buffer[0]; move16(); + syndromes[2] = buffer[0]; move16(); + syndromes[3] = buffer[0]; move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[1], 32)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[1], 64)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[1], 128)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[1], 48)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[2], 64)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[2], 48)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[2], 192)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[2], 80)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[3], 128)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[3], 192)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[3], 160)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[3], 240)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[4], 48)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[4], 80)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[4], 240)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[4], 32)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[5], 96)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[5], 112)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[5], 16)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[5], 96)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[6], 192)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[6], 240)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[6], 128)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[6], 160)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[7], 176)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[7], 144)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[7], 192)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[7], 208)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[8], 80)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[8], 32)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[8], 160)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[8], 64)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[9], 160)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[9], 128)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[9], 240)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[9], 192)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[10], 112)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[10], 96)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[10], 16)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[10], 112)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[11], 224)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[11], 176)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[11], 128)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[11], 144)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[12], 240)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[12], 160)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[12], 192)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[12], 128)); move16(); + + IF (sub(cw_poly_deg, 13) >= 0) + { + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[13], 208)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[13], 224)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[13], 160)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[13], 176)); move16(); + } + + IF (sub(cw_poly_deg, 14) >= 0) + { + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[14], 144)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[14], 208)); move16(); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[14], 240)); move16(); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[14], 224)); move16(); + } + + Dyn_Mem_Deluxe_Out(); +} + +FEC_STATIC void rs16_calculate_two_syndromes(UWord8 *syndromes, UWord8 *cw, int cw_poly_deg) +{ + Dyn_Mem_Deluxe_In( + int i; + UWord8 buffer[15]; + ); + + assert(cw_poly_deg >= 12); + + FOR (i = 0; i <= cw_poly_deg; i++) + { + buffer[i] = cw[i]; move16(); + } + + syndromes[0] = buffer[0]; move16(); + syndromes[1] = buffer[0]; move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[1], 32)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[1], 64)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[2], 64)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[2], 48)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[3], 128)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[3], 192)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[4], 48)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[4], 80)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[5], 96)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[5], 112)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[6], 192)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[6], 240)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[7], 176)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[7], 144)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[8], 80)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[8], 32)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[9], 160)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[9], 128)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[10], 112)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[10], 96)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[11], 224)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[11], 176)); move16(); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[12], 240)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[12], 160)); move16(); + + IF (sub(cw_poly_deg, 13) >= 0) + { + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[13], 208)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[13], 224)); move16(); + } + + IF (sub(cw_poly_deg, 14) >= 0) + { + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[14], 144)); move16(); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[14], 208)); move16(); + } + + Dyn_Mem_Deluxe_Out(); +} + +FEC_STATIC Word8 rs16_calculate_elp(UWord8 *elp, UWord8 *syndromes, Word16 t) +/* calculates error locator polynomial vie Petterson's algorithm */ +{ + Dyn_Mem_Deluxe_In( + Word8 ret; + UWord8 det, det_inv, aux, all_s, *s; + UWord8 s22, s33, s44, s13, s14, s15; + UWord8 s23, s24, s25, s34, s35; + UWord8 a, b, c, d, e, f; + ); + + ret = 0; move16(); + all_s = 0; move16(); + s = syndromes; move16(); + elp[0] = 1; move16(); + basop_memset(elp + 1, 0, 3); + + SWITCH (t) + { + case 3: + { + /* check for errors */ + all_s = (UWord8)s_or(s[0], s_or(s[1], s_or(s[2], s_or(s[3], s_or(s[4], s[5]))))); + + IF (all_s == 0) + { + BREAK; + } + + /* assume 3 errors */ + s22 = GF16_MUL(s[1], s[1]); + s33 = GF16_MUL(s[2], s[2]); + s44 = GF16_MUL(s[3], s[3]); + s13 = GF16_MUL(s[0], s[2]); + + det = GF16_ADD(GF16_ADD(GF16_MUL(s13, s[4]), GF16_MUL(s44, s[0])), + GF16_ADD(GF16_MUL(s22, s[4]), GF16_MUL(s33, s[2]))); + + IF (det) + { + det_inv = (UWord8)shl(gf16_inv_table[det], 4); + + s14 = GF16_MUL(s[0], s[3]); + s15 = GF16_MUL(s[0], s[4]); + + s23 = GF16_MUL(s[1], s[2]); + s24 = GF16_MUL(s[1], s[3]); + s25 = GF16_MUL(s[1], s[4]); + + s34 = GF16_MUL(s[2], s[3]); + s35 = GF16_MUL(s[2], s[4]); + + a = GF16_ADD(s35, s44) << 4; + b = GF16_ADD(s15, s33) << 4; + c = GF16_ADD(s13, s22) << 4; + d = GF16_ADD(s34, s25) << 4; + e = GF16_ADD(s23, s14) << 4; + f = GF16_ADD(s24, s33) << 4; + + aux = GF16_ADD(GF16_ADD(GF16_MUL0(a, s[3]), GF16_MUL0(d, s[4])), GF16_MUL0(f, s[5])); + elp[3] = GF16_MUL0(aux, det_inv); + + aux = GF16_ADD(GF16_ADD(GF16_MUL0(d, s[3]), GF16_MUL0(b, s[4])), GF16_MUL0(e, s[5])); + elp[2] = GF16_MUL0(aux, det_inv); + + aux = GF16_ADD(GF16_ADD(GF16_MUL0(f, s[3]), GF16_MUL0(e, s[4])), GF16_MUL0(c, s[5])); + elp[1] = GF16_MUL0(aux, det_inv); + + IF (elp[3] == 0) + { + ret = (Word8) add(t, 1); + } + ELSE + { + ret = 3; move16(); + } + BREAK; + } + + /* assume two errors */ + det = GF16_ADD(GF16_MUL(syndromes[0], syndromes[2]), GF16_MUL(syndromes[1], syndromes[1])); + + IF (det) + { + det_inv = (UWord8)shl(gf16_inv_table[det], 4); + + aux = GF16_ADD(GF16_MUL(syndromes[1], syndromes[2]), GF16_MUL(syndromes[0], syndromes[3])); + elp[1] = GF16_MUL0(aux, det_inv); + + aux = GF16_ADD(GF16_MUL(syndromes[2], syndromes[2]), GF16_MUL(syndromes[1], syndromes[3])); + elp[2] = GF16_MUL0(aux, det_inv); + + /* check remaining LSF relations */ + aux = (UWord8)s_or(GF16_ADD(GF16_ADD(GF16_MUL(elp[2], s[2]), GF16_MUL(elp[1], s[3])), s[4]), + GF16_ADD(GF16_ADD(GF16_MUL(elp[2], s[3]), GF16_MUL(elp[1], s[4])), s[5])); + + aux = (UWord8)s_or(aux, elp[2] == 0); + + IF (aux != 0) + { + ret = (Word8) add(t, 1); + } + ELSE + { + ret = 2; move16(); + } + BREAK; + } + + /* assume one error */ + IF (syndromes[0] != 0) + { + elp[1] = GF16_MUL(syndromes[1], gf16_inv_table[syndromes[0]]); + + /* check remaining LSF relations */ + aux = (UWord8)s_or(s_or(GF16_ADD(GF16_MUL(elp[1], s[1]), s[2]), GF16_ADD(GF16_MUL(elp[1], s[2]), s[3])), + s_or(GF16_ADD(GF16_MUL(elp[1], s[3]), s[4]), GF16_ADD(GF16_MUL(elp[1], s[4]), s[5]))); + + aux = (UWord8)s_or(aux, elp[1] == 0); + + IF (aux != 0) + { + ret = (Word8) add(t, 1); + } + ELSE + { + ret = 1; move16(); + } + BREAK; + } + + ret = (Word8) add(t, 1); + BREAK; + } + case 2: + { + all_s = (UWord8)s_or(s[0], s_or(s[1], s_or(s[2], s[3]))); + + IF (all_s == 0) + { + BREAK; + } + + /* assume two errors */ + det = GF16_ADD(GF16_MUL(syndromes[0], syndromes[2]), GF16_MUL(syndromes[1], syndromes[1])); + + IF (det) + { + det_inv = (UWord8)shl(gf16_inv_table[det], 4); + + aux = GF16_ADD(GF16_MUL(syndromes[1], syndromes[2]), GF16_MUL(syndromes[0], syndromes[3])); + elp[1] = GF16_MUL0(aux, det_inv); + + aux = GF16_ADD(GF16_MUL(syndromes[2], syndromes[2]), GF16_MUL(syndromes[1], syndromes[3])); + elp[2] = GF16_MUL0(aux, det_inv); + + IF (elp[2] == 0) + { + ret = (Word8) add(t, 1); + } + ELSE + { + ret = 2; move16(); + } + BREAK; + } + + /* assume one error */ + IF (syndromes[0] != 0) + { + elp[1] = GF16_MUL(syndromes[1], gf16_inv_table[syndromes[0]]); + + /* check remaining LSF relation */ + aux = (UWord8)s_or(GF16_ADD(GF16_MUL(elp[1], s[1]), s[2]), GF16_ADD(GF16_MUL(elp[1], s[2]), s[3])); + aux = (UWord8)s_or(aux, elp[1] == 0); + IF (aux != 0) + { + ret = (Word8) add(t, 1); + } + ELSE + { + ret = 1; move16(); + } + BREAK; + } + + ret = (Word8) add(t, 1); + BREAK; + } + case 1: + { + all_s = (UWord8)s_or(s[0], s[1]); + + IF (all_s == 0) + { + BREAK; + } + + IF (syndromes[0] != 0) + { + elp[1] = GF16_MUL(syndromes[1], gf16_inv_table[syndromes[0]]); + IF (elp[1] == 0) + { + ret = (Word8) add(t, 1); + } + ELSE + { + ret = 1; move16(); + } + BREAK; + } + + ret = (Word8) add(t, 1); + BREAK; + } + default: assert(0 && "calculating elp of this degree not implemented"); + } + + Dyn_Mem_Deluxe_Out(); + return ret; +} + +FEC_STATIC Word16 rs16_factorize_elp(UWord8 *err_pos, UWord8 *elp, Word16 deg_elp, Word16 max_pos) +{ + Dyn_Mem_Deluxe_In( + UWord8 beta, gamma; + Word16 zeros, err_pos0, err_pos1, err_pos2, ret; + ); + + beta = 0; move16(); + gamma = 0; move16(); + zeros = 0; move16(); + ret = 0; move16(); + + SWITCH (deg_elp) + { + case 0: BREAK; + + case 1: + err_pos0 = gf16_log_g[elp[1]]; move16(); + IF (sub(err_pos0, max_pos) > 0) + { + ret = 1; move16(); + BREAK; + } + + err_pos[0] = (UWord8)err_pos0; move16(); + BREAK; + + case 2: + zeros = rs16_elp_deg2_table[s_or(elp[1], shl(elp[2], 4))]; move16(); + IF (zeros == 0) + { + Dyn_Mem_Deluxe_Out(); + return 1; + } + + err_pos0 = s_and(zeros, 15); + err_pos1 = s_and(shr(zeros, 4), 15); + + IF (sub(err_pos0, max_pos) > 0 || sub(err_pos1, max_pos) > 0) + { + ret = 1; move16(); + BREAK; + } + + err_pos[0] = (UWord8)err_pos0; move16(); + err_pos[1] = (UWord8)err_pos1; move16(); + BREAK; + + case 3: + /* beta = a*a + b, gamma = a*b + c */ + beta = GF16_ADD(GF16_MUL(elp[1], elp[1]), elp[2]); + gamma = GF16_ADD(GF16_MUL(elp[1], elp[2]), elp[3]); + zeros = rs16_elp_deg3_table[beta | gamma << 4]; + + IF (zeros == 0) + /* elp does not split over GF(16) or has multiple zeros */ + { + ret = 1; move16(); + BREAK; + } + + /* remove shift from zeros */ + err_pos0 = GF16_ADD(s_and(zeros, 15), elp[1]); + err_pos1 = GF16_ADD(s_and(shr(zeros, 4), 15), elp[1]); + err_pos2 = GF16_ADD(s_and(shr(zeros, 8), 15), elp[1]); + + IF (err_pos0 == 0 || err_pos1 == 0 || err_pos2 == 0) + { + test(); test(); + Dyn_Mem_Deluxe_Out(); + return 1; + } + + err_pos0 = gf16_log_g[err_pos0]; + err_pos1 = gf16_log_g[err_pos1]; + err_pos2 = gf16_log_g[err_pos2]; + + IF (sub(err_pos0, max_pos) > 0 || sub(err_pos1, max_pos) > 0 || sub(err_pos2, max_pos) > 0) + { + test(); test(); + ret = 1; move16(); + BREAK; + } + + err_pos[0] = (UWord8)err_pos0; move16(); + err_pos[1] = (UWord8)err_pos1; move16(); + err_pos[2] = (UWord8)err_pos2; move16(); + + BREAK; + + default: assert(0 && "invalid degree in rs16_error_locator"); + } + + Dyn_Mem_Deluxe_Out(); + return ret; +} + +FEC_STATIC void rs16_calculate_errors(UWord8 *err_symb, UWord8 *err_pos, UWord8 *syndromes, Word8 deg_elp, Word8 t) +{ + Dyn_Mem_Deluxe_In( + UWord8 det_inv; + UWord8 x0, x1, x2; + UWord8 x0sq, x1sq, x2sq; + UWord8 c0, c1, c2; + UWord8 s0, s1, s2; + UWord8 tmp; + ); + + assert(deg_elp <= t); + UNUSED(t); + + SWITCH (deg_elp) + { + case 0: BREAK; + + case 1: + err_symb[0] = GF16_MUL(gf16_g_pow[15 - err_pos[0]], syndromes[0]); move16(); + + BREAK; + + case 2: + s0 = (UWord8)shl(syndromes[0], 4); + s1 = (UWord8)shl(syndromes[1], 4); + + x0 = gf16_g_pow[err_pos[0]]; move16(); + x1 = gf16_g_pow[err_pos[1]]; move16(); + + x0sq = GF16_MUL(x0, x0); + x1sq = GF16_MUL(x1, x1); + + tmp = GF16_ADD(GF16_MUL(x0sq, x1), GF16_MUL(x1sq, x0)); + det_inv = (UWord8)shl(gf16_inv_table[tmp], 4); + + tmp = GF16_ADD(GF16_MUL0(x1sq, s0), GF16_MUL0(x1, s1)); + err_symb[0] = GF16_MUL0(tmp, det_inv); move16(); + + tmp = GF16_ADD(GF16_MUL0(x0sq, s0), GF16_MUL0(x0, s1)); + err_symb[1] = GF16_MUL0(tmp, det_inv); move16(); + + BREAK; + + case 3: + s0 = (UWord8)shl(syndromes[0], 4); + s1 = (UWord8)shl(syndromes[1], 4); + s2 = (UWord8)shl(syndromes[2], 4); + + x0 = gf16_g_pow[err_pos[0]]; move16(); + x1 = gf16_g_pow[err_pos[1]]; move16(); + x2 = gf16_g_pow[err_pos[2]]; move16(); + + x0sq = GF16_MUL(x0, x0); + x1sq = GF16_MUL(x1, x1); + x2sq = GF16_MUL(x2, x2); + + tmp = GF16_MUL(GF16_ADD(x1, x0), GF16_ADD(x2, x0)); + tmp = GF16_MUL(GF16_ADD(x2, x1), tmp); + det_inv = (UWord8)shl(gf16_inv_table[tmp], 4); + + c0 = GF16_ADD(GF16_MUL(x1, x2sq), GF16_MUL(x2, x1sq)); + c1 = GF16_ADD(x2sq, x1sq); + c2 = GF16_ADD(x2, x1); + + err_symb[0] = GF16_ADD(GF16_ADD(GF16_MUL0(c0, s0), GF16_MUL0(c1, s1)), GF16_MUL0(c2, s2)); move16(); + + c0 = GF16_ADD(GF16_MUL(x0, x2sq), GF16_MUL(x2, x0sq)); + c1 = GF16_ADD(x2sq, x0sq); + c2 = GF16_ADD(x2, x0); + + err_symb[1] = GF16_ADD(GF16_ADD(GF16_MUL0(c0, s0), GF16_MUL0(c1, s1)), GF16_MUL0(c2, s2)); move16(); + + c0 = GF16_ADD(GF16_MUL(x0, x1sq), GF16_MUL(x1, x0sq)); + c1 = GF16_ADD(x1sq, x0sq); + c2 = GF16_ADD(x1, x0); + + err_symb[2] = GF16_ADD(GF16_ADD(GF16_MUL0(c0, s0), GF16_MUL0(c1, s1)), GF16_MUL0(c2, s2)); move16(); + + tmp = GF16_MUL0(err_symb[0], det_inv); + err_symb[0] = GF16_MUL(tmp, gf16_inv_table[x0]); move16(); + + tmp = GF16_MUL0(err_symb[1], det_inv); + err_symb[1] = GF16_MUL(tmp, gf16_inv_table[x1]); move16(); + + tmp = GF16_MUL0(err_symb[2], det_inv); + err_symb[2] = GF16_MUL(tmp, gf16_inv_table[x2]); move16(); + + BREAK; + + default: assert(0 && "method not implemented\n"); BREAK; + } + + Dyn_Mem_Deluxe_Out(); +} + +/* hash functions for data validation */ + +/* hamming distance 4 */ +static const UWord32 crc14_mask[16] = {0, 17989, 35978, 51919, 71956, 89937, 103838, 119771, + 143912, 160877, 179874, 194791, 207676, 224633, 239542, 254451}; + +/* hamming distance 4 */ +static const UWord32 crc22_mask[16] = {0, 4788009, 9576018, 14356859, 19152036, 23933837, 28713718, 33500639, + 33650273, 38304072, 43214899, 47867674, 52775621, 57427436, 62346391, 67001278}; + +FEC_STATIC Word16 crc1(UWord8 *data, Word16 data_size, Word16 epmr, UWord8 *hash, Word16 hash_size, Word16 check) +{ + Dyn_Mem_Deluxe_In( + UWord32 const *mask; + int shift, i, fail; + UWord32 rem; + ); + + fail = 0; move16(); + rem = 0; move16(); + + assert(hash_size > 0); + + SWITCH (hash_size) + { + case 2: + shift = 14; move16(); + mask = crc14_mask; move32(); + BREAK; + case 3: + shift = 22; move16(); + mask = crc22_mask; move32(); + BREAK; + default: + shift = 0; + mask = 0; + assert(0 && "crc hash size not implemented"); + } + + /* data array contains 4-bit words */ + FOR (i = data_size - 1; i >= 0; i--) + { + rem = UL_xor(UL_lshl(rem, 4), data[i]); move32(); + rem = UL_xor(rem, mask[UL_and(UL_lshr(rem, shift), 15)]); move32(); + } + + rem = UL_xor(UL_lshl(rem, 4), UL_lshl(epmr, 2)); + rem = UL_xor(rem, mask[UL_and(UL_lshr(rem, shift), 15)]); move32(); + + FOR (i = 0; i < 2 * hash_size - 1; i++) + { + rem = UL_lshl(rem, 4); + rem = UL_xor(rem, mask[UL_and(UL_lshr(rem, shift), 15)]); move32(); + } + + rem = UL_xor(rem, UL_lshl((UWord32)epmr, shift)); move32(); + + IF (check) + { + /* test hash value */ + FOR (i = 0; i < 2 * hash_size; i++) + { + fail = s_or(fail, UL_xor(hash[i], UL_and(UL_lshr(rem, shl(i, 2)), 15))); move32(); + } + } + ELSE + { + /* write hash value */ + for (i = 0; i < 2 * hash_size; i++) + { + hash[i] = (UWord8)UL_and(UL_lshr(rem, shl(i, 2)), 15); move32(); + } + } + + Dyn_Mem_Deluxe_Out(); + return fail; +} + +/* hamming distance = 4 */ +static const UWord32 crc16_mask[16] = {0, 107243, 190269, 214486, 289937, 380538, 428972, 469319, + 579874, 621513, 671263, 761076, 832947, 857944, 938638, 1044581}; + +FEC_STATIC Word16 crc2(UWord8 *data, Word16 data_size, UWord8 *hash, Word16 hash_size, Word16 check) +{ + Dyn_Mem_Deluxe_In( + UWord32 const *mask; + int shift, i, fail; + UWord32 rem; + ); + + fail = 0; move16(); + rem = 0; move16(); + + assert(hash_size > 0); + + SWITCH (hash_size) + { + case 2: + shift = 16; move16(); + mask = crc16_mask; move32(); + BREAK; + default: + shift = 0; + mask = 0; + assert(0 && "crc hash size not implemented"); + } + + /* data array contains 4-bit words */ + FOR (i = data_size - 1; i >= 0; i--) + { + rem = UL_xor(UL_lshl(rem, 4), data[i]); move32(); + rem = UL_xor(rem, mask[UL_and(UL_lshr(rem, shift), 15)]); move32(); + } + + FOR (i = 0; i < 2 * hash_size; i++) + { + rem = UL_lshl(rem, 4); + rem = UL_xor(rem, mask[UL_and(UL_lshr(rem, shift), 15)]); move32(); + } + + IF (check) + { + /* test hash value */ + FOR (i = 0; i < 2 * hash_size; i++) + { + fail = s_or(fail, UL_xor(hash[i], UL_and(UL_lshr(rem, shl(i, 2)), 15))); move32(); + } + } + ELSE + { + /* write hash value */ + FOR (i = 0; i < 2 * hash_size; i++) + { + hash[i] = (UWord8)UL_and(UL_lshr(rem, shl(i, 2)), 15); move32(); + } + } + + Dyn_Mem_Deluxe_Out(); + return fail; +} + +/* simple float implementation */ + +FEC_STATIC simple_float simple_float_mul(simple_float op1, simple_float op2) +{ + Dyn_Mem_Deluxe_In( + simple_float rop; + Word32 aux; + ); + aux = L_shr(L_mult0(op1.mantissa, op2.mantissa), 14); + rop.exponent = add(op1.exponent, op2.exponent); + IF (L_and(aux, 32768L)) + { + aux = L_shr(aux, 1); + rop.exponent = add(rop.exponent, 1); + } + rop.mantissa = extract_l(aux); + Dyn_Mem_Deluxe_Out(); + return rop; +} + +/* Auxiliary */ + +FEC_STATIC Word16 simple_float_cmp(simple_float op1, simple_float op2) +/* returns 1 if op1 > op2, 0 if op1 = op2, and -1 if op1 < op2 */ +{ + Dyn_Mem_Deluxe_In( + Word16 rval; + Word16 mdiff; + Word16 ediff; + ); + + rval = 0; move16(); + + ediff = sub(op1.exponent, op2.exponent); + mdiff = sub(op1.mantissa, op2.mantissa); + + IF (ediff == 0) + { + if (mdiff > 0) + { + rval = 1; + } + if (mdiff < 0) + { + rval = -1; + } + } + ELSE + { + if (ediff > 0) + { + rval = 1; + } + if (ediff < 0) + { + rval = -1; + } + } + + Dyn_Mem_Deluxe_Out(); + return rval; +} + + diff --git a/lib_lc3plus/apply_global_gain_fx.c b/lib_lc3plus/apply_global_gain_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..a3299d8630719bb26ffbefd587729cbdfbd8ace5 --- /dev/null +++ b/lib_lc3plus/apply_global_gain_fx.c @@ -0,0 +1,66 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +void processApplyGlobalGain_fx(Word32 x[], Word16 *x_e, Word16 xLen, Word16 global_gain_idx, Word16 global_gain_off) +{ + Word32 i; +#ifdef ENABLE_HR_MODE + Word32 global_gain; +#else + Word16 global_gain; +#endif + Word16 global_gain_e; + Word32 tmp32; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processApplyGlobalGain_fx", sizeof(struct { + Counter i; + Word16 global_gain, global_gain_e; + Word32 tmp32; + })); +#endif + +#ifdef ENABLE_HR_MODE + /* 1 / (28 * log 2) is 0x797D in Q18, L_shl_pos by 7 results in Q25 tmp32 */ + /* round(2^31 / (28 * log10(2))) = 254778081 */ + //tmp32 = L_shl_pos(Mpy_32_16_lc3plus(254778081, add(global_gain_idx, global_gain_off)), 9); + Word32 mh; + UWord16 ml; + + Mpy_32_16_ss(254778081, add(global_gain_idx, global_gain_off), &mh, &ml); + tmp32 = L_shl_pos(mh, 9) | L_deposit_l((shr((Word16)ml, 7)) & 0x1ff); + move16(); + /* Uses an argument in Q25 */ + global_gain = BASOP_Util_InvLog2_lc3plus(L_or(tmp32, (Word32)0xFE000000)); +#else + tmp32 = L_shl_pos(L_mult0(add(global_gain_idx, global_gain_off), 0x797D), 7); + /* Uses an argument in Q25 */ + global_gain = round_fx(BASOP_Util_InvLog2_lc3plus(L_or(tmp32, (Word32)0xFE000000))); +#endif + global_gain_e = add(extract_l(L_shr_pos(tmp32, 25)), 1); + + FOR (i = 0; i < xLen; i++) + { +#ifdef ENABLE_HR_MODE + x[i] = Mpy_32_32_lc3plus(x[i], global_gain); +#else + x[i] = Mpy_32_16_lc3plus(x[i], global_gain); +#endif + move32(); + } + + *x_e = add(*x_e, global_gain_e); move16(); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + diff --git a/lib_lc3plus/ari_codec.c b/lib_lc3plus/ari_codec.c new file mode 100644 index 0000000000000000000000000000000000000000..46ad0a532fe223f9573dd8da1daac8402d3d4224 --- /dev/null +++ b/lib_lc3plus/ari_codec.c @@ -0,0 +1,2465 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + + +typedef struct +{ + Word16 inv_bin; + Word16 numbytes; + Word16 c_bp; + Word16 c_bp_side; + Word16 bytes; + Word16 b_left; + Word16 b_right; + Word16 enc; + Word16 sim_dec; + Word16 bfi; + Word16 be_bp_left; + Word16 be_bp_right; +} Pc_State_fx; + +typedef struct +{ + UWord32 ac_low_fx; + UWord32 ac_range_fx; + Word16 ac_cache_fx; + Word16 ac_carry_fx; + Word16 ac_carry_count_fx; +} Encoder_State_fx; + +typedef struct +{ + UWord32 ac_low_fx; + UWord32 ac_range_fx; + UWord32 ac_help_fx; + Word16 BER_detect; + Pc_State_fx pc; +} Decoder_State_fx; + +static void ac_dec_init_fx(UWord8 *ptr, Word16 *bp, Word16 *bp_side, Word16 *mask_side, + Decoder_State_fx *st_fx /* i/o: Decoder State */ +); + +static __forceinline void pc_init_fx(Word16 n_pc, Word16 numbytes, Word16 be_bp_left, Word16 be_bp_right, Word16 L_spec, + Word16 enc, Word16 sim_dec, Word16 bfi, Pc_State_fx *pc /* i/o: Pc State */ +); +static __forceinline Word16 check_pc_bytes(Word16 *bp, Word16 *bp_side, Word16 *mask_side, Word16 cur_bin, + Word16 from_left, Pc_State_fx *pc /* i/o: Pc State */ +); + +static void ac_enc_init_fx(Encoder_State_fx *st_fx /* i/o: Encoder state */ +); + +static void ac_enc_shift_fx(UWord8 *ptr, Word16 *bp, Encoder_State_fx *st_fx /* i/o: Encoder state */ +); + +static void write_indice_forward(UWord8 *ptr, Word16 bp, Word16 indice, Word16 numbits); + +static void ac_encode_fx(UWord8 *ptr, Word16 *bp, Encoder_State_fx *st_fx, /* i/o: Encoder state */ + UWord32 cum_freq, /* i : Cumulative frequency up to symbol */ + UWord32 sym_freq /* i : Symbol probability */ +); + +static Word16 ac_enc_finish_fx(UWord8 *ptr, Word16 *bp, Encoder_State_fx *st_fx /* i/o: Encoder state */ +); + +static Word16 ac_decode_fx( /* o : Decoded cumulative frequency */ + Decoder_State_fx *st_fx, /* i/o: Decoder State */ + Word16 pki); +static Word16 ac_decode_tns_order( /* o : Decoded cumulative frequency */ + Decoder_State_fx *st_fx, /* i/o: Decoder State */ + Word16 enable_lpc_weighting); +static Word16 ac_decode_tns_coef( /* o : Decoded cumulative frequency */ + Decoder_State_fx *st_fx, /* i/o: Decoder State */ + Word16 pki); +static Word16 ac_dec_update_fx(UWord8 *ptr, Word16 *bp, Word16 *bp_side, Word16 *mask_side, Word16 cur_bin, + Decoder_State_fx *st_fx, /* i/o: Decoder State */ + UWord32 cum_freq, /* i : Cumulative frequency */ + UWord32 sym_freq /* i : Symbol frequency */ +); + +/*************************************************************************/ + +# ifdef ENABLE_HR_MODE + +Word16 processAriEncoder_fx(UWord8 *bytes, Word16 bp_side_in, Word16 mask_side_in, Word16 nbbits, Word32 xq[], + Word16 *tns_order, Word16 tns_numfilters, Word16 *tns_idx, Word16 lastnz, + Word16 *codingdata, UWord8 *resBits, Word16 numResBits, Word16 lsbMode, + Word16 enable_lpc_weighting, Word8 *scratchBuffer) +{ + Word16 resbit, i1, i2; + + Dyn_Mem_Deluxe_In(Encoder_State_fx st; Word16 bp, bp_side, mask_side, extra_bits; + Word32 a1, b1, a1_i, b1_i, a1_msb, b1_msb; Word16 lev1; Word16 nbits_side; Word16 tmp; + Word16 fill_bits; UWord8 * ptr; Word16 numResBitsEnc; Word16 * lsb, nlsbs; Word32 i, n, k, lev;); + + lsb = (Word16 *)scratchAlign(scratchBuffer, 0); /* size = 2 * lastnz */ + + /* Init */ + a1_i = 0; + move16(); + b1_i = 1; + move16(); + bp = 0; + move16(); + numResBitsEnc = 0; + move16(); + nlsbs = 0; + move16(); + ptr = bytes; + bp_side = bp_side_in; + move16(); + mask_side = mask_side_in; + move16(); + + /*Start Encoding*/ + ac_enc_init_fx(&st); + + /* TNS data */ + FOR (n = 0; n < tns_numfilters; n++) + { + IF (tns_order[n] > 0) + { + ac_encode_fx(ptr, &bp, &st, ac_tns_order_cumfreq[enable_lpc_weighting][tns_order[n] - 1], + ac_tns_order_freq[enable_lpc_weighting][tns_order[n] - 1]); + FOR (k = 0; k < tns_order[n]; k++) + { + ac_encode_fx(ptr, &bp, &st, ac_tns_coef_cumfreq[k][tns_idx[MAXLAG * n + k]], + ac_tns_coef_freq[k][tns_idx[MAXLAG * n + k]]); + } + } + } + + IF (lsbMode == 0) + { + + /*Main Loop through the 2-tuples*/ + FOR (k = 0; k < lastnz; k += 2) + { + IF (codingdata[1] < 0) + { + ac_encode_fx(ptr, &bp, &st, 0, + ari_spec_freq[ari_spec_lookup[codingdata[0]]][0]); + } + ELSE IF (codingdata[1] == 0) + { + ac_encode_fx(ptr, &bp, &st, ari_spec_cumfreq[ari_spec_lookup[codingdata[0]]][codingdata[2]], + ari_spec_freq[ari_spec_lookup[codingdata[0]]][codingdata[2]]); + IF (xq[a1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, L_lshr(xq[a1_i], 31)); + } + IF (xq[b1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, L_lshr(xq[b1_i], 31)); + } + } + ELSE IF (sub(codingdata[1], 1) == 0) + { + ac_encode_fx(ptr, &bp, &st, ari_spec_cumfreq[ari_spec_lookup[codingdata[0]]][VAL_ESC], + ari_spec_freq[ari_spec_lookup[codingdata[0]]][VAL_ESC]); + ac_encode_fx(ptr, &bp, &st, + ari_spec_cumfreq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[1]]][codingdata[2]], + ari_spec_freq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[1]]][codingdata[2]]); + write_bit_backward(ptr, &bp_side, &mask_side, L_and(xq[a1_i], 1)); + write_bit_backward(ptr, &bp_side, &mask_side, L_and(xq[b1_i], 1)); + IF (xq[a1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, L_lshr(xq[a1_i], 31)); + } + IF (xq[b1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, L_lshr(xq[b1_i], 31)); + } + } + ELSE + { + a1 = L_abs(xq[a1_i]); + b1 = L_abs(xq[b1_i]); + FOR (lev = 0; lev < codingdata[1]; lev++) + { + lev1 = s_min(lev, 3); + ac_encode_fx(ptr, &bp, &st, + ari_spec_cumfreq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][VAL_ESC], + ari_spec_freq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][VAL_ESC]); + write_bit_backward(ptr, &bp_side, &mask_side, s_and(L_shr_pos(a1, lev), 1)); + write_bit_backward(ptr, &bp_side, &mask_side, s_and(L_shr_pos(b1, lev), 1)); + } + lev1 = s_min(codingdata[1], 3); + ac_encode_fx(ptr, &bp, &st, + ari_spec_cumfreq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][codingdata[2]], + ari_spec_freq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][codingdata[2]]); + IF (xq[a1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, L_lshr(xq[a1_i], 31)); + } + IF (xq[b1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, L_lshr(xq[b1_i], 31)); + } + } + + a1_i += 2; + b1_i += 2; + codingdata += 3; + + } /*end of the 2-tuples loop*/ + } + ELSE + { + /*Main Loop through the 2-tuples*/ + FOR (k = 0; k < lastnz; k += 2) + { + IF (codingdata[1] < 0) + { + ac_encode_fx(ptr, &bp, &st, 0, + ari_spec_freq[ari_spec_lookup[codingdata[0]]][0]); + } + ELSE IF (codingdata[1] == 0) + { + ac_encode_fx(ptr, &bp, &st, ari_spec_cumfreq[ari_spec_lookup[codingdata[0]]][codingdata[2]], + ari_spec_freq[ari_spec_lookup[codingdata[0]]][codingdata[2]]); + IF (xq[a1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, L_lshr(xq[a1_i], 31)); + } + IF (xq[b1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, L_lshr(xq[b1_i], 31)); + } + } + ELSE IF (sub(codingdata[1], 1) == 0) + { + ac_encode_fx(ptr, &bp, &st, ari_spec_cumfreq[ari_spec_lookup[codingdata[0]]][VAL_ESC], + ari_spec_freq[ari_spec_lookup[codingdata[0]]][VAL_ESC]); + ac_encode_fx(ptr, &bp, &st, + ari_spec_cumfreq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[1]]][codingdata[2]], + ari_spec_freq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[1]]][codingdata[2]]); + a1_msb = s_and(codingdata[2], 0x3); + tmp = L_and(xq[a1_i], 1); + lsb[nlsbs++] = tmp; + move16(); + test(); + IF (a1_msb == 0 && tmp > 0) + { + if (xq[a1_i] > 0) + { + lsb[nlsbs++] = 0; + move16(); + } + if (xq[a1_i] < 0) + { + lsb[nlsbs++] = 1; + move16(); + } + } + IF (a1_msb != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, L_lshr(xq[a1_i], 31)); + } + b1_msb = shr_pos(codingdata[2], 2); + tmp = L_and(xq[b1_i], 1); + lsb[nlsbs++] = tmp; + move16(); + test(); + IF (b1_msb == 0 && tmp > 0) + { + if (xq[b1_i] > 0) + { + lsb[nlsbs++] = 0; + move16(); + } + if (xq[b1_i] < 0) + { + lsb[nlsbs++] = 1; + move16(); + } + } + IF (b1_msb != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, L_lshr(xq[b1_i], 31)); + } + } + ELSE + { + a1 = L_abs(xq[a1_i]); + b1 = L_abs(xq[b1_i]); + a1_msb = L_shr_pos(a1, 1); + tmp = L_and(a1, 1); + lsb[nlsbs++] = tmp; + move16(); + test(); + IF (a1_msb == 0 && tmp > 0) + { + if (xq[a1_i] > 0) + { + lsb[nlsbs++] = 0; + move16(); + } + if (xq[a1_i] < 0) + { + lsb[nlsbs++] = 1; + move16(); + } + } + b1_msb = L_shr_pos(b1, 1); + tmp = s_and(b1, 1); + lsb[nlsbs++] = tmp; + move16(); + test(); + IF (b1_msb == 0 && tmp > 0) + { + if (xq[b1_i] > 0) + { + lsb[nlsbs++] = 0; + move16(); + } + if (xq[b1_i] < 0) + { + lsb[nlsbs++] = 1; + move16(); + } + } + ac_encode_fx(ptr, &bp, &st, ari_spec_cumfreq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[0]]][VAL_ESC], + ari_spec_freq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[0]]][VAL_ESC]); + FOR (lev = 1; lev < codingdata[1]; lev++) + { + lev1 = s_min(lev, 3); + ac_encode_fx(ptr, &bp, &st, + ari_spec_cumfreq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][VAL_ESC], + ari_spec_freq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][VAL_ESC]); + write_bit_backward(ptr, &bp_side, &mask_side, s_and(L_shr_pos(a1, lev), 1)); + write_bit_backward(ptr, &bp_side, &mask_side, s_and(L_shr_pos(b1, lev), 1)); + } + lev1 = s_min(codingdata[1], 3); + ac_encode_fx(ptr, &bp, &st, + ari_spec_cumfreq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][codingdata[2]], + ari_spec_freq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][codingdata[2]]); + IF (a1_msb != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, L_lshr(xq[a1_i], 31)); + } + IF (b1_msb != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, L_lshr(xq[b1_i], 31)); + } + } + + a1_i += 2; + b1_i += 2; + codingdata += 3; + + } /*end of the 2-tuples loop*/ + } + + /* Side bits (in sync with the decoder) */ + nbits_side = sub(nbbits, add(shl_pos(bp_side, 3), sub(norm_s(mask_side), 6))); + + /* Residual bits (in sync with the decoder) */ + extra_bits = sub(norm_ul(st.ac_range_fx), 6); + if (st.ac_cache_fx >= 0) + { + extra_bits = add(extra_bits, 8); + } + if (st.ac_carry_count_fx > 0) + { + extra_bits = add(extra_bits, shl_pos(st.ac_carry_count_fx, 3)); + } + + n = s_max(sub(nbbits, add(shl_pos(bp, 3), add(extra_bits, nbits_side))), 0); + move16(); + + IF (lsbMode == 0) + { + numResBitsEnc = s_min(numResBits, n); + FOR (i = 0; i < numResBitsEnc; i++) + { + resbit = 0; move16(); + i1 = shr(i, RESBITS_PACK_SHIFT); + i2 = s_and(i, RESBITS_PACK_MASK); + if (s_and(resBits[i1], shl(1, i2))) + { + resbit = 1; + } + write_bit_backward(ptr, &bp_side, &mask_side, resbit); + } + } + ELSE + { + nlsbs = s_min(nlsbs, n); + FOR (k = 0; k < nlsbs; k++) + { + write_bit_backward(ptr, &bp_side, &mask_side, lsb[k]); + } + } + + /* End arithmetic coder, overflow management */ + extra_bits = ac_enc_finish_fx(ptr, &bp, &st); + + /* Fill bits (for debugging, the exact number of fill bits cannot be computed in the decoder)*/ + fill_bits = nbbits - (bp * 8 + extra_bits + nbits_side + nlsbs + numResBitsEnc); + + Dyn_Mem_Deluxe_Out(); + + return fill_bits; +} + +# else /* ENABLE_HR_MODE */ + +Word16 processAriEncoder_fx(UWord8 *bytes, Word16 bp_side_in, Word16 mask_side_in, Word16 nbbits, Word16 xq[], + Word16 *tns_order, Word16 tns_numfilters, Word16 *tns_idx, Word16 lastnz, + Word16 *codingdata, UWord8 *resBits, Word16 numResBits, Word16 lsbMode, + Word16 enable_lpc_weighting, Word8 *scratchBuffer) +{ +#ifdef ENABLE_HR_MODE + Dyn_Mem_Deluxe_In(Encoder_State_fx st; Word16 bp, bp_side, mask_side, extra_bits; + Word16 a1, b1, a1_i, b1_i, a1_msb, b1_msb; Word16 lev1; Word16 nbits_side; Word16 tmp; + Word16 fill_bits; UWord8 * ptr; Word16 numResBitsEnc; Word16 * lsb, nlsbs; Counter i, n, k, lev; + ); +#else + Dyn_Mem_Deluxe_In(Encoder_State_fx st; Word16 bp, bp_side, mask_side, extra_bits; + Word16 a1, b1, a1_i, b1_i, a1_msb, b1_msb; Word16 lev1; Word16 nbits_side; Word16 tmp; + Word16 fill_bits; UWord8 * ptr; Word16 numResBitsEnc; Word16 * lsb, nlsbs; Counter i, n, k, lev; + ); +#endif + + + lsb = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * MAX_LEN * 2 bytes */ + + /* Init */ + a1_i = 0; + move16(); + b1_i = 1; + move16(); + bp = 0; + move16(); + numResBitsEnc = 0; + move16(); + nlsbs = 0; + move16(); + ptr = bytes; + bp_side = bp_side_in; + move16(); + mask_side = mask_side_in; + move16(); + + /*Start Encoding*/ + ac_enc_init_fx(&st); + + /* TNS data */ + FOR (n = 0; n < tns_numfilters; n++) + { + IF (tns_order[n] > 0) + { + ac_encode_fx(ptr, &bp, &st, ac_tns_order_cumfreq[enable_lpc_weighting][tns_order[n] - 1], + ac_tns_order_freq[enable_lpc_weighting][tns_order[n] - 1]); + FOR (k = 0; k < tns_order[n]; k++) + { + ac_encode_fx(ptr, &bp, &st, ac_tns_coef_cumfreq[k][tns_idx[MAXLAG * n + k]], + ac_tns_coef_freq[k][tns_idx[MAXLAG * n + k]]); + } + } + } + + IF (lsbMode == 0) + { + + /*Main Loop through the 2-tuples*/ + FOR (k = 0; k < lastnz; k += 2) + { + IF (codingdata[1] < 0) + { + ac_encode_fx(ptr, &bp, &st, ari_spec_cumfreq[ari_spec_lookup[codingdata[0]]][0], + ari_spec_freq[ari_spec_lookup[codingdata[0]]][0]); + } + ELSE IF (codingdata[1] == 0) + { + ac_encode_fx(ptr, &bp, &st, ari_spec_cumfreq[ari_spec_lookup[codingdata[0]]][codingdata[2]], + ari_spec_freq[ari_spec_lookup[codingdata[0]]][codingdata[2]]); + IF (xq[a1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, lshr(xq[a1_i], 15)); + } + IF (xq[b1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, lshr(xq[b1_i], 15)); + } + } + ELSE IF (sub(codingdata[1], 1) == 0) + { + ac_encode_fx(ptr, &bp, &st, ari_spec_cumfreq[ari_spec_lookup[codingdata[0]]][VAL_ESC], + ari_spec_freq[ari_spec_lookup[codingdata[0]]][VAL_ESC]); + ac_encode_fx(ptr, &bp, &st, + ari_spec_cumfreq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[1]]][codingdata[2]], + ari_spec_freq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[1]]][codingdata[2]]); + write_bit_backward(ptr, &bp_side, &mask_side, s_and(xq[a1_i], 1)); + write_bit_backward(ptr, &bp_side, &mask_side, s_and(xq[b1_i], 1)); + IF (xq[a1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, lshr(xq[a1_i], 15)); + } + IF (xq[b1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, lshr(xq[b1_i], 15)); + } + } + ELSE + { + a1 = abs_s(xq[a1_i]); + b1 = abs_s(xq[b1_i]); + FOR (lev = 0; lev < codingdata[1]; lev++) + { + lev1 = s_min(lev, 3); + ac_encode_fx(ptr, &bp, &st, + ari_spec_cumfreq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][VAL_ESC], + ari_spec_freq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][VAL_ESC]); + write_bit_backward(ptr, &bp_side, &mask_side, s_and(shr_pos(a1, lev), 1)); + write_bit_backward(ptr, &bp_side, &mask_side, s_and(shr_pos(b1, lev), 1)); + } + lev1 = s_min(codingdata[1], 3); + ac_encode_fx(ptr, &bp, &st, + ari_spec_cumfreq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][codingdata[2]], + ari_spec_freq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][codingdata[2]]); + IF (xq[a1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, lshr(xq[a1_i], 15)); + } + IF (xq[b1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, lshr(xq[b1_i], 15)); + } + } + + a1_i += 2; + b1_i += 2; + codingdata += 3; + + } /*end of the 2-tuples loop*/ + } + ELSE + { + /*Main Loop through the 2-tuples*/ + FOR (k = 0; k < lastnz; k += 2) + { + IF (codingdata[1] < 0) + { + ac_encode_fx(ptr, &bp, &st, ari_spec_cumfreq[ari_spec_lookup[codingdata[0]]][0], + ari_spec_freq[ari_spec_lookup[codingdata[0]]][0]); + } + ELSE IF (codingdata[1] == 0) + { + ac_encode_fx(ptr, &bp, &st, ari_spec_cumfreq[ari_spec_lookup[codingdata[0]]][codingdata[2]], + ari_spec_freq[ari_spec_lookup[codingdata[0]]][codingdata[2]]); + IF (xq[a1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, lshr(xq[a1_i], 15)); + } + IF (xq[b1_i] != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, lshr(xq[b1_i], 15)); + } + } + ELSE IF (sub(codingdata[1], 1) == 0) + { + ac_encode_fx(ptr, &bp, &st, ari_spec_cumfreq[ari_spec_lookup[codingdata[0]]][VAL_ESC], + ari_spec_freq[ari_spec_lookup[codingdata[0]]][VAL_ESC]); + ac_encode_fx(ptr, &bp, &st, + ari_spec_cumfreq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[1]]][codingdata[2]], + ari_spec_freq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[1]]][codingdata[2]]); + a1_msb = s_and(codingdata[2], 0x3); + tmp = s_and(xq[a1_i], 1); + lsb[nlsbs++] = tmp; + move16(); + test(); + IF (a1_msb == 0 && tmp > 0) + { + if (xq[a1_i] > 0) + { + lsb[nlsbs++] = 0; + move16(); + } + if (xq[a1_i] < 0) + { + lsb[nlsbs++] = 1; + move16(); + } + } + IF (a1_msb != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, lshr(xq[a1_i], 15)); + } + b1_msb = shr_pos(codingdata[2], 2); + tmp = s_and(xq[b1_i], 1); + lsb[nlsbs++] = tmp; + move16(); + test(); + IF (b1_msb == 0 && tmp > 0) + { + if (xq[b1_i] > 0) + { + lsb[nlsbs++] = 0; + move16(); + } + if (xq[b1_i] < 0) + { + lsb[nlsbs++] = 1; + move16(); + } + } + IF (b1_msb != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, lshr(xq[b1_i], 15)); + } + } + ELSE + { + a1 = abs_s(xq[a1_i]); + b1 = abs_s(xq[b1_i]); + a1_msb = shr_pos(a1, 1); + tmp = s_and(a1, 1); + lsb[nlsbs++] = tmp; + move16(); + test(); + IF (a1_msb == 0 && tmp > 0) + { + if (xq[a1_i] > 0) + { + lsb[nlsbs++] = 0; + move16(); + } + if (xq[a1_i] < 0) + { + lsb[nlsbs++] = 1; + move16(); + } + } + b1_msb = shr_pos(b1, 1); + tmp = s_and(b1, 1); + lsb[nlsbs++] = tmp; + move16(); + test(); + IF (b1_msb == 0 && tmp > 0) + { + if (xq[b1_i] > 0) + { + lsb[nlsbs++] = 0; + move16(); + } + if (xq[b1_i] < 0) + { + lsb[nlsbs++] = 1; + move16(); + } + } + ac_encode_fx(ptr, &bp, &st, ari_spec_cumfreq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[0]]][VAL_ESC], + ari_spec_freq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[0]]][VAL_ESC]); + FOR (lev = 1; lev < codingdata[1]; lev++) + { + lev1 = s_min(lev, 3); + ac_encode_fx(ptr, &bp, &st, + ari_spec_cumfreq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][VAL_ESC], + ari_spec_freq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][VAL_ESC]); + write_bit_backward(ptr, &bp_side, &mask_side, s_and(shr_pos(a1, lev), 1)); + write_bit_backward(ptr, &bp_side, &mask_side, s_and(shr_pos(b1, lev), 1)); + } + lev1 = s_min(codingdata[1], 3); + ac_encode_fx(ptr, &bp, &st, + ari_spec_cumfreq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][codingdata[2]], + ari_spec_freq[ari_spec_lookup[codingdata[0] + Tab_esc_nb[lev1]]][codingdata[2]]); + IF (a1_msb != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, lshr(xq[a1_i], 15)); + } + IF (b1_msb != 0) + { + write_bit_backward(ptr, &bp_side, &mask_side, lshr(xq[b1_i], 15)); + } + } + + a1_i += 2; + b1_i += 2; + codingdata += 3; + + } /*end of the 2-tuples loop*/ + } + + /* Side bits (in sync with the decoder) */ + nbits_side = sub(nbbits, add(shl_pos(bp_side, 3), sub(norm_s(mask_side), 6))); + + /* Residual bits (in sync with the decoder) */ + extra_bits = sub(norm_ul(st.ac_range_fx), 6); + if (st.ac_cache_fx >= 0) + { + extra_bits = add(extra_bits, 8); + } + if (st.ac_carry_count_fx > 0) + { + extra_bits = add(extra_bits, shl_pos(st.ac_carry_count_fx, 3)); + } + + n = s_max(sub(nbbits, add(shl_pos(bp, 3), add(extra_bits, nbits_side))), 0); + move16(); + + IF (lsbMode == 0) + { + numResBitsEnc = s_min(numResBits, n); + FOR (i = 0; i < numResBitsEnc; i++) + { + FOR (i = 0; i < numResBitsEnc; i++) + { + write_bit_backward(ptr, &bp_side, &mask_side, resBits[i]); + } + } + } + ELSE + { + nlsbs = s_min(nlsbs, n); + FOR (k = 0; k < nlsbs; k++) + { + write_bit_backward(ptr, &bp_side, &mask_side, lsb[k]); + } + } + + /* End arithmetic coder, overflow management */ + extra_bits = ac_enc_finish_fx(ptr, &bp, &st); + + /* Fill bits (for debugging, the exact number of fill bits cannot be computed in the decoder)*/ + fill_bits = nbbits - (bp * 8 + extra_bits + nbits_side + nlsbs + numResBitsEnc); + + Dyn_Mem_Deluxe_Out(); + return fill_bits; +} + +#endif /* ENABLE_HR_MODE */ + +void processAriDecoder_fx(UWord8 *bytes, Word16 *bp_side, Word16 *mask_side, Word16 nbbits, Word16 L_spec, + Word16 fs_idx, Word16 enable_lpc_weighting, Word16 tns_numfilters, Word16 lsbMode, + Word16 lastnz, Word16 *bfi, Word16 *tns_order, Word16 fac_ns_idx, Word16 gg_idx, + Word16 frame_dms, + Word16 n_pc, Word16 be_bp_left, Word16 be_bp_right, Word16 mode, Word16 *spec_inv_idx, + Word16 *b_left, + Word16 *resBits, +# ifdef ENABLE_HR_MODE + Word32 *x, +# else + Word16 *x, +# endif + Word16 *nf_seed, UWord8 *resQdata, Word16 *tns_idx, Word16 *zero_frame, Word8 *scratchBuffer +# ifdef ENABLE_HR_MODE + , Word16 hrmode +# endif +) +{ + Decoder_State_fx st; +# ifdef ENABLE_HR_MODE + Word16 resbit, i1, i2; + Word32 a, b; +# else + Word16 a, b; +# endif + Word16 t, a1, b1, a1_i, b1_i, bp; + Word16 esc_nb; + Word16 rateFlag; + Word16 r; + Word16 nt_half; + Word16 c; + Word16 nbits_side, extra_bits, nbits_ari; + UWord8 * ptr; + Word32 tmp32; + Word16 lsb_ind_c; + Word16 * lsb_ind; + Word16 tmp; + Word32 n, k, lev; + Word32 i; + Word16 max_lev = 14; + +#ifdef DYNMEM_COUNT +struct _dynmem +{ +Decoder_State_fx st; + Pc_State_fx pc; + Word16 resbit, i1, i2; +# ifdef ENABLE_HR_MODE + Word32 a, b; +# else + Word16 a, b; +# endif + Word16 t, a1, b1, a1_i, b1_i, bp; + Word16 esc_nb; + Word16 rateFlag; + Word16 r; + Word16 nt_half; + Word16 c; + Word16 nbits_side, extra_bits, nbits_ari; + UWord8 * ptr; + Word32 tmp32; + Word16 lsb_ind_c; + Word16 * lsb_ind; + Word16 tmp; + Counter i, n, k, lev; + }; + Dyn_Mem_In("processAriDecoder_fx", sizeof(struct _dynmem)); +#endif + +# ifdef ENABLE_HR_MODE + if (hrmode == 1) + { + max_lev = max_lev + 8; + } +# endif + + lsb_ind = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size 2 * MAX_LEN bytes */ + + /* Rate flag */ + rateFlag = 0; + move16(); +# ifdef ENABLE_HR_MODE + if (fs_idx != 5) /* Don't update rateFlag for 96000 Hz */ +# endif + { + if (sub(nbbits, add(160, DEPR_i_mult(fs_idx, 160))) > 0) + { + rateFlag = 2 << NBITS_CONTEXT; + move16(); + } + } + + pc_init_fx(n_pc, shr_pos(nbbits, 3), be_bp_left, be_bp_right, L_spec, mode==1, mode==2, *bfi, &st.pc); + + /* Init */ + nt_half = shr_pos(L_spec, 1); + c = 0; + move16(); + t = 0; + move16(); + a1_i = 0; + move16(); + b1_i = 1; + move16(); + bp = 0; + move16(); + if (mode != 1) + { + bp = add(bp, st.pc.bytes); + move16(); + } + *spec_inv_idx = L_spec; + move16(); + *b_left = -1; + move16(); + lsb_ind_c = 0; + move16(); + +ptr = bytes; + +/* Start Decoding */ +ac_dec_init_fx(ptr, &bp, bp_side, mask_side, &st); + + /* Decode TNS data */ + tmp = MAXLAG; +IF (sub(frame_dms, 25) == 0) +{ +tmp = shr_pos(tmp, 1); +} +IF (sub(frame_dms, 50) == 0) +{ +tmp = shr_pos(tmp, 1); +} + + FOR (n = 0; n < tns_numfilters; n++) + { + IF (tns_order[n] > 0) + { + tns_order[n] = ac_decode_tns_order(&st, enable_lpc_weighting); + move16(); + tns_order[n] = add(tns_order[n], 1); + move16(); + IF (tns_order[n] > tmp) + { + GOTO ber_detect; + } + if (ac_dec_update_fx(ptr, &bp, bp_side, mask_side, 0, &st, + ac_tns_order_cumfreq[enable_lpc_weighting][tns_order[n] - 1], + ac_tns_order_freq[enable_lpc_weighting][tns_order[n] - 1]) != 0) + { + GOTO ber_detect; + } + FOR (k = 0; k < tns_order[n]; k++) + { + IF (sub(*bp_side, bp) < 0) + { + GOTO ber_detect; + } + tns_idx[MAXLAG * n + k] = ac_decode_tns_coef(&st, k); + move16(); + if (ac_dec_update_fx(ptr, &bp, bp_side, mask_side, 0, &st, + ac_tns_coef_cumfreq[k][tns_idx[MAXLAG * n + k]], + ac_tns_coef_freq[k][tns_idx[MAXLAG * n + k]]) != 0) + { + GOTO ber_detect; + } + } + } + } + IF (st.BER_detect > 0) + { + GOTO ber_detect; + } + +IF (lsbMode == 0) +{ + +/*Main Loop through the 2-tuples*/ +FOR (k = 0; k < lastnz; k += 2) +{ + +/* Get context */ +t = add(c, rateFlag); +if (sub(k, nt_half) > 0) +{ +t = add(t, 1 << NBITS_CONTEXT); +} + + r = ac_decode_fx(&st, ari_spec_lookup[t]); + if (ac_dec_update_fx(ptr, &bp, bp_side, mask_side, k, &st, ari_spec_cumfreq[ari_spec_lookup[t]][r], + ari_spec_freq[ari_spec_lookup[t]][r]) != 0) + { + GOTO ber_detect; + } + + IF (r == 0) + { + x[a1_i] = 0; + move16(); + x[b1_i] = 0; + move16(); + c = add(shl_pos(s_and(c, 0xf), 4), 1); + } + ELSE IF (sub(r, VAL_ESC) < 0) + { + a = s_and(r, 0x3); + b = shr_pos(r, 2); + c = add(shl_pos(s_and(c, 0xf), 4), add(add(a, b), 1)); + IF (a > 0) + { +if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) +{ + GOTO ber_detect; +} + if (read_bit(ptr, bp_side, mask_side) != 0) + { + a = negate(a); + } + } + x[a1_i] = a; + move16(); + IF (b > 0) + { +if (check_pc_bytes(&bp, bp_side, mask_side, b1_i, 0, &st.pc) != 0) +{ + GOTO ber_detect; +} + if (read_bit(ptr, bp_side, mask_side) != 0) + { + b = negate(b); + } + } + x[b1_i] = b; + move16(); + } + ELSE + { +if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) +{ +GOTO ber_detect; +} +a = read_bit(ptr, bp_side, mask_side); +if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) +{ +GOTO ber_detect; +} + b = read_bit(ptr, bp_side, mask_side); + r = ac_decode_fx(&st, ari_spec_lookup[t + Tab_esc_nb[1]]); + if (ac_dec_update_fx(ptr, &bp, bp_side, mask_side, k, &st, + ari_spec_cumfreq[ari_spec_lookup[t + Tab_esc_nb[1]]][r], + ari_spec_freq[ari_spec_lookup[t + Tab_esc_nb[1]]][r]) != 0) + { + GOTO ber_detect; + } + IF (sub(r, VAL_ESC) < 0) + { + a1 = s_and(r, 0x3); + b1 = shr_pos(r, 2); + a = add(shl_pos(a1, 1), a); + b = add(shl_pos(b1, 1), b); + IF (a > 0) + { + if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) + { + GOTO ber_detect; + } + if (read_bit(ptr, bp_side, mask_side) != 0) + { + a = negate(a); + } + } + x[a1_i] = a; + move16(); + IF (b > 0) + { + if (check_pc_bytes(&bp, bp_side, mask_side, b1_i, 0, &st.pc) != 0) + { + GOTO ber_detect; + } + if (read_bit(ptr, bp_side, mask_side) != 0) + { + b = negate(b); + } + } + x[b1_i] = b; + move16(); + c = add(shl_pos(s_and(c, 0xf), 4), add(shl_pos(add(a1, b1), 1), 1)); + } + ELSE + { +if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) +{ + GOTO ber_detect; +} +a = add(shl_pos(read_bit(ptr, bp_side, mask_side), 1), a); +if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) +{ + GOTO ber_detect; +} + b = add(shl_pos(read_bit(ptr, bp_side, mask_side), 1), b); + FOR (lev = 2; lev < max_lev; lev++) + { + esc_nb = s_min(lev, 3); + r = ac_decode_fx(&st, ari_spec_lookup[t + Tab_esc_nb[esc_nb]]); + if (ac_dec_update_fx(ptr, &bp, bp_side, mask_side, k, &st, + ari_spec_cumfreq[ari_spec_lookup[t + Tab_esc_nb[esc_nb]]][r], + ari_spec_freq[ari_spec_lookup[t + Tab_esc_nb[esc_nb]]][r]) != 0) + { + GOTO ber_detect; + } + IF (sub(r, VAL_ESC) < 0) + { + BREAK; + } + if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) + { + GOTO ber_detect; + } + +# ifdef ENABLE_HR_MODE + a = L_add(L_shl(read_bit(ptr, bp_side, mask_side), lev), a); +# else + a = add(shl(read_bit(ptr, bp_side, mask_side), lev), a); +# endif + + if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) + { + GOTO ber_detect; + } +# ifdef ENABLE_HR_MODE + b = L_add(L_shl(read_bit(ptr, bp_side, mask_side), lev), b); +# else + b = add(shl(read_bit(ptr, bp_side, mask_side), lev), b); +# endif + } + /* check for bitflip */ + IF (sub(lev, max_lev) == 0) + { + GOTO ber_detect; + } + + b1 = shr_pos(r, 2); + a1 = s_and(r, 0x3); + +# ifdef ENABLE_HR_MODE + a = L_add(L_shl(a1, lev), a); + b = L_add(L_shl(b1, lev), b); +# else + a = add(shl(a1, lev), a); + b = add(shl(b1, lev), b); +# endif + IF (a > 0) + { + if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) + { + GOTO ber_detect; + } + if (read_bit(ptr, bp_side, mask_side) != 0) + { +# ifdef ENABLE_HR_MODE + a = L_negate(a); +# else + a = negate(a); +# endif + } + } + x[a1_i] = a; + move16(); + IF (b > 0) + { + if (check_pc_bytes(&bp, bp_side, mask_side, b1_i, 0, &st.pc) != 0) + { + GOTO ber_detect; + } + if (read_bit(ptr, bp_side, mask_side) != 0) + { +# ifdef ENABLE_HR_MODE + b = L_negate(b); +# else + b = negate(b); +# endif + } + } + x[b1_i] = b; + move16(); + c = add(shl_pos(s_and(c, 0xf), 4), add(esc_nb, 12)); + } + } + + test(); + test(); + IF ((sub(sub(bp, *bp_side), 3) > 0 && sub(st.pc.c_bp, st.pc.c_bp_side) == 0) || st.BER_detect > 0) +{ +GOTO ber_detect; +} + +a1_i += 2; +b1_i += 2; +} +} +ELSE +{ +/*Main Loop through the 2-tuples*/ +FOR (k = 0; k < lastnz; k += 2) +{ + +/* Get context */ +t = add(c, rateFlag); +if (sub(k, nt_half) > 0) +{ +t = add(t, 1 << NBITS_CONTEXT); +} + + r = ac_decode_fx(&st, ari_spec_lookup[t]); + if (ac_dec_update_fx(ptr, &bp, bp_side, mask_side, k, &st, ari_spec_cumfreq[ari_spec_lookup[t]][r], + ari_spec_freq[ari_spec_lookup[t]][r]) != 0) + { + GOTO ber_detect; + } + + IF (r == 0) + { + x[a1_i] = 0; + move16(); + x[b1_i] = 0; + move16(); + c = add(shl_pos(s_and(c, 0xf), 4), 1); + } + ELSE IF (sub(r, VAL_ESC) < 0) + { + a = s_and(r, 0x3); + b = shr_pos(r, 2); + c = add(shl_pos(s_and(c, 0xf), 4), add(add(a, b), 1)); + IF (a > 0) + { +if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) +{ + GOTO ber_detect; +} + if (read_bit(ptr, bp_side, mask_side) != 0) + { + a = negate(a); + } + } + x[a1_i] = a; + move16(); + IF (b > 0) + { +if (check_pc_bytes(&bp, bp_side, mask_side, b1_i, 0, &st.pc) != 0) +{ + GOTO ber_detect; +} + if (read_bit(ptr, bp_side, mask_side) != 0) + { + b = negate(b); + } + } + x[b1_i] = b; + move16(); + } + ELSE + { + r = ac_decode_fx(&st, ari_spec_lookup[t + Tab_esc_nb[1]]); + if (ac_dec_update_fx(ptr, &bp, bp_side, mask_side, k, &st, + ari_spec_cumfreq[ari_spec_lookup[t + Tab_esc_nb[1]]][r], + ari_spec_freq[ari_spec_lookup[t + Tab_esc_nb[1]]][r]) != 0) + { + GOTO ber_detect; + } + IF (sub(r, VAL_ESC) < 0) + { + a1 = s_and(r, 0x3); + b1 = shr_pos(r, 2); + a = shl_pos(a1, 1); + b = shl_pos(b1, 1); + IF (a > 0) + { + if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) + { + GOTO ber_detect; + } + if (read_bit(ptr, bp_side, mask_side) != 0) + { + a = negate(a); + } + } + x[a1_i] = a; + move16(); + IF (b > 0) + { + if (check_pc_bytes(&bp, bp_side, mask_side, b1_i, 0, &st.pc) != 0) + { + GOTO ber_detect; + } + if (read_bit(ptr, bp_side, mask_side) != 0) + { + b = negate(b); + } + } + x[b1_i] = b; + move16(); + c = add(shl_pos(s_and(c, 0xf), 4), add(shl_pos(add(a1, b1), 1), 1)); + lsb_ind[lsb_ind_c++] = k; + move16(); + } + ELSE + { +if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) +{ + GOTO ber_detect; +} +a = shl_pos(read_bit(ptr, bp_side, mask_side), 1); +if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) +{ + GOTO ber_detect; +} + b = shl_pos(read_bit(ptr, bp_side, mask_side), 1); + FOR (lev = 2; lev < max_lev; lev++) + { + esc_nb = s_min(lev, 3); + r = ac_decode_fx(&st, ari_spec_lookup[t + Tab_esc_nb[esc_nb]]); + if (ac_dec_update_fx(ptr, &bp, bp_side, mask_side, k, &st, + ari_spec_cumfreq[ari_spec_lookup[t + Tab_esc_nb[esc_nb]]][r], + ari_spec_freq[ari_spec_lookup[t + Tab_esc_nb[esc_nb]]][r]) != 0) + { + GOTO ber_detect; + } + IF (sub(r, VAL_ESC) < 0) + { + BREAK; + } + if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) + { + GOTO ber_detect; + } +# ifdef ENABLE_HR_MODE + a = L_add(L_shl(read_bit(ptr, bp_side, mask_side), lev), a); +# else + a = add(shl(read_bit(ptr, bp_side, mask_side), lev), a); +# endif + if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) + { + GOTO ber_detect; + } +# ifdef ENABLE_HR_MODE + b = L_add(L_shl(read_bit(ptr, bp_side, mask_side), lev), b); +# else + b = add(shl(read_bit(ptr, bp_side, mask_side), lev), b); +# endif + } + /* check for bitflip */ + IF (sub(lev, max_lev) == 0) + { + GOTO ber_detect; + } + + b1 = shr_pos(r, 2); + a1 = s_and(r, 0x3); +# ifdef ENABLE_HR_MODE + a = L_add(L_shl(a1, lev), a); + b = L_add(L_shl(b1, lev), b); +# else + a = add(shl(a1, lev), a); + b = add(shl(b1, lev), b); +# endif + IF (a > 0) + { + if (check_pc_bytes(&bp, bp_side, mask_side, a1_i, 0, &st.pc) != 0) + { + GOTO ber_detect; + } + if (read_bit(ptr, bp_side, mask_side) != 0) + { +# ifdef ENABLE_HR_MODE + a = L_negate(a); +# else + a = negate(a); +# endif + } + } + x[a1_i] = a; + move16(); + IF (b > 0) + { + if (check_pc_bytes(&bp, bp_side, mask_side, b1_i, 0, &st.pc) != 0) + { + GOTO ber_detect; + } + if (read_bit(ptr, bp_side, mask_side) != 0) + { +# ifdef ENABLE_HR_MODE + b = L_negate(b); +# else + b = negate(b); +# endif + } + } + x[b1_i] = b; + move16(); + c = add(shl_pos(s_and(c, 0xf), 4), add(esc_nb, 12)); + lsb_ind[lsb_ind_c++] = k; + move16(); + } + } + + test(); + test(); + IF ((sub(sub(bp, *bp_side), 3) > 0 && sub(st.pc.c_bp, st.pc.c_bp_side) == 0) || st.BER_detect > 0) +{ +GOTO ber_detect; +} + +a1_i += 2; +b1_i += 2; +} +} + +IF (L_spec > k) +{ +basop_memset(&x[k], 0, (L_spec - k) * sizeof(*x)); +} + + nbits_side = sub(nbbits, add(shl_pos(*bp_side, 3), sub(norm_s(*mask_side), 6))); + extra_bits = sub(norm_ul(st.ac_range_fx), 6); + nbits_ari = shl_pos(sub(bp, 3), 3); +IF (mode != 1) +{ +IF (st.pc.c_bp == 0) +{ +nbits_ari = shl_pos(sub(sub(bp, st.pc.bytes), 3), 3); +} +ELSE +{ +nbits_ari = shl_pos(add(bp, sub(sub(st.pc.b_left, st.pc.bytes), 3)), 3); +} + + IF (st.pc.c_bp_side != 0) + { + nbits_side = sub(add(sub(nbbits, shl_pos(st.pc.b_left, 3)), shl_pos(sub(st.pc.bytes, *bp_side), 3)), + sub(norm_s(*mask_side), 6)); + } + } + + n = sub(nbbits, add(nbits_ari, add(extra_bits, nbits_side))); + move16(); + +IF (n < 0) +{ +GOTO ber_detect; +} + + IF (lsbMode == 0) + { + *resBits = n; + move16(); + i=0; + +#ifdef ENABLE_HR_MODE + FOR (k = 0; k < L_spec; k++) + { + IF (x[k] != 0) + { + IF (n == 0) + { + BREAK; + } + if (check_pc_bytes(&bp, bp_side, mask_side, st.pc.inv_bin, 0, &st.pc) != 0) + { + GOTO ber_detect_res; + } + i1 = shr(i, RESBITS_PACK_SHIFT); + i2 = s_and(i, RESBITS_PACK_MASK); + resbit = read_bit(ptr, bp_side, mask_side); + if (resbit) + { + resQdata[i1] = (UWord8) s_or(resQdata[i1], shl(1, i2)); + } + i = add(i, 1); + move16(); + n = sub(n, 1); + } + } +#else + FOR (k = 0; k < L_spec; k++) + { + IF (x[k] != 0) + { + IF (n == 0) + { + BREAK; + } + + if (check_pc_bytes(&bp, bp_side, mask_side, st.pc.inv_bin, 0, &st.pc) != 0) + { + GOTO ber_detect_res; + } + + *resQdata++ = (UWord8) read_bit(ptr, bp_side, mask_side); + move16(); + n = sub(n, 1); + } + } +#endif + +# ifdef ENABLE_HR_MODE + if (hrmode) + { + Word16 idx_len = sub(*resBits, n); /* Number of nonzero bits */ + Word16 idx_len_lim = idx_len * EXT_RES_ITER_MAX; + + Word16 res_bits_hrmode = s_min(idx_len_lim, *resBits) - idx_len; + /* idx_len bits have been read in the previous loop */ + + for (k = 0; k < res_bits_hrmode; k++) + { + if (check_pc_bytes(&bp, bp_side, mask_side, st.pc.inv_bin, 0, &st.pc) != 0) + { + GOTO ber_detect_res; + } + i1 = shr(i, RESBITS_PACK_SHIFT); + i2 = s_and(i, RESBITS_PACK_MASK); + resbit = read_bit(ptr, bp_side, mask_side); + if (resbit) + { + resQdata[i1] = (UWord8) s_or(resQdata[i1], shl(1, i2)); + } + i = add(i, 1); + move16(); + n = sub(n, 1); + } + } +# endif + + *resBits = sub(*resBits, n); + } + ELSE + { + *resBits = 0; + FOR (k = 0; k < lsb_ind_c; k++) + { + a = x[lsb_ind[k]]; + move16(); + IF (n == 0) + { + BREAK; + } +if (check_pc_bytes(&bp, bp_side, mask_side, st.pc.inv_bin, 0, &st.pc) != 0) +{ +GOTO ber_detect_res; +} + tmp = read_bit(ptr, bp_side, mask_side); + n = sub(n, 1); + IF (tmp > 0) + { +# ifdef ENABLE_HR_MODE + if (a > 0) + { + a = L_add(a, 1); + } + if (a < 0) + { + a = L_sub(a, 1); + } +# else + if (a > 0) + { + a = add(a, 1); + } + if (a < 0) + { + a = sub(a, 1); + } +# endif + IF (a == 0) + { + IF (n == 0) + { + BREAK; + } + a = 1; +if (check_pc_bytes(&bp, bp_side, mask_side, st.pc.inv_bin, 0, &st.pc) != 0) +{ + GOTO ber_detect_res; +} +if (read_bit(ptr, bp_side, mask_side) != 0) +{ + a = negate(a); +} +n = sub(n, 1); +} +} + + x[lsb_ind[k]] = a; + move16(); + b = x[lsb_ind[k] + 1]; + move16(); + IF (n == 0) + { + BREAK; + } +if (check_pc_bytes(&bp, bp_side, mask_side, st.pc.inv_bin, 0, &st.pc) != 0) +{ +GOTO ber_detect_res; +} + tmp = read_bit(ptr, bp_side, mask_side); + n = sub(n, 1); + IF (tmp > 0) + { +# ifdef ENABLE_HR_MODE + if (b > 0) + { + b = L_add(b, 1); + } + if (b < 0) + { + b = L_sub(b, 1); + } +# else + if (b > 0) + { + b = add(b, 1); + } + if (b < 0) + { + b = sub(b, 1); + } +# endif + IF (b == 0) + { + IF (n == 0) + { + BREAK; + } + b = 1; +if (check_pc_bytes(&bp, bp_side, mask_side, st.pc.inv_bin, 0, &st.pc) != 0) +{ + GOTO ber_detect_res; +} + if (read_bit(ptr, bp_side, mask_side) != 0) + { + b = negate(b); + } + n = sub(n, 1); + } + } + x[lsb_ind[k] + 1] = b; + move16(); + } + } + +/* Noise Filling seed */ + tmp32 = L_deposit_l(0); + FOR (i = 0; i < L_spec; i++) + { +# ifdef ENABLE_HR_MODE + tmp32 = L_mac0(tmp32, L_and(L_abs(x[i]), 32767), i); +# else + tmp32 = L_mac0(tmp32, abs_s(x[i]), i); +# endif + } + *nf_seed = extract_l(tmp32); + move16(); + + /* Detect zero frame */ + test(); + test(); + test(); + test(); + IF (sub(lastnz, 2) == 0 && sub(x[0], 0) == 0 && sub(x[1], 0) == 0 && sub(gg_idx, 0) == 0 && sub(fac_ns_idx, 7) == 0) + { + *zero_frame = 1; + move16(); + } + ELSE + { + *zero_frame = 0; + move16(); + } + +IF (mode == 1) + { + IF (st.pc.bytes > 0) + { + IF (sub(st.pc.b_left, shr_pos(nbbits, 3)) > 0) + { + *b_left = sub(*bp_side, st.pc.bytes); + } + } + } +IF (mode == 2) +{ +IF (st.pc.bytes > 0) +{ +IF (sub(st.pc.b_left, shr_pos(nbbits,3)) > 0) +{ +*b_left = *bp_side; +} +} +} + +IF (sub(*bfi, 2) == 0) +{ +IF (sub(*spec_inv_idx, L_spec) == 0) +{ +*bfi = 0; +} +} +GOTO bail; + +/* goto for bit error handling */ +ber_detect: + *bfi = 1; + move16(); + *b_left = st.pc.b_left; + move16(); + test(); + IF (st.pc.inv_bin > 0 && sub(st.pc.inv_bin, L_spec) <= 0) + { + *spec_inv_idx = st.pc.inv_bin; + move16(); + *bfi = 2; + move16(); + *resBits = 0; + move16(); + *zero_frame = 0; + move16(); + /* Noise Filling seed */ + tmp32 = L_deposit_l(0); + FOR (i = 0; i < *spec_inv_idx; i++) + { + tmp32 = L_mac0(tmp32, abs_s(x[i]), i); + } + *nf_seed = extract_l(tmp32); + move16(); + } +GOTO bail; + +/* goto for bit error handling in residual signal */ +ber_detect_res: + *b_left = st.pc.b_left; + move16(); + *resBits = 0; + move16(); + *bfi = 0; + move16(); + *zero_frame = 0; + move16(); + /* Noise Filling seed */ + tmp32 = L_deposit_l(0); + FOR (i = 0; i < *spec_inv_idx; i++) + { + tmp32 = L_mac0(tmp32, abs_s(x[i]), i); + } + *nf_seed = extract_l(tmp32); + move16(); + GOTO bail; + +/* goto, because of dynmem out */ +bail: +Dyn_Mem_Deluxe_Out(); +} + + +void processAriDecoderScaling_fx( +# ifdef ENABLE_HR_MODE + Word32 *datain, +# else + Word16 *data16, +# endif + Word16 dataLen, Word32 *data32, Word16 *data_e) +{ + Word32 i; + +# ifdef ENABLE_HR_MODE + Dyn_Mem_Deluxe_In(Word16 shift; Word32 tmp, x_min, x_max;); +# else + Dyn_Mem_Deluxe_In(Word16 shift; Word16 tmp, x_min, x_max;); +# endif + + +#ifdef ENABLE_HR_MODE + x_max = 0; + move32(); + x_min = 0; + move32(); +#else + x_max = 0; + move16(); + x_min = 0; + move16(); +#endif + + FOR (i = 0; i < dataLen; i++) + { +#ifdef ENABLE_HR_MODE + if (datain[i] > 0) + x_max = L_max(x_max, datain[i]); + if (datain[i] < 0) + x_min = L_min(x_min, datain[i]); +#else + if (data16[i] > 0) + x_max = s_max(x_max, data16[i]); + if (data16[i] < 0) + x_min = s_min(x_min, data16[i]); +#endif + } + +#ifdef ENABLE_HR_MODE + tmp = L_max(x_max, L_negate(x_min)); + shift = norm_l(tmp); + if (tmp == 0) + { + shift = 31; + move32(); + } +#else + tmp = s_max(x_max, negate(x_min)); + shift = norm_s(tmp); + if (tmp == 0) + { + shift = 15; + move16(); + } +#endif + + FOR (i = 0; i < dataLen; i++) + { +#ifdef ENABLE_HR_MODE + data32[i] = L_shl_pos(datain[i], shift); +#else + data32[i] = L_shl_pos(L_deposit_h(data16[i]), shift); +#endif + } + +#ifdef ENABLE_HR_MODE + *data_e = sub(31, shift); + move16(); +#else + *data_e = sub(15, shift); + move16(); +#endif + + Dyn_Mem_Deluxe_Out(); +} + + +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ + +/*************************************************************************/ + +static __forceinline UWord32 UL_addNs24(UWord32 UL_var1, UWord32 UL_var2, UWord16 *wrap) +{ + return UL_lshr(UL_addNs(UL_lshl(UL_var1, 8), UL_lshl(UL_var2, 8), wrap), 8); +} +#ifdef ENABLE_HR_MODE +Word16 find_last_nz_pair(const Word32 x[], Word16 length) +#else +Word16 find_last_nz_pair(const Word16 x[], Word16 length) +#endif +{ + Dyn_Mem_Deluxe_In(Word16 last_nz, lobs[4]; Word32 stage, i;); + + lobs[0] = 4; + move16(); + lobs[1] = shr_pos(length, 1); /* length/2 */ + move16(); + lobs[2] = add(lobs[1], shr_pos(length, 2)); + move16(); + lobs[3] = add(lobs[2], shr_pos(length, 3)); + move16(); + + last_nz = 0; + move16(); + i = length; + move16(); + FOR (stage = 3; stage >= 0; --stage) + { + /* unmapped kernel */ + FOR (; i >= lobs[stage]; i -= 2) + { + if (x[i - 2] != 0) + { + last_nz = s_max(last_nz, i); + } + if (x[i - 1] != 0) + { + last_nz = s_max(last_nz, i); + } + } + IF (last_nz > 0) + { + BREAK; + } + } + + Dyn_Mem_Deluxe_Out(); + return s_max(last_nz, 2); +} + + +void write_bit_backward(UWord8 *ptr, Word16 *bp, Word16 *mask, Word16 bit) +{ + if (bit > 0) + { + ptr[*bp] = (UWord8)s_or((Word16)ptr[*bp], *mask); + move16(); + } + *mask = lshl_pos(*mask, 1); + move16(); + if (sub(*mask, 0x100) == 0) + { + *mask = 1; + move16(); + } + if (sub(*mask, 1) == 0) + { + *bp = sub(*bp, 1); + move16(); + } +} + + +void write_indice_backward(UWord8 *ptr, Word16 *bp, Word16 *mask, Word16 indice, Word16 numbits) +{ + Dyn_Mem_Deluxe_In(Word32 k; Word16 bit;); + + FOR (k = 0; k < numbits; k++) + { + bit = s_and(indice, 1); + write_bit_backward(ptr, bp, mask, bit); + indice = lshr(indice, 1); + } + + Dyn_Mem_Deluxe_Out(); +} + + +static __forceinline void write_indice_forward(UWord8 *ptr, Word16 bp, Word16 indice, Word16 numbits) +{ + Dyn_Mem_Deluxe_In(Word32 k; Word16 bit, mask, tmp;); + + tmp = (Word16)ptr[bp]; + move16(); + mask = 0x80; + move16(); + FOR (k = 0; k < numbits; k++) + { + bit = s_and(indice, mask); + tmp = s_or(tmp, mask); + if (bit == 0) + { + tmp = sub(tmp, mask); + } + mask = lshr(mask, 1); + } + ptr[bp] = (UWord8)tmp; + move16(); + + Dyn_Mem_Deluxe_Out(); +} + +static __forceinline void ac_enc_init_fx(Encoder_State_fx *st_fx) /* i/o: Encoder state */ +{ + st_fx->ac_low_fx = L_deposit_l(0); + move32(); + st_fx->ac_range_fx = 0x00ffffff; + move32(); + st_fx->ac_cache_fx = -1; + move16(); + st_fx->ac_carry_fx = 0; + move16(); + st_fx->ac_carry_count_fx = 0; + move16(); +} + +static __forceinline void ac_enc_shift_fx(UWord8 *ptr, Word16 *bp, Encoder_State_fx *st_fx) /* i/o: Encoder state */ +{ + test(); + L_sub(0, 0); /* For comparision in if */ + IF (st_fx->ac_low_fx < (0x00ff0000UL) || sub(st_fx->ac_carry_fx, 1) == 0) + { + IF (st_fx->ac_cache_fx >= 0) + { + ptr[(*bp)++] = (UWord8)add(st_fx->ac_cache_fx, st_fx->ac_carry_fx); + move16(); + } + + WHILE (st_fx->ac_carry_count_fx > 0) + { + ptr[(*bp)++] = (UWord8)s_and(add(st_fx->ac_carry_fx, 0xff), 255); + move16(); + st_fx->ac_carry_count_fx = sub(st_fx->ac_carry_count_fx, 1); + move16(); + } + + st_fx->ac_cache_fx = u_extract_l(UL_lshr_pos(st_fx->ac_low_fx, 16)); + move16(); + st_fx->ac_carry_fx = 0; + move16(); + } + ELSE + { + st_fx->ac_carry_count_fx = add(st_fx->ac_carry_count_fx, 1); + move16(); + } + st_fx->ac_low_fx = UL_and(UL_lshl_pos(st_fx->ac_low_fx, 8), 0x00ffffff); + move32(); +} + +static __forceinline void ac_encode_fx(UWord8 *ptr, Word16 *bp, Encoder_State_fx *st_fx, /* i/o: Encoder state */ + UWord32 cum_freq, /* i : Cumulative frequency up to symbol */ + UWord32 sym_freq) /* i : Symbol probability */ +{ + Dyn_Mem_Deluxe_In(UWord32 r, tmp; UWord16 carry;); + + r = UL_lshr_pos(st_fx->ac_range_fx, 10); + tmp = UL_Mpy_32_32(r, cum_freq); + + assert(r < (1U << 24)); + assert(cum_freq < (1U << 24)); + assert(tmp < (1U << 24)); + assert(st_fx->ac_low_fx < (1U << 24)); + st_fx->ac_low_fx = UL_addNs24(st_fx->ac_low_fx, tmp, &carry); + move32(); + + if (carry != 0) + { + st_fx->ac_carry_fx = carry; + move16(); + } + + st_fx->ac_range_fx = UL_Mpy_32_32(r, sym_freq); + move32(); + + assert(cum_freq < (1U << 24)); + assert(st_fx->ac_range_fx < (1U << 24)); + WHILE (st_fx->ac_range_fx < (1U << 16)) + { + L_sub(0, 0); /* Comparison in while */ + st_fx->ac_range_fx = UL_lshl_pos(st_fx->ac_range_fx, 8); + move32(); + + assert(st_fx->ac_range_fx < (1U << 24)); + + ac_enc_shift_fx(ptr, bp, st_fx); + } + + Dyn_Mem_Deluxe_Out(); +} + +static __forceinline Word16 ac_enc_finish_fx(UWord8 *ptr, Word16 *bp, Encoder_State_fx *st_fx) /* i/o: Encoder state */ +{ + Dyn_Mem_Deluxe_In(UWord32 val, mask, high; Word16 bits; UWord16 over1, over2;); + + /*bits = 24 - log2_i(st->ac_range); */ + bits = sub(norm_ul(st_fx->ac_range_fx), 7); + + mask = UL_lshr(0x00ffffff, bits); + + val = UL_addNs24(st_fx->ac_low_fx, mask, &over1); + high = UL_addNs24(st_fx->ac_low_fx, st_fx->ac_range_fx, &over2); + + L_xor(0, 0); /* For bit not */ + UL_and(1U, 1U); /* added counters */ + val = L_and(val, (~mask) & 0x00ffffff); + + L_xor(0, 0); /* For bit not */ + IF ((L_xor(over1, over2)) == 0) + { + L_sub(0, 0); /* For comparision in if */ + IF (UL_addNsD(val, mask) >= high) + { + bits = add(bits, 1); + mask = UL_lshr_pos(mask, 1); + val = UL_and(UL_addNsD(st_fx->ac_low_fx, mask), (~mask) & 0x00ffffff); + L_xor(0, 0); + UL_and(1, 1); /* For bit not , mask */ + } + + if (val < st_fx->ac_low_fx) + { + st_fx->ac_carry_fx = 1; + move16(); + } + } + + st_fx->ac_low_fx = val; + move32(); + + FOR (; bits > 0; bits -= 8) + { + ac_enc_shift_fx(ptr, bp, st_fx); + } + bits = add(bits, 8); + + assert(st_fx->ac_carry_fx == 0); + + IF (st_fx->ac_carry_count_fx > 0) + { + ptr[(*bp)++] = (UWord8)st_fx->ac_cache_fx; + move16(); + + FOR (; st_fx->ac_carry_count_fx > 1; st_fx->ac_carry_count_fx--) + { + ptr[(*bp)++] = 0xff; + move16(); + } + write_indice_forward(ptr, *bp, lshr(0xff, sub(8, bits)), bits); + } + ELSE + { + write_indice_forward(ptr, *bp, st_fx->ac_cache_fx, bits); + } + + Dyn_Mem_Deluxe_Out(); + return bits; +} + + +__forceinline Word16 read_bit(UWord8 *ptr, Word16 *bp, Word16 *mask) +{ + Dyn_Mem_Deluxe_In(Word16 bit;); + + bit = 0; + move16(); + if (s_and((Word16)ptr[*bp], *mask) > 0) + { + bit = 1; + move16(); + } + *mask = lshl_pos(*mask, 1); + move16(); + if (sub(*mask, 0x100) == 0) + { + *mask = 1; + move16(); + } + if (sub(*mask, 1) == 0) + { + *bp = sub(*bp, 1); + move16(); + } + + Dyn_Mem_Deluxe_Out(); + return bit; +} + + +static __forceinline void ac_dec_init_fx(UWord8 *ptr, Word16 *bp, Word16 *bp_side, Word16 *mask_side, + Decoder_State_fx *st_fx) /* i/o: Decoder State */ +{ + Dyn_Mem_Deluxe_In(Word32 i;); + + + st_fx->ac_low_fx = L_deposit_l(0); + move32(); + + st_fx->ac_range_fx = 0x00ffffff; + move32(); + FOR (i = 0; i < 3; i++) + { + if (check_pc_bytes(bp, bp_side, mask_side, 0, 1, &st_fx->pc) != 0) + { + Dyn_Mem_Deluxe_Out(); + return; + } + st_fx->ac_low_fx = UL_addNsD(UL_lshl_pos(st_fx->ac_low_fx, 8), UL_deposit_l((Word16)ptr[(*bp)++])); + move32(); + assert(st_fx->ac_low_fx < (1U << 24)); + } + + st_fx->BER_detect = 0; + move16(); + + Dyn_Mem_Deluxe_Out(); +} + +/* o : Decoded cumulative frequency */ +static __forceinline Word16 ac_decode_fx(Decoder_State_fx *st_fx, /* i/o: Decoder State */ + Word16 pki) +{ + Dyn_Mem_Deluxe_In(UWord16 sgn; Word16 val, r;); + + st_fx->ac_help_fx = UL_lshr_pos(st_fx->ac_range_fx, 10); + move32(); + val = 0; + move16(); + + r = add(val, 8); + UL_subNs(st_fx->ac_low_fx, UL_Mpy_32_32(st_fx->ac_help_fx, ari_spec_cumfreq[pki][r]), &sgn); + if (sgn == 0) + { + val = r; + move16(); + } + + r = add(val, 4); + UL_subNs(st_fx->ac_low_fx, UL_Mpy_32_32(st_fx->ac_help_fx, ari_spec_cumfreq[pki][r]), &sgn); + if (sgn == 0) + { + val = r; + move16(); + } + + r = add(val, 2); + UL_subNs(st_fx->ac_low_fx, UL_Mpy_32_32(st_fx->ac_help_fx, ari_spec_cumfreq[pki][r]), &sgn); + if (sgn == 0) + { + val = r; + move16(); + } + + r = add(val, 1); + UL_subNs(st_fx->ac_low_fx, UL_Mpy_32_32(st_fx->ac_help_fx, ari_spec_cumfreq[pki][r]), &sgn); + IF (sgn == 0) + { + val = r; + move16(); + IF (sub(val, 15) == 0) + { + UL_subNs(st_fx->ac_low_fx, UL_Mpy_32_32(st_fx->ac_help_fx, ari_spec_cumfreq[pki][16]), &sgn); + if (sgn == 0) + { + val = 16; + move16(); + } + UL_subNs(st_fx->ac_low_fx, UL_lshl(st_fx->ac_help_fx, 10), &sgn); + if (sgn == 0) + { + st_fx->BER_detect = 1; + move16(); + } + } + } + + Dyn_Mem_Deluxe_Out(); + return val; +} + +/* o : Decoded cumulative frequency */ +static __forceinline Word16 ac_decode_tns_order(Decoder_State_fx *st_fx, /* i/o: Decoder State */ + Word16 enable_lpc_weighting) +{ + Dyn_Mem_Deluxe_In(UWord16 sgn; Word16 val, r;); + + st_fx->ac_help_fx = UL_lshr_pos(st_fx->ac_range_fx, 10); + move32(); + val = 0; + move16(); + + r = add(val, 4); + UL_subNs(st_fx->ac_low_fx, UL_Mpy_32_32(st_fx->ac_help_fx, ac_tns_order_cumfreq[enable_lpc_weighting][r]), &sgn); + if (sgn == 0) + { + val = r; + move16(); + } + + r = add(val, 2); + UL_subNs(st_fx->ac_low_fx, UL_Mpy_32_32(st_fx->ac_help_fx, ac_tns_order_cumfreq[enable_lpc_weighting][r]), &sgn); + if (sgn == 0) + { + val = r; + move16(); + } + + r = add(val, 1); + UL_subNs(st_fx->ac_low_fx, UL_Mpy_32_32(st_fx->ac_help_fx, ac_tns_order_cumfreq[enable_lpc_weighting][r]), &sgn); + if (sgn == 0) + { + val = r; + move16(); + } + + UL_subNs(st_fx->ac_low_fx, UL_lshl(st_fx->ac_help_fx, 10), &sgn); + if (sgn == 0) + { + st_fx->BER_detect = 1; + move16(); + } + + Dyn_Mem_Deluxe_Out(); + return val; +} + +/* o : Decoded cumulative frequency */ +static __forceinline Word16 ac_decode_tns_coef(Decoder_State_fx *st_fx, /* i/o: Decoder State */ + Word16 pki) +{ + Dyn_Mem_Deluxe_In(UWord16 sgn; Word16 val, r;); + + st_fx->ac_help_fx = UL_lshr_pos(st_fx->ac_range_fx, 10); + move32(); + val = 0; + move16(); + + r = add(val, 8); + UL_subNs(st_fx->ac_low_fx, UL_Mpy_32_32(st_fx->ac_help_fx, ac_tns_coef_cumfreq[pki][r]), &sgn); + if (sgn == 0) + { + val = r; + move16(); + } + + r = add(val, 4); + UL_subNs(st_fx->ac_low_fx, UL_Mpy_32_32(st_fx->ac_help_fx, ac_tns_coef_cumfreq[pki][r]), &sgn); + if (sgn == 0) + { + val = r; + move16(); + } + + r = add(val, 2); + UL_subNs(st_fx->ac_low_fx, UL_Mpy_32_32(st_fx->ac_help_fx, ac_tns_coef_cumfreq[pki][r]), &sgn); + if (sgn == 0) + { + val = r; + move16(); + } + + r = add(val, 1); + UL_subNs(st_fx->ac_low_fx, UL_Mpy_32_32(st_fx->ac_help_fx, ac_tns_coef_cumfreq[pki][r]), &sgn); + if (sgn == 0) + { + val = r; + move16(); + IF (sub(val, 15) == 0) + { + UL_subNs(st_fx->ac_low_fx, UL_Mpy_32_32(st_fx->ac_help_fx, ac_tns_coef_cumfreq[pki][16]), &sgn); + if (sgn == 0) + { + val = 16; + move16(); + } + UL_subNs(st_fx->ac_low_fx, UL_lshl(st_fx->ac_help_fx, 10), &sgn); + if (sgn == 0) + { + st_fx->BER_detect = 1; + move16(); + } + } + } + + Dyn_Mem_Deluxe_Out(); + return val; +} + +static __forceinline Word16 ac_dec_update_fx(UWord8 *ptr, Word16 *bp, Word16 *bp_side, Word16 *mask_side, + Word16 cur_bin, Decoder_State_fx *st_fx, /* i/o: Decoder State */ + UWord32 cum_freq, /* i : Cumulative frequency */ + UWord32 sym_freq /* i : Symbol frequency */ +) +{ + UWord32 UL_tmp; + + + assert(st_fx->ac_help_fx < (1U << 24)); + assert(cum_freq < (1U << 24)); + + UL_tmp = UL_Mpy_32_32(cum_freq, st_fx->ac_help_fx); + assert(UL_tmp < (1U << 24)); + + st_fx->ac_low_fx = UL_subNsD(st_fx->ac_low_fx, UL_tmp); + move32(); /*0+0*/ + assert(st_fx->ac_low_fx < (1U << 24)); + + st_fx->ac_range_fx = UL_Mpy_32_32(st_fx->ac_help_fx, sym_freq); + move32(); + + assert(st_fx->ac_range_fx < (1U << 24)); + /* updated to 16 from 24 */ + WHILE (st_fx->ac_range_fx < (1U << 16)) + { + L_sub(0, 0); /* For comparision in while*/ + + st_fx->ac_low_fx = + UL_and(st_fx->ac_low_fx, 0x0000ffFF); /* make sure upshift doe not lead to more than 24 bits */ + assert(st_fx->ac_low_fx < 1U << 16); + + if (check_pc_bytes(bp, bp_side, mask_side, cur_bin, 1, &st_fx->pc) != 0) + return 1; + + /*shift in 8 bits */ + st_fx->ac_low_fx = UL_addNsD(UL_lshl_pos(st_fx->ac_low_fx, 8), UL_deposit_l((Word16)ptr[(*bp)++])); + move32(); + + assert(st_fx->ac_low_fx < (1U << 24)); + st_fx->ac_range_fx = UL_lshl_pos(st_fx->ac_range_fx, 8); + move32(); + assert(st_fx->ac_range_fx < (1U << 24)); + } + return 0; +} + +static __forceinline void pc_init_fx(Word16 n_pc, Word16 numbytes, Word16 be_bp_left, Word16 be_bp_right, Word16 L_spec, + Word16 enc, Word16 sim_dec, Word16 bfi, Pc_State_fx *pc /* i/o: Pc State */ +) +{ +pc->inv_bin = add(L_spec, 1); move16(); +pc->numbytes = numbytes; move16(); +pc->c_bp = 0; move16(); +pc->c_bp_side = 0; move16(); +pc->bytes = shr(add(n_pc, 1),1); move16(); +pc->b_left = add(numbytes,1); move16(); +pc->b_right = -1; move16(); +pc->enc = enc; move16(); +pc->sim_dec = sim_dec; move16(); +pc->bfi = bfi; move16(); +pc->be_bp_left = shr(be_bp_left, 3); move16(); +pc->be_bp_right = shr(be_bp_right, 3); move16(); + assert(pc->be_bp_right < pc->bytes || pc->bytes == 0); +} + +static __forceinline Word16 check_pc_bytes(Word16 *bp, Word16 *bp_side, Word16 *mask_side, Word16 cur_bin, + Word16 from_left, Pc_State_fx *pc /* i/o: Pc State */) +{ + Dyn_Mem_Deluxe_In(Word16 bp_local, bp_side_local, offset;); + + IF (pc->bytes > 0) + { + test(); + IF (from_left == 0 && sub(*mask_side, 1) != 0) + { + Dyn_Mem_Deluxe_Out(); + return 0; + } + test(); + IF (pc->c_bp_side > 0 && *bp_side < 0) + { + assert(*mask_side == 1); + assert(pc->b_right != -1); + *bp_side = pc->b_right; + Dyn_Mem_Deluxe_Out(); + return 0; + } + bp_local = *bp; + bp_side_local = *bp_side; + + IF (from_left != 0) + { + if (sub(*mask_side, 1) == 0) + { + bp_side_local = add(bp_side_local, 1); + } + } + ELSE + { + bp_local = sub(bp_local, 1); + } + + IF (pc->b_right < 0) + { + offset = -1; + move16(); + if (pc->enc == 0) + { + offset = add(offset, pc->bytes); + } + + IF (add(bp_side_local, sub(offset, bp_local)) == pc->bytes) + { + pc->b_left = add(bp_local, 1); + pc->b_right = sub(bp_side_local, 1); + IF (pc->enc != 0) + { + assert(pc->b_right - pc->b_left + 1 == pc->bytes); + Dyn_Mem_Deluxe_Out(); + return 1; + } + } + } + + test(); + IF (pc->enc == 0 && pc->b_right >= 0) + { + test(); + IF (from_left != 0 && sub(*bp, pc->b_left) == 0) + { + IF (pc->sim_dec == 1) + { + pc->b_left = *bp; + Dyn_Mem_Deluxe_Out(); + return 1; + } + *bp = 0; move16(); + pc->c_bp = 1; move16(); + } + test(); + IF (from_left == 0 && sub(bp_side_local, pc->b_right) == 0) + { + *bp_side = sub(pc->bytes, 1); + move16(); + pc->c_bp_side = 1; + move16(); + } + IF (sub(pc->bfi, 2) == 0) + { + test(); + test(); + IF ((pc->c_bp != 0 && sub(*bp, pc->be_bp_left) >= 0) || + (pc->c_bp_side != 0 && sub(*bp_side, pc->be_bp_right) <= 0)) + { + pc->inv_bin = cur_bin; + move16(); + Dyn_Mem_Deluxe_Out(); + return 1; + } + ELSE IF ((pc->c_bp != 0 && *bp >= 0) || (pc->c_bp_side != 0 && sub(*bp_side, sub(pc->bytes, 1)) <= 0)) + { + pc->inv_bin = s_min(pc->inv_bin, cur_bin); + Dyn_Mem_Deluxe_Out(); + return 0; + } + } + } + } + + Dyn_Mem_Deluxe_Out(); + return 0; +} + diff --git a/lib_lc3plus/attack_detector_fx.c b/lib_lc3plus/attack_detector_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..3c62f849405daf62e1c5eee0caa2f15c1b9a983f --- /dev/null +++ b/lib_lc3plus/attack_detector_fx.c @@ -0,0 +1,119 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +void attack_detector_fx(LC3PLUS_Enc *enc, EncSetup *setup, Word16 *input, Word16 input_scaling, void *scratch) +{ + Dyn_Mem_Deluxe_In( + int i, j, position; + Word32 tmp, *block_energy; + Word16 h16, l16, new_scaling, rescale, input_delta_scaling; + Word16 scales[3], *input_16k; + Word16 frame_length_16k; + ); + + block_energy = scratchAlign(scratch, 0); + input_16k = scratchAlign(block_energy, 4 * 4 + 4); + frame_length_16k = DEPR_i_mult(enc->attdec_nblocks, 40); + + IF (setup->attack_handling) + { + /* input scaling */ + scales[0] = add(getScaleFactor16(input, enc->frame_length), input_scaling); + scales[1] = add(getScaleFactor16_0(setup->attdec_filter_mem, 2), setup->attdec_scaling); + scales[2] = + shr(add(add(getScaleFactor32_0(&setup->attdec_acc_energy, 1), shl(setup->attdec_scaling, 1)), 1), 1); + new_scaling = s_min(scales[0], s_min(scales[1], scales[2])); + + new_scaling = sub(new_scaling, 2); /* add overhead for resampler*/ + + /* memory re-scaling */ + rescale = sub(new_scaling, setup->attdec_scaling); + + IF (rescale) + { + rescale = s_min(s_max(rescale, -15), 15); + setup->attdec_filter_mem[0] = shl(setup->attdec_filter_mem[0], rescale); move16(); + setup->attdec_filter_mem[1] = shl(setup->attdec_filter_mem[1], rescale); move16(); + setup->attdec_acc_energy = L_shl(setup->attdec_acc_energy, shl(rescale, 1)); move16(); + } + setup->attdec_scaling = new_scaling; move16(); + + SWITCH (enc->fs) + { + case 32000: + input_delta_scaling = sub(1, sub(new_scaling, input_scaling)); + FOR (i = 0; i < frame_length_16k; i++) + { + input_16k[i] = add(shr(input[2 * i + 0], input_delta_scaling), + shr(input[2 * i + 1], input_delta_scaling)); move16(); + } + break; + case 48000: + input_delta_scaling = sub(2, sub(new_scaling, input_scaling)); + FOR (i = 0; i < frame_length_16k; i++) + { + input_16k[i] = add(shr(input[3 * i + 0], input_delta_scaling), + add(shr(input[3 * i + 1], input_delta_scaling), + shr(input[3 * i + 2], input_delta_scaling))); move16(); + } + break; + default: ASSERT(!"sampling rate not supported in function attack_detector_fx!"); break; + } + + input_16k[-2] = setup->attdec_filter_mem[0]; move16(); + input_16k[-1] = setup->attdec_filter_mem[1]; move16(); + setup->attdec_filter_mem[0] = input_16k[frame_length_16k - 2]; move16(); + setup->attdec_filter_mem[1] = input_16k[frame_length_16k - 1]; move16(); + + FOR (i = frame_length_16k - 1; i >= 0; i--) + { + tmp = L_mult(input_16k[i], 12288); + tmp = L_msu(tmp, input_16k[i - 1], 16384); + tmp = L_mac(tmp, input_16k[i - 2], 4096); + + input_16k[i] = extract_h(tmp); move16(); + } + + basop_memset(block_energy, 0, 4 * sizeof(Word32)); + + FOR (j = 0; j < enc->attdec_nblocks; j++) + { + FOR (i = 0; i < 40; i++) + { + block_energy[j] = L_mac(block_energy[j], input_16k[i + j*40], input_16k[i + j*40]); move16(); + } + } + + setup->attdec_detected = setup->attdec_position >= enc->attdec_hangover_thresh; + test(); move16(); + position = -1; move16(); + + FOR (i = 0; i < enc->attdec_nblocks; i++) + { + /* block_energy[i] / 8.5 */ + l16 = extract_l(L_shr(block_energy[i], 1)); + l16 = s_and(l16, 0x7fff); + h16 = extract_h(block_energy[i]); + tmp = L_shr(L_mult0(l16, 30840), 15); + tmp = L_shr(L_mac0(tmp, h16, 30840), 2); + + IF (tmp > setup->attdec_acc_energy) + { + position = i; move16(); + setup->attdec_detected = 1; move16(); + } + setup->attdec_acc_energy = L_max(L_shr(setup->attdec_acc_energy, 2), block_energy[i]); move16(); + } + setup->attdec_position = position; move16(); + } + + Dyn_Mem_Deluxe_Out(); +} diff --git a/lib_lc3plus/basop_mpy_lc3plus.c b/lib_lc3plus/basop_mpy_lc3plus.c new file mode 100644 index 0000000000000000000000000000000000000000..88a6d336bb1408357c6761888b8bd3e7be2e460d --- /dev/null +++ b/lib_lc3plus/basop_mpy_lc3plus.c @@ -0,0 +1,99 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" + +#include "functions.h" + +#ifdef ENABLE_HR_MODE +Word32 Mpy_32_32_0(Word32 x, Word32 y) +{ + Word32 z; + + z = L_shr(L_add(Mpy_32_32_lc3plus(x, y),1), 1); + + return (z); +} + +Word32 Mpy_32_16_0(Word32 x, Word16 y) +{ + Word32 z; + + z = L_shr(L_add(Mpy_32_16_lc3plus(x, y),1), 1); + + return (z); +} +#endif + +Word32 Mpy_32_16_lc3plus(Word32 x, Word16 y) +{ + Word32 mh; + UWord16 ml; + + Mpy_32_16_ss(x, y, &mh, &ml); + + return (mh); +} + + +Word32 Mpy_32_32_lc3plus(Word32 x, Word32 y) +{ + Word32 mh; + UWord32 ml; + + Mpy_32_32_ss(x, y, &mh, &ml); + + return (mh); +} + + +void cplxMpy_32_16(Word32 *c_Re, Word32 *c_Im, const Word32 a_Re, const Word32 a_Im, const Word16 b_Re, + const Word16 b_Im) +{ + *c_Re = L_sub(Mpy_32_16_lc3plus(a_Re, b_Re), Mpy_32_16_lc3plus(a_Im, b_Im)); move32(); + *c_Im = L_add(Mpy_32_16_lc3plus(a_Re, b_Im), Mpy_32_16_lc3plus(a_Im, b_Re)); move32(); +} + +void cplxMpy_32_32(Word32 *c_Re, Word32 *c_Im, const Word32 a_Re, const Word32 a_Im, const Word32 b_Re, + const Word32 b_Im) +{ + *c_Re = L_sub(Mpy_32_32_lc3plus(a_Re, b_Re), Mpy_32_32_lc3plus(a_Im, b_Im)); move32(); + *c_Im = L_add(Mpy_32_32_lc3plus(a_Re, b_Im), Mpy_32_32_lc3plus(a_Im, b_Re)); move32(); +} + +#ifdef ENABLE_HR_MODE +Word32 Mac_32_16_0(Word32 z, Word32 x, Word16 y) +{ + z = L_add(z, Mpy_32_16_0(x, y)); + + return (z); +} + +Word32 Mac_32_32_0(Word32 z, Word32 x, Word32 y) +{ + z = L_add(z, Mpy_32_32_0(x, y)); + + return (z); +} + +Word32 Msu_32_16_0(Word32 z, Word32 x, Word16 y) +{ + z = L_sub(z, Mpy_32_16_0(x, y)); + + return (z); +} + +Word32 Msu_32_32_0(Word32 z, Word32 x, Word32 y) +{ + z = L_sub(z, Mpy_32_32_0(x, y)); + + return (z); +} + +#endif /* #ifdef ENABLE_HR_MODE */ diff --git a/lib_lc3plus/basop_mpy_lc3plus.h b/lib_lc3plus/basop_mpy_lc3plus.h new file mode 100644 index 0000000000000000000000000000000000000000..72c7d91bbf3f94dde0eedce832cf6265dc3f794a --- /dev/null +++ b/lib_lc3plus/basop_mpy_lc3plus.h @@ -0,0 +1,94 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" + +#ifndef __BASOP_MPY_LC3PLUS_H +#define __BASOP_MPY_LC3PLUS_H + +#include "functions.h" + +#ifdef ENABLE_HR_MODE +Word32 Mpy_32_16_0(Word32 x, Word16 y); +#endif + +Word32 Mac_32_16_0(Word32 z, Word32 x, Word16 y); +Word32 Mpy_32_32_0(Word32 x, Word32 y); +Word32 Mac_32_32_0(Word32 z, Word32 x, Word32 y); +Word32 Msu_32_16_0(Word32 z, Word32 x, Word16 y); +Word32 Msu_32_32_0(Word32 z, Word32 x, Word32 y); + +/** + * \brief 32*16 Bit fractional Multiplication using 40 bit OPS + * Performs a multiplication of a 32-bit variable x by + * a 16-bit variable y, returning a 32-bit value. + * + * \param[i] x + * \param[i] y + * + * \return x*y + */ +Word32 Mpy_32_16_lc3plus(Word32 x, Word16 y); + +/** + * \brief 32*32 Bit fractional Multiplication using 40 bit OPS + * + * Performs a multiplication of a 32-bit variable x by + * a 32-bit variable y, returning a 32-bit value. + * + * \param[i] x + * \param[i] y + * + * \return x*y + */ +Word32 Mpy_32_32_lc3plus(Word32 x, Word32 y); + +#ifdef CR8_F_ADAPT_MDCT_DCT_PRECISION + +# ifdef ENABLE_HR_MODE +# define cplxMpy32_32_32_2(re, im, a, b, c, d) \ + do \ + { \ + re = L_sub(Mpy_32_32_0(a, c), Mpy_32_32_0(b, d)); \ + im = L_add(Mpy_32_32_0(a, d), Mpy_32_32_0(b, c)); \ + } while (0) +# endif +# define cplxMpy32_32_16_2(re, im, a, b, c, d) \ + do \ + { \ + re = L_sub(L_shr_pos(Mpy_32_16_lc3plus(a, c), 1), L_shr_pos(Mpy_32_16_lc3plus(b, d), 1)); \ + im = L_add(L_shr_pos(Mpy_32_16_lc3plus(a, d), 1), L_shr_pos(Mpy_32_16_lc3plus(b, c), 1)); \ + } while (0) + + +#else /* CR8_F_ADAPT_MDCT_DCT_PRECISION */ + +# ifdef ENABLE_HR_MODE +# define cplxMpy32_32_32_2(re, im, a, b, c, d) \ + do \ + { \ + re = L_sub(Mpy_32_32_0(a, c), Mpy_32_32_0(b, d)); \ + im = L_add(Mpy_32_32_0(a, d), Mpy_32_32_0(b, c)); \ + } while (0) +# endif +# define cplxMpy32_32_16_2(re, im, a, b, c, d) \ + do \ + { \ + re = L_sub(L_shr_pos(Mpy_32_16_lc3plus(a, c), 1), L_shr_pos(Mpy_32_16_lc3plus(b, d), 1)); \ + im = L_add(L_shr_pos(Mpy_32_16_lc3plus(a, d), 1), L_shr_pos(Mpy_32_16_lc3plus(b, c), 1)); \ + } while (0) + +#endif /* CR8_F_ADAPT_MDCT_DCT_PRECISION */ + +void cplxMpy_32_16(Word32 *c_Re, Word32 *c_Im, const Word32 a_Re, const Word32 a_Im, const Word16 b_Re, + const Word16 b_Im); +void cplxMpy_32_32(Word32 *c_Re, Word32 *c_Im, const Word32 a_Re, const Word32 a_Im, const Word32 b_Re, + const Word32 b_Im); + +#endif /* __BASOP_MPY_LC3PLUS_H */ diff --git a/lib_lc3plus/basop_util_lc3plus.c b/lib_lc3plus/basop_util_lc3plus.c new file mode 100644 index 0000000000000000000000000000000000000000..9f2d6be79dd00b5aa8435ece1fa2114f0d6990fe --- /dev/null +++ b/lib_lc3plus/basop_util_lc3plus.c @@ -0,0 +1,1069 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" +#include "rom_basop_util_lc3plus.h" +#include "basop_util_lc3plus.h" + +extern const Word32 SqrtTable_lc3plus[32]; +extern const Word16 SqrtDiffTable_lc3plus[32]; + +extern const Word32 ISqrtTable_lc3plus[32]; +extern const Word16 ISqrtDiffTable_lc3plus[32]; + +extern const Word32 InvTable_lc3plus[32]; +extern const Word16 InvDiffTable_lc3plus[32]; + +Word32 BASOP_Util_Log2_lc3plus(Word32 x) +{ + Word32 exp; + Word16 exp_e; + Word16 nIn; + Word16 accuSqr; + Word32 accuRes; + + assert(x >= 0); + + if (x == 0) + { + + return ((Word32)MIN_32); + } + + /* normalize input, calculate integer part */ + exp_e = norm_l(x); + x = L_shl(x, exp_e); + exp = L_deposit_l(exp_e); + + /* calculate (1-normalized_input) */ + nIn = extract_h(L_sub(MAX_32, x)); + + /* approximate ln() for fractional part (nIn *c0 + nIn^2*c1 + nIn^3*c2 + ... + nIn^8 *c7) */ + + /* iteration 1, no need for accumulation */ + accuRes = L_mult(nIn, ldCoeff_lc3plus[0]); /* nIn^i * coeff[0] */ + accuSqr = mult(nIn, nIn); /* nIn^2, nIn^3 .... */ + + /* iteration 2 */ + accuRes = L_mac(accuRes, accuSqr, ldCoeff_lc3plus[1]); /* nIn^i * coeff[1] */ + accuSqr = mult(accuSqr, nIn); /* nIn^2, nIn^3 .... */ + + /* iteration 3 */ + accuRes = L_mac(accuRes, accuSqr, ldCoeff_lc3plus[2]); /* nIn^i * coeff[2] */ + accuSqr = mult(accuSqr, nIn); /* nIn^2, nIn^3 .... */ + + /* iteration 4 */ + accuRes = L_mac(accuRes, accuSqr, ldCoeff_lc3plus[3]); /* nIn^i * coeff[3] */ + accuSqr = mult(accuSqr, nIn); /* nIn^2, nIn^3 .... */ + + /* iteration 5 */ + accuRes = L_mac(accuRes, accuSqr, ldCoeff_lc3plus[4]); /* nIn^i * coeff[4] */ + accuSqr = mult(accuSqr, nIn); /* nIn^2, nIn^3 .... */ + + /* iteration 6 */ + accuRes = L_mac(accuRes, accuSqr, ldCoeff_lc3plus[5]); /* nIn^i * coeff[5] */ + accuSqr = mult(accuSqr, nIn); /* nIn^2, nIn^3 .... */ + + /* iteration 7, no need to calculate accuSqr any more */ + accuRes = L_mac(accuRes, accuSqr, ldCoeff_lc3plus[6]); /* nIn^i * coeff[6] */ + + /* ld(fractional part) = ln(fractional part)/ln(2), 1/ln(2) = (1 + 0.44269504) */ + accuRes = L_mac0(L_shr(accuRes, 1), extract_h(accuRes), 14506); + + accuRes = L_shr(accuRes, LD_DATA_SCALE - 1); /* fractional part/LD_DATA_SCALE */ + exp = L_shl(exp, (31 - LD_DATA_SCALE)); /* integer part/LD_DATA_SCALE */ + accuRes = L_sub(accuRes, exp); /* result = integer part + fractional part */ + + return (accuRes); +} + +Word32 BASOP_Util_InvLog2_lc3plus(Word32 x) +{ +#ifdef ENABLE_HR_MODE + /* Original code was used for negative x and hence the exp was always 0, which is assumed */ + Word16 exp; + return BASOP_Util_InvLog2_pos(x, &exp); +#else + Word16 frac; + Word16 exp; + Word32 retVal; + UWord32 index3; + UWord32 index2; + UWord32 index1; + UWord32 lookup3f; + UWord32 lookup12; + UWord32 lookup; + + if (x < -1040187392l /*-31.0/64.0 Q31*/) + { + + return 0; + } + test(); + if ((L_sub(x, 1040187392l /*31.0/64.0 Q31*/) >= 0) || (x == 0)) + { + + return 0x7FFFFFFF; + } + + frac = extract_l(L_and(x, 0x3FF)); + + index3 = L_and(L_shr_pos(x, 10), 0x1F); + index2 = L_and(L_shr_pos(x, 15), 0x1F); + index1 = L_and(L_shr_pos(x, 20), 0x1F); + + exp = extract_l(L_shr_pos(x, 25)); + if (x > 0) + { + exp = sub(31, exp); + } + if (x < 0) + { + exp = negate(exp); + } + + lookup3f = L_add(exp2x_tab_long_lc3plus[index3], L_shr_pos(Mpy_32_16_lc3plus(0x0016302F, frac), 1)); + lookup12 = Mpy_32_32_lc3plus(exp2_tab_long_lc3plus[index1], exp2w_tab_long_lc3plus[index2]); + lookup = Mpy_32_32_lc3plus(lookup12, lookup3f); + + retVal = L_shr(lookup, sub(exp, 3)); + + return retVal; +#endif +} + +#ifdef ENABLE_HR_MODE +/* New function which works with positive and negative exponents */ +Word32 BASOP_Util_InvLog2_pos(Word32 x, Word16 *exp) +{ + Word16 frac; + Word16 ret_exp; + Word32 retVal; + UWord32 index3; + UWord32 index2; + UWord32 index1; + UWord32 lookup3f; + UWord32 lookup12; + UWord32 lookup; + + /* The usage of exp.mantissa format in LC3plus in Word32 is : floatval = mantissa / (2^(31 - exp)) */ + ret_exp = extract_l(L_shr(x, 25)); + + IF (x < -1040187392l /*-31.0/64.0 Q31*/) + { + *exp = 0; + move16(); + return 0; + } + test(); + IF ((L_sub(x, 1040187392l /*31.0/64.0 Q31*/) >= 0)) + { + *exp = 31; + move16(); + return 0x40000000; + } + ELSE IF(x == 0) + { + *exp = -1; + move16(); + return 0x10000000; + } + + frac = extract_l(L_and(x, 0x3FF)); + + index3 = L_and(L_shr(x, 10), 0x1F); + index2 = L_and(L_shr(x, 15), 0x1F); + index1 = L_and(L_shr(x, 20), 0x1F); + + lookup3f = L_add(exp2x_tab_long_lc3plus[index3], L_shr(Mpy_32_16_lc3plus(0x0016302F, frac), 1)); + lookup12 = Mpy_32_32_lc3plus(exp2_tab_long_lc3plus[index1], exp2w_tab_long_lc3plus[index2]); + lookup = Mpy_32_32_lc3plus(lookup12, lookup3f); + + IF (x > 0) + { + /* The returned exponent is the offset from 31, so the float result is + retVal / 2^(31 - *exp) */ + *exp = add(ret_exp, 3); + retVal = lookup; + } + ELSE + { + /* For negative powers provide the result in Q31 and ignore the exponent */ + *exp = 0; + retVal = L_shr(lookup, sub(negate(ret_exp), 3)); + } + + return retVal; +} +#endif + +/* local function for Sqrt16_lc3plus and Sqrt16norm */ +static Word16 Sqrt16_common(Word16 m, Word16 e) +{ + Word16 index, frac; + + assert((m >= 0x4000) || (m == 0)); + + /* get table index (upper 6 bits minus 32) */ + /* index = (m >> 9) - 32; */ + index = mac_r(-32768 - (32 << 16), m, 1 << 6); + + /* get fractional part for interpolation (lower 9 bits) */ + frac = s_and(m, 0x1FF); /* Q9 */ + + /* interpolate */ + if (m != 0) + { + m = mac_r(SqrtTable_lc3plus[index], SqrtDiffTable_lc3plus[index], frac); + } + + /* handle odd exponents */ + if (s_and(e, 1) != 0) + m = mult_r(m, 0x5a82); + + return m; +} + +/* local function for ISqrt16 and ISqrt16norm */ +static Word16 ISqrt16_common(Word16 m, Word16 e) +{ + Word16 index, frac; + + assert(m >= 0x4000); + + /* get table index (upper 6 bits minus 32) */ + /* index = (m >> 9) - 32; */ + index = mac_r(-32768 - (32 << 16), m, 1 << 6); + + /* get fractional part for interpolation (lower 9 bits) */ + frac = s_and(m, 0x1FF); /* Q9 */ + + /* interpolate */ + m = msu_r(ISqrtTable_lc3plus[index], ISqrtDiffTable_lc3plus[index], frac); + + /* handle even exponents */ + if (s_and(e, 1) == 0) + m = mult_r(m, 0x5a82); + + return m; +} + +Word16 Sqrt16_lc3plus( /*!< output mantissa */ + Word16 mantissa, /*!< input mantissa */ + Word16 *exponent /*!< pointer to exponent */ +) +{ + Word16 preShift, e; + + assert(mantissa >= 0); + + /* normalize */ + preShift = norm_s(mantissa); + + e = sub(*exponent, preShift); + mantissa = shl(mantissa, preShift); + + /* calc mantissa */ + mantissa = Sqrt16_common(mantissa, e); + + /* e = (e + 1) >> 1 */ + *exponent = mult_r(e, 1 << 14); move16(); + + return mantissa; +} + +Word16 ISqrt16( /*!< output mantissa */ + Word16 mantissa, /*!< input mantissa */ + Word16 *exponent /*!< pointer to exponent */ +) +{ + Word16 preShift, e; + + assert(mantissa > 0); + + /* normalize */ + preShift = norm_s(mantissa); + + e = sub(*exponent, preShift); + mantissa = shl(mantissa, preShift); + + /* calc mantissa */ + mantissa = ISqrt16_common(mantissa, e); + + /* e = (2 - e) >> 1 */ + *exponent = msu_r(1L << 15, e, 1 << 14); move16(); + + return mantissa; +} + +Word16 Inv16_lc3plus( /*!< output mantissa */ + Word16 mantissa, /*!< input mantissa */ + Word16 *exponent /*!< pointer to exponent */ +) +{ + Word16 index, frac; + Word16 preShift; + Word16 m, e; + + assert(mantissa != 0); + + /* absolute */ + m = abs_s(s_max(mantissa, MIN_16 + 1)); + + /* normalize */ + preShift = norm_s(m); + + e = sub(*exponent, preShift); + m = shl(m, preShift); + + /* get table index (upper 6 bits minus 32) */ + /* index = (m >> 9) - 32; */ + index = mac_r(-32768 - (32 << 16), m, 1 << 6); + + /* get fractional part for interpolation (lower 9 bits) */ + frac = shl(s_and(m, 0x1FF), 1); /* Q10 */ + + /* interpolate */ + m = msu_r(InvTable_lc3plus[index], InvDiffTable_lc3plus[index], frac); + + /* restore sign */ + if (mantissa < 0) + m = negate(m); + + /* e = 1 - e */ + *exponent = sub(1, e); move16(); + + return m; +} + +/********************************************************************/ +/*! + \brief Calculates the scalefactor needed to normalize input array + + The scalefactor needed to normalize the Word16 input array is returned
+ If the input array contains only '0', a scalefactor 0 is returned
+ Scaling factor is determined wrt a normalized target x: 16384 <= x <= 32767 for positive x
+ and -32768 <= x <= -16384 for negative x +*/ + +Word16 getScaleFactor16( /* o: measured headroom in range [0..15], 0 if all x[i] == 0 */ + const Word16 *x, /* i: array containing 16-bit data */ + const Word16 len_x) /* i: length of the array to scan */ +{ + Counter i; + Word16 i_min, i_max; + Word16 x_min, x_max; + + x_max = 0; move16(); + x_min = 0; move16(); + FOR (i = 0; i < len_x; i++) + { + if (x[i] >= 0) + x_max = s_max(x_max, x[i]); + if (x[i] < 0) + x_min = s_min(x_min, x[i]); + } + + i_max = 0x10; move16(); + i_min = 0x10; move16(); + + if (x_max != 0) + i_max = norm_s(x_max); + + if (x_min != 0) + i_min = norm_s(x_min); + + i = s_and(s_min(i_max, i_min), 0xF); + + return i; +} + +/********************************************************************/ +/*! + \brief Calculates the scalefactor needed to normalize input array + + The scalefactor needed to normalize the Word16 input array is returned
+ If the input array contains only '0', a scalefactor 16 is returned
+ Scaling factor is determined wrt a normalized target x: 16384 <= x <= 32767 for positive x
+ and -32768 <= x <= -16384 for negative x +*/ + +Word16 getScaleFactor16_0( /* o: measured headroom in range [0..15], 16 if all x[i] == 0 */ + const Word16 *x, /* i: array containing 16-bit data */ + const Word16 len_x) /* i: length of the array to scan */ +{ + Counter i; + Word16 i_min, i_max; + Word16 x_min, x_max; + + x_max = 0; move16(); + x_min = 0; move16(); + FOR (i = 0; i < len_x; i++) + { + if (x[i] >= 0) + x_max = s_max(x_max, x[i]); + if (x[i] < 0) + x_min = s_min(x_min, x[i]); + } + + i_max = 0x10; move16(); + i_min = 0x10; move16(); + + if (x_max != 0) + i_max = norm_s(x_max); + + if (x_min != 0) + i_min = norm_s(x_min); + + i = s_min(i_max, i_min); + + return i; +} + +/********************************************************************/ +/*! + \brief Calculates the scalefactor needed to normalize input array + + The scalefactor needed to normalize the Word32 input array is returned
+ If the input array contains only '0', a scalefactor 0 is returned
+ Scaling factor is determined wrt a normalized target x: 1073741824 <= x <= 2147483647 for positive x
+ and -2147483648 <= x <= -1073741824 for negative x +*/ + +Word16 getScaleFactor32_lc3plus( /* o: measured headroom in range [0..31], 0 if all x[i] == 0 */ + const Word32 *x, /* i: array containing 32-bit data */ + const Word16 len_x) /* i: length of the array to scan */ +{ + Counter i; + Word16 i_min, i_max; + Word32 x_min, x_max; + + x_max = L_add(0, 0); + x_min = L_add(0, 0); + FOR (i = 0; i < len_x; i++) + { + if (x[i] >= 0) + x_max = L_max(x_max, x[i]); + if (x[i] < 0) + x_min = L_min(x_min, x[i]); + } + + i_max = 0x20; move16(); + i_min = 0x20; move16(); + + if (x_max != 0) + i_max = norm_l(x_max); + + if (x_min != 0) + i_min = norm_l(x_min); + + i = s_and(s_min(i_max, i_min), 0x1F); + + return i; +} + +/********************************************************************/ +/*! + \brief Calculates the scalefactor needed to normalize input array + + The scalefactor needed to normalize the Word32 input array is returned
+ If the input array contains only '0', a scalefactor 32 is returned
+ Scaling factor is determined wrt a normalized target x: 1073741824 <= x <= 2147483647 for positive x
+ and -2147483648 <= x <= -1073741824 for negative x +*/ + +Word16 getScaleFactor32_0( /* o: measured headroom in range [0..31], 32 if all x[i] == 0 */ + const Word32 *x, /* i: array containing 32-bit data */ + const Word16 len_x) /* i: length of the array to scan */ +{ + Counter i; + Word16 i_min, i_max; + Word32 x_min, x_max; + + x_max = L_add(0, 0); + x_min = L_add(0, 0); + FOR (i = 0; i < len_x; i++) + { + if (x[i] >= 0) + x_max = L_max(x_max, x[i]); + if (x[i] < 0) + x_min = L_min(x_min, x[i]); + } + + i_max = 0x20; move16(); + i_min = 0x20; move16(); + + if (x_max != 0) + i_max = norm_l(x_max); + + if (x_min != 0) + i_min = norm_l(x_min); + + i = s_min(i_max, i_min); + + return i; +} + +Word16 BASOP_Util_Divide3216_Scale_lc3plus( /* o: result of division x/y, not normalized */ + Word32 x, /* i: numerator, signed */ + Word16 y, /* i: denominator, signed */ + Word16 *s) /* o: scaling, 0, if x==0 */ +{ + Word16 z; + Word16 sx; + Word16 sy; + Word16 sign; + + /*assert (x > (Word32)0); + assert (y >= (Word16)0);*/ + + /* check, if numerator equals zero, return zero then */ + IF (x == (Word32)0) + { + *s = 0; move16(); + + return ((Word16)0); + } + + sign = s_xor(extract_h(x), y); /* just to exor the sign bits */ + x = L_abs(L_max(x, MIN_32 + 1)); + y = abs_s(s_max(y, MIN_16 + 1)); + sx = sub(norm_l(x), 1); + x = L_shl(x, sx); + sy = norm_s(y); + y = shl(y, sy); + *s = sub(sy, sx); move16(); + + z = div_s(round_fx(x), y); + + if (sign < 0) /* if sign bits differ, negate the result */ + { + z = negate(z); + } + + return z; +} + +Word16 BASOP_Util_Divide1616_Scale_lc3plus(Word16 x, Word16 y, Word16 *s) +{ + Word16 z; + Word16 sx; + Word16 sy; + Word16 sign; + + /* assert (x >= (Word16)0); */ + assert(y != (Word16)0); + + sign = 0; move16(); + + IF (x < 0) + { + x = negate(x); + sign = s_xor(sign, 1); + } + + IF (y < 0) + { + y = negate(y); + sign = s_xor(sign, 1); + } + + IF (x == (Word16)0) + { + *s = 0; move16(); + + return ((Word16)0); + } + + sx = norm_s(x); + x = shl(x, sx); + x = shr(x, 1); + *s = sub(1, sx); move16(); + + sy = norm_s(y); + y = shl(y, sy); + *s = add(*s, sy); move16(); + + z = div_s(x, y); + + if (sign != 0) + { + z = negate(z); + } + + return z; +} + +Word32 Norm32Norm(const Word32 *x, const Word16 headroom, const Word16 length, Word16 *result_e) +{ + Word32 L_tmp, L_tmp2, inc; + Word16 s, shift, tmp; + Counter i; + + shift = headroom; move16(); + + L_tmp = L_deposit_l(0); + + FOR (i = 0; i < length; i++) + { + L_tmp2 = L_sub(L_tmp, 0x40000000); + if (L_tmp2 >= 0) + shift = sub(shift, 1); + if (L_tmp2 >= 0) + L_tmp = L_shr(L_tmp, 2); + + tmp = round_fx_sat(L_shl_sat(x[i], shift)); + L_tmp = L_mac0(L_tmp, tmp, tmp); /* exponent = (1-shift*2) , Q(30+shift*2) */ + } + + /* Consider an increase of 0xfffd per sample in case that the pre-shift factor + in the acf is 1 bit higher than the shift factor estimated in this function. + This prevent overflows in the acf. */ + IF (L_tmp != 0) + { + s = norm_s(length); + inc = L_shl(Mpy_32_16_lc3plus(0x0000fffd, shl(length, s)), sub(15, s)); + L_tmp = L_add_sat(L_tmp, inc); + } + + *result_e = sub(1, shl(shift, 1)); move16(); + + return L_tmp; +} + +void Scale_sig(Word16 x[], /* i/o: signal to scale Qx */ + const Word16 lg, /* i : size of x[] Q0 */ + const Word16 exp0 /* i : exponent: x = round(x << exp) Qx ?exp */ +) +{ + Counter i; + Word16 tmp; + IF (exp0 > 0) + { + tmp = s_min(exp0, 15); move16(); + FOR (i = 0; i < lg; i++) + { + x[i] = shl(x[i], tmp); move16(); /* saturation can occur here */ + } + return; + } + IF (exp0 < 0) + { + tmp = shl(-32768, s_max(exp0, -15)); /* we use negative to correctly represent 1.0 */ + FOR (i = 0; i < lg; i++) + { + x[i] = msu_r(0, x[i], tmp); move16(); /* msu instead of mac because factor is negative */ + } + return; + } +} + +void Copy_Scale_sig(const Word16 x[], /* i : signal to scale input Qx */ + Word16 y[], /* o : scaled signal output Qx */ + const Word16 lg, /* i : size of x[] Q0 */ + const Word16 exp0 /* i : exponent: x = round(x << exp) Qx ?exp */ +) +{ + Counter i; + Word16 tmp; + + IF (exp0 == 0) + { + basop_memmove(y, x, lg * sizeof(Word16)); + + return; + } + IF (exp0 < 0) + { + tmp = shl(-32768, exp0); /* we use negative to correctly represent 1.0 */ + FOR (i = 0; i < lg; i++) + { + y[i] = msu_r(0, x[i], tmp); move16(); + } + return; + } + FOR (i = 0; i < lg; i++) + { + y[i] = shl_sat(x[i], exp0); move16(); /* saturation can occur here */ + } +} + +Word32 BASOP_Util_Add_Mant32Exp_lc3plus /*!< o: normalized result mantissa */ + (Word32 a_m, /*!< i: Mantissa of 1st operand a */ + Word16 a_e, /*!< i: Exponent of 1st operand a */ + Word32 b_m, /*!< i: Mantissa of 2nd operand b */ + Word16 b_e, /*!< i: Exponent of 2nd operand b */ + Word16 *ptr_e) /*!< o: exponent of result */ +{ + Word32 L_tmp; + Word16 shift; + + /* Compare exponents: the difference is limited to +/- 30 + The Word32 mantissa of the operand with lower exponent is shifted right by the exponent difference. + Then, the unshifted mantissa of the operand with the higher exponent is added. The addition result + is normalized and the result represents the mantissa to return. The returned exponent takes into + account all shift operations. + */ + + if (!a_m) + a_e = add(b_e, 0); + + if (!b_m) + b_e = add(a_e, 0); + + shift = sub(a_e, b_e); + shift = s_max(-31, shift); + shift = s_min(31, shift); + if (shift < 0) + { + /* exponent of b is greater than exponent of a, shr a_m */ + a_m = L_shl(a_m, shift); + } + if (shift > 0) + { + /* exponent of a is greater than exponent of b */ + b_m = L_shr(b_m, shift); + } + a_e = add(s_max(a_e, b_e), 1); + L_tmp = L_add(L_shr(a_m, 1), L_shr(b_m, 1)); + shift = norm_l(L_tmp); + if (shift) + L_tmp = L_shl(L_tmp, shift); + if (L_tmp == 0) + a_e = add(0, 0); + if (L_tmp != 0) + a_e = sub(a_e, shift); + *ptr_e = a_e; + + return (L_tmp); +} + +Word16 BASOP_Util_Cmp_Mant32Exp_lc3plus /*!< o: flag: result of comparison */ + /* 0, if a == b */ + /* 1, if a > b */ + /* -1, if a < b */ + (Word32 a_m, /*!< i: Mantissa of 1st operand a */ + Word16 a_e, /*!< i: Exponent of 1st operand a */ + Word32 b_m, /*!< i: Mantissa of 2nd operand b */ + Word16 b_e) /*!< i: Exponent of 2nd operand b */ + +{ + Word32 diff_m; + Word16 diff_e, shift, result; + + /* + This function compares two input parameters, both represented by a 32-bit mantissa and a 16-bit exponent. + If both values are identical, 0 is returned. + If a is greater b, 1 is returned. + If a is less than b, -1 is returned. + */ + + /* Check, if both mantissa and exponents are identical, when normalized: return 0 */ + shift = norm_l(a_m); + if (shift) + a_m = L_shl(a_m, shift); + if (shift) + a_e = sub(a_e, shift); + + shift = norm_l(b_m); + if (shift) + b_m = L_shl(b_m, shift); + if (shift) + b_e = sub(b_e, shift); + + /* align exponent, if any mantissa is zero */ + if (!a_m) + a_e = add(b_e, 0); + if (!b_m) + b_e = add(a_e, 0); + + IF (a_m > 0 && b_m < 0) + { + diff_m = 1; move16(); + } + ELSE IF (a_m<0 && b_m> 0) + { + diff_m = -1; move16(); + } + ELSE + { + diff_m = L_sub(a_m, b_m); + } + + diff_e = sub(a_e, b_e); + + test(); + IF (diff_m == 0 && diff_e == 0) + { + return 0; + } + + /* Check sign, exponent and mantissa to identify, whether a is greater b or not */ + result = sub(0, 1); + + IF (a_m >= 0) + { + /* a is positive */ + if (b_m < 0) + { + result = add(1, 0); + } + + test(); test(); test(); + if ((b_m >= 0) && ((diff_e > 0) || (diff_e == 0 && diff_m > 0))) + { + result = add(1, 0); + } + } + ELSE + { + /* a is negative */ + test(); test(); test(); + if ((b_m < 0) && ((diff_e < 0) || (diff_e == 0 && diff_m > 0))) + { + result = add(1, 0); + } + } + return result; +} + +/*----------------------------------------------------------------------------------* + * Function: Isqrt + * + * Description: + * + * The function computes 1/sqrt(x). + * The mantissa of the input value must be in the range of 1.0 > x >= 0.5. + * The computation of the inverse square root is an approach with a lookup table + * and linear interpolation. + * + * result = x * 2^x_e + * + * Parameter: + * + * x [i] mantissa (Q31) + * x_e [i/o] pointer to exponent (Q0) + * + * Return value: + * + * mantissa (Q31) + * + *----------------------------------------------------------------------------------*/ +Word32 Isqrt_lc3plus(Word32 x, /* mantissa */ + Word16 *x_e /* pointer to exponent */ +) +{ + Word16 s; + Word32 y; + Word32 idx; + Word32 diff; + Word16 fract; + + IF (x <= 0) + { + *x_e = 0; move16(); + return 0x7FFFFFFF; + } + + /* check if exponent is odd */ + s = s_and(*x_e, 0x0001); + + /* get table index (upper 8 bits) */ + idx = L_and(L_shr(x, (31 - 8)), 0x00000007f); + + /* get fractional part for interpolation (lower 23 bits) */ + fract = extract_h(L_shl(L_and(x, 0x007FFFFF), 8)); + + /* interpolate */ + diff = L_sub(isqrt_table[idx + 1], isqrt_table[idx]); + y = L_add(isqrt_table[idx], Mpy_32_16_lc3plus(diff, fract)); + + /* if exponent is odd apply sqrt(0.5) */ + if (s != 0) + { + y = Mpy_32_16_lc3plus(y, 0x5A82 /*0x5A827999*/); + } + + /* if exponent is odd shift 1 bit left */ + if (s != 0) + { + y = L_shl(y, s); + } + + /* change sign, shift right and add 1 to exponent (implicit exponent of isqrt_table) */ + *x_e = mac_r(32768, *x_e, -16384); move16(); + + return y; +} + +Word16 BASOP_Util_Log2_16(Word32 x, Word16 x_e) +{ + Word16 shift, tmp1, tmp2; + Word16 outInt, outFrac, out; + + assert(x >= 0); + + if (x == 0) + { + return (MIN_16); + } + + /* Scale Input */ + shift = norm_l(x); + x = L_shl(x, sub(shift, 10)); + + /* Integer part */ + outInt = shl(sub(sub(x_e, shift), 1), 9); + + /* Fractional part */ + tmp1 = mac_r(x, -33, 16384); + tmp2 = lshr(extract_l(x), 6); + outFrac = mac_r(Log2_16_table1[tmp1], Log2_16_table2[tmp1], tmp2); + + /* Output */ + out = add(outInt, outFrac); + + return out; +} + +Word16 BASOP_Util_InvLog2_16(Word16 x, Word16 *y_e) +{ + Word16 tmp1, tmp2, y; + + tmp1 = shr(s_and(x, 2047), 5); + tmp2 = shl(s_and(x, 31), 4); + y = mac_r(InvLog2_16_table1[tmp1], InvLog2_16_table2[tmp1], tmp2); + *y_e = add(shr_pos(x, 11), 1); + + return y; +} + +#ifdef ENABLE_HR_MODE +#define DFRACT_BITS 32 /* double precision */ + +#define SQRT_BITS 7 +#define SQRT_BITS_MASK 0x7f +#define SQRT_FRACT_BITS_MASK 0x007FFFFF + +#ifndef Word64 +#define Word64 long long +#endif + +static __inline Word32 Mpy_32_32_noshift(Word32 x1, Word32 x2) +{ + Word64 ret = 0; + ret = ((Word64)x1 * (Word64)x2); + return ((Word32)((ret & (Word64)0xffffffff00000000) >> 32)); +} + +static __inline Word32 fixmadddiv2_DD(const Word32 x, const Word32 a, const Word32 b) +{ + return ((((Word64)x << 32) + (Word64)a * b) >> 32); +} + +/** + * \brief calculate 1.0/sqrt(op) + * \param op_m mantissa of input value. + * \param result_e pointer to return the exponent of the result + * \return mantissa of the result + */ +/***************************************************************************** + delivers 1/sqrt(op) normalized to .5...1 and the shift value of the OUTPUT, + i.e. the denormalized result is 1/sqrt(op) = invSqrtNorm(op) * 2^(shift) + uses Newton-iteration for approximation + Q(n+1) = Q(n) + Q(n) * (0.5 - 2 * V * Q(n)^2) + with Q = 0.5* V ^-0.5; 0.5 <= V < 1.0 +*****************************************************************************/ +static __inline Word32 invSqrtNorm2(Word32 op, Word32 *shift) +{ + Word32 val = op; + Word32 reg1, reg2; + + if (val == 0) + { + *shift = 16; + return ((Word32)0x7FFFFFFF); /* maximum positive value */ + } + +/* #define INVSQRTNORM2_NEWTON_ITERATE */ +#define INVSQRTNORM2_LINEAR_INTERPOLATE +#define INVSQRTNORM2_LINEAR_INTERPOLATE_HQ + + /* normalize input, calculate shift value */ + assert(val > 0); + *shift = norm_l(val); /* CountLeadingBits() is not necessary here since test value is always > 0 */ + val <<= *shift; /* normalized input V */ + *shift += 2; /* bias for exponent */ + +#if defined(INVSQRTNORM2_NEWTON_ITERATE) + /* Newton iteration of 1/sqrt(V) */ + reg1 = invSqrtTab[(Word32)(val >> (DFRACT_BITS - 1 - (SQRT_BITS + 1))) & SQRT_BITS_MASK]; + reg2 = FL2FXCONST_DBL(0.0625f); /* 0.5 >> 3 */ + + Word32 regtmp = fPow2Div2(reg1); /* a = Q^2 */ + regtmp = reg2 - fMultDiv2(regtmp, val); /* b = 0.5 - 2 * V * Q^2 */ + reg1 += (fMultDiv2(regtmp, reg1) << 4); /* Q = Q + Q*b */ +#elif defined(INVSQRTNORM2_LINEAR_INTERPOLATE) + Word32 index = (Word32)(val >> (DFRACT_BITS - 1 - (SQRT_BITS + 1))) & SQRT_BITS_MASK; + Word32 Fract = (Word32)(((Word32)val & SQRT_FRACT_BITS_MASK) << (SQRT_BITS + 1)); + Word32 diff = invSqrtTab[index + 1] - invSqrtTab[index]; + reg1 = invSqrtTab[index] + (Word32)(((UWord32)(Mpy_32_32_noshift(diff, Fract)) << 1)); +#if defined(INVSQRTNORM2_LINEAR_INTERPOLATE_HQ) + /* reg1 = t[i] + (t[i+1]-t[i])*fract ... already computed ... + + (1-fract)fract*(t[i+2]-t[i+1])/2 */ + if (Fract != (Word32)0) + { + /* fract = fract * (1 - fract) */ + Fract = Mpy_32_32_noshift(Fract, (Word32)((UWord32)0x80000000 - (Word32)Fract)) << 1; + diff = diff - (invSqrtTab[index + 2] - invSqrtTab[index + 1]); + reg1 = fixmadddiv2_DD(reg1, Fract, diff); + } +#endif /* INVSQRTNORM2_LINEAR_INTERPOLATE_HQ */ +#else +#error "Either define INVSQRTNORM2_NEWTON_ITERATE or INVSQRTNORM2_LINEAR_INTERPOLATE" +#endif + /* calculate the output exponent = input exp/2 */ + if (*shift & 0x00000001) + { /* odd shift values ? */ + /* Note: Do not use rounded value 0x5A82799A to avoid overflow with shift-by-2 */ + reg2 = (Word32)0x5A827999; /* FL2FXCONST_DBL(0.707106781186547524400844362104849f);*/ /* 1/sqrt(2); */ +#ifdef __ADSP21000__ + reg1 = fMult(reg1, reg2) << 1; /* compiler bug work around (CCES 2.4.0), and better precision */ +#else + reg1 = Mpy_32_32_noshift(reg1, reg2) << 2; +#endif + } + + *shift = *shift >> 1; + + return (reg1); +} + +/** + * \brief calculate 1.0/(op_m * 2^op_e) + * \param op_m mantissa of the input value. + * \param op_e pointer into were the exponent of the input value is stored, and the result will be stored into. + * \return mantissa of the result + */ +Word32 invFixp(Word32 op_m, Word16 *op_e) +{ + if ((op_m == (Word32)0x00000000) || (op_m == (Word32)0x00000001)) + { + *op_e = 31 - *op_e; + return ((Word32)0x7FFFFFFF); + } + + Word32 tmp_exp; + Word32 tmp_inv = invSqrtNorm2(op_m, &tmp_exp); + + *op_e = (tmp_exp << 1) - *op_e + 1; + return Mpy_32_32_noshift(tmp_inv, tmp_inv); +} +#endif diff --git a/lib_lc3plus/basop_util_lc3plus.h b/lib_lc3plus/basop_util_lc3plus.h new file mode 100644 index 0000000000000000000000000000000000000000..d9abc7f5d92020d2ec18e69a41e7e63484080113 --- /dev/null +++ b/lib_lc3plus/basop_util_lc3plus.h @@ -0,0 +1,372 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#ifndef __BASOP_UTIL_LC3PLUS_H__ +#define __BASOP_UTIL_LC3PLUS_H__ + +#include "defines.h" +#include "functions.h" +#include +#include + +#define _LONG long +#define _SHORT short +#ifdef _WIN32 +#define _INT64 __int64 +#else +#define _INT64 long long +#endif + +#define WORD32_BITS 32 +#define MAXVAL_WORD32 ((signed)0x7FFFFFFF) +#define MINVAL_WORD32 ((signed)0x80000000) +#define WORD32_FIX_SCALE ((_INT64)(1) << (WORD32_BITS - 1)) + +#define WORD16_BITS 16 +#define MAXVAL_WORD16 (((signed)0x7FFFFFFF) >> 16) +#define MINVAL_WORD16 (((signed)0x80000000) >> 16) +#define WORD16_FIX_SCALE ((_INT64)(1) << (WORD16_BITS - 1)) + +/*! + \def Macro converts a Word32 fixed point to Word16 fixed point <1 with saturation +*/ +#define WORD322WORD16(val) \ + ((((((val) >> (WORD32_BITS - WORD16_BITS - 1)) + 1) > (((_LONG)1 << WORD16_BITS) - 1)) && ((_LONG)(val) > 0)) \ + ? (Word16)(_SHORT)(((_LONG)1 << (WORD16_BITS - 1)) - 1) \ + : (Word16)(_SHORT)((((val) >> (WORD32_BITS - WORD16_BITS - 1)) + 1) >> 1)) + + +/* Word16 Packed Type */ +typedef struct +{ + struct + { + Word16 re; + Word16 im; + } v; +} PWord16; + +#ifdef ENABLE_HR_MODE +/* Word32 Packed Type */ +typedef struct +{ + struct + { + Word32 re; + Word32 im; + } v; +} PWord32; +#endif + +#define cast16 move16 + +#define LD_DATA_SCALE (6) +#define LD_DATA_SHIFT_I5 (7) + +/************************************************************************/ +/*! + \brief Calculate the squareroot of a number given by mantissa and exponent + + Mantissa is in 16/32-bit-fractional format with values between 0 and 1.
+ For *norm versions mantissa has to be between 0.5 and 1.
+ The base for the exponent is 2. Example: \f$ a = a\_m * 2^{a\_e} \f$
+ The exponent is addressed via pointers and will be overwritten with the result. +*/ + +Word16 Sqrt16_lc3plus( /*!< output mantissa */ + Word16 mantissa, /*!< input mantissa */ + Word16 *exponent /*!< pointer to exponent */ +); + +Word16 ISqrt16( /*!< output mantissa */ + Word16 mantissa, /*!< input mantissa */ + Word16 *exponent /*!< pointer to exponent */ +); + +/*****************************************************************************/ +/*! + \brief Calculate the inverse of a number given by mantissa and exponent + + Mantissa is in 16-bit-fractional format with values between 0 and 1.
+ The base for the exponent is 2. Example: \f$ a = a\_m * 2^{a\_e} \f$
+ The operand is addressed via pointers and will be overwritten with the result. + + The function uses a table lookup and a newton iteration. +*/ +Word16 Inv16_lc3plus( /*!< output mantissa */ + Word16 mantissa, /*!< input mantissa */ + Word16 *exponent /*!< pointer to exponent */ +); + +/********************************************************************/ +/*! + \brief Calculates the scalefactor needed to normalize input array + + The scalefactor needed to normalize the Word16 input array is returned
+ If the input array contains only '0', a scalefactor 0 is returned
+ Scaling factor is determined wrt a normalized target x: 16384 <= x <= 32767 for positive x
+ and -32768 <= x <= -16384 for negative x +*/ + +Word16 getScaleFactor16( /* o: measured headroom in range [0..15], 0 if all x[i] == 0 */ + const Word16 *x, /* i: array containing 16-bit data */ + const Word16 len_x); /* i: length of the array to scan */ + +/********************************************************************/ +/*! + \brief Calculates the scalefactor needed to normalize input array + + The scalefactor needed to normalize the Word16 input array is returned
+ If the input array contains only '0', a scalefactor 16 is returned
+ Scaling factor is determined wrt a normalized target x: 16384 <= x <= 32767 for positive x
+ and -32768 <= x <= -16384 for negative x +*/ + +Word16 getScaleFactor16_0( /* o: measured headroom in range [0..15], 16 if all x[i] == 0 */ + const Word16 *x, /* i: array containing 16-bit data */ + const Word16 len_x); /* i: length of the array to scan */ + +/********************************************************************/ +/*! + \brief Calculates the scalefactor needed to normalize input array + + The scalefactor needed to normalize the Word32 input array is returned
+ If the input array contains only '0', a scalefactor 0 is returned
+ Scaling factor is determined wrt a normalized target x: 1073741824 <= x <= 2147483647 for positive x
+ and -2147483648 <= x <= -1073741824 for negative x +*/ + +Word16 getScaleFactor32_lc3plus( /* o: measured headroom in range [0..31], 0 if all x[i] == 0 */ + const Word32 *x, /* i: array containing 32-bit data */ + const Word16 len_x); /* i: length of the array to scan */ + +/********************************************************************/ +/*! + \brief Calculates the scalefactor needed to normalize input array + + The scalefactor needed to normalize the Word32 input array is returned
+ If the input array contains only '0', a scalefactor 32 is returned
+ Scaling factor is determined wrt a normalized target x: 1073741824 <= x <= 2147483647 for positive x
+ and -2147483648 <= x <= -1073741824 for negative x +*/ + +Word16 getScaleFactor32_0( /* o: measured headroom in range [0..31], 32 if all x[i] == 0 */ + const Word32 *x, /* i: array containing 32-bit data */ + const Word16 len_x); /* i: length of the array to scan */ + +/****************************************************************************/ +/*! + \brief Does fractional integer division of Word32 arg1 by Word16 arg2 + + + \return fractional Word16 integer z = arg1(32bits)/arg2(16bits) , z not normalized +*/ +Word16 BASOP_Util_Divide3216_Scale_lc3plus(Word32 x, /*!< i : Numerator */ + Word16 y, /*!< i : Denominator*/ + Word16 *s); /*!< o : Additional scalefactor difference*/ + +/****************************************************************************/ +/*! + \brief Does fractional division of Word16 arg1 by Word16 arg2 + + + \return fractional Q15 Word16 z = arg1(Q15)/arg2(Q15) with scaling s +*/ +Word16 BASOP_Util_Divide1616_Scale_lc3plus(Word16 x, /*!< i : Numerator*/ + Word16 y, /*!< i : Denominator*/ + Word16 *s); /*!< o : Additional scalefactor difference*/ + +/************************************************************************/ +/*! + \brief Binary logarithm with 7 iterations + + \param x + + \return log2(x)/64 + */ +/************************************************************************/ +Word32 BASOP_Util_Log2_lc3plus(Word32 x); + +/************************************************************************/ +/*! + \brief Binary power + + Date: 06-JULY-2012 Arthur Tritthart, IIS Fraunhofer Erlangen + + Version with 3 table lookup and 1 linear interpolations + + Algorithm: compute power of 2, argument x is in Q7.25 format + result = 2^(x/64) + We split exponent (x/64) into 5 components: + integer part: represented by b31..b25 (exp) + fractional part 1: represented by b24..b20 (lookup1) + fractional part 2: represented by b19..b15 (lookup2) + fractional part 3: represented by b14..b10 (lookup3) + fractional part 4: represented by b09..b00 (frac) + => result = (lookup1*lookup2*(lookup3+C1*frac)<<3)>>exp + + Due to the fact, that all lookup values contain a factor 0.5 + the result has to be shifted by 3 to the right also. + Table exp2_tab_long_lc3plus contains the log2 for 0 to 1.0 in steps + of 1/32, table exp2w_tab_long_lc3plus the log2 for 0 to 1/32 in steps + of 1/1024, table exp2x_tab_long_lc3plus the log2 for 0 to 1/1024 in + steps of 1/32768. Since the 2-logarithm of very very small + negative value is rather linear, we can use interpolation. + + Limitations: + + For x <= 0, the result is fractional positive + For x > 0, the result is integer in range 1...7FFF.FFFF + For x < -31/64, we have to clear the result + For x = 0, the result is ~1.0 (0x7FFF.FFFF) + For x >= 31/64, the result is 0x7FFF.FFFF + + \param x + + \return pow(2,(x/64)) + */ +/************************************************************************/ +Word32 BASOP_Util_InvLog2_lc3plus(Word32 x); + +#ifdef ENABLE_HR_MODE +/* New function which works with positive x, BASOP_Util_InvLog2_lc3plus does not give + accurate results for x > 0 */ +Word32 BASOP_Util_InvLog2_pos(Word32 x, Word16 *exp); +#endif + +/** + * \brief Compute dot product of 1 32 bit vectors with itself + * \param x input vector 1 + * \param headroom amount of headroom bits the input vector + * \param length the length of the input vector + * \param result_e pointer to where the exponent of the result will be stored into + * \return the dot product of x and x. + */ +Word32 Norm32Norm(const Word32 *x, const Word16 headroom, const Word16 length, Word16 *result_e); + +/*!********************************************************************** + \brief Add two values given by mantissa and exponent. + + Mantissas are in 32-bit-fractional format with values between 0 and 1.
+ The base for exponents is 2. Example: \f$ a = a\_m * 2^{a\_e} \f$
+ +************************************************************************/ +Word32 BASOP_Util_Add_Mant32Exp_lc3plus /*!< o: normalized result mantissa */ + (Word32 a_m, /*!< i: Mantissa of 1st operand a */ + Word16 a_e, /*!< i: Exponent of 1st operand a */ + Word32 b_m, /*!< i: Mantissa of 2nd operand b */ + Word16 b_e, /*!< i: Exponent of 2nd operand b */ + Word16 *ptr_e); /*!< o: exponent of result */ + /*!********************************************************************** + \brief Returns the comparison result of two normalized values given by mantissa and exponent. + return value: -1: a < b, 0: a == b, 1; a > b + + Mantissas are in 32-bit-fractional format with values between 0 and 1.
+ The base for exponents is 2. Example: \f$ a = a\_m * 2^{a\_e} \f$
+ + ************************************************************************/ +Word16 BASOP_Util_Cmp_Mant32Exp_lc3plus /*!< o: flag: result of comparison */ + (Word32 a_m, /*!< i: Mantissa of 1st operand a */ + Word16 a_e, /*!< i: Exponent of 1st operand a */ + Word32 b_m, /*!< i: Mantissa of 2nd operand b */ + Word16 b_e); /*!< i: Exponent of 2nd operand b */ + +/* compare two positive normalized 16 bit mantissa/exponent values */ +/* return value: positive if first value greater, negative if second value greater, zero if equal */ +Word16 compMantExp16Unorm(Word16 m1, Word16 e1, Word16 m2, Word16 e2); + +void Scale_sig(Word16 x[], /* i/o: signal to scale Qx */ + const Word16 lg, /* i : size of x[] Q0 */ + const Word16 exp0 /* i : exponent: x = round(x << exp) Qx ?exp */ +); +void Copy_Scale_sig(const Word16 x[], /* i : signal to scale input Qx */ + Word16 y[], /* o : scaled signal output Qx */ + const Word16 lg, /* i : size of x[] Q0 */ + const Word16 exp0 /* i : exponent: x = round(x << exp) Qx ?exp */ +); + +#ifdef ENABLE_HR_MODE +void Copy_Scale_sig_32(const Word32 x[], /* i : signal to scale input Qx */ + Word16 y[], /* o : scaled signal output Qx */ + const Word16 lg, /* i : size of x[] Q0 */ + const Word16 exp0 /* i : exponent: x = round(x << exp) Qx ?exp */ +); +#endif + +Word32 Isqrt_lc3plus(Word32 x, /* (i) Q31: normalized value (1.0 > x >= 0.5) */ + Word16 *x_e /* (i/o) Q0 : pointer to exponent */ +); + +Word16 BASOP_Util_Log2_16(Word32 x, Word16 x_e); + +Word16 BASOP_Util_InvLog2_16(Word16 x, Word16 *y_e); + +#ifdef ENABLE_HR_MODE +Word32 invFixp(Word32 op_m, Word16 *op_e); +#endif + +#define BASOP_CFFT_MAX_LENGTH 480 +void BASOP_cfft_lc3plus(Word32 *re, Word32 *im, Word16 sizeOfFft, Word16 s, Word16 *scale, Word32 *x); +void BASOP_rfftN(Word32 *re, Word16 sizeOfFft, Word16 *scale, Word8 *scratchBuffer); +void BASOP_irfftN(Word32 *re, Word16 sizeOfFft, Word16 *scale, Word8 *scratchBuffer); + +static __inline void basop_memcpy(void *dst, const void *src, size_t n) +{ +#ifdef WMOPS + multiCounter[currCounter].move16 += (UWord32)n / 2; +#endif + /* check for overlapping memory */ + assert((const char *)src + n <= (char *)dst || (char *)dst + n <= (const char *)src); + memcpy(dst, src, n); +} + +static __inline void basop_memmove(void *dst, const void *src, size_t n) +{ +#ifdef WMOPS + multiCounter[currCounter].move16 += (UWord32)n / 2; +#endif + memmove(dst, src, n); +} + +static __inline void basop_memset(void *dst, int val, size_t n) +{ +#ifdef WMOPS + multiCounter[currCounter].move16 += (UWord32)n / 2; +#endif + memset(dst, val, n); +} + +/* Macros around Dyn_Mem that don't require duplicate declarations. */ +#ifdef DYNMEM_COUNT +/* older visual studio doesn't have __func__ */ +#if defined _MSC_VER && _MSC_VER < 1900 +#define __func__ __FUNCTION__ +#endif +#define Dyn_Mem_Deluxe_In(...) __VA_ARGS__ Dyn_Mem_In(__func__, sizeof(struct {__VA_ARGS__})) +#define Dyn_Mem_Deluxe_Out() Dyn_Mem_Out() +#else +#define Dyn_Mem_Deluxe_In(...) __VA_ARGS__ +#define Dyn_Mem_Deluxe_Out() +#endif + +/* Macros missing from IVAS BASOP, used only in LC3plus */ +#define L_shl_pos(x, y) (L_shl((x), (y))) +#define L_shr_pos(x, y) (L_shr((x), (y))) +#define L_shr_pos_pos(x, y) (L_shr((x), (y))) + +#define L_shr_r_pos(x, shift) (L_shr_r(x, shift)) + +#define shl_pos(x, y) (shl((x), (y))) +#define shr_pos(x, y) (shr((x), (y))) +#define shr_pos_pos(x, y) (shr((x), (y))) + +#define lshl_pos(x, y) (lshl(x, y)) +#define UL_lshr_pos(x, y) (UL_lshr(x, y)) +#define UL_lshl_pos(x, y) (UL_lshl(x, y)) +#endif /* __BASOP_UTIL_LC3PLUS_H__ */ diff --git a/lib_lc3plus/constants.c b/lib_lc3plus/constants.c new file mode 100644 index 0000000000000000000000000000000000000000..c02cf5c6918873017de8c0d0fe4fd053a02671d5 --- /dev/null +++ b/lib_lc3plus/constants.c @@ -0,0 +1,5046 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "basop_util_lc3plus.h" +#include "constants.h" +#include "defines.h" + +#ifdef ENABLE_HR_MODE + +#ifdef CR8_G_ADD_75MS +const Word32 LowDelayShapes_n960_N480_HRA_7_5ms_IP[720] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 87, 348, 823, 1614, 2855, 4711, + 7394, 11166, 16346, 23325, 32567, 44630, 60168, 79951, 104871, + 135960, 174404, 221554, 278944, 348306, 431580, 530938, 648792, 787807, + 950923, 1141360, 1362631, 1618557, 1913273, 2251235, 2637225, 3076358, 3574079, + 4136163, 4768712, 5478142, 6271180, 7154844, 8136428, 9223482, 10423785, 11745317, + 13196231, 14784811, 16519438, 18408546, 20460576, 22683925, 25086898, 27677652, 30464139, + 33454048, 36654744, 40073208, 43715977, 47589078, 51697972, 56047490, 60641775, 65484225, + 70577443, 75923181, 81522294, 87374702, 93479345, 99834159, 106436041, 113280836, 120363317, + 127677184, 135215062, 142968508, 150928157, 159083617, 167423428, 175935264, 184605929, 193421420, + 202366999, 211427267, 220586253, 229827503, 239134176, 248489151, 257875132, 267274759, 276670727, + 286045896, 295383416, 304666842, 313880253, 323008369, 332036665, 340951481, 349740127, 358390986, + 366893607, 375238791, 383418672, 391426786, 399258131, 406909219, 414378115, 421664463, 428769507, + 435696092, 442448656, 449033209, 455457302, 461729975, 467861704, 473864325, 479750954, 485535888, + 491234502, 496863130, 502438943, 507979811, 513504165, 519030849, 524578969, 530167737, 535816319, + 541543674, 547368406, 553308608, 559381722, 565604392, 571992342, 578560249, 585321630, 592288748, + 599472521, 606882448, 614526549, 622411321, 630541701, 638921050, 647551149, 656432204, 665562870, + 674940281, 684560092, 694416534, 704502476, 714809492, 725327938, 736047035, 746954953, 758038900, + 769285219, 780679474, 792206554, 803850758, 815595897, 827425384, 839322323, 851269604, 863249984, + 875246176, 887240926, 899217093, 911157723, 923046119, 934865908, 946601106, 958236175, 969756079, + 981146337, 992393068, 1003483035, 1014403685, 1025143183, 1035690443, 1046035156, 1056167806, 1066079698, + 1075762962, 1085210568, 1094416328, 1103374896, 1112081767, 1120533266, 1128726537, 1136659525, 1144330955, + 1151740310, 1158887799, 1165774327, 1172401460, 1178771388, 1184886881, 1190751250, 1196368299, 1201742283, + 1206877859, 1211780040, 1216454151, 1220905777, 1225140726, 1229164983, 1232984668, 1236606003, 1240035271, + 1243278790, 1246342881, 1249233843, 1251957932, 1254521342, 1256930191, 1259190506, 1261308214, 1263289136, + 1265138979, 1266863333, 1268467669, 1269957337, 1271337562, 1272613448, 1273789972, 1274871989, 1275864224, + 1276771276, 1277597614, 1278347576, 1279025364, 1279635046, 1280180548, 1280665658, 1281094017, 1281469123, + 1281794327, 1282072831, 1282307692, 1282501820, 1282657982, 1282778803, 1282866770, 1282924240, 1282953439, + 1282956475, 1282935340, 1282891922, 1282828007, 1282745290, 1282645385, 1282529830, 1282400095, 1282257591, + 1282103675, 1281939658, 1281766811, 1281586369, 1281399536, 1281207489, 1281011380, 1280812338, 1280611471, + 1280409867, 1280208592, 1280008692, 1279811190, 1279617083, 1279427343, 1279242908, 1279064691, 1278893575, + 1278730391, 1278575934, 1278430953, 1278296152, 1278172183, 1278059646, 1277959085, 1277870984, 1277795766, + 1277733793, 1277685360, 1277650698, 1277629970, 1277623272, 1277630630, 1277652006, 1277687290, 1277736307, + 1277798815, 1277874509, 1277963018, 1278063911, 1278176696, 1278300826, 1278435697, 1278580655, 1278734998, + 1278897977, 1279068803, 1279246650, 1279430656, 1279619930, 1279813555, 1280010596, 1280210097, 1280411091, + 1280612606, 1280813664, 1281013290, 1281210515, 1281404382, 1281593947, 1281778291, 1281956514, 1282127749, + 1282291161, 1282445951, 1282591364, 1282726688, 1282851259, 1282964467, 1283065755, 1283154623, 1283230634, + 1283293412, 1283342644, 1283378085, 1283399556, 1283406948, 1283400219, 1283379398, 1283344582, 1283295937, + 1283233697, 1283158163, 1283069704, 1282968748, 1282855789, 1282731378, 1282596123, 1282450686, 1282295780, + 1282132162, 1281960636, 1281782040, 1281597253, 1281407178, 1281212748, 1281014916, 1280814653, 1280612938, + -1280410760, -1280209108, -1280008970, -1279811325, -1279617137, -1279427356, -1279242908, -1279064691, -1278893575, + -1278730391, -1278575934, -1278430953, -1278296152, -1278172183, -1278059646, -1277959085, -1277870984, -1277795766, + -1277733793, -1277685360, -1277650698, -1277629970, -1277623272, -1277630630, -1277652006, -1277687290, -1277736307, + -1277798815, -1277874509, -1277963018, -1278063911, -1278176696, -1278300826, -1278435697, -1278580655, -1278734998, + -1278897977, -1279068803, -1279246650, -1279430656, -1279619930, -1279813555, -1280010596, -1280210097, -1280411091, + -1280612606, -1280813664, -1281013290, -1281210515, -1281404382, -1281593947, -1281778291, -1281956514, -1282127749, + -1282291161, -1282445951, -1282591364, -1282726688, -1282851259, -1282964467, -1283065755, -1283154623, -1283230634, + -1283293412, -1283342644, -1283378085, -1283399556, -1283406948, -1283400219, -1283379398, -1283344582, -1283295937, + -1283233697, -1283158163, -1283069704, -1282968748, -1282855789, -1282731378, -1282596123, -1282450686, -1282295780, + -1282132162, -1281960636, -1281782040, -1281597240, -1281407124, -1281212613, -1281014638, -1280814136, -1280612044, + -1280409293, -1280206794, -1280005436, -1279806071, -1279609505, -1279416489, -1279227704, -1279043754, -1278865148, + -1278692290, -1278525466, -1278364827, -1278210380, -1278061967, -1277919259, -1277781732, -1277648661, -1277519103, + -1277391882, -1277265579, -1277138516, -1277008749, -1276874050, -1276731906, -1276579498, -1276413701, -1276231074, + -1276027848, -1275799922, -1275542858, -1275251868, -1274921816, -1274547202, -1274122161, -1273640454, -1273095459, + -1272480163, -1271787153, -1271008605, -1270136275, -1269161491, -1268075138, -1266867650, -1265529002, -1264048705, + -1262415795, -1260618834, -1258645914, -1256484654, -1254122219, -1251545330, -1248740288, -1245693001, -1242389021, + -1238813588, -1234951678, -1230788064, -1226307382, -1221494200, -1216333106, -1210808785, -1204906119, -1198610276, + -1191906816, -1184781789, -1177221841, -1169214319, -1160747375, -1151810067, -1142392460, -1132485722, -1122082216, + -1111175584, -1099760832, -1087834398, -1075394224, -1062439811, -1048972272, -1034994376, -1020510578, -1005527053, + -990051705, -974094182, -957665874, -940779904, -923451116, -905696046, -887532891, -868981469, -850063169, + -830800896, -811219007, -791343239, -771200631, -750819438, -730229039, -709459838, -688543157, -667511126, + -646396563, -625232849, -604053802, -582893543, -561786350, -540766526, -519868245, -499125406, -478571481, + -458239366, -438161227, -418368350, -398890991, -379758233, -360997846, -342636148, -324697881, -307206093, + -290182024, -273645013, -257612410, -242099504, -227119464, -212683299, -198799827, -185475666, -172715241, + -160520802, -148892465, -137828265, -127324223, -117374432, -107971150, -99104909, -90764635, -82937772, + -75610419, -68767471, -62392760, -56469205, -50978959, -45903556, -41224052, -36921169, -32975429, + -29367284, -26077235, -23085950, -20374365, -17923784, -15715959, -13733175, -11958308, -10374886, + -8967135, -7720017, -6619257, -5651362, -4803637, -4064184, -3421902, -2866477, -2388368, + -1978789, -1629681, -1333688, -1084125, -874947, -700710, -556540, -438092, -341515, + -263414, -200812, -151118, -112086, -81786, -58572, -41046, -28035, -18564, + -11827, -7166, -4052, -2065, -873, -219, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 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 LowDelayShapes_n960_N960_HRA_7_5ms_IP[1440] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 44, 108, 200, + 327, 496, 716, 997, 1352, 1793, 2334, 2993, 3788, + 4740, 5873, 7210, 8782, 10618, 12754, 15228, 18079, 21354, + 25102, 29375, 34232, 39736, 45954, 52960, 60833, 69657, 79523, + 90531, 102783, 116393, 131479, 148170, 166600, 186913, 209263, 233812, + 260731, 290202, 322417, 357578, 395898, 437601, 482924, 532113, 585429, + 643144, 705541, 772919, 845587, 923872, 1008108, 1098650, 1195861, 1300121, + 1411824, 1531379, 1659208, 1795748, 1941453, 2096787, 2262233, 2438287, 2625458, + 2824273, 3035270, 3259002, 3496037, 3746956, 4012353, 4292837, 4589026, 4901555, + 5231067, 5578220, 5943680, 6328125, 6732242, 7156730, 7602292, 8069643, 8559503, + 9072598, 9609661, 10171429, 10758643, 11372046, 12012385, 12680404, 13376850, 14102468, + 14858000, 15644185, 16461757, 17311444, 18193967, 19110038, 20060361, 21045626, 22066514, + 23123691, 24217808, 25349499, 26519382, 27728053, 28976092, 30264055, 31592472, 32961855, + 34372684, 35825415, 37320475, 38858262, 40439142, 42063449, 43731482, 45443509, 47199758, + 49000423, 50845659, 52735581, 54670266, 56649748, 58674020, 60743031, 62856690, 65014857, + 67217351, 69463943, 71754359, 74088280, 76465337, 78885116, 81347157, 83850949, 86395935, + 88981513, 91607029, 94271785, 96975035, 99715986, 102493800, 105307656, 108156591, 111039641, + 113955799, 116904014, 119883198, 122892222, 125929920, 128995090, 132086493, 135202860, 138342888, + 141505243, 144688567, 147891470, 151112543, 154350350, 157603439, 160870336, 164149553, 167439589, + 170738931, 174046055, 177359434, 180677535, 183998823, 187321766, 190644834, 193966503, 197285258, + 200599596, 203908028, 207209080, 210501300, 213783255, 217053539, 220310770, 223553598, 226780705, + 229990806, 233182654, 236355043, 239506805, 242636819, 245744010, 248827351, 251885864, 254918626, + 257924767, 260903473, 263853991, 266775622, 269667734, 272529755, 275361176, 278161556, 280930518, + 283667753, 286373022, 289046153, 291687043, 294295661, 296872047, 299416309, 301928628, 304409254, + 306858511, 309276789, 311664551, 314022327, 316350717, 318650389, 320922075, 323166575, 325384751, + 327577531, 329745900, 331890905, 334013649, 336115291, 338197045, 340260173, 342305990, 344335852, + 346351165, 348353370, 350343952, 352324427, 354296346, 356261288, 358220860, 360176691, 362130431, + 364083745, 366038312, 367995821, 369957968, 371926451, 373902968, 375889214, 377886876, 379897629, + 381923135, 383965040, 386024966, 388104513, 390205254, 392328729, 394476448, 396649881, 398850460, + 401079575, 403338572, 405628746, 407951345, 410307564, 412698544, 415125367, 417589059, 420090585, + 422630847, 425210685, 427830873, 430492120, 433195067, 435940288, 438728287, 441559502, 444434298, + 447352971, 450315749, 453322788, 456374176, 459469929, 462609996, 465794259, 469022529, 472294553, + 475610011, 478968518, 482369626, 485812825, 489297542, 492823148, 496388953, 499994212, 503638125, + 507319839, 511038449, 514793004, 518582502, 522405897, 526262100, 530149980, 534068367, 538016053, + 541991796, 545994319, 550022317, 554074452, 558149362, 562245659, 566361935, 570496756, 574648675, + 578816224, 582997925, 587192283, 591397795, 595612950, 599836228, 604066106, 608301058, 612539556, + 616780072, 621021084, 625261070, 629498515, 633731914, 637959769, 642180591, 646392905, 650595252, + 654786183, 658964269, 663128098, 667276277, 671407434, 675520217, 679613298, 683685373, 687735163, + 691761414, 695762900, 699738424, 703686816, 707606936, 711497676, 715357958, 719186737, 722983000, + 726745768, 730474096, 734167073, 737823824, 741443507, 745025319, 748568492, 752072293, 755536028, + 758959039, 762340704, 765680440, 768977700, 772231975, 775442794, 778609720, 781732356, 784810341, + 787843351, 790831096, 793773326, 796669823, 799520406, 802324927, 805083276, 807795372, 810461171, + 813080658, 815653853, 818180806, 820661596, 823096332, 825485155, 827828229, 830125749, 832377934, + 834585028, 836747302, 838865047, 840938578, 842968232, 844954366, 846897354, 848797592, 850655491, + 852471478, 854245997, 855979505, 857672472, 859325380, 860938723, 862513004, 864048738, 865546444, + 867006653, 868429898, 869816720, 871167666, 872483283, 873764126, 875010749, 876223709, 877403563, + 878550870, 879666189, 880750077, 881803089, 882825781, 883818705, 884782410, 885717445, 886624352, + 887503671, 888355939, 889181688, 889981445, 890755734, 891505074, 892229977, 892930955, 893608509, + 894263138, 894895337, 895505593, 896094389, 896662203, 897209507, 897736768, 898244447, 898733000, + 899202877, 899654523, 900088379, 900504877, 900904447, 901287510, 901654485, 902005783, 902341811, + 902662967, 902969647, 903262240, 903541129, 903806691, 904059297, 904299312, 904527095, 904742999, + 904947372, 905140554, 905322879, 905494676, 905656265, 905807964, 905950080, 906082916, 906206768, + 906321926, 906428673, 906527284, 906618032, 906701178, 906776980, 906845690, 906907551, 906962802, + 907011675, 907054396, 907091185, 907122257, 907147818, 907168073, 907183217, 907193443, 907198938, + 907199882, 907196451, 907188818, 907177150, 907161608, 907142351, 907119533, 907093305, 907063813, + 907031199, 906995603, 906957162, 906916008, 906872273, 906826083, 906777563, 906726837, 906674025, + 906619245, 906562613, 906504244, 906444251, 906382745, 906319835, 906255629, 906190236, 906123759, + 906056304, 905987975, 905918873, 905849099, 905778755, 905707939, 905636751, 905565287, 905493644, + 905421918, 905350204, 905278596, 905207187, 905136068, 905065331, 904995065, 904925359, 904856301, + 904787977, 904720472, 904653870, 904588254, 904523701, 904460295, 904398114, 904337234, 904277728, + 904219670, 904163129, 904108175, 904054874, 904003290, 903953487, 903905525, 903859462, 903815353, + 903773252, 903733209, 903695274, 903659492, 903625906, 903594557, 903565482, 903538716, 903514291, + 903492237, 903472579, 903455342, 903440546, 903428208, 903418343, 903410963, 903406076, 903403687, + 903403799, 903406411, 903411521, 903419121, 903429201, 903441750, 903456751, 903474186, 903494033, + 903516269, 903540866, 903567793, 903597018, 903628506, 903662217, 903698112, 903736145, 903776272, + 903818442, 903862605, 903908708, 903956694, 904006505, 904058081, 904111359, 904166274, 904222761, + 904280750, 904340172, 904400953, 904463022, 904526303, 904590718, 904656191, 904722641, 904789988, + 904858152, 904927048, 904996594, 905066706, 905137298, 905208286, 905279583, 905351102, 905422757, + 905494462, 905566128, 905637670, 905709001, 905780033, 905850681, 905920859, 905990482, 906059464, + 906127723, 906195175, 906261739, 906327332, 906391876, 906455291, 906517501, 906578429, 906638002, + 906696146, 906752790, 906807866, 906861306, 906913045, 906963019, 907011167, 907057430, 907101752, + 907144078, 907184355, 907222535, 907258571, 907292418, 907324034, 907353381, 907380422, 907405124, + 907427456, 907447391, 907464903, 907479970, 907492575, 907502701, 907510335, 907515468, 907518092, + 907518205, 907515805, 907510896, 907503482, 907493572, 907481179, 907466317, 907449004, 907429261, + 907407111, 907382581, 907355702, 907326506, 907295028, 907261307, 907225384, 907187302, 907147109, + 907104853, 907060585, 907014361, 906966236, 906916270, 906864523, 906811060, 906755944, 906699245, + 906641031, 906581374, 906520347, 906458025, 906394483, 906329801, 906264057, 906197332, 906129707, + 906061266, 905992093, 905922271, 905851888, 905781028, 905709780, 905638230, 905566465, 905494574, + -905422645, -905350765, -905279024, -905207507, -905136304, -905065500, -904995184, -904925439, -904856352, + -904788008, -904720488, -904653877, -904588254, -904523701, -904460295, -904398114, -904337234, -904277728, + -904219670, -904163129, -904108175, -904054874, -904003290, -903953487, -903905525, -903859462, -903815353, + -903773252, -903733209, -903695274, -903659492, -903625906, -903594557, -903565482, -903538716, -903514291, + -903492237, -903472579, -903455342, -903440546, -903428208, -903418343, -903410963, -903406076, -903403687, + -903403799, -903406411, -903411521, -903419121, -903429201, -903441750, -903456751, -903474186, -903494033, + -903516269, -903540866, -903567793, -903597018, -903628506, -903662217, -903698112, -903736145, -903776272, + -903818442, -903862605, -903908708, -903956694, -904006505, -904058081, -904111359, -904166274, -904222761, + -904280750, -904340172, -904400953, -904463022, -904526303, -904590718, -904656191, -904722641, -904789988, + -904858152, -904927048, -904996594, -905066706, -905137298, -905208286, -905279583, -905351102, -905422757, + -905494462, -905566128, -905637670, -905709001, -905780033, -905850681, -905920859, -905990482, -906059464, + -906127723, -906195175, -906261739, -906327332, -906391876, -906455291, -906517501, -906578429, -906638002, + -906696146, -906752790, -906807866, -906861306, -906913045, -906963019, -907011167, -907057430, -907101752, + -907144078, -907184355, -907222535, -907258571, -907292418, -907324034, -907353381, -907380422, -907405124, + -907427456, -907447391, -907464903, -907479970, -907492575, -907502701, -907510335, -907515468, -907518092, + -907518205, -907515805, -907510896, -907503482, -907493572, -907481179, -907466317, -907449004, -907429261, + -907407111, -907382581, -907355702, -907326506, -907295028, -907261307, -907225384, -907187302, -907147109, + -907104853, -907060585, -907014361, -906966236, -906916270, -906864523, -906811060, -906755944, -906699245, + -906641031, -906581374, -906520347, -906458025, -906394483, -906329801, -906264050, -906197315, -906129676, + -906061214, -905992012, -905922152, -905851718, -905780792, -905709459, -905637802, -905565904, -905493847, + -905421715, -905349587, -905277545, -905205668, -905134032, -905062714, -904991788, -904921326, -904851397, + -904782068, -904713403, -904645463, -904578305, -904511983, -904446548, -904382044, -904318513, -904255990, + -904194508, -904134091, -904074760, -904016528, -903959404, -903903387, -903848473, -903794647, -903741889, + -903690170, -903639452, -903589690, -903540829, -903492806, -903445546, -903398968, -903352977, -903307470, + -903262332, -903217440, -903172655, -903127830, -903082805, -903037408, -902991455, -902944749, -902897082, + -902848230, -902797958, -902746017, -902692145, -902636065, -902577487, -902516107, -902451605, -902383649, + -902311891, -902235969, -902155504, -902070104, -901979361, -901882852, -901780138, -901670764, -901554261, + -901430141, -901297903, -901157028, -901006979, -900847206, -900677140, -900496195, -900303767, -900099237, + -899881968, -899651302, -899406566, -899147069, -898872099, -898580929, -898272809, -897946972, -897602633, + -897238985, -896855201, -896450436, -896023825, -895574479, -895101492, -894603937, -894080864, -893531305, + -892954268, -892348742, -891713696, -891048075, -890350805, -889620793, -888856922, -888058059, -887223048, + -886350714, -885439866, -884489291, -883497761, -882464029, -881386834, -880264898, -879096929, -877881622, + -876617661, -875303716, -873938450, -872520516, -871048562, -869521229, -867937155, -866294976, -864593328, + -862830848, -861006177, -859117961, -857164854, -855145521, -853058635, -850902887, -848676980, -846379640, + -844009611, -841565658, -839046575, -836451182, -833778329, -831026896, -828195801, -825283996, -822290474, + -819214267, -816054453, -812810153, -809480538, -806064827, -802562292, -798972258, -795294106, -791527275, + -787671264, -783725629, -779689995, -775564045, -771347531, -767040273, -762642156, -758153138, -753573244, + -748902575, -744141301, -739289667, -734347993, -729316674, -724196178, -718987051, -713689917, -708305473, + -702834496, -697277838, -691636430, -685911277, -680103464, -674214150, -668244572, -662196041, -656069944, + -649867743, -643590972, -637241240, -630820227, -624329685, -617771433, -611147363, -604459432, -597709664, + -590900148, -584033037, -577110543, -570134942, -563108566, -556033804, -548913099, -541748950, -534543903, + -527300554, -520021545, -512709564, -505367338, -497997635, -490603260, -483187052, -475751882, -468300650, + -460836282, -453361728, -445879958, -438393963, -430906743, -423421316, -415940704, -408467938, -401006049, + -393558069, -386127025, -378715938, -371327818, -363965660, -356632445, -349331130, -342064650, -334835913, + -327647796, -320503142, -313404758, -306355410, -299357818, -292414658, -285528555, -278702079, -271937746, + -265238010, -258605264, -252041836, -245549983, -239131895, -232789684, -226525389, -220340970, -214238305, + -208219189, -202285333, -196438360, -190679806, -185011113, -179433635, -173948631, -168557267, -163260612, + -158059640, -152955229, -147948160, -143039115, -138228681, -133517347, -128905505, -124393450, -119981382, + -115669406, -111457534, -107345683, -103333681, -99421264, -95608082, -91893698, -88277589, -84759152, + -81337704, -78012482, -74782650, -71647299, -68605451, -65656059, -62798015, -60030148, -57351228, + -54759972, -52255046, -49835065, -47498599, -45244179, -43070293, -40975397, -38957912, -37016231, + -35148723, -33353731, -31629581, -29974582, -28387030, -26865208, -25407397, -24011868, -22676893, + -21400745, -20181701, -19018041, -17908057, -16850050, -15842335, -14883242, -13971116, -13104325, + -12281255, -11500315, -10759938, -10058585, -9394741, -8766919, -8173665, -7613552, -7085185, + -6587202, -6118273, -5677102, -5262427, -4873021, -4507690, -4165278, -3844660, -3544752, + -3264499, -3002887, -2758933, -2531691, -2320249, -2123731, -1941292, -1772123, -1615446, + -1470519, -1336627, -1213092, -1099261, -994515, -898263, -809943, -729021, -654988, + -587365, -525695, -469547, -418515, -372215, -330284, -292383, -258192, -227410, + -199757, -174969, -152801, -133024, -115424, -99803, -85978, -73777, -63042, + -53629, -45403, -38240, -32028, -26663, -22051, -18104, -14745, -11902, + -9511, -7514, -5860, -4500, -3394, -2503, -1797, -1244, -820, + -502, -271, -109, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0}; +#endif /* #ifdef CR8_G_ADD_75MS */ + +RAM_ALIGN const Word32 LowDelayShapes_n960_N480_HRA_2_5ms_IP[240] = { + 214, 1407, 4144, 9592, 19434, 36052, 62711, 103783, 164992, + 253687, 379148, 552904, 789076, 1104722, 1520198, 2059494, 2750561, 3625602, + 4721314, 6079061, 7744972, 9769942, 12209518, 15123669, 18576419, 22635352, 27370973, + 32855950, 39164229, 46370051, 54546874, 63766241, 74096597, 85602085, 98341344, 112366317, + 127721101, 144440829, 162550610, 182064542, 202984778, 225300694, 248988134, 274008783, 300309659, + 327822776, 356464985, 386138051, 416728983, 448110659, 480142780, 512673177, 545539472, 578571104, + 611591694, 644421704, 676881340, 708793602, 739987407, 770300656, 799583149, 827699226, 854530045, + 879975405, 903955057, 926409465, 947300009, 966608644, 984337071, 1000505451, 1015150768, 1028324899, + 1040092491, 1050528715, 1059716983, 1067746699, 1074711082, 1080705143, 1085823820, 1090160324, 1093804700, + 1096842623, 1099354431, 1101414399, 1103090233, 1104442796, 1105526028, 1106387052, 1107066439, 1107598605, + 1108012308, 1108331223, 1108574556, 1108757676, 1108892731, 1108989242, 1109054637, 1109094735, 1109114155, + 1109116652, 1109105394, 1109083163, 1109052498, 1109015788, 1108975323, 1108933307, 1108891843, 1108852902, + 1108818280, 1108789546, 1108767992, 1108754591, 1108749953, 1108754306, 1108767481, 1108788919, 1108817694, + 1108852552, 1108891964, 1108934195, -1108977380, -1109019614, -1109059032, -1109093898, -1109122681, -1109144125, + -1109157302, -1109161650, -1109156995, -1109143556, -1109121925, -1109093037, -1109058122, -1109018637, -1108976187, + -1108932433, -1108888980, -1108847255, -1108808366, -1108772946, -1108740971, -1108711558, -1108682731, -1108651158, + -1108611855, -1108557851, -1108479820, -1108365676, -1108200143, -1107964292, -1107635083, -1107184891, -1106581062, + -1105785503, -1104754330, -1103437601, -1101779148, -1099716548, -1097181229, -1094098763, -1090389339, -1085968441, + -1080747748, -1074636248, -1067541577, -1059371579, -1050036059, -1039448713, -1027529209, -1014205354, -999415302, + -983109740, -965253961, -945829756, -924837032, -902295070, -878243367, -852741971, -825871301, -797731403, + -768440669, -738134051, -706960817, -675081952, -642667284, -609892453, -576935833, -543975515, -511186440, + -478737764, -446790521, -415495622, -384992199, -355406317, -326850029, -299420751, -273200929, -248257970, + -224644391, -202398148, -181543141, -162089834, -144035993, -127367520, -112059369, -98076525, -85375063, + -73903244, -63602666, -54409446, -46255413, -39069306, -32777951, -27307388, -22583946, -18535216, + -15090941, -12183768, -9749883, -7729511, -6067277, -4712439, -3619003, -2745721, -2055997, + -1517713, -1102987, -787888, -552109, -378629, -253358, -164789, -103664, -62644, + -36017, -19417, -9584, -4141, -1406, -214 }; +RAM_ALIGN const Word32 LowDelayShapes_n960_N480_HRA_5ms_IP[420] = { + 153, 1006, 2962, 6854, 13880, 25735, 44738, 73986, 117524, + 180533, 269534, 392603, 559593, 782368, 1075031, 1454143, 1938937, 2551502, + 3316947, 4263524, 5422707, 6829222, 8521011, 10539137, 12927604, 15733109, 19004698, + 22793344, 27151431, 32132152, 37788816, 44174082, 51339114, 59332667, 68200136, 77982547, + 88715548, 100428385, 113142910, 126872625, 141621804, 157384706, 174144915, 191874817, 210535261, + 230075406, 250432778, 271533559, 293293106, 315616716, 338400617, 361533198, 384896437, 408367524, + 431820627, 455128780, 478165843, 500808481, 522938120, 544442827, 565219197, 585174124, 604225689, + 622304754, 639355717, 655337129, 670221993, 683997778, 696666136, 708242355, 718754575, 728242788, + 736757688, 744359378, 751116012, 757102394, 762398585, 767088551, 771258886, 774997644, 778393288, + 781533768, 784505744, 787393944, 790280637, 793245232, 796363956, 799709608, 803351363, 807354601, + 811780739, 816687064, 822126537, 828147569, 834793773, 842103681, 850110443, 858841520, 868318369, + 878556163, 889563529, 901342346, 913887605, 927187338, 941222645, 955967800, 971390453, 987451937, + 1004107649, 1021307531, 1038996616, 1057115651, 1075601769, 1094389201, 1113410024, 1132594917, 1151873921, + 1171177186, 1190435688, 1209581916, 1228550504, 1247278803, 1265707395, 1283780533, 1301446498, 1318657893, + 1335371854, 1351550191, 1367159457, 1382170967, 1396560748, 1410309460, 1423402271, 1435828702, 1447582463, + 1458661263, 1469066617, 1478803649, 1487880888, 1496310057, 1504105864, 1511285781, 1517869810, 1523880240, + 1529341392, 1534279342, 1538721639, 1542697001, 1546235012, 1549365809, 1552119778, 1554527246, 1556618203, + 1558422028, 1559967247, 1561281317, 1562390436, 1563319395, 1564091445, 1564728213, 1565249633, 1565673917, + 1566017543, 1566295272, 1566520181, 1566703721, 1566855785, 1566984788, 1567097770, 1567200488, 1567297538, + 1567392456, 1567487845, 1567585484, 1567686442, 1567791191, 1567899701, 1568011546, 1568125984, 1568242042, + 1568358534, 1568474289, 1568587995, 1568698311, 1568803945, 1568903672, 1568996349, 1569080932, 1569156484, + 1569222192, 1569277370, 1569321465, 1569354064, 1569374893, 1569383815, 1569380829, 1569366065, 1569339781, + 1569302349, 1569254257, 1569196093, 1569128539, 1569052361, 1568968403, 1568877571, 1568780830, 1568679193, + 1568573710, 1568465461, 1568355548, 1568245083, 1568135185, 1568026967, 1567921528, 1567819946, 1567723271, + 1567632511, 1567548628, 1567472527, 1567405047, 1567346952, 1567298919, 1567261537, 1567235287, 1567220544, + 1567217562, 1567226472, 1567247272, 1567279829, 1567323868, 1567378978, 1567444612, 1567520086, 1567604589, + 1567697189, 1567796846, 1567902419, 1568012687, 1568126359, 1568242097, -1568358534, -1568474289, -1568587995, + -1568698311, -1568803945, -1568903672, -1568996349, -1569080932, -1569156484, -1569222192, -1569277370, -1569321465, + -1569354064, -1569374893, -1569383815, -1569380829, -1569366065, -1569339781, -1569302349, -1569254257, -1569196093, + -1569128539, -1569052361, -1568968403, -1568877571, -1568780830, -1568679193, -1568573710, -1568465461, -1568355548, + -1568245083, -1568135185, -1568026967, -1567921528, -1567819946, -1567723271, -1567632511, -1567548628, -1567472527, + -1567405047, -1567346952, -1567298919, -1567261537, -1567235287, -1567220544, -1567217562, -1567226472, -1567247272, + -1567279829, -1567323868, -1567378978, -1567444612, -1567520086, -1567604589, -1567697189, -1567796846, -1567902419, + -1568012687, -1568126359, -1568242097, -1568358479, -1568473914, -1568586854, -1568695591, -1568798286, -1568892916, + -1568977226, -1569048656, -1569104263, -1569140635, -1569153790, -1569139071, -1569091028, -1569003308, -1568868529, + -1568678156, -1568422382, -1568089999, -1567668277, -1567142834, -1566497514, -1565714254, -1564772952, -1563651331, + -1562324794, -1560766278, -1558946098, -1556831792, -1554387964, -1551576132, -1548354584, -1544678268, -1540498696, + -1535763912, -1530418507, -1524403718, -1517657618, -1510115411, -1501709847, -1492371764, -1482030768, -1470616033, + -1458057247, -1444285654, -1429235205, -1412843785, -1395054486, -1375816907, -1355088440, -1332835519, -1309034797, + -1283674224, -1256753995, -1228287351, -1198301206, -1166836586, -1133948872, -1099707826, -1064197417, -1027515419, + -989772809, -951092956, -911610610, -871470715, -830827045, -789840682, -748678366, -707510713, -666510349, + -625849956, -585700281, -546228117, -507594292, -469951710, -433443460, -398201053, -364342807, -331972440, + -301177891, -272030413, -244583969, -218874947, -194922208, -172727465, -152275991, -133537623, -116468025, + -101010189, -87096098, -74648510, -63582812, -53808877, -45232880, -37759037, -31291209, -25734358, + -20995832, -16986455, -13621428, -10821035, -8511162, -6623645, -5096451, -3873717, -2905668, + -2148423, -1563717, -1118555, -784819, -538834, -360926, -234965, -147925, -89451, + -51458, -27754, -13704, -5923, -2011, -306 }; +RAM_ALIGN const Word32 LowDelayShapes_n960_N480_HRA_IP[780] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 105, 687, 2025, 4688, 9502, 17634, + 30689, 50817, 80838, 124375, 186009, 271432, 387623, 543017, 747676, + 1013467, 1354215, 1785853, 2326545, 2996777, 3819424, 4819763, 6025441, 7466392, + 9174686, 11184326, 13530961, 16251545, 19383921, 22966334, 27036891, 31632957, 36790505, + 42543426, 48922816, 55956247, 63667042, 72073568, 81188571, 91018551, 101563225, 112815065, + 124758945, 137371906, 150623045, 164473553, 178876885, 193779093, 209119296, 224830297, 240839344, + 257069006, 273438164, 289863100, 306258645, 322539389, 338620907, 354420979, 369860792, 384866072, + 399368244, 413305531, 426623420, 439275707, 451224957, 462442920, 472910759, 482619111, 491567983, + 499766479, 507232383, 513991603, 520077504, 525530145, 530395443, 534724296, 538571682, 541995756, + 545056975, 547817267, 550339253, 552685542, 554918106, 557097730, 559283544, 561532631, 563899693, + 566436780, 569193061, 572214618, 575544274, 579221418, 583281849, 587757606, 592676805, 598063482, + 603937430, 610314061, 617204279, 624614388, 632546030, 640996174, 649957147, 659416723, 669358259, + 679760895, 690599795, 701846444, 713468981, 725432569, 737699796, 750231092, 762985159, 775919415, + 788990419, 802154306, 815367198, 828585593, 841766740, 854868978, 867852045, 880677358, 893308258, + 905710214, 917851001, 929700832, 941232469, 952421292, 963245346, 973685357, 983724726, 993349512, + 1002548385, 1011312579, 1019635831, 1027514316, 1034946573, 1041933433, 1048477942, 1054585275, 1060262649, + 1065519228, 1070366010, 1074815711, 1078882625, 1082582470, 1085932219, 1088949913, 1091654462, 1094065430, + 1096202822, 1098086863, 1099737781, 1101175600, 1102419947, 1103489872, 1104403690, 1105178850, 1105831817, + 1106377989, 1106831632, 1107205842, 1107512525, 1107762397, 1107965009, 1108128778, 1108261042, 1108368118, + 1108455375, 1108527311, 1108587638, 1108639366, 1108684891, 1108726077, 1108764338, 1108800715, 1108835945, + 1108870522, 1108904754, 1108938811, 1108972723, 1109006542, 1109040205, 1109073607, 1109106645, 1109139216, + 1109171221, 1109202563, 1109233147, 1109262880, 1109291675, 1109319447, 1109346114, 1109371602, 1109395837, + 1109418753, 1109440288, 1109460385, 1109478991, 1109496061, 1109511552, 1109525430, 1109537663, 1109548227, + 1109557101, 1109564272, 1109569731, 1109573473, 1109575498, 1109575814, 1109574431, 1109571363, 1109566630, + 1109560257, 1109552270, 1109542702, 1109531587, 1109518966, 1109504879, 1109489374, 1109472496, 1109454299, + 1109434835, 1109414161, 1109392335, 1109369417, 1109345469, 1109320555, 1109294742, 1109268095, 1109240684, + 1109212578, 1109183848, 1109154564, 1109124800, 1109094627, 1109064121, 1109033354, 1109002402, 1108971338, + 1108940237, 1108909175, 1108878226, 1108847464, 1108816965, 1108786801, 1108757046, 1108727774, 1108699056, + 1108670963, 1108643567, 1108616936, 1108591139, 1108566243, 1108542312, 1108519412, 1108497603, 1108476946, + 1108457499, 1108439319, 1108422458, 1108406967, 1108392895, 1108380286, 1108369184, 1108359626, 1108351647, + 1108345281, 1108340553, 1108337489, 1108336107, 1108336422, 1108338446, 1108342183, 1108347636, 1108354799, + 1108363664, 1108374217, 1108386437, 1108400301, 1108415777, 1108432830, 1108451419, 1108471498, 1108493014, + 1108515912, 1108540129, 1108565598, 1108592247, 1108620001, 1108648779, 1108678497, 1108709066, 1108740395, + 1108772389, 1108804951, 1108837980, 1108871376, 1108905035, 1108938852, 1108972723, 1109006542, 1109040205, + 1109073607, 1109106645, 1109139216, 1109171221, 1109202563, 1109233147, 1109262880, 1109291675, 1109319447, + 1109346114, 1109371602, 1109395837, 1109418753, 1109440288, 1109460385, 1109478991, 1109496061, 1109511552, + 1109525430, 1109537663, 1109548227, 1109557101, 1109564272, 1109569731, 1109573473, 1109575498, 1109575814, + 1109574431, 1109571363, 1109566630, 1109560257, 1109552270, 1109542702, 1109531587, 1109518966, 1109504879, + 1109489374, 1109472496, 1109454299, 1109434835, 1109414161, 1109392335, 1109369417, 1109345469, 1109320555, + 1109294742, 1109268095, 1109240684, 1109212578, 1109183848, 1109154564, 1109124800, 1109094627, 1109064121, + 1109033354, 1109002402, 1108971338, -1108940237, -1108909175, -1108878226, -1108847464, -1108816965, -1108786801, + -1108757046, -1108727774, -1108699056, -1108670963, -1108643567, -1108616936, -1108591139, -1108566243, -1108542312, + -1108519412, -1108497603, -1108476946, -1108457499, -1108439319, -1108422458, -1108406967, -1108392895, -1108380286, + -1108369184, -1108359626, -1108351647, -1108345281, -1108340553, -1108337489, -1108336107, -1108336422, -1108338446, + -1108342183, -1108347636, -1108354799, -1108363664, -1108374217, -1108386437, -1108400301, -1108415777, -1108432830, + -1108451419, -1108471498, -1108493014, -1108515912, -1108540129, -1108565598, -1108592247, -1108620001, -1108648779, + -1108678497, -1108709066, -1108740395, -1108772389, -1108804951, -1108837980, -1108871376, -1108905035, -1108938852, + -1108972723, -1109006542, -1109040205, -1109073607, -1109106645, -1109139216, -1109171221, -1109202563, -1109233147, + -1109262880, -1109291675, -1109319447, -1109346114, -1109371602, -1109395837, -1109418753, -1109440288, -1109460385, + -1109478991, -1109496061, -1109511552, -1109525430, -1109537663, -1109548227, -1109557101, -1109564272, -1109569731, + -1109573473, -1109575498, -1109575814, -1109574431, -1109571363, -1109566630, -1109560257, -1109552270, -1109542702, + -1109531587, -1109518966, -1109504879, -1109489374, -1109472496, -1109454299, -1109434835, -1109414161, -1109392335, + -1109369417, -1109345469, -1109320555, -1109294742, -1109268095, -1109240684, -1109212578, -1109183848, -1109154564, + -1109124800, -1109094627, -1109064121, -1109033354, -1109002402, -1108971338, -1108940237, -1108909175, -1108878226, + -1108847464, -1108816965, -1108786801, -1108757046, -1108727774, -1108699056, -1108670963, -1108643567, -1108616936, + -1108591139, -1108566243, -1108542312, -1108519412, -1108497603, -1108476946, -1108457499, -1108439319, -1108422458, + -1108406967, -1108392895, -1108380286, -1108369184, -1108359626, -1108351647, -1108345281, -1108340553, -1108337489, + -1108336107, -1108336422, -1108338446, -1108342183, -1108347636, -1108354799, -1108363664, -1108374217, -1108386437, + -1108400301, -1108415777, -1108432830, -1108451419, -1108471498, -1108493014, -1108515912, -1108540129, -1108565598, + -1108592247, -1108620001, -1108648779, -1108678497, -1108709066, -1108740395, -1108772389, -1108804951, -1108837980, + -1108871376, -1108905035, -1108938852, -1108972682, -1109006261, -1109039351, -1109071571, -1109102407, -1109131162, + -1109156896, -1109178374, -1109193989, -1109201688, -1109198891, -1109182406, -1109148336, -1109091993, -1109007805, + -1108889225, -1108728643, -1108517302, -1108245211, -1107901063, -1107472158, -1106944320, -1106301824, -1105527310, + -1104601707, -1103504157, -1102211925, -1100700333, -1098942681, -1096910184, -1094571927, -1091894839, -1088843693, + -1085381150, -1081467851, -1077062556, -1072122362, -1066602975, -1060459071, -1053644721, -1046113898, -1037821043, + -1028721699, -1018773190, -1007935330, -996171157, -983447669, -969736537, -955014802, -939265519, -922478340, + -904650040, -885784954, -865895333, -845001612, -823132583, -800325469, -776625909, -752087844, -726773304, + -700752110, -674101477, -646905528, -619254721, -591245188, -562977986, -534558266, -506094363, -477696807, + -449477265, -421547413, -394017760, -366996430, -340587909, -314891801, -290001587, -266003441, -242975106, + -220984887, -200090776, -180339738, -161767200, -144396752, -128240072, -113297104, -99556455, -86996029, + -75583860, -65279122, -56033278, -47791333, -40493145, -34074759, -28469709, -23610284, -19428682, + -15858075, -12833534, -10292814, -8176993, -6430970, -5003818, -3849000, -2924474, -2192679, + -1620441, -1178790, -842729, -590941, -405483, -271445, -176613, -111130, -67168, + -38622, -20823, -10279, -4442, -1508, -229 }; +RAM_ALIGN const Word32 LowDelayShapes_n960_N960_HRA_2_5ms_IP[480] = { + 214, 718, 1564, 2887, 4850, 7655, 11549, 16828, 23847, + 33024, 44855, 59914, 78870, 102494, 131671, 167412, 210862, 263320, + 326247, 401279, 490246, 595184, 718349, 862234, 1029583, 1223409, 1447008, + 1703973, 1998212, 2333963, 2715805, 3148674, 3637878, 4189104, 4808432, 5502344, + 6277732, 7141903, 8102584, 9167924, 10346495, 11647288, 13079711, 14653577, 16379097, + 18266869, 20327854, 22573365, 25015043, 27664828, 30534935, 33637823, 36986159, 40592781, + 44470665, 48632874, 53092523, 57862728, 62956563, 68387004, 74166887, 80308851, 86825288, + 93728290, 101029595, 108740533, 116871978, 125434289, 134437259, 143890065, 153801219, 164178510, + 175028964, 186358792, 198173341, 210477054, 223273422, 236564945, 250353087, 264638241, 279419691, + 294695574, 310462852, 326717278, 343453367, 360664374, 378342268, 396477718, 415060072, 434077349, + 453516232, 473362064, 493598851, 514209273, 535174695, 556475190, 578089564, 599995393, 622169062, + 644585817, 667219821, 690044217, 713031208, 736152130, 759377547, 782677345, 806020840, 829376886, + 852713991, 876000447, 899204452, 922294246, 945238242, 968005170, 990564209, 1012885127, 1034938418, + 1056695435, 1078128516, 1099211112, 1119917901, 1140224902, 1160109567, 1179550884, 1198529445, 1217027528, + 1235029144, 1252520091, 1269487982, 1285922269, 1301814250, 1317157066, 1331945687, 1346176884, 1359849191, + 1372962859, 1385519797, 1397523511, 1408979025, 1419892807, 1430272680, 1440127732, 1449468226, 1458305498, + 1466651859, 1474520500, 1481925383, 1488881148, 1495403011, 1501506666, 1507208191, 1512523957, 1517470536, + 1522064619, 1526322933, 1530262165, 1533898889, 1537249499, 1540330149, 1543156689, 1545744622, 1548109049, + 1550264632, 1552225553, 1554005489, 1555617576, 1557074399, 1558387963, 1559569689, 1560630404, 1561580336, + 1562429115, 1563185777, 1563858772, 1564455973, 1564984695, 1565451702, 1565863235, 1566225027, 1566542325, + 1566819919, 1567062160, 1567272989, 1567455965, 1567614286, 1567750818, 1567868122, 1567968477, 1568053906, + 1568126199, 1568186936, 1568237509, 1568279142, 1568312908, 1568339752, 1568360503, 1568375889, 1568386553, + 1568393062, 1568395921, 1568395582, 1568392450, 1568386895, 1568379252, 1568369831, 1568358921, 1568346793, + 1568333699, 1568319881, 1568305568, 1568290979, 1568276322, 1568261795, 1568247587, 1568233876, 1568220830, + 1568208605, 1568197346, 1568187184, 1568178237, 1568170607, 1568164384, 1568159638, 1568156425, 1568154783, + 1568154732, 1568156276, 1568159400, 1568164071, 1568170240, 1568177841, 1568186791, 1568196993, 1568208336, + 1568220695, 1568233934, 1568247907, 1568262461, 1568277433, 1568292659, -1568307970, -1568323196, -1568338169, + -1568352723, -1568366698, -1568379938, -1568392298, -1568403642, -1568413846, -1568422797, -1568430399, -1568436568, + -1568441238, -1568444360, -1568445899, -1568445842, -1568444189, -1568440959, -1568436189, -1568429930, -1568422249, + -1568413227, -1568402961, -1568391555, -1568379128, -1568365802, -1568351710, -1568336985, -1568321763, -1568306179, + -1568290362, -1568274432, -1568258500, -1568242658, -1568226981, -1568211514, -1568196277, -1568181247, -1568166364, + -1568151514, -1568136526, -1568121163, -1568105112, -1568087973, -1568069251, -1568048342, -1568024520, -1567996924, + -1567964542, -1567926198, -1567880531, -1567825982, -1567760771, -1567682880, -1567590033, -1567479671, -1567348935, + -1567194644, -1567013268, -1566800908, -1566553276, -1566265667, -1565932945, -1565549513, -1565109302, -1564605744, + -1564031762, -1563379748, -1562641555, -1561808482, -1560871269, -1559820088, -1558644542, -1557333666, -1555875931, + -1554259255, -1552471010, -1550498044, -1548326699, -1545942840, -1543331880, -1540478822, -1537368293, -1533984594, + -1530311749, -1526333557, -1522033659, -1517395595, -1512402882, -1507039082, -1501287884, -1495133187, -1488559185, + -1481550459, -1474092069, -1466169648, -1457769502, -1448878707, -1439485206, -1429577913, -1419146803, -1408183016, + -1396678943, -1384628319, -1372026306, -1358869573, -1345156368, -1330886582, -1316061806, -1300685380, -1284762427, + -1268299884, -1251306514, -1233792909, -1215771486, -1197256464, -1178263828, -1158811290, -1138918228, -1118605615, + -1097895946, -1076813140, -1055382446, -1033630329, -1011584359, -989273085, -966725907, -943972946, -921044904, + -897972934, -874788497, -851523227, -828208798, -804876792, -781558570, -758285150, -735087092, -711994385, + -689036342, -666241506, -643637563, -621251256, -599108313, -577233388, -555649994, -534380464, -513445903, + -492866154, -472659775, -452844015, -433434798, -414446719, -395893041, -377785693, -360135279, -342951091, + -326241124, -310012090, -294269448, -279017421, -264259031, -249996126, -236229411, -222958488, -210181887, + -197897110, -186100669, -174788126, -163954142, -153592518, -143696242, -134257536, -125267909, -116718201, + -108598638, -100898882, -93608083, -86714933, -80207718, -74074369, -68302521, -62879558, -57792672, + -53028908, -48575221, -44418518, -40545711, -36943757, -33599707, -30500746, -27634227, -24987716, + -22549018, -20306212, -18247679, -16362124, -14638601, -13066533, -11635723, -10336374, -9159092, + -8094899, -7135237, -6271969, -5497377, -4804166, -4185453, -3634765, -3146030, -2713568, + -2332079, -1996632, -1702653, -1445912, -1222503, -1028839, -861625, -717855, -594786, + -489927, -401025, -326046, -263164, -210741, -167319, -131601, -102441, -78831, + -59886, -44835, -33011, -23837, -16822, -11545, -7652, -4848, -2886, + -1564, -718, -214 }; +RAM_ALIGN const Word32 LowDelayShapes_n960_N960_HRA_5ms_IP[840] = { + 76, 257, 559, 1032, 1734, 2736, 4127, 6013, 8519, + 11795, 16017, 21388, 28146, 36565, 46958, 59681, 75141, 93793, + 116154, 142798, 174368, 211576, 255213, 306147, 365337, 433830, 512771, + 603404, 707083, 825270, 959545, 1111607, 1283278, 1476512, 1693391, 1936135, + 2207099, 2508779, 2843816, 3214988, 3625222, 4077586, 4575292, 5121693, 5720282, + 6374686, 7088668, 7866117, 8711044, 9627575, 10619947, 11692493, 12849640, 14095892, + 15435823, 16874063, 18415286, 20064193, 21825499, 23703917, 25704138, 27830817, 30088554, + 32481870, 35015193, 37692833, 40518962, 43497594, 46632560, 49927486, 53385775, 57010578, + 60804774, 64770951, 68911378, 73227988, 77722354, 82395670, 87248734, 92281923, 97495181, + 102888003, 108459414, 114207966, 120131717, 126228227, 132494547, 138927218, 145522261, 152275182, + 159180971, 166234104, 173428552, 180757788, 188214801, 195792105, 203481764, 211275403, 219164235, + 227139085, 235190416, 243308359, 251482745, 259703138, 267958873, 276239090, 284532776, 292828806, + 301115982, 309383080, 317618887, 325812253, 333952128, 342027608, 350027981, 357942764, 365761752, + 373475051, 381073123, 388546818, 395887478, 403086861, 410137202, 417031278, 423762414, 430324505, + 436712040, 442920115, 448944445, 454781381, 460427907, 465881653, 471140887, 476204517, 481072084, + 485743749, 490220286, 494503064, 498594029, 502495687, 506211078, 509743756, 513097759, 516277584, + 519288161, 522134817, 524823252, 527359505, 529749922, 532001128, 534119994, 536113606, 537989238, + 539754317, 541416403, 542983151, 544462298, 545861626, 547188947, 548452077, 549658817, 550816937, + 551934153, 553018114, 554076391, 555116460, 556145691, 557171340, 558200539, 559240287, 560297445, + 561378728, 562490702, 563639778, 564832206, 566074075, 567371305, 568729649, 570154682, 571651805, + 573226236, 574883010, 576626970, 578462769, 580394858, 582427488, 584564698, 586810313, 589167940, + 591640954, 594232500, 596945481, 599782552, 602746115, 605838312, 609061015, 612415825, 615904060, + 619526756, 623284658, 627178213, 631207574, 635372590, 639672804, 644107457, 648675483, 653375510, + 658205862, 663164563, 668249336, 673457615, 678786542, 684232980, 689793518, 695464480, 701241935, + 707121707, 713099387, 719170342, 725329733, 731572527, 737893509, 744287298, 750748363, 757271038, + 763849540, 770477982, 777150393, 783860731, 790602903, 797370781, 804158216, 810959059, 817767172, + 824576448, 831380824, 838174297, 844950938, 851704905, 858430460, 865121975, 871773953, 878381029, + 884937988, 891439772, 897881487, 904258415, 910566018, 916799945, 922956036, 929030332, 935019072, + 940918701, 946725867, 952437431, 958050459, 963562228, 968970222, 974272134, 979465863, 984549513, + 989521388, 994379992, 999124027, 1003752385, 1008264148, 1012658583, 1016935141, 1021093445, 1025133296, + 1029054661, 1032857672, 1036542620, 1040109952, 1043560268, 1046894310, 1050112965, 1053217256, 1056208338, + 1059087494, 1061856131, 1064515771, 1067068050, 1069514712, 1071857603, 1074098665, 1076239931, 1078283519, + 1080231627, 1082086525, 1083850551, 1085526101, 1087115629, 1088621631, 1090046648, 1091393252, 1092664044, + 1093861644, 1094988685, 1096047808, 1097041655, 1097972860, 1098844046, 1099657818, 1100416756, 1101123410, + 1101780297, 1102389891, 1102954625, 1103476879, 1103958984, 1104403212, 1104811774, 1105186822, 1105530438, + 1105844638, 1106131370, 1106392508, 1106629854, 1106845137, 1107040012, 1107216060, 1107374784, 1107517617, + 1107645915, 1107760961, 1107863967, 1107956073, 1108038347, 1108111792, 1108177340, 1108235860, 1108288159, + 1108334979, 1108377006, 1108414868, 1108449137, 1108480336, 1108508935, 1108535359, 1108559986, 1108583153, + 1108605158, 1108626260, 1108646685, 1108666625, 1108686243, 1108705675, 1108725031, 1108744398, 1108763843, + 1108783413, 1108803139, 1108823037, 1108843110, 1108863348, 1108883733, 1108904238, 1108924827, 1108945461, + 1108966087, 1108986655, 1109007132, 1109027458, 1109047572, 1109067415, 1109086928, 1109106055, 1109124739, + 1109142927, 1109160566, 1109177606, 1109193997, 1109209694, 1109224653, 1109238833, 1109252194, 1109264701, + 1109276321, 1109287024, 1109296781, 1109305569, 1109313366, 1109320154, 1109325918, 1109330645, 1109334328, + 1109336959, 1109338535, 1109339057, 1109338528, 1109336954, 1109334342, 1109330704, 1109326055, 1109320411, + 1109313791, 1109306216, 1109297711, 1109288301, 1109278014, 1109266881, 1109254934, 1109242206, 1109228734, + 1109214554, 1109199706, 1109184228, 1109168164, 1109151555, 1109134445, 1109116879, 1109098903, 1109080563, + 1109061906, 1109042980, 1109023833, 1109004515, 1108985073, 1108965557, 1108946017, 1108926503, 1108907062, + 1108887746, 1108868601, 1108849679, 1108831026, 1108812690, 1108794719, 1108777158, 1108760054, 1108743451, + 1108727393, 1108711923, 1108697081, 1108682908, 1108669442, 1108656721, 1108644781, 1108633654, 1108623374, + 1108613969, 1108605469, 1108597899, 1108591283, 1108585643, 1108580997, 1108577362, 1108574752, 1108573178, + 1108572650, 1108573172, 1108574747, 1108577376, 1108581056, 1108585780, 1108591541, 1108598324, 1108606116, + 1108614899, 1108624650, 1108635346, 1108646959, 1108659460, 1108672814, 1108686987, 1108701939, 1108717629, + 1108734013, 1108751046, 1108768679, 1108786861, 1108805540, 1108824662, 1108844171, 1108864011, 1108884121, + 1108904445, 1108924921, 1108945488, -1108966087, -1108986655, -1109007132, -1109027458, -1109047572, -1109067415, + -1109086928, -1109106055, -1109124739, -1109142927, -1109160566, -1109177606, -1109193997, -1109209694, -1109224653, + -1109238833, -1109252194, -1109264701, -1109276321, -1109287024, -1109296781, -1109305569, -1109313366, -1109320154, + -1109325918, -1109330645, -1109334328, -1109336959, -1109338535, -1109339057, -1109338528, -1109336954, -1109334342, + -1109330704, -1109326055, -1109320411, -1109313791, -1109306216, -1109297711, -1109288301, -1109278014, -1109266881, + -1109254934, -1109242206, -1109228734, -1109214554, -1109199706, -1109184228, -1109168164, -1109151555, -1109134445, + -1109116879, -1109098903, -1109080563, -1109061906, -1109042980, -1109023833, -1109004515, -1108985073, -1108965557, + -1108946017, -1108926503, -1108907062, -1108887746, -1108868601, -1108849679, -1108831026, -1108812690, -1108794719, + -1108777158, -1108760054, -1108743451, -1108727393, -1108711923, -1108697081, -1108682908, -1108669442, -1108656721, + -1108644781, -1108633654, -1108623374, -1108613969, -1108605469, -1108597899, -1108591283, -1108585643, -1108580997, + -1108577362, -1108574752, -1108573178, -1108572650, -1108573172, -1108574747, -1108577376, -1108581056, -1108585780, + -1108591541, -1108598324, -1108606116, -1108614899, -1108624650, -1108635346, -1108646959, -1108659460, -1108672814, + -1108686987, -1108701939, -1108717629, -1108734013, -1108751046, -1108768679, -1108786861, -1108805540, -1108824662, + -1108844171, -1108864011, -1108884121, -1108904445, -1108924921, -1108945488, -1108966059, -1108986562, -1109006925, + -1109027070, -1109046909, -1109066353, -1109085302, -1109103653, -1109121290, -1109138090, -1109153916, -1109168619, + -1109182038, -1109193990, -1109204280, -1109212687, -1109218972, -1109222869, -1109224086, -1109222302, -1109217164, + -1109208286, -1109195243, -1109177572, -1109154771, -1109126288, -1109091528, -1109049845, -1109000541, -1108942861, + -1108875994, -1108799068, -1108711146, -1108611228, -1108498242, -1108371047, -1108228427, -1108069090, -1107891663, + -1107694692, -1107476636, -1107235870, -1106970675, -1106679239, -1106359654, -1106009912, -1105627904, -1105211414, + -1104758117, -1104265576, -1103731240, -1103152437, -1102526375, -1101850136, -1101120673, -1100334807, -1099489225, + -1098580473, -1097604958, -1096558943, -1095438542, -1094239723, -1092958302, -1091589944, -1090130161, -1088574313, + -1086917606, -1085155099, -1083281700, -1081292171, -1079181138, -1076943086, -1074572374, -1072063243, -1069409818, + -1066606126, -1063646105, -1060523618, -1057232468, -1053766415, -1050119192, -1046284528, -1042256165, -1038027882, + -1033593517, -1028946994, -1024082345, -1018993738, -1013675503, -1008122162, -1002328454, -996289366, -990000160, + -983456402, -976653990, -969589182, -962258626, -954659381, -946788949, -938645296, -930226877, -921532657, + -912562133, -903315354, -893792938, -883996084, -873926592, -863586870, -852979945, -842109472, -830979735, + -819595655, -807962787, -796087320, -783976072, -771636483, -759076610, -746305110, -733331233, -720164799, + -706816188, -693296313, -679616605, -665788980, -651825820, -637739943, -623544570, -609253297, -594880059, + -580439096, -565944918, -551412265, -536856066, -522291404, -507733472, -493197528, -478698857, -464252725, + -449874333, -435578778, -421381001, -407295749, -393337528, -379520558, -365858731, -352365567, -339054174, + -325937207, -313026827, -300334664, -287871784, -275648653, -263675105, -251960314, -240512770, -229340251, + -218449809, -207847746, -197539607, -187530166, -177823422, -168422593, -159330123, -150547678, -142076164, + -133915731, -126065794, -118525050, -111291498, -104362470, -97734652, -91404122, -85366377, -79616373, + -74148557, -68956911, -64034986, -59375949, -54972617, -50817502, -46902854, -43220698, -39762875, + -36521086, -33486923, -30651913, -28007548, -25545325, -23256770, -21133479, -19167136, -17349546, + -15672656, -14128580, -12709614, -11408260, -10217235, -9129491, -8138220, -7236869, -6419144, + -5679019, -5010736, -4408811, -3868031, -3383459, -2950426, -2564532, -2221640, -1917871, + -1649598, -1413439, -1206249, -1025112, -867332, -730423, -612103, -510279, -423042, + -348652, -285533, -232260, -187551, -150254, -119343, -93901, -73120, -56285, + -42770, -32029, -23588, -17037, -12025, -8254, -5472, -3467, -2064, + -1119, -513, -153 }; +RAM_ALIGN const Word32 LowDelayShapes_n960_N960_HRA_IP[1560] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 52, 175, 382, + 705, 1185, 1871, 2823, 4114, 5831, 8077, 10972, 14660, + 19303, 25092, 32244, 41009, 51670, 64545, 79996, 98427, 120290, + 146088, 176379, 211778, 252965, 300685, 355753, 419058, 491567, 574329, + 668476, 775231, 895906, 1031911, 1184750, 1356028, 1547453, 1760836, 1998091, + 2261242, 2552417, 2873848, 3227877, 3616948, 4043606, 4510498, 5020366, 5576047, + 6180463, 6836620, 7547602, 8316559, 9146706, 10041310, 11003683, 12037172, 13145144, + 14330983, 15598071, 16949778, 18389446, 19920381, 21545832, 23268982, 25092926, 27020662, + 29055072, 31198906, 33454766, 35825091, 38312140, 40917976, 43644450, 46493186, 49465569, + 52562726, 55785514, 59134509, 62609992, 66211939, 69940008, 73793535, 77771521, 81872629, + 86095178, 90437137, 94896125, 99469410, 104153908, 108946186, 113842469, 118838639, 123930249, + 129112527, 134380390, 139728454, 145151046, 150642225, 156195792, 161805313, 167464136, 173165413, + 178902121, 184667086, 190453005, 196252476, 202058015, 207862090, 213657145, 219435626, 225190009, + 230912827, 236596697, 242234348, 247818648, 253342624, 258799497, 264182697, 269485893, 274703012, + 279828312, 284856314, 289781856, 294600125, 299306665, 303897390, 308368599, 312716983, 316939635, + 321034059, 324998175, 328830319, 332529248, 336094136, 339524575, 342820570, 345982531, 349011267, + 351907976, 354674236, 357311989, 359823531, 362211496, 364478840, 366628822, 368664989, 370591159, + 372411396, 374129997, 375751467, 377280502, 378721970, 380080887, 381362400, 382571769, 383714343, + 384795547, 385820862, 386795806, 387725921, 388616754, 389473844, 390302710, 391108835, 391897652, + 392674541, 393444809, 394213686, 394986316, 395767747, 396562926, 397376691, 398213764, 399078748, + 399976120, 400910228, 401885285, 402905364, 403974398, 405096172, 406274322, 407512329, 408813519, + 410181054, 411617935, 413126993, 414710888, 416372104, 418112946, 419935539, 421841819, 423833534, + 425912241, 428079300, 430335872, 432682921, 435121205, 437651278, 440273491, 442987985, 445794697, + 448693355, 451683483, 454764399, 457935219, 461194860, 464542039, 467975283, 471492928, 475093126, + 478773851, 482532904, 486367920, 490276375, 494255591, 498302751, 502414896, 506588946, 510821698, + 515109841, 519449966, 523838572, 528272075, 532746823, 537259100, 541805139, 546381131, 550983233, + 555607579, 560250290, 564907481, 569575271, 574249791, 578927195, 583603665, 588275420, 592938724, + 597589893, 602225302, 606841390, 611434670, 616001729, 620539240, 625043960, 629512740, 633942527, + 638330370, 642673418, 646968929, 651214270, 655406919, 659544468, 663624624, 667645211, 671604169, + 675499557, 679329551, 683092449, 686786663, 690410727, 693963289, 697443117, 700849092, 704180212, + 707435589, 710614445, 713716116, 716740046, 719685788, 722553001, 725341451, 728051005, 730681634, + 733233409, 735706498, 738101168, 740417780, 742656787, 744818734, 746904257, 748914076, 750848997, + 752709910, 754497783, 756213660, 757858664, 759433984, 760940881, 762380680, 763754766, 765064584, + 766311629, 767497450, 768623637, 769691823, 770703677, 771660899, 772565218, 773418381, 774222155, + 774978320, 775688661, 776354967, 776979026, 777562617, 778107510, 778615459, 779088198, 779527438, + 779934863, 780312126, 780660846, 780982606, 781278948, 781551373, 781801337, 782030250, 782239474, + 782430322, 782604056, 782761888, 782904976, 783034427, 783151295, 783256582, 783351237, 783436158, + 783512191, 783580133, 783640729, 783694677, 783742630, 783785193, 783822926, 783856349, 783885939, + 783912134, 783935335, 783955909, 783974185, 783990464, 784005015, 784018080, 784029874, 784040589, + 784050394, 784059435, 784067843, 784075728, 784083188, 784090303, 784097145, 784103769, 784110225, + 784116552, 784122782, 784128939, 784135042, 784141107, 784147142, 784153152, 784159138, 784165118, + 784171086, 784177037, 784182968, 784188874, 784194749, 784200591, 784206393, 784212151, 784217862, + 784223520, 784229122, 784234663, 784240139, 784245546, 784250879, 784256136, 784261311, 784266402, + 784271403, 784276313, 784281126, 784285841, 784290452, 784294958, 784299354, 784303638, 784307807, + 784311858, 784315788, 784319595, 784323276, 784326828, 784330250, 784333539, 784336693, 784339710, + 784342589, 784345327, 784347923, 784350376, 784352685, 784354847, 784356862, 784358729, 784360447, + 784362016, 784363434, 784364702, 784365818, 784366783, 784367596, 784368257, 784368766, 784369124, + 784369331, 784369387, 784369292, 784369047, 784368653, 784368111, 784367421, 784366584, 784365602, + 784364475, 784363205, 784361793, 784360241, 784358550, 784356721, 784354756, 784352657, 784350426, + 784348065, 784345575, 784342958, 784340217, 784337354, 784334371, 784331270, 784328053, 784324723, + 784321282, 784317734, 784314079, 784310321, 784306463, 784302507, 784298456, 784294312, 784290078, + 784285758, 784281354, 784276869, 784272306, 784267667, 784262957, 784258177, 784253332, 784248423, + 784243454, 784238429, 784233349, 784228220, 784223043, 784217822, 784212560, 784207260, 784201926, + 784196560, 784191167, 784185749, 784180310, 784174852, 784169380, 784163896, 784158404, 784152907, + 784147408, 784141911, 784136419, 784130935, 784125463, 784120006, 784114567, 784109150, 784103757, + 784098392, 784093059, 784087760, 784082499, 784077278, 784072102, 784066974, 784061896, 784056872, + 784051904, 784046997, 784042152, 784037374, 784032665, 784028028, 784023466, 784018982, 784014580, + 784010261, 784006029, 784001887, 783997837, 783993883, 783990026, 783986270, 783982617, 783979069, + 783975630, 783972302, 783969087, 783965987, 783963005, 783960143, 783957404, 783954788, 783952300, + 783949939, 783947709, 783945612, 783943648, 783941820, 783940130, 783938578, 783937167, 783935898, + 783934772, 783933790, 783932954, 783932264, 783931722, 783931328, 783931084, 783930989, 783931045, + 783931251, 783931609, 783932118, 783932779, 783933592, 783934556, 783935672, 783936938, 783938356, + 783939924, 783941641, 783943507, 783945521, 783947682, 783949989, 783952441, 783955036, 783957773, + 783960650, 783963666, 783966818, 783970106, 783973526, 783977077, 783980756, 783984561, 783988490, + 783992539, 783996706, 784000989, 784005383, 784009887, 784014497, 784019210, 784024022, 784028930, + 784033930, 784039019, 784044193, 784049448, 784054780, 784060186, 784065661, 784071201, 784076801, + 784082459, 784088168, 784093926, 784099727, 784105568, 784111443, 784117348, 784123278, 784129229, + 784135197, 784141176, 784147163, 784153152, 784159138, 784165118, 784171086, 784177037, 784182968, + 784188874, 784194749, 784200591, 784206393, 784212151, 784217862, 784223520, 784229122, 784234663, + 784240139, 784245546, 784250879, 784256136, 784261311, 784266402, 784271403, 784276313, 784281126, + 784285841, 784290452, 784294958, 784299354, 784303638, 784307807, 784311858, 784315788, 784319595, + 784323276, 784326828, 784330250, 784333539, 784336693, 784339710, 784342589, 784345327, 784347923, + 784350376, 784352685, 784354847, 784356862, 784358729, 784360447, 784362016, 784363434, 784364702, + 784365818, 784366783, 784367596, 784368257, 784368766, 784369124, 784369331, 784369387, 784369292, + 784369047, 784368653, 784368111, 784367421, 784366584, 784365602, 784364475, 784363205, 784361793, + 784360241, 784358550, 784356721, 784354756, 784352657, 784350426, 784348065, 784345575, 784342958, + 784340217, 784337354, 784334371, 784331270, 784328053, 784324723, 784321282, 784317734, 784314079, + 784310321, 784306463, 784302507, 784298456, 784294312, 784290078, 784285758, 784281354, 784276869, + 784272306, 784267667, 784262957, 784258177, 784253332, 784248423, 784243454, 784238429, 784233349, + 784228220, 784223043, 784217822, 784212560, 784207260, 784201926, 784196560, 784191167, 784185749, + 784180310, 784174852, 784169380, 784163896, 784158404, 784152907, -784147408, -784141911, -784136419, + -784130935, -784125463, -784120006, -784114567, -784109150, -784103757, -784098392, -784093059, -784087760, + -784082499, -784077278, -784072102, -784066974, -784061896, -784056872, -784051904, -784046997, -784042152, + -784037374, -784032665, -784028028, -784023466, -784018982, -784014580, -784010261, -784006029, -784001887, + -783997837, -783993883, -783990026, -783986270, -783982617, -783979069, -783975630, -783972302, -783969087, + -783965987, -783963005, -783960143, -783957404, -783954788, -783952300, -783949939, -783947709, -783945612, + -783943648, -783941820, -783940130, -783938578, -783937167, -783935898, -783934772, -783933790, -783932954, + -783932264, -783931722, -783931328, -783931084, -783930989, -783931045, -783931251, -783931609, -783932118, + -783932779, -783933592, -783934556, -783935672, -783936938, -783938356, -783939924, -783941641, -783943507, + -783945521, -783947682, -783949989, -783952441, -783955036, -783957773, -783960650, -783963666, -783966818, + -783970106, -783973526, -783977077, -783980756, -783984561, -783988490, -783992539, -783996706, -784000989, + -784005383, -784009887, -784014497, -784019210, -784024022, -784028930, -784033930, -784039019, -784044193, + -784049448, -784054780, -784060186, -784065661, -784071201, -784076801, -784082459, -784088168, -784093926, + -784099727, -784105568, -784111443, -784117348, -784123278, -784129229, -784135197, -784141176, -784147163, + -784153152, -784159138, -784165118, -784171086, -784177037, -784182968, -784188874, -784194749, -784200591, + -784206393, -784212151, -784217862, -784223520, -784229122, -784234663, -784240139, -784245546, -784250879, + -784256136, -784261311, -784266402, -784271403, -784276313, -784281126, -784285841, -784290452, -784294958, + -784299354, -784303638, -784307807, -784311858, -784315788, -784319595, -784323276, -784326828, -784330250, + -784333539, -784336693, -784339710, -784342589, -784345327, -784347923, -784350376, -784352685, -784354847, + -784356862, -784358729, -784360447, -784362016, -784363434, -784364702, -784365818, -784366783, -784367596, + -784368257, -784368766, -784369124, -784369331, -784369387, -784369292, -784369047, -784368653, -784368111, + -784367421, -784366584, -784365602, -784364475, -784363205, -784361793, -784360241, -784358550, -784356721, + -784354756, -784352657, -784350426, -784348065, -784345575, -784342958, -784340217, -784337354, -784334371, + -784331270, -784328053, -784324723, -784321282, -784317734, -784314079, -784310321, -784306463, -784302507, + -784298456, -784294312, -784290078, -784285758, -784281354, -784276869, -784272306, -784267667, -784262957, + -784258177, -784253332, -784248423, -784243454, -784238429, -784233349, -784228220, -784223043, -784217822, + -784212560, -784207260, -784201926, -784196560, -784191167, -784185749, -784180310, -784174852, -784169380, + -784163896, -784158404, -784152907, -784147408, -784141911, -784136419, -784130935, -784125463, -784120006, + -784114567, -784109150, -784103757, -784098392, -784093059, -784087760, -784082499, -784077278, -784072102, + -784066974, -784061896, -784056872, -784051904, -784046997, -784042152, -784037374, -784032665, -784028028, + -784023466, -784018982, -784014580, -784010261, -784006029, -784001887, -783997837, -783993883, -783990026, + -783986270, -783982617, -783979069, -783975630, -783972302, -783969087, -783965987, -783963005, -783960143, + -783957404, -783954788, -783952300, -783949939, -783947709, -783945612, -783943648, -783941820, -783940130, + -783938578, -783937167, -783935898, -783934772, -783933790, -783932954, -783932264, -783931722, -783931328, + -783931084, -783930989, -783931045, -783931251, -783931609, -783932118, -783932779, -783933592, -783934556, + -783935672, -783936938, -783938356, -783939924, -783941641, -783943507, -783945521, -783947682, -783949989, + -783952441, -783955036, -783957773, -783960650, -783963666, -783966818, -783970106, -783973526, -783977077, + -783980756, -783984561, -783988490, -783992539, -783996706, -784000989, -784005383, -784009887, -784014497, + -784019210, -784024022, -784028930, -784033930, -784039019, -784044193, -784049448, -784054780, -784060186, + -784065661, -784071201, -784076801, -784082459, -784088168, -784093926, -784099727, -784105568, -784111443, + -784117348, -784123278, -784129229, -784135197, -784141176, -784147163, -784153131, -784159068, -784164963, + -784170795, -784176541, -784182173, -784187657, -784192951, -784198007, -784202769, -784207169, -784211130, + -784214559, -784217353, -784219391, -784220535, -784220630, -784219497, -784216937, -784212727, -784206617, + -784198327, -784187551, -784173947, -784157141, -784136723, -784112243, -784083213, -784049101, -784009333, + -783963287, -783910294, -783849634, -783780538, -783702180, -783613679, -783514100, -783402445, -783277658, + -783138617, -782984141, -782812977, -782623808, -782415247, -782185834, -781934039, -781658253, -781356794, + -781027899, -780669728, -780280356, -779857776, -779399894, -778904531, -778369419, -777792197, -777170416, + -776501532, -775782908, -775011810, -774185411, -773300787, -772354919, -771344691, -770266894, -769118226, + -767895293, -766594614, -765212620, -763745664, -762190019, -760541889, -758797411, -756952664, -755003678, + -752946440, -750776904, -748491005, -746084664, -743553805, -740894366, -738102311, -735173645, -732104432, + -728890802, -725528974, -722015270, -718346128, -714518120, -710527972, -706372573, -702048997, -697554517, + -692886621, -688043026, -683021694, -677820848, -672438982, -666874876, -661127608, -655196568, -649081463, + -642782332, -636299553, -629633851, -622786302, -615758346, -608551783, -601168786, -593611894, -585884022, + -577988458, -569928861, -561709265, -553334069, -544808041, -536136306, -527324347, -518377994, -509303418, + -500107123, -490795932, -481376983, -471857712, -462245842, -452549370, -442776550, -432935882, -423036090, + -413086109, -403095064, -393072251, -383027119, -372969246, -362908319, -352854112, -342816459, -332805234, + -322830326, -312901609, -303028921, -293222034, -283490629, -273844269, -264292369, -254844170, -245508712, + -236294804, -227211000, -218265568, -209466468, -200821323, -192337394, -184021561, -175880295, -167919639, + -160145191, -152562081, -145174961, -137987988, -131004813, -124228572, -117661879, -111306824, -105164969, + -99237348, -93524475, -88026347, -82742454, -77671790, -72812867, -68163733, -63721988, -59484805, + -55448955, -51610827, -47966456, -44511550, -41241516, -38151492, -35236370, -32490831, -29909374, + -27486341, -25215951, -23092326, -21109518, -19261540, -17542387, -15946062, -14466601, -13098096, + -11834709, -10670701, -9600439, -8618419, -7719279, -6897809, -6148962, -5467868, -4849835, + -4290361, -3785136, -3330046, -2921175, -2554807, -2227423, -1935704, -1676526, -1446955, + -1244248, -1065844, -909363, -772594, -653495, -550182, -460924, -384136, -318370, + -262309, -214759, -174641, -140984, -112917, -89663, -70531, -54908, -42257, + -32104, -24037, -17698, -12781, -9020, -6190, -4103, -2600, -1548, + -839, -385, -115 }; +#endif /* ENABLE_HR_MODE */ + +#ifdef ENABLE_HR_MODE +RAM_ALIGN const Word32 *const LowDelayShapes_n960_HRA_2_5ms[2] = { LowDelayShapes_n960_N480_HRA_2_5ms_IP, + LowDelayShapes_n960_N960_HRA_2_5ms_IP }; + +RAM_ALIGN const Word32 *const LowDelayShapes_n960_HRA_5ms[2] = { LowDelayShapes_n960_N480_HRA_5ms_IP, + LowDelayShapes_n960_N960_HRA_5ms_IP }; + +RAM_ALIGN const Word32 *const LowDelayShapes_n960_HRA[2] = { LowDelayShapes_n960_N480_HRA_IP, + LowDelayShapes_n960_N960_HRA_IP }; + +# ifdef CR8_G_ADD_75MS +RAM_ALIGN const Word32 *const LowDelayShapes_n960_HRA_7_5ms[2] = { LowDelayShapes_n960_N480_HRA_7_5ms_IP, + LowDelayShapes_n960_N960_HRA_7_5ms_IP }; +# endif +#endif /* ENABLE_HR_MODE */ + +RAM_ALIGN const Word16 pitch_max[5] = {MAX_PITCH_8K, MAX_PITCH_16K, MAX_PITCH_24K, MAX_PITCH_32K, MAX_PITCH_48K}; +RAM_ALIGN const Word16 plc_preemph_fac[NUM_SAMP_FREQ] = {20316, 23592, 26869, 30146, 30146 +# ifdef ENABLE_HR_MODE + , 30146 +# endif + }; +/* high pass filter Q15 */ +RAM_ALIGN const Word16 TDC_high_16[11] = {(Word16)0x0000, (Word16)0xfd60, (Word16)0xf7ab, (Word16)0xefec, + (Word16)0xe910, (Word16)0x66c2, (Word16)0xe910, (Word16)0xefec, + (Word16)0xf7ab, (Word16)0xfd60, (Word16)0x0000}; + +RAM_ALIGN const Word16 TDC_high_32[11] = {(Word16)0xf962, (Word16)0xf87d, (Word16)0xf581, (Word16)0xf2e5, + (Word16)0xf11a, (Word16)0x7076, (Word16)0xf11a, (Word16)0xf2e5, + (Word16)0xf581, (Word16)0xf87d, (Word16)0xf962}; + +RAM_ALIGN const Word16 TDC_high_16_harm[11] = {(Word16) 174, (Word16) 0, (Word16) -1442, (Word16) 0, + (Word16) 8641, (Word16) 18022, (Word16) 8641, (Word16) 0, + (Word16) -1442, (Word16) 0, (Word16) 174}; + +RAM_ALIGN const Word16 TDC_high_32_harm[11] = {(Word16) -174, (Word16) -121, (Word16) -459, (Word16) 590, + (Word16) 8743, (Word16) 16355, (Word16) 8743, (Word16) 590, + (Word16) -459, (Word16) -121, (Word16) -174}; + + +#ifdef SUBSET_NB +RAM_ALIGN const Word16 LowDelayShapes_n960_N80[130] = { + -15, -43, -94, -171, -277, -414, -580, -771, -981, -1201, -1423, -1638, -1836, + -2008, -2145, -2240, -2286, -2279, -2214, -2085, -1889, -1621, -1274, -842, -318, 305, + 1034, 1876, 2833, 3906, 5091, 6379, 7754, 9198, 10683, 12179, 13652, 15068, 16390, + 17588, 18634, 19509, 20201, 20712, 21051, 21237, 21297, 21263, 21168, 21044, 20918, 20797, + 20701, 20627, 20571, 20529, 20499, 20479, 20468, 20463, 20464, 20469, 20477, 20486, 20495, + 20503, 20509, 20514, 20516, 20518, 20520, 20524, 20530, 20540, 20556, 20576, 20602, 20633, + 20668, 20705, -20743, -20781, -20816, -20847, -20873, -20894, -20910, -20920, -20927, -20930, -20932, + -20934, -20937, -20942, -20948, -20956, -20966, -20975, -20982, -20988, -20989, -20984, -20972, -20952, + -20921, -20879, -20822, -20747, -20652, -20532, -20359, -20121, -19785, -19318, -18689, -17873, -16855, + -15636, -14231, -12670, -10997, -9266, -7542, -5889, -4373, -3051, -1965, -1136, -560, -207}; +#else +#define LowDelayShapes_n960_N80 NULL +#endif + +#ifdef SUBSET_WB +RAM_ALIGN const Word16 LowDelayShapes_n960_N160[260] = { + -14, -29, -49, -76, -112, -156, -210, -275, -350, -437, -534, -641, -759, -885, + -1020, -1163, -1311, -1464, -1620, -1777, -1935, -2090, -2242, -2390, -2530, -2661, -2783, -2893, + -2990, -3073, -3140, -3191, -3224, -3238, -3233, -3208, -3162, -3094, -3003, -2889, -2751, -2587, + -2397, -2180, -1935, -1661, -1355, -1018, -648, -244, 197, 674, 1190, 1745, 2340, 2976, + 3652, 4370, 5129, 5928, 6766, 7642, 8553, 9496, 10470, 11469, 12490, 13529, 14579, 15637, + 16696, 17750, 18792, 19817, 20819, 21791, 22727, 23621, 24469, 25264, 26004, 26685, 27304, 27858, + 28348, 28773, 29134, 29433, 29672, 29855, 29986, 30070, 30112, 30117, 30092, 30043, 29976, 29895, + 29807, 29716, 29632, 29536, 29451, 29374, 29307, 29247, 29195, 29149, 29109, 29075, 29045, 29020, + 28999, 28982, 28968, 28957, 28949, 28943, 28940, 28939, 28940, 28942, 28946, 28950, 28956, 28962, + 28968, 28975, 28981, 28987, 28993, 28998, 29002, 29006, 29009, 29012, 29014, 29015, 29017, 29018, + 29019, 29021, 29024, 29027, 29031, 29037, 29044, 29053, 29064, 29077, 29091, 29108, 29126, 29146, + 29168, 29192, 29216, 29242, 29268, 29295, -29322, -29349, -29376, -29401, -29426, -29450, -29472, -29492, + -29511, -29527, -29542, -29555, -29566, -29575, -29583, -29589, -29593, -29596, -29599, -29601, -29602, -29603, + -29605, -29606, -29608, -29611, -29614, -29618, -29623, -29628, -29634, -29640, -29646, -29653, -29660, -29666, + -29671, -29676, -29680, -29682, -29683, -29682, -29678, -29673, -29664, -29653, -29639, -29621, -29600, -29574, + -29544, -29509, -29469, -29423, -29370, -29310, -29243, -29167, -29083, -28988, -28861, -28718, -28551, -28351, + -28114, -27834, -27505, -27121, -26677, -26168, -25591, -24943, -24223, -23431, -22569, -21639, -20644, -19592, + -18487, -17338, -16154, -14944, -13719, -12491, -11270, -10068, -8898, -7771, -6698, -5689, -4753, -3898, + -3130, -2452, -1866, -1371, -964, -640, -392, -198}; +#else +#define LowDelayShapes_n960_N160 NULL +#endif +#ifdef SUBSET_SSWB +RAM_ALIGN const Word16 LowDelayShapes_n960_N240[390] = { + -9, -17, -26, -37, -50, -66, -86, -108, -134, -164, -197, -234, -275, -320, + -369, -422, -479, -539, -603, -670, -741, -814, -891, -969, -1050, -1132, -1216, -1301, + -1387, -1473, -1558, -1643, -1728, -1810, -1892, -1971, -2047, -2120, -2190, -2256, -2318, -2376, + -2429, -2477, -2519, -2556, -2586, -2611, -2629, -2640, -2645, -2642, -2632, -2614, -2589, -2556, + -2515, -2466, -2408, -2341, -2266, -2182, -2088, -1985, -1872, -1748, -1615, -1471, -1316, -1150, + -972, -783, -582, -368, -141, 99, 352, 619, 899, 1194, 1503, 1827, 2166, 2519, + 2888, 3271, 3669, 4082, 4510, 4952, 5408, 5878, 6362, 6857, 7365, 7885, 8414, 8954, + 9502, 10058, 10621, 11189, 11761, 12335, 12912, 13488, 14063, 14635, 15203, 15764, 16319, 16864, + 17399, 17922, 18431, 18926, 19405, 19866, 20309, 20732, 21135, 21517, 21876, 22213, 22526, 22817, + 23083, 23326, 23546, 23743, 23916, 24068, 24198, 24308, 24397, 24469, 24522, 24560, 24582, 24592, + 24589, 24575, 24552, 24522, 24485, 24443, 24398, 24349, 24300, 24252, 24209, 24155, 24104, 24058, + 24014, 23974, 23938, 23904, 23873, 23844, 23818, 23794, 23773, 23753, 23735, 23719, 23705, 23692, + 23681, 23670, 23662, 23654, 23647, 23642, 23638, 23634, 23632, 23630, 23629, 23629, 23629, 23630, + 23632, 23634, 23636, 23639, 23642, 23645, 23648, 23652, 23655, 23658, 23662, 23665, 23669, 23672, + 23674, 23677, 23680, 23682, 23684, 23686, 23687, 23688, 23689, 23690, 23691, 23692, 23693, 23693, + 23694, 23695, 23696, 23697, 23699, 23701, 23703, 23706, 23710, 23714, 23718, 23723, 23729, 23736, + 23743, 23751, 23760, 23769, 23779, 23790, 23801, 23813, 23825, 23838, 23851, 23865, 23879, 23894, + 23908, 23923, -23938, -23952, -23967, -23981, -23996, -24010, -24023, -24036, -24049, -24061, -24072, -24083, + -24093, -24102, -24111, -24119, -24127, -24133, -24139, -24145, -24149, -24153, -24157, -24160, -24162, -24164, + -24166, -24167, -24168, -24169, -24170, -24171, -24171, -24172, -24173, -24174, -24175, -24176, -24178, -24179, + -24181, -24184, -24186, -24189, -24192, -24195, -24198, -24202, -24205, -24209, -24213, -24216, -24219, -24223, + -24226, -24228, -24231, -24233, -24234, -24235, -24236, -24236, -24235, -24233, -24230, -24227, -24222, -24217, + -24210, -24202, -24193, -24183, -24171, -24158, -24143, -24127, -24109, -24089, -24067, -24043, -24017, -23988, + -23957, -23923, -23886, -23847, -23804, -23758, -23708, -23655, -23584, -23509, -23427, -23336, -23234, -23119, + -22990, -22846, -22685, -22506, -22307, -22087, -21845, -21580, -21291, -20977, -20638, -20272, -19880, -19462, + -19018, -18549, -18054, -17536, -16995, -16432, -15849, -15248, -14630, -13997, -13353, -12698, -12036, -11369, + -10700, -10032, -9367, -8709, -8059, -7422, -6800, -6196, -5611, -5050, -4513, -4004, -3523, -3073, + -2655, -2269, -1917, -1598, -1312, -1059, -837, -646, -484, -350, -239, -127}; +#else +#define LowDelayShapes_n960_N240 NULL +#endif + +#ifdef SUBSET_SWB +RAM_ALIGN const Word16 LowDelayShapes_n960_N320[520] = { + -6, -12, -17, -23, -30, -39, -48, -60, -72, -86, -102, -119, -138, -159, + -182, -207, -234, -262, -293, -325, -359, -396, -434, -473, -515, -558, -603, -649, + -697, -746, -797, -848, -900, -954, -1008, -1062, -1118, -1173, -1229, -1285, -1340, -1396, + -1451, -1505, -1559, -1612, -1664, -1715, -1764, -1813, -1859, -1904, -1947, -1988, -2027, -2064, + -2098, -2130, -2159, -2186, -2210, -2230, -2248, -2263, -2275, -2283, -2289, -2290, -2289, -2283, + -2274, -2262, -2245, -2225, -2201, -2173, -2141, -2105, -2065, -2020, -1971, -1918, -1860, -1797, + -1730, -1658, -1582, -1500, -1414, -1322, -1225, -1122, -1014, -901, -782, -657, -526, -389, + -246, -97, 59, 221, 390, 565, 748, 937, 1133, 1336, 1547, 1764, 1989, 2221, + 2460, 2707, 2961, 3222, 3490, 3765, 4048, 4338, 4634, 4937, 5246, 5562, 5884, 6212, + 6546, 6885, 7229, 7578, 7932, 8289, 8650, 9014, 9382, 9751, 10123, 10496, 10870, 11244, + 11619, 11992, 12365, 12736, 13105, 13471, 13833, 14192, 14546, 14895, 15239, 15576, 15907, 16231, + 16547, 16856, 17155, 17446, 17727, 17999, 18261, 18512, 18753, 18983, 19202, 19409, 19605, 19790, + 19963, 20125, 20275, 20414, 20541, 20658, 20764, 20858, 20943, 21017, 21082, 21137, 21184, 21221, + 21251, 21273, 21287, 21295, 21297, 21293, 21285, 21271, 21254, 21233, 21209, 21182, 21154, 21124, + 21092, 21060, 21028, 20999, 20972, 20935, 20902, 20870, 20839, 20811, 20784, 20758, 20734, 20712, + 20691, 20671, 20653, 20635, 20619, 20604, 20590, 20577, 20565, 20554, 20543, 20534, 20525, 20517, + 20509, 20502, 20496, 20491, 20486, 20481, 20477, 20474, 20471, 20469, 20467, 20465, 20464, 20464, + 20463, 20463, 20463, 20464, 20465, 20466, 20467, 20468, 20470, 20472, 20474, 20476, 20478, 20480, + 20482, 20485, 20487, 20489, 20491, 20494, 20496, 20498, 20500, 20502, 20504, 20505, 20507, 20508, + 20510, 20511, 20512, 20513, 20514, 20515, 20516, 20516, 20517, 20517, 20518, 20518, 20519, 20519, + 20519, 20520, 20521, 20521, 20522, 20523, 20524, 20526, 20527, 20529, 20531, 20533, 20536, 20539, + 20542, 20546, 20549, 20554, 20558, 20563, 20568, 20573, 20579, 20586, 20592, 20599, 20606, 20613, + 20621, 20629, 20637, 20646, 20655, 20663, 20672, 20682, 20691, 20700, 20710, 20720, -20729, -20739, + -20748, -20758, -20767, -20776, -20785, -20794, -20803, -20812, -20820, -20828, -20836, -20843, -20851, -20857, + -20864, -20870, -20876, -20882, -20887, -20892, -20896, -20901, -20905, -20908, -20911, -20914, -20917, -20919, + -20921, -20923, -20925, -20926, -20927, -20928, -20929, -20930, -20931, -20931, -20932, -20932, -20933, -20933, + -20934, -20934, -20935, -20935, -20936, -20937, -20938, -20939, -20940, -20941, -20943, -20944, -20946, -20947, + -20949, -20951, -20953, -20955, -20958, -20960, -20962, -20964, -20967, -20969, -20971, -20974, -20976, -20978, + -20980, -20982, -20983, -20985, -20986, -20987, -20988, -20989, -20989, -20989, -20988, -20988, -20986, -20985, + -20983, -20980, -20978, -20974, -20970, -20966, -20961, -20955, -20949, -20942, -20934, -20926, -20917, -20907, + -20896, -20885, -20873, -20859, -20845, -20830, -20814, -20796, -20778, -20758, -20737, -20714, -20690, -20665, + -20638, -20610, -20580, -20548, -20515, -20480, -20433, -20384, -20333, -20279, -20220, -20155, -20085, -20008, + -19924, -19833, -19734, -19627, -19511, -19385, -19249, -19103, -18946, -18778, -18598, -18406, -18202, -17986, + -17757, -17515, -17260, -16993, -16713, -16421, -16116, -15799, -15470, -15129, -14778, -14415, -14043, -13661, + -13271, -12872, -12466, -12053, -11634, -11210, -10782, -10351, -9918, -9484, -9049, -8616, -8184, -7755, + -7330, -6910, -6496, -6090, -5691, -5301, -4922, -4553, -4196, -3852, -3521, -3204, -2902, -2615, + -2343, -2087, -1847, -1624, -1417, -1226, -1051, -892, -748, -619, -504, -404, -316, -241, + -175, -92}; +#else +#define LowDelayShapes_n960_N320 NULL +#endif + +#ifdef SUBSET_FB +RAM_ALIGN const Word16 LowDelayShapes_n960_N480[780] = { + -4, -8, -11, -13, -16, -20, -24, -28, -33, -38, -44, -50, -57, -64, + -72, -81, -90, -100, -110, -121, -133, -146, -159, -173, -187, -202, -218, -235, + -252, -270, -289, -308, -328, -349, -370, -392, -415, -438, -462, -486, -511, -537, + -563, -589, -616, -643, -671, -699, -728, -757, -786, -815, -845, -875, -905, -935, + -965, -996, -1026, -1056, -1087, -1117, -1147, -1177, -1207, -1236, -1266, -1295, -1323, -1352, + -1380, -1407, -1434, -1461, -1486, -1512, -1537, -1561, -1584, -1607, -1629, -1650, -1670, -1690, + -1709, -1726, -1743, -1759, -1774, -1788, -1801, -1813, -1824, -1834, -1842, -1850, -1856, -1861, + -1865, -1868, -1870, -1870, -1869, -1867, -1863, -1858, -1852, -1845, -1836, -1826, -1814, -1801, + -1786, -1770, -1753, -1734, -1713, -1691, -1668, -1643, -1616, -1588, -1558, -1527, -1494, -1459, + -1422, -1384, -1344, -1302, -1259, -1213, -1166, -1117, -1066, -1013, -959, -902, -843, -783, + -720, -655, -588, -519, -448, -374, -299, -221, -141, -58, 27, 114, 203, 295, + 389, 486, 585, 687, 791, 898, 1007, 1119, 1234, 1351, 1471, 1593, 1718, 1846, + 1976, 2109, 2244, 2382, 2523, 2667, 2813, 2961, 3113, 3266, 3423, 3582, 3743, 3907, + 4073, 4241, 4412, 4585, 4760, 4938, 5117, 5299, 5483, 5668, 5855, 6045, 6235, 6428, + 6622, 6817, 7013, 7211, 7410, 7610, 7811, 8012, 8215, 8417, 8621, 8824, 9028, 9232, + 9436, 9639, 9843, 10045, 10248, 10449, 10650, 10850, 11048, 11246, 11442, 11636, 11829, 12020, + 12209, 12396, 12581, 12763, 12944, 13121, 13296, 13468, 13638, 13804, 13967, 14127, 14284, 14437, + 14586, 14732, 14875, 15014, 15148, 15280, 15407, 15530, 15649, 15764, 15875, 15981, 16084, 16183, + 16277, 16367, 16453, 16535, 16612, 16686, 16755, 16821, 16882, 16940, 16993, 17043, 17089, 17131, + 17170, 17205, 17237, 17265, 17291, 17313, 17331, 17348, 17361, 17371, 17379, 17385, 17388, 17389, + 17388, 17385, 17380, 17374, 17366, 17356, 17345, 17333, 17320, 17306, 17292, 17276, 17260, 17243, + 17226, 17209, 17191, 17174, 17157, 17142, 17128, 17108, 17089, 17071, 17053, 17036, 17019, 17003, + 16988, 16973, 16959, 16946, 16933, 16920, 16908, 16897, 16886, 16875, 16865, 16856, 16846, 16838, + 16829, 16821, 16814, 16806, 16799, 16793, 16786, 16780, 16775, 16769, 16764, 16759, 16755, 16751, + 16747, 16743, 16739, 16736, 16733, 16730, 16727, 16725, 16722, 16720, 16718, 16717, 16715, 16714, + 16712, 16711, 16711, 16710, 16709, 16709, 16708, 16708, 16708, 16708, 16708, 16708, 16709, 16709, + 16710, 16710, 16711, 16712, 16713, 16714, 16715, 16716, 16717, 16718, 16719, 16720, 16721, 16722, + 16724, 16725, 16726, 16727, 16728, 16730, 16731, 16732, 16733, 16734, 16736, 16737, 16738, 16739, + 16740, 16741, 16742, 16743, 16744, 16744, 16745, 16746, 16747, 16747, 16748, 16748, 16749, 16750, + 16750, 16750, 16751, 16751, 16751, 16752, 16752, 16752, 16753, 16753, 16753, 16753, 16753, 16754, + 16754, 16754, 16755, 16755, 16755, 16756, 16756, 16757, 16757, 16758, 16759, 16759, 16760, 16761, + 16762, 16763, 16765, 16766, 16767, 16769, 16770, 16772, 16774, 16776, 16778, 16780, 16782, 16785, + 16787, 16790, 16793, 16796, 16799, 16802, 16805, 16809, 16812, 16816, 16820, 16824, 16828, 16832, + 16836, 16840, 16845, 16849, 16854, 16858, 16863, 16868, 16873, 16878, 16883, 16888, 16893, 16898, + 16903, 16908, 16914, 16919, -16924, -16929, -16934, -16940, -16945, -16950, -16955, -16960, -16965, -16970, + -16975, -16980, -16984, -16989, -16994, -16998, -17003, -17007, -17011, -17015, -17020, -17023, -17027, -17031, + -17035, -17038, -17041, -17045, -17048, -17051, -17053, -17056, -17059, -17061, -17064, -17066, -17068, -17070, + -17072, -17074, -17075, -17077, -17078, -17080, -17081, -17082, -17083, -17084, -17085, -17086, -17086, -17087, + -17088, -17088, -17089, -17089, -17089, -17090, -17090, -17090, -17091, -17091, -17091, -17091, -17092, -17092, + -17092, -17092, -17093, -17093, -17093, -17094, -17094, -17094, -17095, -17095, -17096, -17097, -17097, -17098, + -17099, -17099, -17100, -17101, -17102, -17103, -17104, -17105, -17106, -17107, -17108, -17109, -17110, -17111, + -17113, -17114, -17115, -17116, -17118, -17119, -17120, -17121, -17123, -17124, -17125, -17126, -17127, -17129, + -17130, -17131, -17132, -17133, -17133, -17134, -17135, -17136, -17136, -17137, -17137, -17137, -17137, -17137, + -17137, -17137, -17137, -17136, -17136, -17135, -17134, -17133, -17132, -17130, -17129, -17127, -17125, -17123, + -17120, -17118, -17115, -17112, -17109, -17105, -17102, -17098, -17094, -17089, -17085, -17080, -17075, -17069, + -17063, -17057, -17051, -17044, -17037, -17030, -17022, -17014, -17005, -16997, -16987, -16978, -16967, -16957, + -16946, -16934, -16922, -16910, -16897, -16883, -16869, -16855, -16840, -16824, -16808, -16791, -16773, -16755, + -16736, -16717, -16690, -16663, -16637, -16609, -16581, -16550, -16518, -16484, -16448, -16409, -16369, -16326, + -16280, -16232, -16181, -16127, -16070, -16010, -15947, -15880, -15810, -15736, -15658, -15577, -15491, -15402, + -15308, -15210, -15108, -15001, -14890, -14775, -14655, -14530, -14401, -14267, -14128, -13985, -13837, -13685, + -13528, -13367, -13201, -13030, -12855, -12676, -12493, -12306, -12114, -11919, -11720, -11517, -11311, -11102, + -10889, -10674, -10455, -10234, -10010, -9784, -9556, -9327, -9095, -8862, -8628, -8393, -8157, -7921, + -7684, -7448, -7211, -6976, -6741, -6507, -6274, -6042, -5813, -5585, -5360, -5137, -4917, -4700, + -4487, -4276, -4070, -3867, -3668, -3474, -3284, -3099, -2919, -2744, -2574, -2410, -2251, -2097, + -1949, -1807, -1671, -1540, -1415, -1297, -1184, -1077, -976, -881, -791, -707, -629, -556, + -489, -427, -369, -317, -269, -226, -188, -151, -114, -59}; +#else +#define LowDelayShapes_n960_N480 NULL +#endif + +#ifdef SUBSET_NB +RAM_ALIGN const Word16 LowDelayShapes_n960_N40_5ms[70] = { + 29, 112, 280, 563, 991, 1590, 2380, 3377, 4587, 6006, 7624, 9416, 11353, 13393, + 15490, 17595, 19657, 21624, 23450, 25092, 26519, 27707, 28645, 29332, 29783, 30021, 30083, 30008, + 29840, 29625, 29408, 29214, 29077, 28993, 28956, 28961, 29000, 29068, 29156, 29256, -29361, -29462, + -29551, -29620, -29661, -29666, -29628, -29542, -29403, -29209, -28923, -28521, -27962, -27210, -26234, -25014, + -23541, -21819, -19874, -17743, -15481, -13149, -10820, -8571, -6479, -4611, -3020, -1753, -842, -284}; +#else +#define LowDelayShapes_n960_N40_5ms NULL +#endif + +#ifdef SUBSET_WB +RAM_ALIGN const Word16 LowDelayShapes_n960_N80_5ms[140] = { + 13, 31, 60, 102, 161, 239, 339, 464, 615, 795, 1006, 1251, 1530, 1845, + 2198, 2588, 3015, 3481, 3983, 4520, 5092, 5697, 6331, 6992, 7677, 8382, 9104, 9838, + 10580, 11326, 12071, 12811, 13540, 14255, 14951, 15624, 16270, 16885, 17466, 18010, 18515, 18978, + 19399, 19775, 20106, 20393, 20636, 20836, 20995, 21115, 21199, 21250, 21271, 21266, 21239, 21194, + 21134, 21064, 20987, 20908, 20836, 20757, 20688, 20630, 20581, 20542, 20513, 20491, 20478, 20473, + 20475, 20483, 20497, 20517, 20541, 20568, 20600, 20633, 20669, 20706, -20743, -20780, -20816, -20850, + -20881, -20910, -20934, -20954, -20968, -20977, -20979, -20973, -20960, -20938, -20908, -20868, -20819, -20761, + -20692, -20613, -20508, -20389, -20248, -20080, -19883, -19653, -19387, -19083, -18738, -18351, -17920, -17444, + -16923, -16358, -15749, -15099, -14410, -13687, -12933, -12154, -11353, -10537, -9712, -8884, -8060, -7246, + -6450, -5679, -4938, -4235, -3574, -2959, -2397, -1889, -1441, -1055, -732, -474, -277, -138}; +#else +#define LowDelayShapes_n960_N80_5ms NULL +#endif + +#ifdef SUBSET_SSWB +RAM_ALIGN const Word16 LowDelayShapes_n960_N120_5ms[210] = { + 9, 17, 28, 44, 65, 91, 123, 161, 208, 262, 325, 398, 480, 572, + 676, 791, 918, 1057, 1209, 1374, 1552, 1744, 1950, 2169, 2402, 2648, 2908, 3181, + 3468, 3767, 4078, 4402, 4736, 5081, 5437, 5801, 6174, 6554, 6942, 7335, 7732, 8134, + 8538, 8943, 9349, 9755, 10159, 10560, 10957, 11349, 11735, 12114, 12485, 12846, 13198, 13539, + 13868, 14184, 14487, 14776, 15051, 15311, 15555, 15784, 15997, 16194, 16374, 16538, 16686, 16818, + 16935, 17036, 17123, 17195, 17254, 17299, 17333, 17355, 17366, 17368, 17361, 17347, 17325, 17297, + 17265, 17228, 17189, 17147, 17104, 17061, 17024, 16979, 16938, 16901, 16867, 16837, 16811, 16788, + 16768, 16752, 16739, 16729, 16722, 16718, 16716, 16717, 16720, 16726, 16734, 16743, 16755, 16768, + 16782, 16798, 16815, 16833, 16852, 16871, 16891, 16911, -16931, -16952, -16972, -16991, -17010, -17028, + -17045, -17061, -17076, -17090, -17101, -17111, -17119, -17125, -17128, -17129, -17127, -17123, -17116, -17106, + -17092, -17076, -17056, -17033, -17006, -16976, -16942, -16905, -16864, -16820, -16760, -16698, -16630, -16553, + -16467, -16370, -16263, -16144, -16013, -15868, -15710, -15537, -15349, -15146, -14927, -14693, -14442, -14175, + -13891, -13591, -13276, -12944, -12597, -12236, -11862, -11474, -11074, -10664, -10244, -9816, -9380, -8938, + -8492, -8043, -7592, -7141, -6692, -6247, -5807, -5374, -4949, -4534, -4131, -3741, -3365, -3005, + -2662, -2337, -2030, -1744, -1478, -1234, -1012, -814, -638, -486, -357, -250, -164, -95}; +#else +#define LowDelayShapes_n960_N120_5ms NULL +#endif + +#ifdef SUBSET_SWB +RAM_ALIGN const Word16 LowDelayShapes_n960_N160_5ms[280] = { + 13, 23, 36, 52, 73, 98, 128, 163, 205, 253, 308, 371, 441, 520, + 608, 705, 812, 929, 1056, 1195, 1344, 1505, 1678, 1863, 2060, 2270, 2493, 2729, + 2978, 3241, 3516, 3805, 4108, 4424, 4753, 5095, 5450, 5818, 6198, 6591, 6995, 7411, + 7839, 8277, 8725, 9184, 9651, 10128, 10612, 11104, 11603, 12108, 12618, 13133, 13653, 14175, + 14700, 15226, 15754, 16281, 16808, 17334, 17857, 18376, 18892, 19403, 19909, 20408, 20901, 21385, + 21861, 22328, 22784, 23231, 23666, 24089, 24500, 24898, 25283, 25654, 26011, 26354, 26681, 26994, + 27291, 27572, 27838, 28089, 28323, 28541, 28744, 28931, 29103, 29259, 29401, 29528, 29640, 29738, + 29823, 29895, 29955, 30002, 30038, 30063, 30078, 30083, 30080, 30068, 30049, 30023, 29991, 29953, + 29911, 29865, 29815, 29763, 29708, 29653, 29597, 29541, 29496, 29437, 29381, 29329, 29280, 29235, + 29194, 29156, 29122, 29091, 29064, 29039, 29018, 29000, 28986, 28974, 28964, 28958, 28954, 28953, + 28954, 28958, 28964, 28972, 28982, 28994, 29007, 29023, 29040, 29058, 29078, 29099, 29121, 29144, + 29168, 29192, 29218, 29243, 29269, 29295, -29322, -29348, -29374, -29400, -29425, -29450, -29474, -29498, + -29520, -29541, -29561, -29580, -29597, -29613, -29627, -29639, -29649, -29657, -29663, -29667, -29668, -29667, + -29663, -29657, -29647, -29635, -29620, -29602, -29580, -29556, -29528, -29496, -29462, -29424, -29382, -29337, + -29288, -29236, -29181, -29122, -29041, -28964, -28880, -28788, -28688, -28579, -28460, -28332, -28193, -28042, + -27879, -27705, -27517, -27315, -27100, -26871, -26627, -26369, -26095, -25806, -25501, -25180, -24844, -24492, + -24123, -23739, -23339, -22924, -22493, -22048, -21588, -21114, -20627, -20128, -19616, -19094, -18561, -18018, + -17467, -16907, -16341, -15769, -15192, -14611, -14028, -13442, -12857, -12272, -11689, -11109, -10533, -9963, + -9400, -8846, -8300, -7765, -7241, -6730, -6232, -5749, -5282, -4830, -4396, -3979, -3581, -3202, + -2843, -2505, -2188, -1893, -1620, -1369, -1141, -936, -753, -593, -454, -336, -237, -155}; +#else +#define LowDelayShapes_n960_N160_5ms NULL +#endif + +#ifdef SUBSET_FB +RAM_ALIGN const Word16 LowDelayShapes_n960_N240_5ms[420] = { + 10, 15, 21, 27, 36, 45, 56, 69, 83, 100, 118, 138, 161, 186, + 214, 244, 276, 312, 350, 392, 436, 484, 535, 590, 648, 710, 775, 845, + 918, 995, 1076, 1162, 1252, 1346, 1444, 1547, 1655, 1767, 1883, 2005, 2131, 2261, + 2397, 2537, 2683, 2833, 2988, 3148, 3312, 3482, 3656, 3835, 4019, 4208, 4401, 4599, + 4801, 5008, 5220, 5436, 5656, 5880, 6109, 6342, 6578, 6818, 7063, 7310, 7562, 7816, + 8074, 8335, 8598, 8865, 9134, 9405, 9679, 9955, 10233, 10513, 10794, 11076, 11360, 11645, + 11931, 12217, 12504, 12791, 13078, 13366, 13652, 13939, 14224, 14509, 14792, 15075, 15356, 15635, + 15912, 16187, 16460, 16731, 16999, 17264, 17526, 17785, 18041, 18293, 18542, 18787, 19028, 19264, + 19497, 19725, 19949, 20168, 20382, 20592, 20796, 20996, 21190, 21379, 21563, 21741, 21914, 22082, + 22243, 22399, 22550, 22695, 22834, 22967, 23095, 23216, 23332, 23443, 23548, 23647, 23740, 23828, + 23910, 23987, 24059, 24125, 24186, 24243, 24294, 24340, 24381, 24418, 24450, 24478, 24502, 24522, + 24537, 24549, 24557, 24562, 24563, 24561, 24556, 24549, 24538, 24525, 24510, 24492, 24473, 24451, + 24428, 24404, 24378, 24351, 24323, 24294, 24264, 24234, 24204, 24173, 24143, 24112, 24093, 24059, + 24027, 23997, 23968, 23940, 23914, 23889, 23865, 23842, 23821, 23801, 23783, 23765, 23749, 23734, + 23720, 23708, 23696, 23686, 23677, 23668, 23661, 23655, 23650, 23647, 23644, 23641, 23640, 23640, + 23641, 23642, 23645, 23648, 23652, 23657, 23662, 23668, 23675, 23682, 23691, 23699, 23708, 23718, + 23728, 23739, 23750, 23762, 23774, 23786, 23799, 23812, 23825, 23839, 23853, 23866, 23881, 23895, + 23909, 23923, -23938, -23952, -23966, -23980, -23994, -24008, -24022, -24036, -24049, -24062, -24075, -24088, + -24100, -24112, -24123, -24134, -24144, -24154, -24164, -24173, -24181, -24189, -24195, -24202, -24207, -24212, + -24216, -24219, -24222, -24223, -24224, -24224, -24223, -24221, -24218, -24214, -24208, -24202, -24195, -24187, + -24177, -24167, -24155, -24142, -24128, -24113, -24097, -24079, -24060, -24040, -24019, -23996, -23972, -23947, + -23921, -23893, -23864, -23834, -23802, -23769, -23721, -23681, -23638, -23592, -23543, -23492, -23438, -23380, + -23319, -23255, -23186, -23115, -23039, -22959, -22875, -22786, -22693, -22596, -22494, -22387, -22275, -22157, + -22035, -21908, -21775, -21637, -21494, -21345, -21190, -21030, -20864, -20692, -20515, -20332, -20143, -19948, + -19748, -19541, -19329, -19112, -18888, -18659, -18425, -18185, -17940, -17690, -17434, -17174, -16909, -16639, + -16365, -16087, -15804, -15518, -15228, -14934, -14637, -14337, -14034, -13728, -13420, -13109, -12797, -12483, + -12167, -11851, -11533, -11215, -10896, -10577, -10258, -9940, -9623, -9307, -8992, -8678, -8367, -8058, + -7752, -7448, -7148, -6851, -6557, -6268, -5983, -5702, -5426, -5156, -4890, -4630, -4375, -4126, + -3884, -3647, -3417, -3194, -2977, -2767, -2565, -2369, -2181, -2001, -1829, -1664, -1507, -1358, + -1218, -1085, -961, -846, -738, -639, -547, -464, -388, -320, -259, -206, -159, -124}; +#else +#define LowDelayShapes_n960_N240_5ms NULL +#endif + +#ifdef SUBSET_NB +RAM_ALIGN const Word16 LowDelayShapes_n960_N40_2_5ms[40] = { + 140, 566, 1277, 2319, 3704, 5404, 7357, 9466, 11616, 13686, 15563, 17163, 18436, 19375, + 20007, 20391, 20594, 20685, 20717, 20724, -20724, -20717, -20685, -20594, -20391, -20007, -19375, -18436, + -17163, -15563, -13686, -11616, -9466, -7357, -5404, -3704, -2319, -1277, -566, -140}; +#else +#define LowDelayShapes_n960_N40_2_5ms NULL +#endif + +#ifdef SUBSET_WB +RAM_ALIGN const Word16 LowDelayShapes_n960_N80_2_5ms[80] = { + 140, 353, 653, 1049, 1553, 2171, 2909, 3768, 4747, 5842, 7043, 8341, 9721, 11165, + 12655, 14170, 15688, 17188, 18649, 20051, 21376, 22610, 23739, 24756, 25656, 26436, 27099, 27650, + 28097, 28450, 28721, 28922, 29065, 29164, 29228, 29267, 29290, 29301, 29306, 29308, -29308, -29306, + -29301, -29290, -29267, -29228, -29164, -29065, -28922, -28721, -28450, -28097, -27650, -27099, -26436, -25656, + -24756, -23739, -22610, -21376, -20051, -18649, -17188, -15688, -14170, -12655, -11165, -9721, -8341, -7043, + -5842, -4747, -3768, -2909, -2171, -1553, -1049, -653, -353, -140}; +#else +#define LowDelayShapes_n960_N80_2_5ms NULL +#endif + +#ifdef SUBSET_SSWB +RAM_ALIGN const Word16 LowDelayShapes_n960_N120_2_5ms[120] = { + 93, 196, 328, 491, 689, 924, 1199, 1514, 1873, 2274, 2720, 3209, 3742, 4318, + 4934, 5588, 6277, 7000, 7750, 8526, 9321, 10132, 10953, 11780, 12606, 13427, 14237, 15032, + 15807, 16557, 17278, 17967, 18620, 19234, 19809, 20341, 20830, 21276, 21680, 22040, 22360, 22641, + 22884, 23092, 23269, 23416, 23538, 23636, 23714, 23775, 23822, 23857, 23882, 23900, 23913, 23920, + 23925, 23928, 23930, 23930, -23930, -23930, -23928, -23925, -23920, -23913, -23900, -23882, -23857, -23822, + -23775, -23714, -23636, -23538, -23416, -23269, -23092, -22884, -22641, -22360, -22040, -21680, -21276, -20830, + -20341, -19809, -19234, -18620, -17967, -17278, -16557, -15807, -15032, -14237, -13427, -12606, -11780, -10953, + -10132, -9321, -8526, -7750, -7000, -6277, -5588, -4934, -4318, -3742, -3209, -2720, -2274, -1873, + -1514, -1199, -924, -689, -491, -328, -196, -93}; +#else +#define LowDelayShapes_n960_N120_2_5ms NULL +#endif + +#ifdef SUBSET_SWB +RAM_ALIGN const Word16 LowDelayShapes_n960_N160_2_5ms[160] = { + 70, 134, 210, 301, 407, 530, 671, 830, 1008, 1206, 1425, 1665, 1926, 2208, + 2512, 2837, 3183, 3550, 3937, 4343, 4768, 5211, 5670, 6143, 6631, 7131, 7642, 8161, + 8688, 9219, 9755, 10292, 10828, 11363, 11893, 12417, 12933, 13440, 13936, 14418, 14887, 15339, + 15775, 16193, 16593, 16972, 17332, 17670, 17988, 18285, 18561, 18816, 19050, 19264, 19459, 19635, + 19793, 19934, 20059, 20168, 20264, 20347, 20418, 20478, 20529, 20572, 20606, 20635, 20657, 20675, + 20689, 20700, 20708, 20713, 20718, 20720, 20722, 20723, 20724, 20724, -20724, -20724, -20723, -20722, + -20720, -20718, -20713, -20708, -20700, -20689, -20675, -20657, -20635, -20606, -20572, -20529, -20478, -20418, + -20347, -20264, -20168, -20059, -19934, -19793, -19635, -19459, -19264, -19050, -18816, -18561, -18285, -17988, + -17670, -17332, -16972, -16593, -16193, -15775, -15339, -14887, -14418, -13936, -13440, -12933, -12417, -11893, + -11363, -10828, -10292, -9755, -9219, -8688, -8161, -7642, -7131, -6631, -6143, -5670, -5211, -4768, + -4343, -3937, -3550, -3183, -2837, -2512, -2208, -1926, -1665, -1425, -1206, -1008, -830, -671, + -530, -407, -301, -210, -134, -70}; +#else +#define LowDelayShapes_n960_N160_2_5ms NULL +#endif + +#ifdef SUBSET_FB +RAM_ALIGN const Word16 LowDelayShapes_n960_N240_2_5ms[240] = { + 47, 81, 118, 160, 207, 259, 317, 381, 452, 528, 611, 701, 799, 903, + 1015, 1134, 1260, 1395, 1537, 1686, 1844, 2009, 2183, 2363, 2552, 2748, 2951, 3162, + 3380, 3604, 3836, 4073, 4317, 4567, 4822, 5083, 5348, 5618, 5892, 6170, 6451, 6735, + 7022, 7311, 7601, 7892, 8185, 8477, 8769, 9060, 9350, 9639, 9926, 10209, 10491, 10768, + 11042, 11312, 11577, 11837, 12092, 12341, 12585, 12822, 13053, 13277, 13494, 13705, 13908, 14103, + 14291, 14472, 14645, 14810, 14968, 15118, 15261, 15396, 15523, 15643, 15756, 15862, 15961, 16054, + 16140, 16220, 16293, 16361, 16424, 16481, 16533, 16580, 16623, 16662, 16697, 16728, 16755, 16780, + 16802, 16821, 16837, 16851, 16864, 16874, 16883, 16891, 16897, 16902, 16907, 16910, 16913, 16915, + 16917, 16918, 16919, 16920, 16921, 16921, 16921, 16921, -16921, -16921, -16921, -16921, -16920, -16919, + -16918, -16917, -16915, -16913, -16910, -16907, -16902, -16897, -16891, -16883, -16874, -16864, -16851, -16837, + -16821, -16802, -16780, -16755, -16728, -16697, -16662, -16623, -16580, -16533, -16481, -16424, -16361, -16293, + -16220, -16140, -16054, -15961, -15862, -15756, -15643, -15523, -15396, -15261, -15118, -14968, -14810, -14645, + -14472, -14291, -14103, -13908, -13705, -13494, -13277, -13053, -12822, -12585, -12341, -12092, -11837, -11577, + -11312, -11042, -10768, -10491, -10209, -9926, -9639, -9350, -9060, -8769, -8477, -8185, -7892, -7601, + -7311, -7022, -6735, -6451, -6170, -5892, -5618, -5348, -5083, -4822, -4567, -4317, -4073, -3836, + -3604, -3380, -3162, -2951, -2748, -2552, -2363, -2183, -2009, -1844, -1686, -1537, -1395, -1260, + -1134, -1015, -903, -799, -701, -611, -528, -452, -381, -317, -259, -207, -160, -118, + -81, -47}; +#else +#define LowDelayShapes_n960_N240_2_5ms NULL +#endif + + +#ifdef SUBSET_NB +RAM_ALIGN const Word32 lag_win_8k[16] = {0x7fdba30b, 0x7f6eca1a, 0x7eba2e4e, 0x7dbf01e8, 0x7c7eecec, 0x7afc0879, + 0x7938d8eb, 0x773846e0, 0x74fd973a, 0x728c623e, 0x6fe889ee, 0x6d162fc8, + 0x6a19aa0b, 0x66f778a7, 0x63b43a09, 0x60549fe1}; +#else +#define lag_win_8k NULL +#endif + +#ifdef SUBSET_WB +RAM_ALIGN const Word32 lag_win_16k[16] = {0x7ff6e7cb, 0x7fdba30b, 0x7fae3d5f, 0x7f6eca1a, 0x7f1d643a, 0x7eba2e4e, + 0x7e455264, 0x7dbf01e8, 0x7d277581, 0x7c7eecec, 0x7bc5aecb, 0x7afc0879, + 0x7a224dcf, 0x7938d8eb, 0x784009f7, 0x773846e0}; +#else +#define lag_win_16k NULL +#endif + +#ifdef SUBSET_SSWB +RAM_ALIGN const Word32 lag_win_24k[16] = {0x7ffbf529, 0x7fefd569, 0x7fdba30b, 0x7fbf61e2, 0x7f9b1748, 0x7f6eca1a, + 0x7f3a82b8, 0x7efe4b00, 0x7eba2e4e, 0x7e6e3976, 0x7e1a7ac1, 0x7dbf01e8, + 0x7d5be00f, 0x7cf127c2, 0x7c7eecec, 0x7c0544d0}; +#else +#define lag_win_24k NULL +#endif + +#ifdef SUBSET_SWB +RAM_ALIGN const Word32 lag_win_32k[16] = {0x7ffdb9e3, 0x7ff6e7cb, 0x7feb8a70, 0x7fdba30b, 0x7fc7334b, 0x7fae3d5f, + 0x7f90c3ed, 0x7f6eca1a, 0x7f485382, 0x7f1d643a, 0x7eee00d1, 0x7eba2e4e, + 0x7e81f22e, 0x7e455264, 0x7e045558, 0x7dbf01e8}; +#else +#define lag_win_32k NULL +#endif + +#ifdef SUBSET_FB +RAM_ALIGN const Word32 lag_win_48k[16] = {0x7ffefd47, 0x7ffbf529, 0x7ff6e7cb, 0x7fefd569, 0x7fe6be59, 0x7fdba30b, + 0x7fce8403, 0x7fbf61e2, 0x7fae3d5f, 0x7f9b1748, 0x7f85f087, 0x7f6eca1a, + 0x7f55a51b, 0x7f3a82b8, 0x7f1d643a, 0x7efe4b00}; +#else +#define lag_win_48k NULL +#endif + +# ifdef ENABLE_HR_MODE +RAM_ALIGN const Word32 lag_win_96k[16] = {0x7fffbf52, 0x7ffefd47, 0x7ffdb9e3, 0x7ffbf529, 0x7ff9af1f, 0x7ff6e7cb, + 0x7ff39f35, 0x7fefd569, 0x7feb8a70, 0x7fe6be59, 0x7fe17132, 0x7fdba30b, + 0x7fd553f5, 0x7fce8403, 0x7fc7334b, 0x7fbf61e2}; +# else +# define lag_win_96k NULL +# endif + +RAM_ALIGN const Word32 *const lag_win[NUM_SAMP_FREQ] = {lag_win_8k, lag_win_16k, lag_win_24k, lag_win_32k, lag_win_48k, lag_win_96k}; + +RAM_ALIGN const Word16 sqrt_table_phecu[49] = {/* used by Sqrt_l */ + 16384, 16888, 17378, 17854, 18318, 18770, 19212, 19644, 20066, 20480, + 20886, 21283, 21674, 22058, 22435, 22806, 23170, 23530, 23884, 24232, + 24576, 24915, 25249, 25580, 25905, 26227, 26545, 26859, 27170, 27477, + 27780, 28081, 28378, 28672, 28963, 29251, 29537, 29819, 30099, 30377, + 30652, 30924, 31194, 31462, 31727, 31991, 32252, 32511, 32767}; + +/* First frequency bin in each subband now adjusted to include last bin * + * which was missed with the previous definition * + * 250 750 1250 2250 4250 8250 12250 16250 20250 ( 24250 ) * + * note that bins over 20000 are zeroed and not used */ +/* [- FB ----------------------------) (Currently limited to 20kHz) + * [- SWB -----------------------) + * [- sWB -------------------) + * [- WB ----------------) + * [- NB -----------) + */ + +RAM_ALIGN const Word16 gw_len_inv_shift_fx[MAX_LGW] = {/* Q0 */ + 1 - 1 /*/1/2*/, 1 - 1, 2 - 1 /*1/4*/, + 3 - 1 /*1/8*/, 4 - 1 /*1/16*/, 4 - 1, + 4 - 1, 4 - 1, 4 - 1}; +RAM_ALIGN const Word16 gwlpr_fx[MAX_LGW + 1] = { + 1, + 3 * QUOT_LPR_LTR, + 5 * QUOT_LPR_LTR, + 9 * QUOT_LPR_LTR, + 17 * QUOT_LPR_LTR, + 33 * QUOT_LPR_LTR, + 49 * QUOT_LPR_LTR, + 65 * QUOT_LPR_LTR, + 81 * QUOT_LPR_LTR, + 97 * QUOT_LPR_LTR}; /* frequency group start bins for transient analysis */ + +#ifdef CR8_A_PLC_FADEOUT_TUNING + /* puretone_ana compressed ATH bandborder weights */ +RAM_ALIGN const Word16 scATHFx[MAX_LGW - 2] = { 14924 , 30499 , 31886 , 32767 , 29770 , 25417 , 16384 }; + /* 0.455444335937500 0.930755615234375 0.973083496093750 0.999969482421875 0.908508300781250 0.775665283203125 0.5*/ +#endif + +RAM_ALIGN const Word16 e_tot_headroom[5] = {3, 3, 4, 4, 4}; /* smallest head room to use for each fs */ + + + +RAM_ALIGN const Word16 xfp_wE_MDCT2FFTQ11[5] = {4077, 8283, 12489, 16698, + 25109}; /* Q11 Mantissa of scale to use for each fs */ + +RAM_ALIGN const Word16 POW_ATT_TABLE0[OFF_FRAMES_LIMIT + 1] = { + 32767, 31293, 29885, 28540, 27255, 26029, 24857, 23738, 22670, 21650, 20675, 19745, 18856, 18007, 17197, 16423, + 8211, 4106, 2053, 1026, 513, 257, 128, 64, 32, 16, 8, 4, 2, 1, 0}; +RAM_ALIGN const Word16 POW_ATT_TABLE1[OFF_FRAMES_LIMIT + 1] = { + 32767, 31656, 30581, 29543, 28540, 27571, 26635, 25731, 24857, 24013, 23198, 22410, 21650, 20915, 20205, 19519, + 9759, 4880, 2440, 1220, 610, 305, 152, 76, 38, 19, 10, 5, 2, 1, 0}; + +#ifdef PLC2_FADEOUT_IN_MS +#if PLC2_FADEOUT_IN_MS == 0 +#ifndef CR8_A_PLC_FADEOUT_TUNING +/*/ default setting only requieres two tables */ +RAM_ALIGN const Word16 *const POW_ATT_TABLES[1 + 2] = { + NULL, + POW_ATT_TABLE1 /*1 0.3dB steps */, + POW_ATT_TABLE0 /*2 0.4 dB steps*/, +}; +#endif + +#else /* PLC2_FADEOUT_IN_MS == 0 */ + +#ifdef CR8_A_PLC_FADEOUT_TUNING +RAM_ALIGN const Word16 POW_ATT_TABLE_p3x9_14_7[OFF_FRAMES_LIMIT + 1] = { + 32767, + 31656, 30581, 29543, 28540, 27571, 26635, 25731, 24857, 24013, /* 9 times .3dB steps , 14 6 dB steps, 7 muted steps */ + 12007, 6003, 3002, 1501, 750, 375, 188, 94, 47, 23, 12, 6, 3, 1, + 0, 0, 0, 0, 0, 0, 0 }; + +RAM_ALIGN const Word16 POW_ATT_TABLE_p4x9_14_7[OFF_FRAMES_LIMIT + 1] = +{ 32767, + 31293, 29885, 28540, 27255, 26029, 24857, 23738, 22670, 21650, /* 9 times .4dB steps , 14 6 dB steps, 7 muted steps */ + 10825, 5413, 2706, 1353, 677, 338, 169, 85, 42, 21, 11, 5, 3, 1, + 0, 0,0,0,0,0,0 }; +#endif + +RAM_ALIGN const Word16 POW_ATT_TABLE_p3x8_6[OFF_FRAMES_LIMIT + 1] = { + 32767, 31656, 30581, 29543, 28540, 27571, 26635, 25731, 12865, 6433, 3216, 1608, 804, 402, 201, 101, + 50, 25, 13, 6, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0}; +RAM_ALIGN const Word16 POW_ATT_TABLE_p4x8_6[OFF_FRAMES_LIMIT + 1] = { + 32767, 31293, 29885, 28540, 27255, 26029, 24857, 23738, 11869, 5935, 2967, 1484, 742, 371, 185, 93, + 46, 23, 12, 6, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}; + +RAM_ALIGN const Word16 POW_ATT_TABLE_p3x4_6[OFF_FRAMES_LIMIT + 1] = { + 32767, 31656, 30581, 29543, 14772, 7386, 3693, 1847, 923, 462, 231, 115, 58, 29, 14, 7, + 4, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +RAM_ALIGN const Word16 POW_ATT_TABLE_p4x4_6[OFF_FRAMES_LIMIT + 1] = { + 32767, 31293, 29885, 28540, 14270, 7135, 3568, 1784, 892, 446, 223, 111, 56, 28, 14, 7, + 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +RAM_ALIGN const Word16 POW_ATT_TABLE_p3x2_6[OFF_FRAMES_LIMIT + 1] = { + 32767, 31656, 15828, 7914, 3957, 1979, 989, 495, 247, 124, 62, 31, 15, 8, 4, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +RAM_ALIGN const Word16 POW_ATT_TABLE_p4x2_6[OFF_FRAMES_LIMIT + 1] = { + 32767, 31293, 15647, 7823, 3912, 1956, 978, 489, 244, 122, 61, 31, 15, 8, 4, 2, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +RAM_ALIGN const Word16 POW_ATT_TABLE_p3x1_6[OFF_FRAMES_LIMIT + 1] = { + 32767, 16384, 8192, 4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +RAM_ALIGN const Word16 POW_ATT_TABLE_p4x1_6[OFF_FRAMES_LIMIT + 1] = { + 32767, 16384, 8192, 4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +#ifdef CR8_A_PLC_FADEOUT_TUNING +/* POW_ATT_TABLES now ordered logically based on initial slow muting phase time */ +/* POW_ATT_TABLES[ind] is used after teh initial gain==1.0 no energy muting phase */ +RAM_ALIGN const Word16 *const POW_ATT_TABLES[1 + 24 / 2] = +{ NULL, +/*0.3dB col , 0.4dB col */ +/* 1*/POW_ATT_TABLE_p3x1_6, POW_ATT_TABLE_p4x1_6, /* 0 0.3dB, 16 6dB, 14mute */ /* 0.4dB version */ /* old short mute tabs */ +/* 3*/POW_ATT_TABLE_p3x2_6, POW_ATT_TABLE_p4x2_6, /* 1 0.3dB, 15 6dB ,14mute */ /* 0.4dB version */ +/* 5*/POW_ATT_TABLE_p3x4_6, POW_ATT_TABLE_p4x4_6, /* 3 0.3dB, 15 6dB , 12 mute */ /* 0.4dB version */ +/* 7*/POW_ATT_TABLE_p3x8_6, POW_ATT_TABLE_p4x8_6, /* 7 0.3dB, 15 6dB , 8 mute */ /* 0.4dB version */ +/* 9*/POW_ATT_TABLE_p3x9_14_7, POW_ATT_TABLE_p4x9_14_7, /* 9 0.3dB, 14 6dB , 7 mute */ /* 0.4dB version */ /* opt 120 ms */ +/*11*/POW_ATT_TABLE1, POW_ATT_TABLE0, /* 15 0.3dB, 14 6dB , 1 mute */ /* 0.4dB version */ /* 3GPP original/default curves */ +}; + +/* PLC_FADEOUT_TUNING, extended table nominal muting phases from 30 ms to 140 ms */ +RAM_ALIGN const Word16 fade_scheme_tab_fx[24 / 2][3] = { +/* burst_att_thresh indicates when muting POW_ATT_TABLE[att_per_frame_idx] should be used first time it is 1.0 though */ +/* burst_att_thresh ==2 --> gains [ 1.0, 32767/32768.0(first table value used) , first muted, .... ]*/ +/* burst_att_thresh ==5 --> gains [ 1.0, 1.0, 1,0 1,0, 32767/32768.0(first table value used) , first muted,... ]*/ +/* beta_mute_thr ==4 --> start of final attenuation attenuate AvgMix */ + +/* tabled {att_per_frame_idx_p3dB , burst_att_thresh, beta_mute_thr } */ +{ 1, 2, 0 + 2 + 2 }, /* 30 ms, 0.3 dB delta att in slow mutephase nominal_fadeout=0 */ +{ 1, 3, 0 + 3 + 2 }, /* 40 ms, 0.3 dB delta att in slow mutephase */ +{ 3, 3, 1 + 3 + 1 }, /* 50 ms, 0.3 dB delta att in slow mutephase */ +{ 3, 4, 1 + 4 + 1}, /* 60 ms, 0.3 dB delta att in slow mutephase */ +{ 5, 4, 3 + 4 + 1 }, /* 70 ms, 0.3 dB delta att in slow mutephase */ +{ 5, 5, 3 + 5 + 1 }, /* 80 ms, 0.3 dB delta att in slow mutephase */ +{ 7, 5, 7 + 5 }, /* 90 ms, 0.3 dB delta att in slow mutephase */ +{ 7, 5, 7 + 5 + 1}, /* 100 ms, 0.3 dB delta att in slow mutephase */ +{ 9, 5, 9 + 5 }, /* 110 ms, 0.3 dB delta att in slow mutephase */ +{ 9, 5, 9 + 5 + 1}, /* 120 ms, 0.3 dB delta att in slow mutephase nominal_fadeout=1 */ +{ 11, 5, 15 + 5 },/* 130 ms, 0.3 dB delta att in slow mutephase */ +{ 11, 6, 15 + 6 },/* 140 ms, 0.3 dB delta att in slow mutephase nominal 3GPP */ +}; +/*fade_scheme_tab_fx[ind][0] att_per _fram_index , "points" to first column in POW_ATT TABLES */ +/*fade_scheme_tab_fx[ind][1] is burst_att_thresh, the number of non_muted 1.0 gain frames */ +/*fade_scheme_tab_fx[ind][2] is beta_mute_thr, the location of the start of final attenuation */ + +#else +RAM_ALIGN const Word16 *const POW_ATT_TABLES[1 + 10] = { + NULL, + POW_ATT_TABLE1, + POW_ATT_TABLE0, + /* .3dB x16,16 6dB steps */ /* .4dB x16, 16 6dB steps */ /*original/default */ + POW_ATT_TABLE_p3x8_6, + POW_ATT_TABLE_p4x8_6, + /* .3dB x8, 24 6dB steps */ /* .4dB x8, 24 6dB steps */ + POW_ATT_TABLE_p3x4_6, + POW_ATT_TABLE_p4x4_6, + /* .3dB x4, 28 6dB steps */ /* .4dB x4, 28 6dB steps */ + POW_ATT_TABLE_p3x2_6, + POW_ATT_TABLE_p4x2_6, + /* .3dB x2, 30 6dB steps */ /* .4dB x2, 30 6dB steps */ + POW_ATT_TABLE_p3x1_6, + POW_ATT_TABLE_p4x1_6 /* .3dB x1, 30 6dB steps */ /* .4dB x1, 30 6dB steps */ +}; +#endif + +#endif /* PLC2_FADEOUT_IN_MS == 0 */ + +#else /* PLC2_FADEOUT_IN_MS */ +RAM_ALIGN const Word16 *const POW_ATT_TABLES[1 + 2] = { + NULL, + POW_ATT_TABLE1 /*1 .3dB steps */, + POW_ATT_TABLE0 /*2 .4 dB steps*/, +}; +#endif /* PLC2_FADEOUT_IN_MS */ + +RAM_ALIGN const Word16 sin_quarterQ15_fx[256 + 1] = { + 0, 201, 402, 603, 804, 1005, 1206, 1407, 1608, 1809, 2009, 2210, 2411, 2611, 2811, 3012, + 3212, 3412, 3612, 3812, 4011, 4211, 4410, 4609, 4808, 5007, 5205, 5404, 5602, 5800, 5998, 6195, + 6393, 6590, 6787, 6983, 7180, 7376, 7571, 7767, 7962, 8157, 8351, 8546, 8740, 8933, 9127, 9319, + 9512, 9704, 9896, 10088, 10279, 10469, 10660, 10850, 11039, 11228, 11417, 11605, 11793, 11980, 12167, 12354, + 12540, 12725, 12910, 13095, 13279, 13463, 13646, 13828, 14010, 14192, 14373, 14553, 14733, 14912, 15091, 15269, + 15447, 15624, 15800, 15976, 16151, 16326, 16500, 16673, 16846, 17018, 17190, 17361, 17531, 17700, 17869, 18037, + 18205, 18372, 18538, 18703, 18868, 19032, 19195, 19358, 19520, 19681, 19841, 20001, 20160, 20318, 20475, 20632, + 20788, 20943, 21097, 21251, 21403, 21555, 21706, 21856, 22006, 22154, 22302, 22449, 22595, 22740, 22884, 23028, + 23170, 23312, 23453, 23593, 23732, 23870, 24008, 24144, 24279, 24414, 24548, 24680, 24812, 24943, 25073, 25202, + 25330, 25457, 25583, 25708, 25833, 25956, 26078, 26199, 26320, 26439, 26557, 26674, 26791, 26906, 27020, 27133, + 27246, 27357, 27467, 27576, 27684, 27791, 27897, 28002, 28106, 28209, 28311, 28411, 28511, 28610, 28707, 28803, + 28899, 28993, 29086, 29178, 29269, 29359, 29448, 29535, 29622, 29707, 29792, 29875, 29957, 30038, 30118, 30196, + 30274, 30350, 30425, 30499, 30572, 30644, 30715, 30784, 30853, 30920, 30986, 31050, 31114, 31177, 31238, 31298, + 31357, 31415, 31471, 31527, 31581, 31634, 31686, 31737, 31786, 31834, 31881, 31927, 31972, 32015, 32058, 32099, + 32138, 32177, 32214, 32251, 32286, 32319, 32352, 32383, 32413, 32442, 32470, 32496, 32522, 32546, 32568, 32590, + 32610, 32629, 32647, 32664, 32679, 32693, 32706, 32718, 32729, 32738, 32746, 32753, 32758, 32762, 32766, 32767, + 32767}; + +/* 16 ms tables for PHECU fft windowing and post ifft preTda MDCT windowing (window 11) */ +/* 3+3ms tapering for the hamming parts */ +/* temporary ROM solution */ +/* alternatively use values from a single 48 kHz table */ + +/* 3ms rising tapering part @48 kHZ */ +/* only quarter sine hamming part is actually used by the C-function windowing_fx */ +/* OPT: store only one table at 48 or 96 kHz */ +/* OPT2: for this to work one must switch to 'periodic' instead of used 'symetric' windows, * + * the different windows are just sub-sampled windows of a 96kHz window */ + +#ifdef SUBSET_NB +RAM_ALIGN const Word16 PhECU_whr16ms_NB_Q15[Lprot_hamm_len2_8k] = {/* From matlab */ + 2621, 2750, 3135, 3769, 4641, 5736, + 7036, 8519, 10158, 11926, 13793, 15727, + 17695, 19662, 21596, 23463, 25231, 26871, + 28353, 29653, 30749, 31621, 32254, 32639}; +#else +#define PhECU_whr16ms_NB_Q15 NULL +#endif +#ifdef SUBSET_WB +RAM_ALIGN const Word16 PhECU_whr16ms_WB_Q15[Lprot_hamm_len2_16k] = {/* From matlab */ + 2621, 2654, 2750, 2911, 3135, 3421, 3769, + 4176, 4641, 5162, 5736, 6362, 7036, 7756, + 8519, 9320, 10158, 11028, 11926, 12850, 13793, + 14754, 15727, 16709, 17695, 18681, 19662, 20635, + 21596, 22540, 23463, 24361, 25231, 26069, 26871, + 27633, 28353, 29027, 29653, 30228, 30749, 31214, + 31621, 31968, 32254, 32478, 32639, 32736}; +#else +#define PhECU_whr16ms_WB_Q15 NULL +#endif +#ifdef SUBSET_SSWB +RAM_ALIGN const Word16 PhECU_whr16ms_ssWB_Q15[Lprot_hamm_len2_24k] = + {/* From matlab */ + 2621, 2636, 2679, 2750, 2850, 2979, 3135, 3319, 3530, 3769, 4034, 4325, 4641, 4982, 5347, + 5736, 6148, 6582, 7036, 7511, 8006, 8519, 9049, 9596, 10158, 10735, 11324, 11926, 12539, 13162, + 13793, 14432, 15077, 15727, 16381, 17037, 17695, 18352, 19008, 19662, 20312, 20957, 21596, 22227, 22850, + 23463, 24065, 24655, 25231, 25794, 26340, 26871, 27384, 27878, 28353, 28808, 29242, 29653, 30042, 30407, + 30749, 31065, 31356, 31621, 31859, 32070, 32254, 32411, 32539, 32639, 32711, 32754}; +#else +#define PhECU_whr16ms_sWB_Q15 NULL +#endif +#ifdef SUBSET_SWB +RAM_ALIGN const Word16 PhECU_whr16ms_SWB_Q15[Lprot_hamm_len2_32k] = + {/* From matlab */ + 2621, 2630, 2654, 2694, 2750, 2823, 2911, 3015, 3135, 3270, 3421, 3588, 3769, 3965, 4176, 4401, + 4641, 4894, 5162, 5442, 5736, 6043, 6362, 6693, 7036, 7391, 7756, 8132, 8519, 8915, 9320, 9735, + 10158, 10589, 11028, 11474, 11926, 12385, 12850, 13319, 13793, 14272, 14754, 15239, 15727, 16217, 16709, 17202, + 17695, 18188, 18681, 19172, 19662, 20150, 20635, 21118, 21596, 22070, 22540, 23004, 23463, 23916, 24361, 24800, + 25231, 25654, 26069, 26475, 26871, 27257, 27633, 27999, 28353, 28696, 29027, 29347, 29653, 29947, 30228, 30495, + 30749, 30988, 31214, 31424, 31621, 31802, 31968, 32119, 32254, 32374, 32478, 32567, 32639, 32695, 32736, 32760}; +#else +#define PhECU_whr16ms_SWB_Q15 NULL +#endif +#ifdef SUBSET_FB +RAM_ALIGN const Word16 PhECU_whr16ms_FB_Q15[Lprot_hamm_len2_48k] = + {/* From matlab */ + 2621, 2625, 2636, 2654, 2679, 2711, 2750, 2797, 2850, 2911, 2979, 3053, 3135, 3224, 3319, 3421, + 3530, 3646, 3769, 3898, 4034, 4176, 4325, 4480, 4641, 4808, 4982, 5162, 5347, 5539, 5736, 5939, + 6148, 6362, 6582, 6806, 7036, 7271, 7511, 7756, 8006, 8260, 8519, 8782, 9049, 9320, 9596, 9875, + 10158, 10445, 10735, 11028, 11324, 11624, 11926, 12232, 12539, 12850, 13162, 13477, 13793, 14112, 14432, 14754, + 15077, 15402, 15727, 16054, 16381, 16709, 17037, 17366, 17695, 18024, 18352, 18681, 19008, 19336, 19662, 19988, + 20312, 20635, 20957, 21277, 21596, 21913, 22227, 22540, 22850, 23158, 23463, 23765, 24065, 24361, 24655, 24945, + 25231, 25514, 25794, 26069, 26340, 26608, 26871, 27129, 27384, 27633, 27878, 28118, 28353, 28583, 28808, 29027, + 29242, 29450, 29653, 29850, 30042, 30228, 30407, 30581, 30749, 30910, 31065, 31214, 31356, 31491, 31621, 31743, + 31859, 31968, 32070, 32166, 32254, 32336, 32411, 32478, 32539, 32593, 32639, 32678, 32711, 32736, 32754, 32764}; +#else +#define PhECU_whr16ms_FB_Q15 NULL +#endif + +/* initial 2ms for preTda is the LD-MDCT analysis window times the centered inverse whr window */ +#ifdef SUBSET_NB +RAM_ALIGN const Word16 PhECU_preTdaFx16ms_128_pre_Q14[16] = {-12, -34, -74, -135, -219, -327, -459, -610, + -776, -949, -1125, -1295, -1451, -1587, -1696, -1771}; +#else +#define PhECU_preTdaFx16ms_128_pre_Q14 NULL +#endif +#ifdef SUBSET_WB +RAM_ALIGN const Word16 PhECU_preTdaFx16ms_256_pre_Q14[32] = { + -8, -16, -27, -42, -63, -87, -117, -154, -196, -244, -299, -358, -424, -495, -570, -650, + -733, -818, -906, -993, -1082, -1168, -1253, -1336, -1414, -1488, -1556, -1617, -1671, -1718, -1755, -1784}; +#else +#define PhECU_preTdaFx16ms_256_pre_Q14 NULL +#endif +#ifdef SUBSET_SSWB +RAM_ALIGN const Word16 PhECU_preTdaFx16ms_384_pre_Q14[48] = { + -6, -12, -18, -25, -34, -45, -59, -74, -92, -112, -135, -160, -188, -219, -253, -289, + -328, -369, -413, -459, -507, -557, -610, -663, -719, -775, -833, -891, -950, -1008, -1067, -1125, + -1183, -1239, -1295, -1349, -1401, -1451, -1499, -1545, -1587, -1627, -1663, -1696, -1725, -1750, -1771, -1788}; +#else +#define PhECU_preTdaFx16ms_384_pre_Q14 NULL +#endif +#ifdef SUBSET_SWB +RAM_ALIGN const Word16 PhECU_preTdaFx16ms_512_pre_Q14[64] = { + -5, -9, -13, -18, -24, -31, -38, -47, -57, -68, -81, -94, -109, -126, -144, -164, + -185, -207, -232, -257, -284, -313, -343, -374, -407, -441, -477, -513, -551, -590, -630, -670, + -712, -754, -797, -840, -884, -927, -972, -1016, -1059, -1104, -1147, -1190, -1232, -1274, -1316, -1356, + -1395, -1433, -1470, -1505, -1539, -1572, -1602, -1632, -1659, -1684, -1707, -1728, -1747, -1763, -1777, -1789}; +#else +#define PhECU_preTdaFx16ms_512_pre_Q14 NULL +#endif +#ifdef SUBSET_FB +RAM_ALIGN const Word16 PhECU_preTdaFx16ms_768_pre_Q14[96] = { + -4, -8, -11, -13, -15, -19, -23, -27, -32, -37, -43, -48, -55, -62, -70, -78, + -87, -97, -107, -117, -129, -141, -154, -168, -181, -196, -211, -228, -244, -261, -280, -298, + -318, -338, -358, -380, -402, -424, -447, -471, -495, -520, -545, -570, -596, -623, -650, -677, + -705, -733, -761, -789, -818, -847, -876, -905, -934, -964, -993, -1022, -1052, -1082, -1111, -1140, + -1169, -1197, -1226, -1254, -1281, -1309, -1336, -1362, -1388, -1415, -1439, -1464, -1488, -1511, -1534, -1556, + -1577, -1598, -1617, -1636, -1655, -1671, -1688, -1703, -1718, -1731, -1744, -1755, -1766, -1776, -1784, -1791}; +#else +#define PhECU_preTdaFx16ms_768_pre_Q14 NULL +#endif + +/* ROM OPT compute it runtime based on MDCT win and tabled inverse hamming sections */ +/* 16 ms tables for PHECU fft windowing and post ifft preTda MDCT windowing */ +/* OPT2 can be reduced to 14.25 ms, due to 1.75 ms trailing zeroes */ +#ifdef SUBSET_NB +RAM_ALIGN const Word16 PhECU_preTdaFx16ms_NB_Q14[128] = { + -22591, -21465, -18295, -14331, -10544, -7321, -4690, -2561, -811, 662, 1942, 3090, 4148, 5146, 6107, 7043, + 7961, 8868, 9761, 10640, 11502, 12345, 13164, 13959, 14731, 15423, 15970, 16374, 16642, 16789, 16837, 16810, + 16735, 16637, 16537, 16441, 16366, 16307, 16263, 16230, 16206, 16190, 16181, 16177, 16178, 16182, 16188, 16196, + 16203, 16209, 16214, 16218, 16219, 16221, 16222, 16226, 16230, 16238, 16251, 16267, 16287, 16312, 16339, 16369, + 16399, 16429, 16456, 16481, 16502, 16518, 16531, 16539, 16544, 16547, 16548, 16550, 16552, 16556, 16561, 16567, + 16575, 16582, 16588, 16592, 16593, 16589, 16580, 16564, 16540, 16506, 16461, 16402, 16327, 16232, 16095, 15907, + 15641, 15272, 14775, 14130, 13325, 12361, 11251, 10017, 8694, 7354, 6057, 4825, 3684, 2665, 1795, 1095, + 575, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +#else +#define PhECU_preTdaFx16ms_NB_Q14 NULL +#endif +#ifdef SUBSET_WB +RAM_ALIGN const Word16 PhECU_preTdaFx16ms_WB_Q14[256] = { + -22528, -22351, -21532, -20186, -18475, -16565, -14596, -12673, -10858, -9181, -7654, -6277, -5037, -3923, -2914, + -2001, -1169, -405, 303, 961, 1580, 2166, 2725, 3263, 3781, 4285, 4778, 5262, 5739, 6211, + 6677, 7140, 7601, 8059, 8514, 8968, 9419, 9868, 10314, 10756, 11195, 11630, 12060, 12486, 12907, + 13322, 13733, 14137, 14537, 14917, 15263, 15573, 15847, 16085, 16286, 16454, 16587, 16689, 16763, 16810, + 16833, 16836, 16822, 16795, 16757, 16712, 16663, 16612, 16565, 16511, 16464, 16421, 16383, 16350, 16321, + 16295, 16272, 16253, 16237, 16223, 16211, 16201, 16194, 16187, 16183, 16180, 16178, 16177, 16178, 16179, + 16181, 16184, 16187, 16190, 16194, 16198, 16201, 16204, 16208, 16210, 16213, 16215, 16217, 16218, 16219, + 16220, 16221, 16222, 16222, 16223, 16225, 16227, 16229, 16232, 16236, 16241, 16247, 16255, 16262, 16272, + 16282, 16293, 16305, 16319, 16332, 16347, 16361, 16376, 16391, 16407, 16422, 16436, 16450, 16463, 16475, + 16487, 16497, 16506, 16514, 16522, 16528, 16533, 16537, 16541, 16543, 16545, 16546, 16547, 16548, 16549, + 16550, 16550, 16551, 16553, 16555, 16557, 16560, 16563, 16566, 16569, 16573, 16577, 16580, 16584, 16587, + 16589, 16592, 16593, 16593, 16593, 16591, 16588, 16583, 16577, 16569, 16559, 16547, 16532, 16516, 16496, + 16474, 16448, 16418, 16385, 16347, 16305, 16258, 16205, 16134, 16054, 15960, 15849, 15716, 15560, 15376, + 15161, 14913, 14628, 14306, 13944, 13541, 13098, 12616, 12097, 11540, 10952, 10335, 9692, 9030, 8362, + 7699, 7045, 6400, 5769, 5155, 4560, 3990, 3448, 2936, 2460, 2022, 1625, 1272, 963, 700, + 481, 306, 161, 0, 0, 0, 0, 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 +#define PhECU_preTdaFx16ms_WB_Q14 NULL +#endif +#ifdef SUBSET_SSWB +RAM_ALIGN const Word16 PhECU_preTdaFx16ms_ssWB_Q14[384] = { + -22499, -22471, -22152, -21551, -20715, -19688, -18527, -17277, -15982, -14679, -13393, -12145, -10954, -9826, + -8760, -7763, -6831, -5958, -5149, -4394, -3688, -3029, -2410, -1831, -1285, -769, -279, 186, + 630, 1055, 1462, 1856, 2236, 2606, 2966, 3317, 3662, 3999, 4330, 4658, 4981, 5301, + 5618, 5933, 6246, 6556, 6866, 7175, 7481, 7788, 8093, 8398, 8702, 9004, 9306, 9606, + 9906, 10205, 10502, 10798, 11092, 11385, 11676, 11965, 12252, 12537, 12820, 13101, 13379, 13655, + 13929, 14200, 14470, 14732, 14977, 15208, 15422, 15622, 15804, 15970, 16121, 16256, 16374, 16478, + 16567, 16643, 16703, 16753, 16789, 16815, 16830, 16837, 16835, 16825, 16810, 16789, 16764, 16735, + 16704, 16671, 16637, 16604, 16575, 16538, 16503, 16471, 16441, 16414, 16389, 16366, 16345, 16325, + 16307, 16291, 16276, 16263, 16250, 16239, 16230, 16221, 16213, 16206, 16200, 16195, 16190, 16187, + 16184, 16181, 16180, 16178, 16178, 16178, 16178, 16178, 16180, 16181, 16182, 16185, 16187, 16189, + 16191, 16193, 16195, 16198, 16200, 16202, 16205, 16207, 16208, 16211, 16213, 16214, 16215, 16217, + 16217, 16218, 16219, 16219, 16220, 16221, 16221, 16221, 16222, 16223, 16224, 16224, 16226, 16227, + 16228, 16230, 16233, 16236, 16239, 16242, 16246, 16251, 16256, 16261, 16267, 16274, 16280, 16288, + 16295, 16304, 16312, 16321, 16330, 16339, 16349, 16359, 16369, 16379, 16389, 16399, 16409, 16419, + 16429, 16439, 16447, 16456, 16465, 16473, 16481, 16489, 16495, 16502, 16508, 16513, 16519, 16523, + 16527, 16531, 16534, 16536, 16539, 16541, 16543, 16544, 16545, 16546, 16547, 16547, 16548, 16549, + 16549, 16549, 16550, 16551, 16551, 16552, 16554, 16554, 16556, 16558, 16559, 16561, 16563, 16565, + 16567, 16570, 16572, 16575, 16578, 16580, 16582, 16584, 16586, 16588, 16590, 16591, 16592, 16593, + 16593, 16593, 16593, 16591, 16589, 16587, 16584, 16580, 16575, 16570, 16564, 16557, 16549, 16540, + 16530, 16519, 16506, 16493, 16478, 16461, 16443, 16423, 16402, 16379, 16354, 16327, 16297, 16266, + 16232, 16195, 16147, 16096, 16039, 15977, 15907, 15828, 15740, 15642, 15531, 15409, 15273, 15122, + 14956, 14775, 14577, 14362, 14130, 13879, 13611, 13325, 13021, 12700, 12361, 12006, 11636, 11250, + 10851, 10440, 10016, 9583, 9142, 8698, 8255, 7815, 7377, 6944, 6515, 6092, 5675, 5266, + 4865, 4475, 4094, 3726, 3370, 3029, 2703, 2393, 2101, 1826, 1571, 1334, 1117, 921, + 744, 588, 451, 335, 235, 128, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 +#define PhECU_preTdaFx16ms_sWB_Q14 NULL +#endif +#ifdef SUBSET_SWB +RAM_ALIGN const Word16 PhECU_preTdaFx16ms_SWB_Q14[512] = { + -22482, -22492, -22345, -22020, -21560, -20952, -20236, -19434, -18551, -17624, -16665, -15691, -14716, -13753, + -12810, -11889, -11002, -10152, -9335, -8553, -7813, -7108, -6442, -5806, -5206, -4634, -4091, -3574, + -3084, -2618, -2173, -1748, -1341, -952, -578, -219, 128, 462, 786, 1099, 1405, 1701, + 1989, 2271, 2548, 2818, 3084, 3345, 3601, 3856, 4106, 4354, 4598, 4840, 5082, 5322, + 5559, 5795, 6029, 6263, 6496, 6729, 6961, 7192, 7422, 7652, 7882, 8111, 8339, 8567, + 8795, 9022, 9249, 9475, 9701, 9926, 10151, 10374, 10597, 10819, 11041, 11261, 11481, 11699, + 11917, 12133, 12349, 12563, 12776, 12988, 13198, 13408, 13616, 13823, 14028, 14233, 14437, 14635, + 14826, 15007, 15181, 15344, 15499, 15645, 15782, 15910, 16029, 16139, 16239, 16332, 16415, 16490, + 16557, 16615, 16667, 16710, 16747, 16777, 16800, 16818, 16829, 16835, 16837, 16834, 16827, 16816, + 16803, 16786, 16767, 16746, 16724, 16700, 16675, 16649, 16624, 16601, 16580, 16551, 16524, 16499, + 16475, 16453, 16431, 16411, 16392, 16374, 16358, 16342, 16328, 16313, 16301, 16289, 16278, 16268, + 16258, 16249, 16241, 16234, 16226, 16220, 16214, 16208, 16204, 16200, 16196, 16192, 16188, 16186, + 16184, 16182, 16181, 16179, 16178, 16178, 16177, 16177, 16177, 16178, 16179, 16180, 16181, 16181, + 16183, 16185, 16186, 16188, 16189, 16191, 16192, 16195, 16196, 16198, 16200, 16202, 16204, 16205, + 16207, 16208, 16210, 16211, 16212, 16213, 16215, 16215, 16216, 16217, 16218, 16219, 16219, 16219, + 16220, 16220, 16221, 16221, 16222, 16222, 16222, 16222, 16223, 16223, 16224, 16225, 16226, 16227, + 16228, 16230, 16231, 16233, 16235, 16238, 16240, 16243, 16245, 16249, 16253, 16256, 16260, 16264, + 16269, 16275, 16279, 16285, 16290, 16296, 16302, 16309, 16315, 16322, 16329, 16336, 16343, 16351, + 16358, 16365, 16373, 16381, 16388, 16396, 16403, 16411, 16418, 16425, 16432, 16439, 16446, 16453, + 16460, 16466, 16472, 16478, 16484, 16489, 16494, 16499, 16504, 16509, 16513, 16517, 16520, 16524, + 16527, 16529, 16532, 16534, 16536, 16538, 16540, 16541, 16543, 16543, 16544, 16545, 16546, 16547, + 16547, 16547, 16548, 16548, 16549, 16549, 16550, 16550, 16551, 16551, 16551, 16552, 16553, 16554, + 16555, 16555, 16557, 16558, 16559, 16560, 16562, 16563, 16565, 16566, 16569, 16570, 16572, 16573, + 16576, 16577, 16579, 16581, 16583, 16585, 16586, 16588, 16589, 16590, 16591, 16592, 16592, 16593, + 16593, 16593, 16592, 16592, 16591, 16590, 16589, 16586, 16585, 16581, 16578, 16575, 16571, 16566, + 16562, 16556, 16550, 16543, 16536, 16528, 16520, 16511, 16502, 16490, 16479, 16468, 16455, 16441, + 16426, 16411, 16394, 16376, 16357, 16337, 16316, 16294, 16270, 16245, 16219, 16191, 16154, 16115, + 16075, 16032, 15985, 15934, 15879, 15818, 15751, 15679, 15601, 15517, 15425, 15325, 15218, 15102, + 14978, 14845, 14703, 14551, 14390, 14219, 14038, 13847, 13645, 13434, 13213, 12982, 12741, 12490, + 12230, 11961, 11683, 11396, 11102, 10800, 10492, 10176, 9855, 9529, 9197, 8864, 8532, 8201, + 7872, 7544, 7218, 6894, 6573, 6255, 5940, 5629, 5322, 5020, 4723, 4432, 4147, 3868, + 3596, 3332, 3076, 2828, 2590, 2361, 2141, 1931, 1732, 1543, 1366, 1200, 1044, 901, + 768, 647, 536, 438, 349, 271, 201, 108, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 +#define PhECU_preTdaFx16ms_SWB_Q14 NULL +#endif +#ifdef SUBSET_FB +RAM_ALIGN const Word16 PhECU_preTdaFx16ms_FB_Q14[768] = { + -22463, -22493, -22449, -22334, -22148, -21885, -21560, -21179, -20737, -20250, -19726, -19171, -18581, -17972, + -17340, -16701, -16050, -15401, -14757, -14114, -13474, -12848, -12237, -11637, -11048, -10478, -9922, -9386, + -8864, -8357, -7865, -7393, -6936, -6493, -6069, -5654, -5258, -4874, -4503, -4144, -3801, -3465, + -3140, -2829, -2524, -2230, -1944, -1667, -1399, -1136, -884, -636, -395, -158, 72, 296, + 514, 728, 938, 1144, 1346, 1545, 1739, 1931, 2119, 2305, 2489, 2670, 2849, 3025, + 3199, 3373, 3543, 3713, 3879, 4046, 4211, 4376, 4539, 4700, 4862, 5022, 5182, 5341, + 5499, 5657, 5814, 5970, 6126, 6282, 6437, 6592, 6746, 6901, 7056, 7209, 7362, 7517, + 7669, 7823, 7976, 8129, 8281, 8433, 8585, 8738, 8890, 9040, 9193, 9343, 9495, 9645, + 9796, 9946, 10096, 10245, 10395, 10543, 10693, 10841, 10989, 11137, 11284, 11431, 11578, 11723, + 11869, 12014, 12159, 12303, 12446, 12589, 12733, 12874, 13016, 13157, 13298, 13438, 13577, 13716, + 13855, 13992, 14129, 14266, 14403, 14537, 14667, 14795, 14918, 15037, 15152, 15263, 15371, 15474, + 15573, 15669, 15760, 15847, 15931, 16010, 16084, 16156, 16223, 16287, 16346, 16402, 16453, 16502, + 16546, 16587, 16625, 16659, 16690, 16717, 16742, 16763, 16781, 16797, 16810, 16819, 16827, 16833, + 16836, 16837, 16836, 16833, 16828, 16822, 16815, 16805, 16794, 16783, 16770, 16756, 16743, 16727, + 16712, 16695, 16679, 16663, 16645, 16629, 16612, 16598, 16584, 16565, 16546, 16529, 16511, 16495, + 16479, 16463, 16449, 16434, 16420, 16408, 16395, 16383, 16371, 16360, 16350, 16339, 16329, 16321, + 16311, 16303, 16295, 16287, 16280, 16272, 16266, 16260, 16253, 16247, 16242, 16237, 16232, 16227, + 16223, 16219, 16215, 16211, 16207, 16205, 16202, 16199, 16196, 16194, 16191, 16189, 16187, 16186, + 16184, 16183, 16181, 16180, 16180, 16179, 16178, 16178, 16177, 16177, 16177, 16177, 16177, 16177, + 16178, 16178, 16179, 16179, 16180, 16181, 16182, 16183, 16184, 16185, 16186, 16187, 16188, 16189, + 16190, 16191, 16193, 16194, 16195, 16196, 16197, 16199, 16200, 16201, 16202, 16203, 16205, 16206, + 16206, 16207, 16208, 16209, 16210, 16211, 16212, 16212, 16213, 16214, 16215, 16215, 16216, 16216, + 16217, 16218, 16218, 16218, 16219, 16219, 16219, 16220, 16220, 16220, 16221, 16221, 16221, 16221, + 16221, 16222, 16222, 16222, 16223, 16223, 16223, 16224, 16224, 16225, 16225, 16226, 16227, 16227, + 16228, 16229, 16230, 16231, 16233, 16234, 16235, 16237, 16237, 16239, 16241, 16243, 16245, 16247, + 16249, 16252, 16254, 16257, 16260, 16263, 16266, 16268, 16271, 16275, 16278, 16282, 16286, 16290, + 16294, 16298, 16301, 16305, 16310, 16314, 16319, 16323, 16328, 16332, 16337, 16342, 16347, 16352, + 16357, 16361, 16366, 16371, 16377, 16382, 16387, 16391, 16396, 16402, 16407, 16412, 16417, 16421, + 16426, 16431, 16436, 16441, 16445, 16450, 16454, 16458, 16463, 16467, 16471, 16475, 16480, 16482, + 16486, 16490, 16494, 16497, 16500, 16504, 16507, 16510, 16511, 16514, 16517, 16519, 16522, 16524, + 16526, 16528, 16530, 16532, 16533, 16535, 16536, 16538, 16539, 16540, 16541, 16542, 16542, 16543, + 16543, 16544, 16545, 16545, 16546, 16546, 16546, 16547, 16547, 16547, 16548, 16548, 16548, 16548, + 16549, 16549, 16549, 16549, 16550, 16550, 16550, 16551, 16551, 16551, 16552, 16552, 16553, 16554, + 16554, 16555, 16556, 16556, 16557, 16558, 16559, 16560, 16561, 16562, 16563, 16564, 16565, 16566, + 16567, 16568, 16570, 16571, 16572, 16572, 16574, 16575, 16576, 16577, 16579, 16580, 16581, 16582, + 16583, 16585, 16586, 16587, 16588, 16589, 16589, 16590, 16591, 16592, 16592, 16593, 16593, 16593, + 16593, 16593, 16593, 16593, 16593, 16592, 16592, 16591, 16590, 16589, 16588, 16586, 16585, 16583, + 16581, 16579, 16576, 16574, 16572, 16569, 16566, 16562, 16559, 16555, 16551, 16546, 16542, 16538, + 16533, 16527, 16521, 16515, 16510, 16503, 16496, 16489, 16481, 16474, 16465, 16457, 16448, 16439, + 16428, 16419, 16408, 16396, 16385, 16373, 16360, 16347, 16333, 16320, 16305, 16290, 16274, 16258, + 16240, 16223, 16205, 16186, 16160, 16134, 16109, 16082, 16054, 16024, 15993, 15961, 15926, 15888, + 15849, 15808, 15763, 15717, 15667, 15615, 15560, 15502, 15441, 15376, 15308, 15236, 15161, 15082, + 14999, 14913, 14822, 14727, 14628, 14525, 14417, 14306, 14190, 14069, 13944, 13814, 13679, 13541, + 13398, 13250, 13098, 12943, 12782, 12616, 12447, 12273, 12096, 11915, 11729, 11541, 11348, 11151, + 10952, 10749, 10543, 10335, 10123, 9909, 9692, 9473, 9253, 9032, 8810, 8589, 8369, 8149, + 7929, 7711, 7492, 7276, 7059, 6845, 6631, 6418, 6207, 5997, 5789, 5582, 5378, 5175, + 4975, 4777, 4583, 4389, 4200, 4012, 3827, 3646, 3468, 3294, 3123, 2956, 2793, 2634, + 2479, 2328, 2181, 2039, 1902, 1768, 1639, 1517, 1398, 1284, 1176, 1072, 973, 879, + 791, 707, 629, 556, 486, 423, 364, 310, 261, 213, 163, 85, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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 +#define PhECU_preTdaFx16ms_FB_Q14 NULL +#endif + +RAM_ALIGN const Word16 *const PhECU_wins[5][3] = { + /* 3ms hamm(left part) , 16ms(center IWHR(periodic)*MDCT-anaQ14) , 2ms(initial MDCT-ana in Q14) */ + /*8 kHz*/ {PhECU_whr16ms_NB_Q15, PhECU_preTdaFx16ms_NB_Q14, PhECU_preTdaFx16ms_128_pre_Q14}, + /*16 kHz*/ {PhECU_whr16ms_WB_Q15, PhECU_preTdaFx16ms_WB_Q14, PhECU_preTdaFx16ms_256_pre_Q14}, + /*24 kHz*/ {PhECU_whr16ms_ssWB_Q15, PhECU_preTdaFx16ms_ssWB_Q14, PhECU_preTdaFx16ms_384_pre_Q14}, + /*32 kHz*/ {PhECU_whr16ms_SWB_Q15, PhECU_preTdaFx16ms_SWB_Q14, PhECU_preTdaFx16ms_512_pre_Q14}, + /*48 kHz*/ {PhECU_whr16ms_FB_Q15, PhECU_preTdaFx16ms_FB_Q14, PhECU_preTdaFx16ms_768_pre_Q14}}; + +/* x=(0:(5*8-1))*(2*pi)/32; y=sin(x);y_int=max(-32768,min(32767,round(y*32768))), y_int/32768 */ +/* 1.25 *2*pi table for low complex and low angle resolution rand_phase_fx */ +RAM_ALIGN const Word16 sincos_lowres_tab_sinQ15_fx[40] = { + 0, 6393, 12540, 18205, 23170, 27246, 30274, 32138, 32767, 32138, 30274, 27246, 23170, 18205, + 12540, 6393, 0, -6393, -12540, -18205, -23170, -27246, -30274, -32138, -32768, -32138, -30274, -27246, + -23170, -18205, -12540, -6393, 0, 6393, 12540, 18205, 23170, 27246, 30274, 32138}; + +/* (PHECU_LA_48K == 0) */ + +#ifdef SUBSET_NB +RAM_ALIGN const Word16 w_new_fs_8_LA_0[OLA_LEN_8K] = {0, 411, 1623, 3574, 6169, 9275, 12738, + 16384, 20030, 23493, 26599, 29194, 31145, 32357}; + + +RAM_ALIGN const Word16 w_old_fs_8_LA_0[OLA_LEN_8K] = { + + /* ( 32768-fliplr(w_new_fs_8_LA_0) ) *[whr3ms(0:13)*/ + 2621, 2721, 3001, 3401, 3836, 4205, 4411, 4377, 4063, 3475, 2673, 1766, 901, 253}; +#else +#define w_new_fs_8_LA_0 NULL +#define w_old_fs_8_LA_0 NULL +#endif /* SUBSET_NB */ + +#ifdef SUBSET_WB +RAM_ALIGN const Word16 w_new_fs_16_LA_0[OLA_LEN_16K] = { + 0, 103, 411, 919, 1623, 2511, 3574, 4799, 6169, 7667, 9275, 10973, 12738, 14550, + 16384, 18218, 20030, 21795, 23493, 25101, 26599, 27969, 29194, 30257, 31145, 31849, 32357, 32665}; + +RAM_ALIGN const Word16 w_old_fs_16_LA_0[OLA_LEN_16K] = {2621, 2646, 2719, 2835, 2990, 3175, 3379, 3592, 3801, 3994, + 4158, 4282, 4355, 4369, 4317, 4196, 4005, 3746, 3425, 3050, + 2635, 2192, 1740, 1299, 889, 531, 250, 66}; +#else +#define w_new_fs_16_LA_0 NULL +#define w_old_fs_16_LA_0 NULL +#endif /* SUBSET_WB */ + +#ifdef SUBSET_SSWB +RAM_ALIGN const Word16 w_new_fs_24_LA_0[OLA_LEN_24K] = { + 0, 46, 183, 411, 728, 1133, 1623, 2195, 2847, 3574, 4374, 5240, 6169, 7155, + 8192, 9275, 10398, 11555, 12738, 13942, 15160, 16384, 17608, 18826, 20030, 21213, 22370, 23493, + 24576, 25613, 26599, 27528, 28394, 29194, 29921, 30573, 31145, 31635, 32040, 32357, 32585, 32722}; + +RAM_ALIGN const Word16 w_old_fs_24_LA_0[OLA_LEN_24K] = { + 2621, 2632, 2665, 2718, 2790, 2881, 2987, 3106, 3235, 3372, 3512, 3653, 3790, 3919, + 4038, 4143, 4229, 4295, 4337, 4353, 4340, 4298, 4225, 4121, 3986, 3821, 3628, 3408, + 3165, 2902, 2622, 2330, 2032, 1732, 1437, 1152, 884, 640, 426, 249, 114, 30}; +#else +#define w_new_fs_24_LA_0 NULL +#define w_old_fs_24_LA_0 NULL +#endif /* SUBSET_SSWB */ + +#ifdef SUBSET_SWB +RAM_ALIGN const Word16 w_new_fs_32_LA_0[OLA_LEN_32K] = { + 0, 26, 103, 231, 411, 640, 919, 1247, 1623, 2044, 2511, 3022, 3574, 4167, + 4799, 5467, 6169, 6903, 7667, 8459, 9275, 10114, 10973, 11848, 12738, 13640, 14550, 15465, + 16384, 17303, 18218, 19128, 20030, 20920, 21795, 22654, 23493, 24309, 25101, 25865, 26599, 27301, + 27969, 28601, 29194, 29746, 30257, 30724, 31145, 31521, 31849, 32128, 32357, 32537, 32665, 32742}; + +RAM_ALIGN const Word16 w_old_fs_32_LA_0[OLA_LEN_32K] = { + 2621, 2628, 2646, 2676, 2717, 2770, 2832, 2904, 2985, 3073, 3167, 3266, 3368, 3473, 3578, 3682, 3784, 3882, 3974, + 4059, 4135, 4202, 4257, 4299, 4328, 4342, 4340, 4323, 4288, 4236, 4167, 4081, 3977, 3856, 3719, 3567, 3400, 3220, + 3028, 2826, 2615, 2398, 2176, 1952, 1728, 1506, 1290, 1081, 882, 697, 528, 377, 248, 143, 65, 17}; +#else +#define w_new_fs_32_LA_0 NULL +#define w_old_fs_32_LA_0 NULL +#endif /* SUBSET_SWB */ + +#ifdef SUBSET_FB +RAM_ALIGN const Word16 w_new_fs_48_LA_0[OLA_LEN_48K] = { + 0, 11, 46, 103, 183, 286, 411, 558, 728, 919, 1133, 1367, 1623, 1899, + 2195, 2511, 2847, 3201, 3574, 3965, 4374, 4799, 5240, 5697, 6169, 6655, 7155, 7667, + 8192, 8728, 9275, 9832, 10398, 10973, 11555, 12144, 12738, 13338, 13942, 14550, 15160, 15771, + 16384, 16997, 17608, 18218, 18826, 19430, 20030, 20624, 21213, 21795, 22370, 22936, 23493, 24040, + 24576, 25101, 25613, 26113, 26599, 27071, 27528, 27969, 28394, 28803, 29194, 29567, 29921, 30257, + 30573, 30869, 31145, 31401, 31635, 31849, 32040, 32210, 32357, 32482, 32585, 32665, 32722, 32757}; + +RAM_ALIGN const Word16 w_old_fs_48_LA_0[OLA_LEN_48K] = { + 2621, 2624, 2632, 2646, 2664, 2688, 2717, 2750, 2789, 2831, 2878, 2929, 2983, 3041, 3101, 3164, 3229, + 3296, 3365, 3434, 3504, 3573, 3643, 3711, 3778, 3844, 3907, 3967, 4024, 4078, 4128, 4173, 4213, 4248, + 4278, 4301, 4319, 4330, 4334, 4331, 4321, 4303, 4278, 4246, 4206, 4158, 4102, 4038, 3967, 3889, 3803, + 3710, 3611, 3505, 3392, 3274, 3150, 3021, 2888, 2750, 2609, 2465, 2319, 2171, 2022, 1873, 1724, 1576, + 1430, 1287, 1147, 1011, 880, 755, 637, 527, 424, 331, 248, 175, 114, 65, 29, 7}; +#else +#define w_new_fs_48_LA_0 NULL +#define w_old_fs_48_LA_0 NULL +#endif /* SUBSET_FB */ + +RAM_ALIGN const Word16 *const w_new[5] = {w_new_fs_8_LA_0, w_new_fs_16_LA_0, w_new_fs_24_LA_0, w_new_fs_32_LA_0, + w_new_fs_48_LA_0}; +RAM_ALIGN const Word16 *const w_old[5] = {w_old_fs_8_LA_0, w_old_fs_16_LA_0, w_old_fs_24_LA_0, w_old_fs_32_LA_0, + w_old_fs_48_LA_0}; + +RAM_ALIGN const Word16 COPY_LEN[5] = {COPY_LEN_8K, COPY_LEN_16K, COPY_LEN_24K, COPY_LEN_32K, COPY_LEN_48K}; /* 2ms */ +RAM_ALIGN const Word16 OLA_LEN[5] = {OLA_LEN_8K, OLA_LEN_16K, OLA_LEN_24K, OLA_LEN_32K, OLA_LEN_48K}; /*1.75 ms mix */ + +RAM_ALIGN const Word16 num_FsByResQ0[5] = {LPROT8K, LPROT16K, LPROT24K, LPROT32K, LPROT48K}; +RAM_ALIGN const Word16 *const LprotSzPtr = num_FsByResQ0; +RAM_ALIGN const Word16 InvLprot_Q22[5] = {INV_LPROT8K_Q22, INV_LPROT16K_Q22, INV_LPROT24K_Q22, INV_LPROT32K_Q22, + INV_LPROT48K_Q22}; +RAM_ALIGN const Word16 PhEcuFftScale[5] = {0, 0, 8, 0, 4}; + +RAM_ALIGN const Word16 oneOverFrameQ15Tab[5] = {INV_L_FRAME8K_Q15, INV_L_FRAME16K_Q15, INV_L_FRAME24K_Q15, + INV_L_FRAME32K_Q15, INV_L_FRAME48K_Q15}; + + +RAM_ALIGN const Word16 PhEcu_Xsav_Flt2FxDnShift[5] = {6, 7, 7, 8, 8}; /* TOTAL FFT adjutmenst shift */ +RAM_ALIGN const Word16 PhEcu_Xsav_Flt2FxScaleQ15[5] = {32767, 32767, 21845, 32767, + 21845}; /* fractional fft adjustment 1./ fft_fs_scale */ + +RAM_ALIGN const Word16 PhEcu_frac_thr_rise_lin_Q15[MAX_LGW] = {3277, 3277, 3277, 3277, 3277, + 3277, 3277, 3277, 3277}; /* for now all fixed to 10dB */ +RAM_ALIGN const Word16 PhEcu_frac_thr_decay_lin_Q15[MAX_LGW] = { + 3277, 3277, 3277, 3277, 3277, + 3277, 3277, 3277, 3277}; /* thresh_rise_dB=10; thresh_lin = 1.0/( 10^(thresh_rise_dB/10) ); */ + +RAM_ALIGN const Word16 mdct_grp_bins_fx[MAX_LGW + 2] = {4, 14, 24, 44, 84, 164, 244, 324, 404, 484}; +RAM_ALIGN const Word16 xavg_N_grp_fx[5] = {4, 5, 6, 7, 8}; + + +RAM_ALIGN const Word16 spec_shape_headroom[5] = {3, 4, 4, 4, 4}; +RAM_ALIGN const Word16 rectLengthTab[NUM_SAMP_FREQ] = {80, 160, 240, 320, 480, 960}; /* 10ms */ +RAM_ALIGN const Word16 hamm_len2Tab[5] = {24, 48, 72, 96, 144}; /* 3 ms*/ + +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR +RAM_ALIGN const Word16 PLC_FADEOUT_TYPE_2_SELECTOR = 10; /* can take values from 0 to 10, default is 10 for longer fadeout*/ +#else +# ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH +RAM_ALIGN const Word16 FADE_OUT_TYPE_2_ALPHA_5MS[30] = { /* 0.5^(nbLostFramesInRow + LC3_ROUND(100.0/frame_dms) - 1) * frame_dms/100.0)*/ + 16384,11585,8192,5792,4096,2896,2048,1448,1024,724,512,362,256,181,128,91,64,45,32,23,16,11,8,6,4,3,2,1,1,1}; +RAM_ALIGN const Word16 FADE_OUT_TYPE_2_ALPHA_2_5MS[60] = { /* 0.5^(nbLostFramesInRow + LC3_ROUND(100.0/frame_dms) - 1) * frame_dms/100.0)*/ + 16384,13777,11585,9742,8192,6889,5793,4871,4096,3444,2896,2435,2048,1722,1448,1218,1024,861,724,609,512,431,362,304,256,215,181,152,128,108,91,76,64,54,45,38,32,27,23,19,16,13,11,10,8,7,6,5,4,3,3,2,2,2,1,1,1,1,1,1}; +# endif +#endif + +RAM_ALIGN const Word16 NN_thresh = 0x7800; /* 30*2^10 */ +RAM_ALIGN const Word16 NN_thresh_exp = -10; +/* Tone detector */ +#ifdef CR8_E_TONE_DETECTOR +# ifdef ENABLE_HR_MODE +RAM_ALIGN const Word32 TD_HR_thresh_10ms = 83402; +# ifdef ENABLE_075_DMS_MODE +RAM_ALIGN const Word32 TD_HR_thresh_7_5ms = 743496; +# endif +RAM_ALIGN const Word32 TD_HR_thresh_5ms = 382564; +RAM_ALIGN const Word32 TD_HR_thresh_2_5ms = 301695; +# endif /* ENABLE_HR_MODE */ +#endif /* CR8_E_TONE_DETECTOR */ +RAM_ALIGN const Word32 BW_thresh_quiet[4] = {0x14000000, 0xA000000, 0xA000000, 0xA000000}; /* [20,10,10,10]*2^24 */ +RAM_ALIGN const Word16 BW_thresh_quiet_exp = 31 - 24; +RAM_ALIGN const Word16 BW_thresh_brickwall[4] = { + 1036, 164, 327, 327}; /* (1/(10^(ctrl.BW_thresh_brickwall/10))*2^15) with [15,23,20,20] dB*/ + +RAM_ALIGN const Word16 BW_brickwall_dist[4] = {4, 4, 3, 1}; +RAM_ALIGN const Word16 BW_warp_idx_start_16k[4] = { + 53, 0, 0, 0}; /* indices for warped bands, with an offset of [17,23,23,23] bins for the start_idx */ +RAM_ALIGN const Word16 BW_warp_idx_stop_16k[4] = { + 63, 0, 0, + 0}; /*'-1' since this is not matlab and another '-1' because of the different formatting of acc_coeff_per_band*/ +RAM_ALIGN const Word16 BW_warp_idx_start_24k[4] = {47, 59, 0, 0}; +RAM_ALIGN const Word16 BW_warp_idx_stop_24k[4] = {56, 63, 0, 0}; +RAM_ALIGN const Word16 BW_warp_idx_start_32k[4] = {44, 54, 60, 0}; +RAM_ALIGN const Word16 BW_warp_idx_stop_32k[4] = {52, 59, 63, 0}; +RAM_ALIGN const Word16 BW_warp_idx_start_48k[4] = {41, 51, 57, 61}; +RAM_ALIGN const Word16 BW_warp_idx_stop_48k[4] = {49, 55, 60, 63}; +RAM_ALIGN const Word16 *const BW_warp_idx_start_all[MAX_BW_BANDS_NUMBER - 1] = { + BW_warp_idx_start_16k, BW_warp_idx_start_24k, BW_warp_idx_start_32k, BW_warp_idx_start_48k}; +RAM_ALIGN const Word16 *const BW_warp_idx_stop_all[MAX_BW_BANDS_NUMBER - 1] = { + BW_warp_idx_stop_16k, BW_warp_idx_stop_24k, BW_warp_idx_stop_32k, BW_warp_idx_stop_48k}; + +RAM_ALIGN const Word16 BW_brickwall_dist_5ms[4] = {4, 4, 3, 1}; +RAM_ALIGN const Word16 BW_warp_idx_start_16k_5ms[4] = {39, 0, 0, 0}; +RAM_ALIGN const Word16 BW_warp_idx_stop_16k_5ms[4] = {49, 0, 0, 0}; +RAM_ALIGN const Word16 BW_warp_idx_start_24k_5ms[4] = {35, 47, 0, 0}; +RAM_ALIGN const Word16 BW_warp_idx_stop_24k_5ms[4] = {44, 51, 0, 0}; +RAM_ALIGN const Word16 BW_warp_idx_start_32k_5ms[4] = {34, 44, 50, 0}; +RAM_ALIGN const Word16 BW_warp_idx_stop_32k_5ms[4] = {42, 49, 53, 0}; +RAM_ALIGN const Word16 BW_warp_idx_start_48k_5ms[4] = {32, 42, 48, 52}; +RAM_ALIGN const Word16 BW_warp_idx_stop_48k_5ms[4] = {40, 46, 51, 54}; +RAM_ALIGN const Word16 *const BW_warp_idx_start_all_5ms[MAX_BW_BANDS_NUMBER - 1] = { + BW_warp_idx_start_16k_5ms, BW_warp_idx_start_24k_5ms, BW_warp_idx_start_32k_5ms, BW_warp_idx_start_48k_5ms}; +RAM_ALIGN const Word16 *const BW_warp_idx_stop_all_5ms[MAX_BW_BANDS_NUMBER - 1] = { + BW_warp_idx_stop_16k_5ms, BW_warp_idx_stop_24k_5ms, BW_warp_idx_stop_32k_5ms, BW_warp_idx_stop_48k_5ms}; + +RAM_ALIGN const Word16 BW_brickwall_dist_2_5ms[4] = {4, 4, 3, 1}; +RAM_ALIGN const Word16 BW_warp_idx_start_16k_2_5ms[4] = {24, 0, 0, 0}; +RAM_ALIGN const Word16 BW_warp_idx_stop_16k_2_5ms[4] = {34, 0, 0, 0}; +RAM_ALIGN const Word16 BW_warp_idx_start_24k_2_5ms[4] = {24, 35, 0, 0}; +RAM_ALIGN const Word16 BW_warp_idx_stop_24k_2_5ms[4] = {32, 39, 0, 0}; +RAM_ALIGN const Word16 BW_warp_idx_start_32k_2_5ms[4] = {24, 33, 39, 0}; +RAM_ALIGN const Word16 BW_warp_idx_stop_32k_2_5ms[4] = {31, 38, 42, 0}; +RAM_ALIGN const Word16 BW_warp_idx_start_48k_2_5ms[4] = {22, 31, 37, 41}; +RAM_ALIGN const Word16 BW_warp_idx_stop_48k_2_5ms[4] = {29, 35, 40, 43}; +RAM_ALIGN const Word16 *const BW_warp_idx_start_all_2_5ms[MAX_BW_BANDS_NUMBER - 1] = { + BW_warp_idx_start_16k_2_5ms, BW_warp_idx_start_24k_2_5ms, BW_warp_idx_start_32k_2_5ms, BW_warp_idx_start_48k_2_5ms}; +RAM_ALIGN const Word16 *const BW_warp_idx_stop_all_2_5ms[MAX_BW_BANDS_NUMBER - 1] = { + BW_warp_idx_stop_16k_2_5ms, BW_warp_idx_stop_24k_2_5ms, BW_warp_idx_stop_32k_2_5ms, BW_warp_idx_stop_48k_2_5ms}; + +# ifdef CR8_G_ADD_75MS +RAM_ALIGN const Word16 BW_brickwall_dist_7_5ms[4] = {4, 4, 3, 2}; +RAM_ALIGN const Word16 BW_warp_idx_start_16k_7_5ms[4] = {51, 0, 0, 0}; +RAM_ALIGN const Word16 BW_warp_idx_stop_16k_7_5ms[4] = {63, 0, 0, 0}; +RAM_ALIGN const Word16 BW_warp_idx_start_24k_7_5ms[4] = {45, 58, 0, 0}; +RAM_ALIGN const Word16 BW_warp_idx_stop_24k_7_5ms[4] = {55, 63, 0, 0}; +RAM_ALIGN const Word16 BW_warp_idx_start_32k_7_5ms[4] = {42, 53, 60, 0}; +RAM_ALIGN const Word16 BW_warp_idx_stop_32k_7_5ms[4] = {51, 58, 63, 0}; +RAM_ALIGN const Word16 BW_warp_idx_start_48k_7_5ms[4] = {40, 51, 57, 61}; +RAM_ALIGN const Word16 BW_warp_idx_stop_48k_7_5ms[4] = {48, 55, 60, 63}; +RAM_ALIGN const Word16 *const BW_warp_idx_start_all_7_5ms[] = { + BW_warp_idx_start_16k_7_5ms, BW_warp_idx_start_24k_7_5ms, BW_warp_idx_start_32k_7_5ms, BW_warp_idx_start_48k_7_5ms}; +RAM_ALIGN const Word16 *const BW_warp_idx_stop_all_7_5ms[] = { + BW_warp_idx_stop_16k_7_5ms, BW_warp_idx_stop_24k_7_5ms, BW_warp_idx_stop_32k_7_5ms, BW_warp_idx_stop_48k_7_5ms}; +# endif + +#ifdef ENABLE_HR_MODE +RAM_ALIGN const Word16 BW_cutoff_bin_all[] = {80, 160, 240, 320, 400, 400}; +RAM_ALIGN const Word16 BW_cutoff_bin_all_HR[] = {80, 160, 240, 320, 400, 400}; +RAM_ALIGN const Word16 BW_cutoff_bits_all[] = {0, 1, 2, 2, 3, 0}; +#else /* ENABLE_HR_MODE */ +RAM_ALIGN const Word16 BW_cutoff_bin_all[] = {80, 160, 240, 320, 400}; +RAM_ALIGN const Word16 BW_cutoff_bits_all[] = {0, 1, 2, 2, 3}; +#endif /* ENABLE_HR_MODE */ + +#ifdef ENABLE_HR_MODE +RAM_ALIGN const Word16 LowDelayShapes_n960_len[6] = {130, 260, 390, 520, 780, 1560}; +#else +RAM_ALIGN const Word16 LowDelayShapes_n960_len[5] = {130, 260, 390, 520, 780}; +#endif +RAM_ALIGN const Word16 LowDelayShapes_n960_la_zeroes[NUM_SAMP_FREQ] = {30, + 60, + 90, + 120, + 180 +#ifdef ENABLE_HR_MODE + , 360 +#endif +}; + +#ifdef CR8_G_ADD_75MS +# ifdef ENABLE_HR_MODE +const Word16 LowDelayShapes_n960_len_7_5ms[6] = {106, 212, 318, 424, 636, 1272}; +# else +const Word16 LowDelayShapes_n960_len_7_5ms[5] = {106, 212, 318, 424, 636}; +# endif +const Word16 LowDelayShapes_n960_la_zeroes_7_5ms[NUM_SAMP_FREQ] = {14, 28, 42, 56, 84 +# ifdef ENABLE_HR_MODE + , 168 +# endif +}; +# ifdef ENABLE_HR_MODE +# ifdef SUBSET_NB +const Word32 MDCT_WINDOW_FS_8000_frame_ms_75[106] = { + 4627440, 11253200, 21594770, 36220454, 55523513, 79715027, 108949241, 143324500, 182870991, + 227518888, 277136190, 331449220, 390143896, 452770029, 518831181, 587821768, 659169189, 732247130, + 806397033, 880930033, 955136210, 1028289061, 1099721013, 1168761191, 1234831373, 1297335398, 1355817068, + 1409866562, 1459158403, 1503372583, 1542341368, 1575958063, 1604141948, 1626962506, 1644516439, 1657006271, + 1664740913, 1668084651, 1667510566, 1663566793, 1656808751, 1647805301, 1637186879, 1625507591, 1613355502, + 1601336341, 1590266842, 1579708994, 1571001708, 1564080946, 1558867236, 1555257286, 1553127519, 1552339115, + 1552734517, 1554146897, 1556401387, 1559318893, 1562715844, 1566405205, -1570197717, -1573904742, -1577333468, + -1580290211, -1582582625, -1584022156, -1584425628, -1583621336, -1581452727, -1577790475, -1572531065, -1565603566, + -1556974029, -1546637213, -1533223967, -1517247857, -1497930249, -1474813741, -1447477329, -1415559391, -1378853853, + -1337198324, -1290524957, -1238912889, -1182546000, -1121735805, -1056935470, -988679598, -917579357, -844370566, + -769774729, -694577976, -619621377, -545775321, -473935196, -404978161, -339758802, -279035319, -223452287, + -173535871, -129697804, -92268521, -61482210, -37424210, -19913685, -8400842}; +# else +# define MDCT_WINDOW_FS_8000_frame_ms_75 NULL +# endif +# ifdef SUBSET_WB +const Word32 MDCT_WINDOW_FS_16000_frame_ms_75[212] = { + 2448850, 4225281, 6560055, 9518849, 13169928, 17558685, 22724572, 28709046, 35532706, + 43206772, 51759643, 61197652, 71531905, 82773688, 94926633, 107995294, 121978042, 136866522, + 152653815, 169326944, 186873869, 205260070, 224464206, 244469708, 265226672, 286694090, 308842566, + 331620399, 354982140, 378884306, 403282899, 428126460, 453358062, 478925896, 504771155, 530831178, + 557056009, 583378298, 609738583, 636071404, 662314239, 688406753, 714278048, 739869110, 765133864, + 789997902, 814413107, 838333634, 861699657, 884456686, 906561215, 927970820, 948653245, 968562870, + 987675635, 1005965699, 1023398499, 1039938064, 1055570884, 1070287165, 1084066983, 1096897234, 1108786027, + 1119713468, 1129673618, 1138691939, 1146759882, 1153881756, 1160087929, 1165385723, 1169796304, 1173355296, + 1176085471, 1178017803, 1179194996, 1179657892, 1179448026, 1178622117, 1177223060, 1175290297, 1172896803, + 1170081494, 1166887472, 1163391971, 1159633509, 1155652038, 1151518603, 1147273273, 1142969676, 1138666561, + 1134412515, 1130255869, 1126558117, 1122496331, 1118765157, 1115363902, 1112285558, 1109526458, 1107080797, + 1104939816, 1103098430, 1101543766, 1100269289, 1099261964, 1098510648, 1098002762, 1097726182, 1097665183, + 1097807233, 1098135900, 1098637579, 1099295163, 1100094642, 1101018650, 1102052611, 1103178569, 1104381936, + 1105644852, 1106951761, 1108284322, -1109627660, -1110963442, -1112276637, -1113548581, -1114763260, -1115902204, + -1116950143, -1117888308, -1118701309, -1119370903, -1119882282, -1120217558, -1120362527, -1120300271, -1120018073, + -1119500244, -1118735095, -1117710865, -1116417682, -1114844247, -1112986355, -1110833953, -1108385410, -1105635984, + -1102584489, -1099232427, -1095578582, -1091628491, -1086655755, -1081531176, -1075887278, -1069676603, -1062851542, + -1055375495, -1047209387, -1038304906, -1028645771, -1018191542, -1006905821, -994788854, -981815515, -967960849, + -953236015, -937625018, -921120793, -903739802, -885489416, -866385515, -846456825, -825718325, -804213946, + -781984241, -759069751, -735509614, -711369811, -686704607, -661557703, -636008311, -610118476, -583941228, + -557562076, -531035554, -504439473, -477846967, -451338312, -424989596, -398869327, -373061710, -347653667, + -322717851, -298330826, -274560095, -251498346, -229196510, -207718889, -187124805, -167466055, -148790641, + -131139192, -114544857, -99042767, -84660988, -71425324, -59356162, -48470733, -38776535, -30272788, + -22943830, -16759108, -11669404, -7602417, -4461896 }; +# else +# define MDCT_WINDOW_FS_16000_frame_ms_75 NULL +# endif +# ifdef SUBSET_SSWB +const Word32 MDCT_WINDOW_FS_24000_frame_ms_75[318] = { + 3569045, 5343308, 7469087, 10008734, 12994076, 16456850, 20430606, 24935492, 29988837, + 35611849, 41823777, 48643571, 56071893, 64113030, 72783590, 82094564, 92046985, 102645585, + 113894977, 125803748, 138373328, 151602749, 165496877, 180058414, 195279760, 211161232, 227698398, + 244884561, 262716182, 281188032, 300290267, 320009308, 340323456, 361229416, 382724592, 404784463, + 427382077, 450499367, 474123138, 498236134, 522813796, 547827872, 573261791, 599094644, 625301687, + 651864990, 678758112, 705953149, 733423301, 761143017, 789088191, 817226769, 845526155, 873965021, + 902516713, 931147088, 959825021, 988524208, 1017210384, 1045855673, 1074425690, 1102896296, 1131233244, + 1159399102, 1187365932, 1215118091, 1242623432, 1269848445, 1296758792, 1323338775, 1349569176, 1375419011, + 1400856664, 1425860452, 1450405500, 1474469418, 1498033883, 1521084216, 1543600669, 1565562699, 1586950362, + 1607758181, 1627973678, 1647578495, 1666558705, 1684890994, 1702569411, 1719588669, 1735945131, 1751628259, + 1766631537, 1780942408, 1794568179, 1807511369, 1819759624, 1831304037, 1842145330, 1852303571, 1861781063, + 1870563512, 1878654482, 1886073254, 1892829269, 1898924017, 1904366694, 1909168622, 1913346034, 1916917451, + 1919887595, 1922277229, 1924098512, 1925377637, 1926138245, 1926390110, 1926159966, 1925475348, 1924365664, + 1922840889, 1920921471, 1918639476, 1916032510, 1913117957, 1909905898, 1906425851, 1902721668, 1898817211, + 1894724624, 1890460570, 1886061947, 1881561147, 1876974490, 1872321669, 1867634952, 1862942467, 1858269659, + 1853636539, 1849063935, 1844532585, 1840901848, 1836281978, 1831977326, 1827914309, 1824090826, 1820508133, + 1817156298, 1814036518, 1811148878, 1808486122, 1806045111, 1803824889, 1801820200, 1800024837, 1798435525, + 1797047955, 1795856425, 1794854508, 1794036436, 1793397182, 1792930395, 1792629275, 1792486811, 1792496288, + 1792650932, 1792943382, 1793366271, 1793912436, 1794574259, 1795343928, 1796214319, 1797177519, 1798225910, + 1799351580, 1800546365, 1801802795, 1803112835, 1804468826, 1805862173, 1807285016, 1808728934, 1810185719, + -1811649011, -1813108149, -1814556719, -1815986412, -1817388652, -1818755380, -1820077746, -1821347804, -1822557195, + -1823698097, -1824761958, -1825740466, -1826625594, -1827409009, -1828083190, -1828639928, -1829071236, -1829369628, + -1829527454, -1829537126, -1829391729, -1829084485, -1828608410, -1827956837, -1827123677, -1826104316, -1824893520, + -1823485537, -1821875510, -1820060164, -1818037432, -1815802468, -1813351581, -1810685587, -1807803281, -1804699559, + -1801376829, -1797838749, -1794078176, -1790099212, -1785902823, -1781420977, -1775757613, -1770414541, -1764657397, + -1758514553, -1751966917, -1744988832, -1737559493, -1729660865, -1721279216, -1712390301, -1702968220, -1693002531, + -1682487980, -1671402851, -1659722977, -1647435681, -1634547191, -1621051754, -1606928538, -1592163286, -1576765074, + -1560734340, -1544063625, -1526744164, -1508774562, -1490169863, -1470931267, -1451061598, -1430573380, -1409469788, + -1387774154, -1365486503, -1342628496, -1319212449, -1295268938, -1270814307, -1245866917, -1220443956, -1194576202, + -1168294208, -1141628864, -1114589888, -1087212858, -1059529377, -1031588154, -1003401722, -974995147, -946412027, + -917694623, -888859295, -859943075, -830987474, -802029563, -773092402, -744234412, -715477138, -686865195, + -658426713, -630207057, -602244426, -574581369, -547253226, -520293544, -493735699, -467628500, -441995738, + -416889401, -392319671, -368337811, -344954670, -322202233, -300117288, -278711744, -258020476, -238052276, + -218834457, -200381964, -182706579, -165829103, -149762124, -134517743, -120107705, -106542511, -93830987, + -81979923, -70993541, -60872925, -51615362, -43213756, -35655914, -28924065, -22994343, -17836407, + -13413907, -9700456, -6939916 }; +# else +# define MDCT_WINDOW_FS_24000_frame_ms_75 NULL +# endif +# ifdef SUBSET_SWB +const Word32 MDCT_WINDOW_FS_32000_frame_ms_75[424] = { + 2898737, 4022405, 5281441, 6723878, 8372060, 10235970, 12328606, 14657777, 17238266, + 20075996, 23180406, 26552429, 30204258, 34141418, 38374110, 42901881, 47726394, 52848657, + 58275464, 64009892, 70057240, 76417471, 83091786, 90080421, 97386522, 105014921, 112964415, + 121235754, 129827911, 138744722, 147986004, 157551876, 167437738, 177647147, 188174741, 199022831, + 210184946, 221662871, 233452811, 245554560, 257961285, 270671503, 283672733, 296964439, 310542664, + 324409414, 338557330, 352975270, 367652577, 382584217, 397764861, 413190770, 428852496, 444742036, + 460850489, 477166934, 493686689, 510401963, 527305552, 544386461, 561639986, 579055156, 596625027, + 614334635, 632177187, 650141962, 668224093, 686407908, 704684687, 723041108, 741470500, 759961912, + 778506953, 797092489, 815707619, 834339025, 852979862, 871616777, 890238991, 908834402, 927390921, + 945902091, 964354406, 982734524, 1001028580, 1019227984, 1037324578, 1055313224, 1073178103, 1090910419, + 1108493143, 1125919532, 1143183321, 1160279970, 1177195986, 1193922020, 1210443853, 1226757428, 1242848720, + 1258716966, 1274346305, 1289734310, 1304873724, 1319761111, 1334385677, 1348742053, 1362821420, 1376620057, + 1390134975, 1403361262, 1416296924, 1428929625, 1441257929, 1453270092, 1464967234, 1476341997, 1487396355, + 1498127704, 1508535547, 1518610856, 1528355951, 1537762901, 1546836443, 1555575202, 1563981756, 1572051527, + 1579779433, 1587162378, 1594203212, 1600912026, 1607289540, 1613333597, 1619037500, 1624404299, 1629439428, + 1634149881, 1638537653, 1642603536, 1646350593, 1649779860, 1652898979, 1655708955, 1658229426, 1660449352, + 1662377545, 1664024217, 1665388315, 1666481709, 1667311651, 1667891108, 1668216427, 1668300198, 1668150304, + 1667777789, 1667191944, 1666404102, 1665413150, 1664228568, 1662860495, 1661323561, 1659629730, 1657785817, + 1655794977, 1653662566, 1651401295, 1649028654, 1646557403, 1643989827, 1641331208, 1638586818, 1635770553, + 1632894967, 1629971201, 1627004437, 1624002536, 1620971847, 1617927153, 1614878122, 1611835451, 1608805100, + 1605795099, 1602815547, 1599884473, 1596942341, 1594771673, 1591702411, 1588839753, 1586088059, 1583448720, + 1580925703, 1578521775, 1576232766, 1574055288, 1571990953, 1570040827, 1568202332, 1566472498, 1564851004, + 1563337829, 1561931261, 1560628909, 1559429084, 1558330506, 1557331359, 1556429824, 1555624516, 1554913143, + 1554292592, 1553760945, 1553317125, 1552958916, 1552683122, 1552487276, 1552369480, 1552327252, 1552357490, + 1552457675, 1552625785, 1552859126, 1553154340, 1553508826, 1553920495, 1554386414, 1554903212, 1555468295, + 1556079427, 1556733719, 1557427851, 1558158741, 1558924090, 1559721218, 1560546581, 1561397206, 1562271110, + 1563165114, 1564075458, 1564999378, 1565934440, 1566877694, 1567825218, -1568775555, -1569724227, -1570669763, + -1571608214, -1572536583, -1573452385, -1574352788, -1575233942, -1576092574, -1576926600, -1577732933, -1578507896, + -1579248680, -1579952850, -1580617181, -1581238194, -1581812847, -1582338764, -1582813204, -1583232638, -1583593989, + -1583895045, -1584133086, -1584304626, -1584406873, -1584437736, -1584394635, -1584274418, -1584074588, -1583793268, + -1583428030, -1582975737, -1582434279, -1581802744, -1581079400, -1580261338, -1579346529, -1578333908, -1577222011, + -1576009429, -1574695339, -1573278552, -1571757228, -1570130264, -1568398303, -1566561731, -1564618340, -1562566382, + -1560407784, -1558145041, -1555775754, -1553296829, -1550712057, -1548026396, -1545242289, -1542268350, -1538423280, + -1535025262, -1531395445, -1527591708, -1523601949, -1519416343, -1515026680, -1510422354, -1505596841, -1500543057, + -1495258714, -1489733930, -1483960441, -1477928294, -1471632952, -1465071334, -1458241898, -1451136236, -1443746092, + -1436060907, -1428079531, -1419805847, -1411239360, -1402373353, -1393199823, -1383713926, -1373917135, -1363813377, + -1353400513, -1342677100, -1331640941, -1320284636, -1308611825, -1296630892, -1284342674, -1271742396, -1258835954, + -1245628407, -1232122065, -1218316234, -1204224404, -1189846207, -1175175506, -1160242956, -1145031655, -1129564821, + -1113844775, -1097879736, -1081675373, -1065238433, -1048578417, -1031707925, -1014636539, -997375667, -979937295, + -962314566, -944532531, -926597437, -908531127, -890341534, -872033654, -853615925, -835103871, -816513734, + -797862235, -779149108, -760390220, -741599202, -722791848, -703980340, -685176354, -666389658, -647646244, + -628944722, -610316405, -591754523, -573282405, -554915396, -536666275, -518550375, -500581949, -482775076, + -465139339, -447692836, -430439482, -413418994, -396596647, -380036004, -363729221, -347677810, -331912032, + -316431125, -301242631, -286354637, -271795849, -257560706, -243655300, -230096441, -216894979, -204043835, + -191560528, -179450345, -167715723, -156363602, -145400931, -134832648, -124663143, -114896281, -105536276, + -96587551, -88053476, -79936384, -72238586, -64962154, -58107752, -51674659, -45661585, -40066372, + -34884913, -30111469, -25739290, -21759792, -18161914, -14933570, -12062384, -9522842, -7254663, + -5656627 }; +# else +# define MDCT_WINDOW_FS_32000_frame_ms_75 NULL +# endif +# ifdef SUBSET_FB +const Word32 MDCT_WINDOW_FS_48000_frame_ms_75[636] = { + 2204435, 2827689, 3443319, 4131102, 4878935, 5703040, 6599364, 7574899, 8628974, + 9768536, 10991420, 12304931, 13709256, 15207323, 16799052, 18489324, 20275023, 22160933, + 24148496, 26240076, 28435235, 30739604, 33150351, 35668955, 38294878, 41029635, 43871618, + 46825882, 49890883, 53068998, 56360550, 59766888, 63284768, 66918075, 70664961, 74526448, + 78503039, 82597929, 86807681, 91135031, 95578822, 100139618, 104816236, 109611835, 114523552, + 119554039, 124702224, 129967749, 135348514, 140848111, 146462751, 152193324, 158039847, 164002831, + 170078327, 176269443, 182573647, 188991411, 195521914, 202165741, 208918745, 215783357, 222755240, + 229832331, 237013913, 244302241, 251692923, 259188940, 266788795, 274490295, 282289304, 290186132, + 298175224, 306257381, 314430505, 322694044, 331045821, 339487261, 348012274, 356620678, 365310317, + 374079074, 382922254, 391842074, 400834178, 409898068, 419031270, 428232881, 437497913, 446828175, + 456219802, 465670981, 475178925, 484743299, 494357854, 504022976, 513735237, 523492799, 533292796, + 543136028, 553015990, 562931887, 572880536, 582859524, 592864355, 602896501, 612951047, 623027190, + 633121825, 643232873, 653354882, 663488155, 673627234, 683771323, 693918098, 704065470, 714207061, + 724344108, 734471992, 744587758, 754688429, 764774608, 774840295, 784884831, 794903648, 804894011, + 814851825, 824777247, 834664477, 844515260, 854327259, 864098094, 873822193, 883500485, 893125924, + 902697010, 912211002, 921668164, 931065070, 940403253, 949676961, 958885223, 968024298, 977093615, + 986086667, 995005058, 1003845874, 1012604766, 1021282611, 1029879030, 1038386135, 1046806723, 1055138039, + 1063379017, 1071528406, 1079585832, 1087546197, 1095410412, 1103175087, 1110839263, 1118400067, 1125861251, + 1133217689, 1140469587, 1147616705, 1154658548, 1161589135, 1168411456, 1175122212, 1181718798, 1188199640, + 1194567214, 1200817042, 1206950737, 1212967954, 1218868269, 1224650873, 1230316551, 1235861165, 1241285527, + 1246589565, 1251772729, 1256831629, 1261771016, 1266587826, 1271284733, 1275860443, 1280315823, 1284645497, + 1288852346, 1292933744, 1296889962, 1300722079, 1304434734, 1308025653, 1311497310, 1314848195, 1318076916, + 1321181451, 1324164254, 1327024207, 1329764950, 1332387885, 1334893025, 1337281173, 1339554157, 1341707740, + 1343747791, 1345671522, 1347481634, 1349179572, 1350764422, 1352239980, 1353613012, 1354873992, 1356030340, + 1357079368, 1358026526, 1358871638, 1359613742, 1360257791, 1360804083, 1361255397, 1361617096, 1361885808, + 1362062609, 1362151603, 1362153995, 1362072233, 1361909271, 1361666938, 1361347766, 1360955593, 1360489817, + 1359950116, 1359340101, 1358660855, 1357916180, 1357108339, 1356243400, 1355321087, 1354344570, 1353313776, + 1352230258, 1351093731, 1349909242, 1348677915, 1347405592, 1346095404, 1344750475, 1343369336, 1341955495, + 1340508098, 1339029437, 1337520955, 1335988076, 1334432030, 1332857982, 1331266254, 1329659151, 1328036799, + 1326403000, 1324757066, 1323104230, 1321446604, 1319787700, 1318127699, 1316471738, 1314818892, 1313173031, + 1311534229, 1309906742, 1308289975, 1306691587, 1305107061, 1303560954, 1302485706, 1300837265, 1299230148, + 1297667349, 1296147118, 1294669845, 1293233008, 1291838729, 1290486465, 1289178223, 1287911298, 1286686132, + 1285500617, 1284356733, 1283253302, 1282192039, 1281170798, 1280190420, 1279248602, 1278346792, 1277483349, + 1276659918, 1275874601, 1275128550, 1274419448, 1273748350, 1273113203, 1272515449, 1271953180, 1271427649, + 1270936717, 1270481540, 1270059928, 1269672963, 1269318382, 1268997326, 1268707731, 1268450837, 1268224483, + 1268029756, 1267864381, 1267729424, 1267622629, 1267545013, 1267494302, 1267471571, 1267474578, 1267504402, + 1267558747, 1267638603, 1267741668, 1267868942, 1268018115, 1268190239, 1268383008, 1268597404, 1268831071, + 1269084943, 1269356717, 1269647473, 1269954877, 1270279875, 1270620090, 1270976496, 1271346828, 1271732058, + 1272129716, 1272540744, 1272962829, 1273396990, 1273840888, 1274295422, 1274758248, 1275230417, 1275709517, + 1276196415, 1276688706, 1277187379, 1277690114, 1278197794, 1278707969, 1279221647, 1279736503, 1280253498, + -1280770244, -1281287656, -1281803343, -1282318265, -1282830085, -1283339807, -1283844964, -1284346432, -1284841866, + -1285332250, -1285815146, -1286291410, -1286758593, -1287217737, -1287666452, -1288105628, -1288532876, -1288949203, + -1289352245, -1289742931, -1290118731, -1290480607, -1290826232, -1291156571, -1291469183, -1291765004, -1292041634, + -1292300151, -1292538184, -1292756663, -1292953166, -1293128674, -1293280819, -1293410658, -1293515818, -1293597309, + -1293652773, -1293683213, -1293686282, -1293663081, -1293611326, -1293532118, -1293423149, -1293285472, -1293116803, + -1292918254, -1292687534, -1292425784, -1292130842, -1291804017, -1291443255, -1291049775, -1290621337, -1290159111, + -1289660945, -1289128099, -1288558489, -1287953483, -1287311252, -1286633366, -1285917866, -1285165943, -1284375393, + -1283547520, -1282680564, -1281776335, -1280833350, -1279853230, -1278833852, -1277776244, -1276678466, -1275542433, + -1274367185, -1273154903, -1271903726, -1270614321, -1269284275, -1267915816, -1266508671, -1265065178, -1263583140, + -1262063220, -1260504007, -1258908698, -1256628331, -1254761985, -1252853377, -1250881358, -1248844632, -1246741358, + -1244569594, -1242327619, -1240012651, -1237623600, -1235156149, -1232610864, -1229984110, -1227275248, -1224482272, + -1221606271, -1218642652, -1215591412, -1212448650, -1209213243, -1205881571, -1202455146, -1198931234, -1195311772, + -1191594196, -1187777826, -1183858288, -1179836046, -1175706321, -1171469469, -1167124636, -1162674694, -1158117379, + -1153454731, -1148683225, -1143802349, -1138808714, -1133702904, -1128481825, -1123149280, -1117704914, -1112149514, + -1106481061, -1100702139, -1094806903, -1088800296, -1082676113, -1076437274, -1070082677, -1063618676, -1057039488, + -1050351248, -1043548836, -1036634133, -1029608325, -1022475106, -1015230021, -1007878923, -1000415821, -992849913, + -985179219, -977404151, -969525479, -961538535, -953457394, -945280420, -936999272, -928626277, -920160734, + -911603664, -902957625, -894223210, -885402362, -876498250, -867508512, -858440255, -849293347, -840074392, + -830781521, -821419104, -811990901, -802499334, -792938179, -783315469, -773636100, -763901035, -754111866, + -744278025, -734399140, -724475975, -714510329, -704504133, -694460237, -684383382, -674277250, -664145566, + -653994294, -643817229, -633622219, -623410967, -613187040, -602954520, -592717105, -582476532, -572238350, + -562002979, -551770150, -541551921, -531349514, -521160592, -510991643, -500852505, -490735715, -480646079, + -470590740, -460574626, -450595871, -440662753, -430774557, -420941335, -411160195, -401435877, -391774603, + -382174290, -372642476, -363180190, -353786746, -344482765, -335253937, -326094163, -317034690, -308063867, + -299187762, -290405275, -281715156, -273134873, -264653333, -256282164, -248014183, -239853113, -231807709, + -223884020, -216073113, -208387006, -200816625, -193373144, -186056104, -178871459, -171808633, -164881963, + -158086310, -151426496, -144902306, -138514809, -132265008, -126156408, -120188845, -114364736, -108683712, + -103148269, -97758088, -92515604, -87420431, -82474860, -77678410, -73033188, -68538592, -64196501, + -60006167, -55969182, -52084610, -48353698, -44775286, -41350196, -38077002, -34956005, -31985545, + -29165263, -26493253, -23968386, -21588587, -19351751, -17255806, -15297341, -13474667, -11782386, + -10220076, -8778515, -7460996, -6246830, -5152154, -4038973 }; +# else +# define MDCT_WINDOW_FS_48000_frame_ms_75 NULL +# endif + +const Word32 *const LowDelayShapes_n960_7_5ms[5] = { + MDCT_WINDOW_FS_8000_frame_ms_75, MDCT_WINDOW_FS_16000_frame_ms_75, MDCT_WINDOW_FS_24000_frame_ms_75, MDCT_WINDOW_FS_32000_frame_ms_75, MDCT_WINDOW_FS_48000_frame_ms_75 }; +# else + +RAM_ALIGN const Word16 LowDelayShapes_n960_N60_7_5ms[106] = { + 71, 172, 330, 553, 847, 1216, 1662, 2187, 2790, 3472, 4229, 5058, 5953, 6909, + 7917, 8969, 10058, 11173, 12305, 13442, 14574, 15690, 16780, 17834, 18842, 19796, 20688, 21513, + 22265, 22940, 23534, 24047, 24477, 24825, 25093, 25284, 25402, 25453, 25444, 25384, 25281, 25144, + 24981, 24803, 24618, 24434, 24266, 24104, 23972, 23866, 23786, 23731, 23699, 23687, 23693, 23714, + 23749, 23793, 23845, 23901, -23959, -24016, -24068, -24113, -24148, -24170, -24176, -24164, -24131, -24075, + -23995, -23889, -23758, -23600, -23395, -23151, -22857, -22504, -22087, -21600, -21040, -20404, -19692, -18904, + -18044, -17116, -16128, -15086, -14001, -12884, -11746, -10598, -9455, -8328, -7232, -6179, -5184, -4258, + -3410, -2648, -1979, -1408, -938, -571, -304, -128}; + +RAM_ALIGN const Word16 LowDelayShapes_n960_N120_7_5ms[212] = { + 37, 64, 100, 145, 201, 268, 347, 438, 542, 659, 790, 934, 1091, 1263, + 1448, 1648, 1861, 2088, 2329, 2584, 2851, 3132, 3425, 3730, 4047, 4375, 4713, 5060, + 5417, 5781, 6154, 6533, 6918, 7308, 7702, 8100, 8500, 8902, 9304, 9706, 10106, 10504, + 10899, 11290, 11675, 12054, 12427, 12792, 13148, 13496, 13833, 14160, 14475, 14779, 15071, 15350, + 15616, 15868, 16107, 16331, 16542, 16737, 16919, 17085, 17237, 17375, 17498, 17607, 17702, 17782, + 17850, 17904, 17946, 17975, 17993, 18000, 17997, 17984, 17963, 17934, 17897, 17854, 17805, 17752, + 17695, 17634, 17571, 17506, 17440, 17375, 17310, 17246, 17190, 17128, 17071, 17019, 16972, 16930, + 16893, 16860, 16832, 16808, 16789, 16773, 16762, 16754, 16750, 16749, 16751, 16756, 16764, 16774, + 16786, 16800, 16816, 16833, 16852, 16871, 16891, 16911, -16932, -16952, -16972, -16991, -17010, -17027, + -17043, -17058, -17070, -17080, -17088, -17093, -17095, -17094, -17090, -17082, -17071, -17055, -17035, -17011, + -16983, -16950, -16913, -16871, -16824, -16773, -16717, -16657, -16581, -16503, -16417, -16322, -16218, -16104, + -15979, -15843, -15696, -15536, -15364, -15179, -14981, -14770, -14545, -14307, -14055, -13790, -13511, -13220, + -12916, -12599, -12271, -11932, -11582, -11223, -10855, -10478, -10095, -9705, -9310, -8910, -8508, -8103, + -7697, -7291, -6887, -6485, -6086, -5692, -5305, -4924, -4552, -4189, -3838, -3497, -3170, -2855, + -2555, -2270, -2001, -1748, -1511, -1292, -1090, -906, -740, -592, -462, -350, -256, -178, + -116, -68}; + +RAM_ALIGN const Word16 LowDelayShapes_n960_N180_7_5ms[318] = { + 54, 82, 114, 153, 198, 251, 312, 380, 458, 543, 638, 742, 856, 978, + 1111, 1253, 1405, 1566, 1738, 1920, 2111, 2313, 2525, 2747, 2980, 3222, 3474, 3737, + 4009, 4291, 4582, 4883, 5193, 5512, 5840, 6177, 6521, 6874, 7235, 7602, 7978, 8359, + 8747, 9141, 9541, 9947, 10357, 10772, 11191, 11614, 12041, 12470, 12902, 13336, 13771, 14208, + 14646, 15084, 15521, 15958, 16394, 16829, 17261, 17691, 18118, 18541, 18961, 19376, 19787, 20193, + 20593, 20987, 21375, 21757, 22131, 22499, 22858, 23210, 23553, 23889, 24215, 24532, 24841, 25140, + 25430, 25709, 25979, 26239, 26488, 26728, 26957, 27175, 27383, 27580, 27767, 27943, 28109, 28264, + 28409, 28543, 28666, 28779, 28882, 28975, 29058, 29132, 29195, 29250, 29295, 29332, 29359, 29379, + 29391, 29394, 29391, 29380, 29363, 29340, 29311, 29276, 29236, 29192, 29143, 29090, 29033, 28974, + 28911, 28846, 28779, 28710, 28640, 28569, 28498, 28426, 28355, 28284, 28214, 28145, 28090, 28019, + 27954, 27892, 27833, 27779, 27728, 27680, 27636, 27595, 27558, 27524, 27494, 27466, 27442, 27421, + 27403, 27387, 27375, 27365, 27358, 27353, 27351, 27351, 27354, 27358, 27365, 27373, 27383, 27395, + 27408, 27423, 27439, 27456, 27474, 27493, 27513, 27534, 27555, 27577, 27599, 27621, -27644, -27666, + -27688, -27710, -27731, -27752, -27772, -27792, -27810, -27827, -27844, -27859, -27872, -27884, -27894, -27903, + -27909, -27914, -27916, -27917, -27914, -27910, -27902, -27892, -27880, -27864, -27846, -27824, -27800, -27772, + -27741, -27707, -27670, -27629, -27585, -27538, -27487, -27433, -27375, -27315, -27251, -27182, -27096, -27014, + -26927, -26833, -26733, -26626, -26513, -26393, -26265, -26129, -25985, -25833, -25673, -25504, -25325, -25138, + -24941, -24735, -24520, -24294, -24060, -23815, -23561, -23296, -23022, -22738, -22445, -22141, -21829, -21507, + -21176, -20836, -20487, -20130, -19764, -19391, -19010, -18622, -18228, -17827, -17420, -17007, -16590, -16167, + -15741, -15311, -14877, -14441, -14003, -13563, -13122, -12680, -12238, -11796, -11356, -10917, -10481, -10047, + -9616, -9190, -8767, -8350, -7939, -7534, -7135, -6744, -6361, -5986, -5620, -5264, -4916, -4579, + -4253, -3937, -3632, -3339, -3058, -2788, -2530, -2285, -2053, -1833, -1626, -1432, -1251, -1083, + -929, -788, -659, -544, -441, -351, -272, -205, -148, -106}; + +RAM_ALIGN const Word16 LowDelayShapes_n960_N240_7_5ms[424] = { + 44, 61, 81, 103, 128, 156, 188, 224, 263, 306, 354, 405, 461, 521, + 586, 655, 728, 806, 889, 977, 1069, 1166, 1268, 1375, 1486, 1602, 1724, 1850, + 1981, 2117, 2258, 2404, 2555, 2711, 2871, 3037, 3207, 3382, 3562, 3747, 3936, 4130, + 4329, 4531, 4739, 4950, 5166, 5386, 5610, 5838, 6069, 6305, 6544, 6786, 7032, 7281, + 7533, 7788, 8046, 8307, 8570, 8836, 9104, 9374, 9646, 9920, 10196, 10474, 10753, 11033, + 11314, 11596, 11879, 12163, 12447, 12731, 13015, 13300, 13584, 13868, 14151, 14433, 14715, 14995, + 15274, 15552, 15828, 16103, 16375, 16646, 16914, 17180, 17444, 17704, 17963, 18218, 18470, 18719, + 18964, 19206, 19445, 19680, 19911, 20138, 20361, 20580, 20795, 21006, 21212, 21414, 21611, 21804, + 21992, 22175, 22354, 22527, 22696, 22860, 23018, 23172, 23321, 23464, 23603, 23736, 23864, 23988, + 24106, 24218, 24326, 24428, 24525, 24618, 24705, 24786, 24863, 24935, 25002, 25064, 25121, 25174, + 25221, 25264, 25303, 25336, 25366, 25391, 25412, 25428, 25441, 25450, 25455, 25456, 25454, 25448, + 25439, 25427, 25412, 25394, 25373, 25350, 25324, 25296, 25265, 25233, 25198, 25162, 25124, 25085, + 25045, 25003, 24960, 24916, 24871, 24826, 24780, 24734, 24688, 24641, 24595, 24548, 24502, 24457, + 24412, 24367, 24334, 24287, 24244, 24202, 24162, 24123, 24086, 24051, 24018, 23987, 23957, 23929, + 23902, 23878, 23855, 23833, 23813, 23795, 23778, 23763, 23749, 23737, 23726, 23717, 23709, 23702, + 23696, 23692, 23689, 23687, 23687, 23687, 23689, 23691, 23695, 23699, 23705, 23711, 23718, 23726, + 23735, 23744, 23754, 23764, 23776, 23787, 23799, 23812, 23825, 23838, 23852, 23866, 23880, 23894, + 23909, 23923, -23938, -23952, -23967, -23981, -23995, -24009, -24023, -24036, -24049, -24062, -24074, -24086, + -24097, -24108, -24118, -24128, -24137, -24145, -24152, -24158, -24164, -24168, -24172, -24175, -24176, -24177, + -24176, -24174, -24171, -24167, -24161, -24154, -24146, -24136, -24125, -24113, -24099, -24083, -24066, -24048, + -24028, -24006, -23983, -23958, -23932, -23904, -23874, -23843, -23810, -23775, -23739, -23701, -23662, -23621, + -23579, -23533, -23474, -23423, -23367, -23309, -23248, -23184, -23117, -23047, -22974, -22896, -22816, -22732, + -22643, -22551, -22455, -22355, -22251, -22143, -22030, -21913, -21791, -21665, -21534, -21399, -21259, -21114, + -20964, -20810, -20651, -20488, -20319, -20146, -19968, -19785, -19598, -19405, -19208, -19007, -18801, -18590, + -18375, -18156, -17932, -17704, -17472, -17236, -16996, -16752, -16505, -16254, -16000, -15743, -15482, -15219, + -14953, -14684, -14412, -14139, -13863, -13586, -13306, -13025, -12743, -12459, -12174, -11889, -11603, -11316, + -11029, -10742, -10455, -10168, -9882, -9597, -9313, -9029, -8748, -8467, -8189, -7912, -7638, -7367, + -7097, -6831, -6568, -6308, -6052, -5799, -5550, -5305, -5065, -4828, -4597, -4369, -4147, -3930, + -3718, -3511, -3310, -3113, -2923, -2738, -2559, -2386, -2219, -2057, -1902, -1753, -1610, -1474, + -1344, -1220, -1102, -991, -887, -788, -697, -611, -532, -459, -393, -332, -277, -228, + -184, -145, -111, -86}; + +RAM_ALIGN const Word16 LowDelayShapes_n960_N360_7_5ms[636] = { + 34, 43, 53, 63, 74, 87, 101, 116, 132, 149, 168, 188, 209, 232, + 256, 282, 309, 338, 368, 400, 434, 469, 506, 544, 584, 626, 669, 715, + 761, 810, 860, 912, 966, 1021, 1078, 1137, 1198, 1260, 1325, 1391, 1458, 1528, + 1599, 1673, 1747, 1824, 1903, 1983, 2065, 2149, 2235, 2322, 2411, 2502, 2595, 2690, + 2786, 2884, 2983, 3085, 3188, 3293, 3399, 3507, 3617, 3728, 3841, 3955, 4071, 4188, + 4307, 4428, 4550, 4673, 4798, 4924, 5051, 5180, 5310, 5442, 5574, 5708, 5843, 5979, + 6116, 6255, 6394, 6534, 6676, 6818, 6961, 7106, 7251, 7397, 7543, 7691, 7839, 7988, + 8137, 8288, 8438, 8590, 8741, 8894, 9046, 9199, 9353, 9507, 9661, 9815, 9969, 10124, + 10279, 10434, 10588, 10743, 10898, 11053, 11207, 11362, 11516, 11670, 11823, 11976, 12129, 12282, + 12434, 12585, 12736, 12886, 13036, 13185, 13333, 13481, 13628, 13774, 13919, 14064, 14207, 14349, + 14491, 14631, 14771, 14909, 15046, 15183, 15317, 15451, 15584, 15715, 15845, 15973, 16100, 16226, + 16350, 16473, 16595, 16715, 16833, 16950, 17065, 17179, 17292, 17402, 17511, 17619, 17724, 17829, + 17931, 18032, 18130, 18228, 18323, 18417, 18508, 18598, 18687, 18773, 18858, 18941, 19021, 19101, + 19178, 19253, 19327, 19398, 19468, 19536, 19602, 19666, 19729, 19789, 19847, 19904, 19959, 20012, + 20063, 20112, 20160, 20205, 20249, 20291, 20331, 20369, 20405, 20440, 20473, 20504, 20533, 20561, + 20587, 20611, 20634, 20654, 20674, 20691, 20707, 20722, 20735, 20746, 20756, 20764, 20771, 20777, + 20781, 20783, 20785, 20785, 20784, 20781, 20777, 20773, 20767, 20759, 20751, 20742, 20732, 20720, + 20708, 20695, 20681, 20666, 20650, 20633, 20616, 20598, 20579, 20560, 20540, 20519, 20498, 20477, + 20455, 20432, 20409, 20386, 20362, 20338, 20314, 20289, 20264, 20239, 20214, 20189, 20164, 20138, + 20113, 20088, 20063, 20037, 20012, 19988, 19963, 19939, 19914, 19891, 19874, 19849, 19825, 19801, + 19778, 19755, 19733, 19712, 19691, 19671, 19652, 19633, 19615, 19598, 19581, 19565, 19549, 19534, + 19520, 19506, 19493, 19480, 19468, 19457, 19446, 19436, 19426, 19417, 19408, 19400, 19393, 19386, + 19380, 19374, 19368, 19363, 19359, 19355, 19352, 19349, 19346, 19344, 19342, 19341, 19340, 19340, + 19340, 19341, 19341, 19343, 19344, 19346, 19348, 19351, 19354, 19357, 19361, 19365, 19369, 19373, + 19378, 19383, 19388, 19394, 19399, 19405, 19411, 19417, 19424, 19430, 19437, 19444, 19451, 19458, + 19466, 19473, 19481, 19488, 19496, 19504, 19512, 19519, 19527, 19535, -19543, -19551, -19559, -19567, + -19574, -19582, -19590, -19598, -19605, -19613, -19620, -19627, -19634, -19641, -19648, -19655, -19661, -19668, + -19674, -19680, -19686, -19691, -19696, -19701, -19706, -19711, -19715, -19719, -19723, -19726, -19729, -19732, + -19734, -19736, -19737, -19739, -19740, -19740, -19740, -19740, -19739, -19738, -19736, -19734, -19731, -19728, + -19725, -19721, -19716, -19711, -19706, -19700, -19693, -19686, -19679, -19671, -19662, -19653, -19643, -19632, + -19622, -19610, -19598, -19585, -19572, -19558, -19544, -19529, -19513, -19497, -19481, -19463, -19445, -19427, + -19408, -19388, -19368, -19347, -19325, -19303, -19281, -19258, -19234, -19209, -19175, -19146, -19117, -19087, + -19056, -19024, -18991, -18956, -18921, -18885, -18847, -18808, -18768, -18727, -18684, -18640, -18595, -18548, + -18500, -18451, -18400, -18348, -18294, -18239, -18182, -18124, -18064, -18003, -17940, -17875, -17809, -17741, + -17671, -17600, -17528, -17453, -17377, -17299, -17219, -17138, -17055, -16970, -16884, -16795, -16705, -16614, + -16520, -16425, -16328, -16230, -16129, -16027, -15923, -15818, -15711, -15602, -15491, -15379, -15265, -15150, + -15033, -14914, -14794, -14672, -14549, -14424, -14297, -14170, -14041, -13910, -13778, -13645, -13510, -13374, + -13237, -13099, -12959, -12819, -12677, -12534, -12390, -12245, -12099, -11952, -11805, -11656, -11507, -11357, + -11206, -11055, -10903, -10750, -10597, -10443, -10289, -10134, -9979, -9824, -9668, -9512, -9356, -9200, + -9044, -8888, -8732, -8575, -8419, -8263, -8108, -7952, -7797, -7642, -7488, -7334, -7181, -7028, + -6876, -6724, -6573, -6423, -6274, -6125, -5978, -5832, -5686, -5542, -5398, -5256, -5116, -4976, + -4838, -4701, -4565, -4431, -4299, -4168, -4038, -3911, -3784, -3660, -3537, -3416, -3297, -3180, + -3064, -2951, -2839, -2729, -2622, -2516, -2412, -2311, -2211, -2114, -2018, -1925, -1834, -1745, + -1658, -1574, -1492, -1412, -1334, -1258, -1185, -1114, -1046, -980, -916, -854, -795, -738, + -683, -631, -581, -533, -488, -445, -404, -366, -329, -295, -263, -233, -206, -180, + -156, -134, -114, -95, -79, -62}; + +const Word16 *const LowDelayShapes_n960_7_5ms[5] = { + LowDelayShapes_n960_N60_7_5ms, LowDelayShapes_n960_N120_7_5ms, LowDelayShapes_n960_N180_7_5ms, + LowDelayShapes_n960_N240_7_5ms, LowDelayShapes_n960_N360_7_5ms}; +# endif +#endif + +# ifdef ENABLE_HR_MODE +# ifdef SUBSET_NB +RAM_ALIGN const Word32 MDCT_WINDOW_FS_8000_frame_ms_100[130] = { + -961400, -2849747, -6146069, -11183287, -18168658, -27159976, -38041614, -50544991, -64266305, + -78702302, -93275005, -107359966, -120331449, -131585369, -140567185, -146788394, -149841031, -149374845, + -145077849, -136659567, -123818556, -106218681, -83483575, -55188103, -20866242, 19967468, 67769998, + 122921021, 185652202, 255975827, 333632994, 418021593, 508185345, 602779388, 700109939, 798161092, + 894722554, 987480940, 1074157272, 1152645644, 1221190247, 1278509567, 1323911980, 1357388583, 1379593462, + 1391784272, 1395720478, 1393489246, 1387290092, 1379158144, 1370909958, 1362952657, 1356680081, 1351822616, + 1348129706, 1345389974, 1343434137, 1342132875, 1341380238, 1341082389, 1341146030, 1341475565, 1341976666, + 1342558820, 1343143270, 1343665484, 1344082633, 1344377759, 1344564351, 1344687981, 1344819951, 1345048163, + 1345462207, 1346140636, 1347141158, 1348493131, 1350195802, 1352216474, 1354492706, 1356936321, -1359440659, + -1361893201, -1364185723, -1366227332, -1367952395, -1369325253, -1370343007, -1371033982, -1371456025, -1371688758, + -1371823378, -1371949513, -1372139932, -1372441219, -1372867302, -1373401073, -1373998949, -1374594994, -1375108467, + -1375446347, -1375511619, -1375206190, -1374435007, -1373103717, -1371107592, -1368321163, -1364583182, -1359697421, + -1353439826, -1345583929, -1334252006, -1318640435, -1296625734, -1266042179, -1224814360, -1171299094, -1104589425, + -1024691930, -932610693, -830326556, -720679178, -607287900, -494260157, -385949065, -286606097, -199964372, + -128792415, -74461791, -36690922, -13577456 }; +# else +# define MDCT_WINDOW_FS_8000_frame_ms_100 NULL +# endif +# ifdef SUBSET_WB +Word32 MDCT_WINDOW_FS_16000_frame_ms_100[260] = { + -887375, -1872204, -3197066, -4988439, -7310990, -10227337, -13783209, -18021567, -22958367, + -28610377, -34970773, -42018157, -49718535, -58023758, -66873408, -76198163, -85910142, -95927481, + -106148057, -116469926, -126789141, -136988509, -146961365, -156599505, -165784108, -174413613, -182384155, + -189593925, -195957243, -201380750, -205787662, -209112092, -211278626, -212225338, -211904063, -210251417, + -207219014, -202758648, -196811500, -189330359, -180258003, -169532917, -157095614, -142881796, -126812734, + -108824087, -88825077, -66738724, -42479347, -15962398, 12903137, 44189991, 77985216, 114347898, + 153341694, 195002709, 239360583, 286415769, 336147305, 388513668, 443439084, 500814289, 560507827, + 622347139, 686131895, 751624641, 818548945, 886612081, 955480469, 1024792378, 1094174334, 1163233060, + 1231563801, 1298756609, 1364398281, 1428080024, 1489417472, 1548030726, 1603570137, 1655722624, 1704220353, + 1748832761, 1789380048, 1825732185, 1857837021, 1885694068, 1909350182, 1928926255, 1944599555, 1956591988, + 1965173692, 1970654814, 1973392048, 1973753741, 1972126549, 1968905622, 1964477747, 1959200677, 1953414096, + 1947497068, 1941982397, 1935699544, 1930081097, 1925079908, 1920651209, 1916744799, 1913315837, 1910318315, + 1907712617, 1905458724, 1903525160, 1901880657, 1900501434, 1899362031, 1898444320, 1897728470, 1897199074, + 1896837448, 1896629442, 1896556474, 1896603942, 1896753023, 1896988900, 1897292512, 1897649018, 1898040860, + 1898455207, 1898875282, 1899290274, 1899686952, 1900057791, 1900392969, 1900688703, 1900940068, 1901148890, + 1901315261, 1901446916, 1901549632, 1901635772, 1901716579, 1901808596, 1901925470, 1902085313, 1902301944, + 1902593430, 1902971628, 1903450623, 1904038863, 1904746055, 1905575675, 1906532421, 1907613683, 1908818837, + 1910139810, 1911570484, 1913097876, 1914709921, 1916389064, 1918119705, 1919880868, -1921655075, -1923419485, + -1925156475, -1926844779, -1928468408, -1930009301, -1931454857, -1932791495, -1934012556, -1935109403, -1936080977, + -1936924245, -1937643651, -1938242459, -1938730331, -1939115713, -1939412840, -1939633721, -1939796733, -1939915942, + -1940009808, -1940092245, -1940180131, -1940284940, -1940419293, -1940589100, -1940802279, -1941058948, -1941361010, + -1941703474, -1942082515, -1942488131, -1942912654, -1943342567, -1943766803, -1944168168, -1944533482, -1944844704, + -1945086561, -1945239453, -1945288139, -1945213300, -1944999989, -1944629251, -1944086772, -1943353711, -1942414745, + -1941250214, -1939842441, -1938166561, -1936199807, -1933912258, -1931274378, -1928248720, -1924799179, -1920884332, + -1916465285, -1911499377, -1905951172, -1899784891, -1891449639, -1882086102, -1871092605, -1858022426, -1842504117, + -1824150091, -1802570281, -1777395508, -1748280284, -1714926445, -1677106435, -1634654127, -1587483810, -1535592652, + -1479074019, -1418108336, -1352953154, -1283959587, -1211573312, -1136287716, -1058670176, -979383239, -899114678, + -818587615, -738568308, -659827651, -583145988, -509279027, -438949979, -372825231, -311497711, -255465040, + -205107348, -160673323, -122260482, -89825442, -63156242, -41931466, -25668784, -12980788 }; +# else +# define MDCT_WINDOW_FS_16000_frame_ms_100 NULL +# endif +# ifdef SUBSET_SSWB +Word32 MDCT_WINDOW_FS_24000_frame_ms_100[390] = { + -566705, -1110129, -1685050, -2404955, -3290604, -4357398, -5620992, -7096870, -8797110, + -10732247, -12913348, -15346312, -18033576, -20979359, -24186040, -27648819, -31361639, -35319387, + -39511857, -43926672, -48550894, -53369201, -58364329, -63516998, -68804773, -74208337, -79706124, + -85271101, -90877590, -96504202, -102123140, -107704698, -113222623, -118652834, -123968611, -129140789, + -134141816, -138946789, -143532274, -147872644, -151941696, -155718471, -159183810, -162313004, -165085094, + -167485061, -169496638, -171101141, -172281631, -173021519, -173310456, -173136812, -172483214, -171335676, + -169686052, -167521471, -164827705, -161591409, -157800875, -153444385, -148507128, -142973353, -136828628, + -130059834, -122650769, -114582255, -105836248, -96398529, -86248633, -75363800, -63725732, -51315501, + -38111620, -24094261, -9239538, 6471742, 23056447, 40536457, 58931280, 78254053, 98521159, + 119745967, 141936970, 165102364, 189247343, 214372698, 240474371, 267544931, 295575426, 324551903, + 354450456, 385246198, 416908490, 449403326, 482689758, 516718794, 551441284, 586801891, 622731215, + 659163373, 696029684, 733249762, 770740975, 808417324, 846185475, 883956761, 921637043, 959124688, + 996324031, 1033136615, 1069460208, 1105195788, 1140244773, 1174510921, 1207903363, 1240329980, 1271701586, + 1301936917, 1330960546, 1358704531, 1385106661, 1410109035, 1433668094, 1455740664, 1476295686, 1495314659, + 1512790051, 1528721877, 1543118961, 1555993720, 1567377327, 1577311901, 1585840140, 1593017314, 1598905809, + 1603572858, 1607094048, 1609553036, 1611038032, 1611639187, 1611445924, 1610554709, 1609062783, 1607062660, + 1604647205, 1601904616, 1598915994, 1595761439, 1592514651, 1589411075, 1586578699, 1582990467, 1579691165, + 1576632996, 1573802167, 1571187222, 1568776964, 1566559220, 1564523108, 1562656830, 1560950303, 1559392538, + 1557974462, 1556686097, 1555520279, 1554467590, 1553522528, 1552677071, 1551926380, 1551264122, 1550685851, + 1550186120, 1549761554, 1549406743, 1549118648, 1548892484, 1548724782, 1548611579, 1548548556, 1548532064, + 1548557824, 1548622043, 1548720068, 1548848512, 1549002557, 1549178941, 1549372811, 1549581179, 1549799479, + 1550025081, 1550253392, 1550482320, 1550707996, 1550928257, 1551140242, 1551341918, 1551531258, 1551707132, + 1551867783, 1552012940, 1552142171, 1552255441, 1552353722, 1552437360, 1552508729, 1552569181, 1552621341, + 1552667742, 1552711935, 1552756861, 1552806540, 1552864321, 1552934727, 1553021212, 1553127838, 1553258419, + 1553416594, 1553605935, 1553829154, 1554089545, 1554389317, 1554730803, 1555115388, 1555544621, 1556019161, + 1556539764, 1557105744, 1557717296, 1558373006, 1559071819, 1559811599, 1560590143, 1561405090, 1562252936, + 1563130339, 1564033457, 1564958401, 1565900358, 1566855101, 1567817123, -1568783655, -1569746861, -1570703949, + -1571649364, -1572578812, -1573487389, -1574371102, -1575225988, -1576048579, -1576835227, -1577583436, -1578290863, + -1578955234, -1579575367, -1580149723, -1580678399, -1581160607, -1581597028, -1581988259, -1582335808, -1582641029, + -1582906248, -1583133678, -1583326640, -1583487877, -1583621010, -1583729737, -1583817938, -1583889747, -1583948684, + -1583999362, -1584045193, -1584090279, -1584137621, -1584190841, -1584252527, -1584325358, -1584410718, -1584511035, + -1584626668, -1584758614, -1584906848, -1585070936, -1585250612, -1585444090, -1585650227, -1585866958, -1586092212, + -1586323072, -1586557326, -1586791018, -1587022005, -1587245580, -1587459040, -1587657701, -1587838487, -1587996409, + -1588128112, -1588228637, -1588294501, -1588320923, -1588304007, -1588239369, -1588123278, -1587951328, -1587719494, + -1587424275, -1587060842, -1586626176, -1586114863, -1585523601, -1584847006, -1584080761, -1583218674, -1582256132, + -1581185350, -1580001184, -1578694604, -1577258975, -1575684935, -1573964180, -1572086641, -1570043344, -1567823810, + -1565418712, -1562817696, -1560011672, -1556991601, -1553746487, -1550232508, -1545614483, -1540661510, -1535326382, + -1529347469, -1522634820, -1515104434, -1506662411, -1497214433, -1486667044, -1474925134, -1461899585, -1447505979, + -1431661421, -1414293801, -1395342396, -1374757780, -1352499694, -1328538688, -1302862307, -1275470003, -1246373968, + -1215606643, -1183212323, -1149244754, -1113774081, -1076886070, -1038679407, -999271421, -958778521, -917331256, + -875071965, -832168635, -788780400, -745078907, -701235665, -657439320, -613872407, -570722470, -528178104, + -486428392, -445655594, -406038238, -367747699, -330944214, -295781070, -262392452, -230898968, -201404745, + -173990773, -148716671, -125619512, -104711740, -85981071, -69390841, -54880490, -42367028, -31748204, + -22909680, -15677896, -8320202 }; +# else +# define MDCT_WINDOW_FS_24000_frame_ms_100 NULL +# endif +# ifdef SUBSET_SWB +Word32 MDCT_WINDOW_FS_32000_frame_ms_100[520] = { + -410329, -796949, -1136328, -1530183, -1997206, -2544529, -3177199, -3900727, -4721409, + -5644580, -6674901, -7816606, -9073542, -10449649, -11947654, -13568981, -15314575, -17185616, + -19183576, -21308469, -23557934, -25929130, -28420717, -31030313, -33753791, -36586142, -39522623, + -42558881, -45688908, -48905915, -52203334, -55573600, -59008578, -62500911, -66043225, -69627153, + -73242249, -76878656, -80528547, -84184130, -87834359, -91467738, -95074499, -98645962, -102173556, + -105646999, -109055430, -112389025, -115637823, -118792264, -121843979, -124784385, -127604158, -130292837, + -132842231, -135246333, -137497670, -139586545, -141504332, -143245396, -144804682, -146175706, -147351477, + -148325994, -149093197, -149646348, -149980871, -150094482, -149982174, -149636889, -149052616, -148226262, + -147155224, -145834061, -144257234, -142420419, -140318794, -137947501, -135302755, -132379903, -129173499, + -125677248, -121885484, -117793976, -113398013, -108690888, -103666131, -98316590, -92636250, -86619948, + -80260566, -73550172, -66480755, -59045143, -51237113, -43048956, -34473252, -25502546, -16127957, + -6341514, 3862818, 14491541, 25552349, 37053485, 49000846, 61399638, 74255377, 87574137, + 101359692, 115615618, 130345077, 145550314, 161232640, 177393068, 194030243, 211141818, 228724496, + 246775667, 265291298, 284263733, 303683434, 323542122, 343829307, 364532416, 385638632, 407133703, + 428999825, 451218622, 473771892, 496640476, 519799290, 543222449, 566886347, 590766871, 614834881, + 639060282, 663412218, 687860455, 712370477, 736908535, 761442526, 785938885, 810359699, 834668800, + 858831376, 882812136, 906573323, 930077938, 953289749, 976173461, 998692986, 1020814305, 1042504195, + 1063729320, 1084456529, 1104654343, 1124293323, 1143346837, 1161788685, 1179595571, 1196744793, 1213214499, + 1228990130, 1244053625, 1258390343, 1271989157, 1284842646, 1296945646, 1308295983, 1318894029, 1328742964, + 1337845893, 1346207620, 1353840346, 1360760354, 1366981286, 1372519590, 1377396138, 1381633759, 1385255026, + 1388285177, 1390752262, 1392686884, 1394119237, 1395082423, 1395609697, 1395734288, 1395488163, 1394907750, + 1394029226, 1392887172, 1391513953, 1389943438, 1388208885, 1386340921, 1384367440, 1382316364, 1380214130, + 1378106162, 1376182641, 1374415552, 1372026612, 1369811233, 1367710559, 1365724178, 1363849407, 1362082203, + 1360417744, 1358852161, 1357381258, 1356001076, 1354706993, 1353494673, 1352361089, 1351302228, 1350313689, + 1349392506, 1348535330, 1347739116, 1347001032, 1346317031, 1345686404, 1345105561, 1344572298, 1344084536, + 1343640384, 1343238137, 1342875748, 1342550922, 1342263301, 1342010831, 1341791477, 1341604203, 1341447356, + 1341320237, 1341220346, 1341146654, 1341097800, 1341072665, 1341069082, 1341085615, 1341121386, 1341174740, + 1341243587, 1341326852, 1341422956, 1341530950, 1341648658, 1341774344, 1341907686, 1342046793, 1342189996, + 1342336371, 1342484315, 1342633509, 1342781772, 1342928111, 1343072442, 1343213120, 1343349339, 1343480101, + 1343605189, 1343724192, 1343836029, 1343940104, 1344037064, 1344126250, 1344207727, 1344281010, 1344347228, + 1344406398, 1344458631, 1344504740, 1344545486, 1344582197, 1344614878, 1344644716, 1344673602, 1344702406, + 1344732123, 1344764116, 1344799913, 1344841581, 1344889533, 1344945396, 1345011275, 1345087987, 1345177164, + 1345279600, 1345397199, 1345531309, 1345682002, 1345850876, 1346039023, 1346247352, 1346476070, 1346725599, + 1346997017, 1347290788, 1347606421, 1347944342, 1348304546, 1348687326, 1349091759, 1349517389, 1349964590, + 1350432001, 1350919119, 1351424549, 1351948150, 1352488782, 1353044492, 1353614173, 1354196920, 1354791164, + 1355395130, 1356006741, 1356625062, 1357248513, 1357874066, -1358501833, -1359127963, -1359752565, -1360372594, + -1360986451, -1361593178, -1362190669, -1362777107, -1363350886, -1363911059, -1364456475, -1364985125, -1365495818, + -1365988370, -1366461329, -1366914145, -1367345397, -1367755425, -1368143727, -1368509329, -1368852492, -1369173176, + -1369471783, -1369747786, -1370001627, -1370234382, -1370446455, -1370638040, -1370810046, -1370963570, -1371100229, + -1371220085, -1371324505, -1371415420, -1371493639, -1371560818, -1371617789, -1371666695, -1371709196, -1371745710, + -1371778346, -1371808661, -1371838047, -1371867517, -1371897959, -1371931304, -1371968763, -1372010342, -1372057396, + -1372110702, -1372171094, -1372238686, -1372313498, -1372396683, -1372487751, -1372586771, -1372693072, -1372807320, + -1372928910, -1373056739, -1373190393, -1373329652, -1373473500, -1373621114, -1373770813, -1373922515, -1374075203, + -1374226645, -1374376513, -1374523166, -1374665655, -1374802265, -1374931057, -1375051695, -1375162397, -1375260925, + -1375346302, -1375416903, -1375471622, -1375508310, -1375525267, -1375521592, -1375495812, -1375445706, -1375370134, + -1375267707, -1375137383, -1374976617, -1374784711, -1374559999, -1374301455, -1374007032, -1373674676, -1373304076, + -1372892947, -1372439276, -1371941405, -1371397503, -1370805562, -1370163465, -1369467701, -1368717718, -1367909588, + -1367040649, -1366108055, -1365108685, -1364039842, -1362897427, -1361677778, -1360378277, -1358995048, -1357523990, + -1355961737, -1354304757, -1352549921, -1350693234, -1348731568, -1346663222, -1344488796, -1342151873, -1339094859, + -1335868526, -1332575618, -1329015998, -1325134514, -1320899332, -1316281926, -1311249778, -1305767783, -1299801189, + -1293316467, -1286278496, -1278652937, -1270407089, -1261510752, -1251931832, -1241641304, -1230612600, -1218823121, + -1206251778, -1192882032, -1178699247, -1163691417, -1147850058, -1131172617, -1113659053, -1095312137, -1076139342, + -1056154695, -1035374650, -1013817533, -991505119, -968465043, -944729088, -920331658, -895311402, -869713787, + -843580319, -816956722, -789893244, -762442487, -734669461, -706629428, -678385082, -649998064, -621530231, + -593051422, -564628794, -536328929, -508220768, -480373259, -452855166, -425735746, -399081503, -372957401, + -347428629, -322556345, -298398778, -275013415, -252453167, -230765335, -209993816, -190178661, -171354066, + -153547820, -136781064, -121069202, -106422336, -92843298, -80326106, -68858674, -58425411, -49003701, + -40559788, -33054527, -26453090, -20722011, -15806421, -11453718, -6043487 }; +# else +# define MDCT_WINDOW_FS_32000_frame_ms_100 NULL +# endif +# ifdef SUBSET_FB +Word32 MDCT_WINDOW_FS_48000_frame_ms_100[780] = { + -260941, -512326, -694531, -879311, -1080918, -1308853, -1562751, -1845827, -2158684, + -2503004, -2880077, -3290946, -3737685, -4221002, -4742864, -5303548, -5904756, -6546614, + -7230857, -7957740, -8729060, -9544323, -10404756, -11309433, -12259734, -13255019, -14296724, + -15384139, -16518209, -17697344, -18921986, -20190385, -21503384, -22859520, -24259194, -25700342, + -27183029, -28705009, -30266328, -31864635, -33500032, -35169872, -36873876, -38609380, -40375887, + -42170731, -43993030, -45839524, -47709533, -49600244, -51511244, -53439376, -55383757, -57340675, + -59308752, -61284610, -63267293, -65253972, -67243943, -69233263, -71220507, -73201745, -75175694, + -77138930, -79090353, -81026756, -82947219, -84848184, -86728232, -88583507, -90412766, -92212306, + -93980997, -95715499, -97414829, -99075933, -100697747, -102276727, -103811934, -105299541, -106738717, + -108126346, -109462104, -110743333, -111969072, -113135967, -114242829, -115286640, -116267230, -117181898, + -118030913, -118811562, -119523250, -120163192, -120730923, -121223904, -121641755, -121981772, -122243774, + -122425704, -122528356, -122549198, -122488317, -122342868, -122112204, -121794056, -121388712, -120894363, + -120311595, -119637953, -118873094, -118014671, -117062760, -116014831, -114871079, -113629173, -112289425, + -110849719, -109309933, -107667532, -105922420, -104072007, -102115976, -100051888, -97879875, -95597465, + -93204875, -90699195, -88080200, -85345024, -82492843, -79520968, -76429175, -73215366, -69879179, + -66417490, -62829616, -59111848, -55264005, -51283182, -47168943, -42918760, -38531620, -34004372, + -29336594, -24525462, -19570192, -14467231, -9215895, -3812888, 1741410, 7449630, 13312759, + 19333517, 25513103, 31854549, 38357631, 45024786, 51855914, 58853769, 66018789, 73353520, + 80857218, 88531868, 96377212, 104395033, 112584867, 120948431, 129484622, 138194897, 147077806, + 156134120, 165362222, 174762717, 184333381, 194074737, 203984869, 214063752, 224308471, 234717970, + 245288658, 256019674, 266907692, 277950967, 289145264, 300489211, 311977987, 323609345, 335378203, + 347280982, 359312288, 371469093, 383745604, 396138434, 408640853, 421247404, 433950689, 446746484, + 459627611, 472589454, 485624370, 498725842, 511885724, 525097999, 538353697, 551646906, 564968308, + 578310445, 591664155, 605022969, 618377829, 631721846, 645044713, 658338326, 671592921, 684801497, + 697954218, 711043692, 724059806, 736994360, 749837478, 762581648, 775216823, 787735715, 800128161, + 812386829, 824502387, 836468309, 848275065, 859915578, 871380881, 882663894, 893755956, 904651429, + 915341669, 925821650, 936083534, 946122397, 955931903, 965507514, 974842174, 983932079, 992771963, + 1001359538, 1009689065, 1017758097, 1025562027, 1033099052, 1040366302, 1047363095, 1054086968, 1060539102, + 1066717272, 1072622704, 1078255082, 1083616279, 1088705978, 1093526428, 1098077639, 1102363841, 1106387711, + 1110154526, 1113666093, 1116927603, 1119941829, 1122715077, 1125251563, 1127558143, 1129638911, 1131501374, + 1133150240, 1134593560, 1135837167, 1136890075, 1137758087, 1138450616, 1138974310, 1139338430, 1139549551, + 1139617253, 1139547254, 1139350624, 1139033981, 1138607794, 1138078811, 1137457063, 1136748191, 1135963275, + 1135107610, 1134191756, 1133220410, 1132203794, 1131145038, 1130056206, 1128938553, 1127804154, 1126651875, + 1125505224, 1124387956, 1123424960, 1122502936, 1121204059, 1119950632, 1118742198, 1117576653, 1116454214, + 1115372925, 1114332841, 1113331819, 1112370092, 1111445403, 1110557933, 1109705650, 1108888492, 1108104203, + 1107353139, 1106633126, 1105944161, 1105284140, 1104653414, 1104049906, 1103473745, 1102922793, 1102397465, + 1101895930, 1101418393, 1100962642, 1100529407, 1100117107, 1099725702, 1099353203, 1099000764, 1098666499, + 1098350488, 1098051309, 1097769862, 1097504226, 1097255015, 1097020632, 1096801846, 1096597180, 1096407228, + 1096230254, 1096067339, 1095917048, 1095779800, 1095654043, 1095540974, 1095438919, 1095348396, 1095268166, + 1095199173, 1095139611, 1095090409, 1095050175, 1095019519, 1094996963, 1094983471, 1094977391, 1094979525, + 1094988385, 1095004796, 1095027271, 1095056499, 1095090869, 1095131425, 1095176627, 1095227052, 1095281232, + 1095340201, 1095402343, 1095468278, 1095536534, 1095608171, 1095681620, 1095757514, 1095834402, 1095913392, + 1095992947, 1096073625, 1096154019, 1096235421, 1096316155, 1096396797, 1096476293, 1096555751, 1096633346, + 1096710075, 1096784773, 1096858327, 1096929351, 1096998877, 1097065514, 1097130458, 1097192392, 1097252182, + 1097308660, 1097363134, 1097414177, 1097462864, 1097508260, 1097551529, 1097591240, 1097628824, 1097663320, + 1097695680, 1097724878, 1097752577, 1097777519, 1097800889, 1097821938, 1097842083, 1097860192, 1097877707, + 1097893767, 1097909925, 1097925238, 1097941056, 1097956579, 1097973457, 1097990704, 1098009705, 1098029761, + 1098052600, 1098077182, 1098104865, 1098135087, 1098169468, 1098206820, 1098248699, 1098294539, 1098345796, + 1098401373, 1098462829, 1098529452, 1098602617, 1098681182, 1098766743, 1098858507, 1098957729, 1099063375, + 1099176931, 1099297350, 1099425943, 1099561602, 1099705648, 1099857107, 1100017184, 1100184629, 1100360829, + 1100544624, 1100737006, 1100936785, 1101145313, 1101361273, 1101585583, 1101817094, 1102057069, 1102303875, + 1102558446, 1102819734, 1103088684, 1103363640, 1103645734, 1103933619, 1104228082, 1104527573, 1104833025, + 1105142974, 1105458288, 1105777328, 1106100968, 1106427742, 1106758401, 1107091175, 1107426928, 1107764262, + 1108103811, 1108443736, 1108785137, -1109126464, -1109468075, -1109808418, -1110148595, -1110486758, -1110823540, + -1111157536, -1111489609, -1111817975, -1112143382, -1112464352, -1112781755, -1113093934, -1113401755, -1113703734, + -1114000803, -1114291390, -1114576277, -1114854097, -1115125982, -1115390248, -1115647841, -1115897690, -1116140732, + -1116375302, -1116602670, -1116821661, -1117033199, -1117235935, -1117431235, -1117617882, -1117796873, -1117967024, + -1118129738, -1118283734, -1118430232, -1118568236, -1118699084, -1118821642, -1118937239, -1119044805, -1119145850, + -1119239316, -1119326479, -1119406526, -1119481081, -1119548979, -1119611618, -1119668271, -1119720525, -1119767262, + -1119809963, -1119848051, -1119883112, -1119913933, -1119942166, -1119967238, -1119990533, -1120010991, -1120030373, + -1120047967, -1120065185, -1120081021, -1120097158, -1120112780, -1120129265, -1120145650, -1120163521, -1120181998, + -1120202553, -1120224032, -1120247880, -1120273333, -1120301601, -1120331401, -1120364428, -1120399639, -1120438004, + -1120478543, -1120522718, -1120569068, -1120618782, -1120670906, -1120726540, -1120784227, -1120845302, -1120908575, + -1120974930, -1121043024, -1121114079, -1121186673, -1121261863, -1121338234, -1121416691, -1121496045, -1121577316, + -1121658638, -1121741144, -1121823756, -1121907065, -1121989354, -1122071945, -1122153400, -1122234287, -1122313032, + -1122390771, -1122466015, -1122539413, -1122609356, -1122676929, -1122740622, -1122801070, -1122856613, -1122908312, + -1122954661, -1122996249, -1123031496, -1123061471, -1123084522, -1123101354, -1123110442, -1123112631, -1123106394, + -1123092556, -1123069422, -1123037982, -1122996721, -1122946267, -1122885196, -1122814464, -1122732221, -1122639444, + -1122534864, -1122419021, -1122290207, -1122149656, -1121995788, -1121829044, -1121647967, -1121453676, -1121244410, + -1121020792, -1120781333, -1120526836, -1120255693, -1119968555, -1119663488, -1119341437, -1119000986, -1118642248, + -1118263342, -1117865480, -1117446686, -1117006965, -1116544763, -1116060878, -1115553126, -1115021782, -1114465065, + -1113883468, -1113274918, -1112639632, -1111975615, -1111283324, -1110560756, -1109808026, -1109023086, -1108206431, + -1107355953, -1106471748, -1105551963, -1104596956, -1103604680, -1102575570, -1101507722, -1100401422, -1099254985, + -1098068882, -1096841318, -1095572135, -1093824443, -1092028958, -1090297711, -1088504795, -1086622918, -1084627237, + -1082515433, -1080275819, -1077903929, -1075390736, -1072729748, -1069911131, -1066927638, -1063770248, -1060430896, + -1056901504, -1053173546, -1049238310, -1045087876, -1040714437, -1036109920, -1031267875, -1026179775, -1020838674, + -1015237521, -1009370093, -1003230227, -996813209, -990113245, -983126698, -975849235, -968277852, -960408557, + -952239544, -943768000, -934993585, -925915442, -916534205, -906849190, -896862428, -886574831, -875990255, + -865111684, -853943783, -842489873, -830755484, -818745230, -806465779, -793923840, -781127868, -768084617, + -754803973, -741294413, -727567055, -713632929, -699502178, -685184041, -670691428, -656036019, -641230326, + -626286760, -611223511, -596053211, -580789367, -565447177, -550042966, -534590207, -519104101, -503600887, + -488098220, -472611780, -457157918, -441752495, -426412611, -411154642, -395995557, -380951672, -366040108, + -351277307, -336679493, -322262126, -308041137, -294032383, -280251079, -266711613, -253427888, -240414233, + -227684137, -215250748, -203125310, -191319486, -179843288, -168707738, -157921160, -147492810, -137428529, + -127735992, -118418783, -109483185, -100930269, -92764786, -84984919, -77594007, -70587122, -63966522, + -57723857, -51860743, -46364893, -41238076, -36463273, -32043815, -27956560, -24209143, -20769591, + -17655994, -14819879, -12293428, -9917917, -7494462, -3886267 }; +# else +# define MDCT_WINDOW_FS_48000_frame_ms_100 NULL +# endif + +# ifdef PACK_MDCT_WINDOWS +RAM_ALIGN const Word16 * LowDelayShapes_n960[6]; +# else +RAM_ALIGN const Word32 *const LowDelayShapes_n960[6] = { MDCT_WINDOW_FS_8000_frame_ms_100, MDCT_WINDOW_FS_16000_frame_ms_100, + MDCT_WINDOW_FS_24000_frame_ms_100, MDCT_WINDOW_FS_32000_frame_ms_100, + MDCT_WINDOW_FS_48000_frame_ms_100, NULL }; +# endif + +#else +RAM_ALIGN const Word16 *const LowDelayShapes_n960[6] = {LowDelayShapes_n960_N80, LowDelayShapes_n960_N160, + LowDelayShapes_n960_N240, LowDelayShapes_n960_N320, + LowDelayShapes_n960_N480, NULL}; +#endif + +# ifdef ENABLE_HR_MODE +RAM_ALIGN const Word16 LowDelayShapes_n960_len_5ms[6] = {70, 140, 210, 280, 420, 840}; +# else +RAM_ALIGN const Word16 LowDelayShapes_n960_len_5ms[5] = {70, 140, 210, 280, 420}; +# endif + +RAM_ALIGN const Word16 LowDelayShapes_n960_la_zeroes_5ms[NUM_SAMP_FREQ] = {10, + 20, + 30, + 40, + 60 +# ifdef ENABLE_HR_MODE + , 120 +# endif +}; + +# ifdef ENABLE_HR_MODE +# ifdef SUBSET_NB +RAM_ALIGN const Word32 MDCT_WINDOW_FS_8000_frame_ms_25[40] = { + 9151354, 37109627, 83712740, 151998210, 242715442, 354150912, 482126354, 620379048, + 761296862, 896901837, 1019922302, 1124767307, 1208223590, 1269735636, 1311202326, 1336324669, + 1349655864, 1355605615, 1357680847, 1358157082, -1358157082, -1357680847, -1355605615, -1349655864, + -1336324669, -1311202326, -1269735636, -1208223590, -1124767307, -1019922302, -896901837, -761296862, + -620379048, -482126354, -354150912, -242715442, -151998210, -83712740, -37109627, -9151354}; +# else +# define MDCT_WINDOW_FS_8000_frame_ms_25 NULL +# endif +# ifdef SUBSET_WB +RAM_ALIGN const Word32 MDCT_WINDOW_FS_16000_frame_ms_25[80] = { + 9151337, 23138265, 42763907, 68767772, 101782534, 142300433, 190643613, 246939893, 311105303, + 382834448, 461599452, 546657840, 637069348, 731721202, 829361019, 928636120, 1028137675, 1126447891, + 1222188210, 1314066414, 1400920509, 1481757333, 1555784035, 1622430811, 1681363664, 1732486397, 1775931558, + 1812040689, 1841334847, 1864477074, 1882229157, 1895405578, 1904827946, 1911283293, 1915489337, 1918069115, + 1919536352, 1920291661, 1920628396, 1920745966, -1920745966, -1920628396, -1920291661, -1919536352, -1918069115, + -1915489337, -1911283293, -1904827946, -1895405578, -1882229157, -1864477074, -1841334847, -1812040689, -1775931558, + -1732486397, -1681363664, -1622430811, -1555784035, -1481757333, -1400920509, -1314066414, -1222188210, -1126447891, + -1028137675, -928636120, -829361019, -731721202, -637069348, -546657840, -461599452, -382834448, -311105303, + -246939893, -190643613, -142300433, -101782534, -68767772, -42763907, -23138265, -9151337 }; +# else +# define MDCT_WINDOW_FS_16000_frame_ms_25 NULL +# endif +# ifdef SUBSET_SSWB +RAM_ALIGN const Word32 MDCT_WINDOW_FS_24000_frame_ms_25[120] = { + 6100899, 12864132, 21489409, 32196712, 45171875, 60580072, 78565098, 99246695, 122717635, + 149041013, 178247915, 210335558, 245265970, 282965259, 323323502, 366195270, 411400805, 458727828, + 507933969, 558749783, 610882290, 664019005, 717832373, 771984525, 826132286, 879932323, 933046345, + 985146249, 1035919114, 1085071930, 1132335985, 1177470792, 1220267489, 1260551623, 1298185265, 1333068386, + 1365139469, 1394375330, 1420790145, 1444433697, 1465388876, 1483768499, 1499711524, 1513378754, 1524948163, + 1534609980, 1542561681, 1549003060, 1554131535, 1558137849, 1561202310, 1563491688, 1565156852, 1566331192, + 1567129839, 1567649635, 1567969785, 1568153080, 1568247554, 1568288448, -1568288448, -1568247554, -1568153080, + -1567969785, -1567649635, -1567129839, -1566331192, -1565156852, -1563491688, -1561202310, -1558137849, -1554131535, + -1549003060, -1542561681, -1534609980, -1524948163, -1513378754, -1499711524, -1483768499, -1465388876, -1444433697, + -1420790145, -1394375330, -1365139469, -1333068386, -1298185265, -1260551623, -1220267489, -1177470792, -1132335985, + -1085071930, -1035919114, -985146249, -933046345, -879932323, -826132286, -771984525, -717832373, -664019005, + -610882290, -558749783, -507933969, -458727828, -411400805, -366195270, -323323502, -282965259, -245265970, + -210335558, -178247915, -149041013, -122717635, -99246695, -78565098, -60580072, -45171875, -32196712, + -21489409, -12864132, -6100899 }; +# else +# define MDCT_WINDOW_FS_24000_frame_ms_25 NULL +# endif +# ifdef SUBSET_SWB +RAM_ALIGN const Word32 MDCT_WINDOW_FS_32000_frame_ms_25[160] = { + 4575679, 8767860, 13776210, 19722611, 26689435, 34747238, 43959497, 54383445, 66069923, + 79062931, 93399091, 109107106, 126207257, 144710958, 164620379, 185928150, 208617151, 232660396, + 258021008, 284652300, 312497943, 341492250, 371560541, 402619617, 434578316, 467338167, 500794115, + 534835326, 569346062, 604206611, 639294264, 674484335, 709651210, 744669409, 779414654, 813764938, + 847601565, 880810169, 913281687, 944913281, 975609194, 1005281536, 1033850982, 1061247376, 1087410241, + 1112289173, 1135844126, 1158045581, 1178874586, 1198322683, 1216391705, 1233093455, 1248449271, 1262489470, + 1275252698, 1286785178, 1297139874, 1306375586, 1314555990, 1321748631, 1328023899, 1333453999, 1338111934, + 1342070524, 1345401476, 1348174521, 1350456644, 1352311405, 1353798377, 1354972700, 1355884752, 1356579954, + 1357098688, 1357476324, 1357743362, 1357925654, 1358044707, 1358118045, 1358159612, 1358180205, -1358180205, + -1358159612, -1358118045, -1358044707, -1357925654, -1357743362, -1357476324, -1357098688, -1356579954, -1355884752, + -1354972700, -1353798377, -1352311405, -1350456644, -1348174521, -1345401476, -1342070524, -1338111934, -1333453999, + -1328023899, -1321748631, -1314555990, -1306375586, -1297139874, -1286785178, -1275252698, -1262489470, -1248449271, + -1233093455, -1216391705, -1198322683, -1178874586, -1158045581, -1135844126, -1112289173, -1087410241, -1061247376, + -1033850982, -1005281536, -975609194, -944913281, -913281687, -880810169, -847601565, -813764938, -779414654, + -744669409, -709651210, -674484335, -639294264, -604206611, -569346062, -534835326, -500794115, -467338167, + -434578316, -402619617, -371560541, -341492250, -312497943, -284652300, -258021008, -232660396, -208617151, + -185928150, -164620379, -144710958, -126207257, -109107106, -93399091, -79062931, -66069923, -54383445, + -43959497, -34747238, -26689435, -19722611, -13776210, -8767860, -4575679 }; +# else +# define MDCT_WINDOW_FS_32000_frame_ms_25 NULL +# endif +# ifdef SUBSET_FB +RAM_ALIGN const Word32 MDCT_WINDOW_FS_48000_frame_ms_25[240] = { + 3050456, 5295536, 7753004, 10501942, 13578229, 17006497, 20806969, 24997575, 29594719, + 34613583, 40068237, 45971662, 52335732, 59171174, 66487516, 74293042, 82594732, 91398213, + 100707709, 110526001, 120854381, 131692624, 143038956, 154890033, 167240926, 180085109, 193414462, + 207219271, 221488240, 236208515, 251365705, 266943917, 282925795, 299292569, 316024108, 333098980, + 350494519, 368186897, 386151203, 404361529, 422791056, 441412148, 460196455, 479115006, 498138325, + 517236531, 536379451, 555536738, 574677975, 593772799, 612791011, 631702693, 650478321, 669088878, + 687505964, 705701904, 723649854, 741323899, 758699157, 775751861, 792459455, 808800673, 824755609, + 840305794, 855434253, 870125559, 884365881, 898143024, 911446458, 924267340, 936598527, 948434586, + 959771781, 970608068, 980943072, 990778052, 1000115868, 1008960932, 1017319150, 1025197865, 1032605778, + 1039552878, 1046050356, 1052110513, 1057746665, 1062973048, 1067804709, 1072257401, 1076347473, 1080091765, + 1083507488, 1086612119, 1089423293, 1091958692, 1094235940, 1096272508, 1098085614, 1099692137, 1101108528, + 1102350741, 1103434158, 1104373531, 1105182928, 1105875693, 1106464406, 1106960861, 1107376047, 1107720140, + 1108002502, 1108231688, 1108415463, 1108560820, 1108674010, 1108760573, 1108825377, 1108872657, 1108906059, + 1108928685, 1108943144, 1108951592, -1108951592, -1108943144, -1108928685, -1108906059, -1108872657, -1108825377, + -1108760573, -1108674010, -1108560820, -1108415463, -1108231688, -1108002502, -1107720140, -1107376047, -1106960861, + -1106464406, -1105875693, -1105182928, -1104373531, -1103434158, -1102350741, -1101108528, -1099692137, -1098085614, + -1096272508, -1094235940, -1091958692, -1089423293, -1086612119, -1083507488, -1080091765, -1076347473, -1072257401, + -1067804709, -1062973048, -1057746665, -1052110513, -1046050356, -1039552878, -1032605778, -1025197865, -1017319150, + -1008960932, -1000115868, -990778052, -980943072, -970608068, -959771781, -948434586, -936598527, -924267340, + -911446458, -898143024, -884365881, -870125559, -855434253, -840305794, -824755609, -808800673, -792459455, + -775751861, -758699157, -741323899, -723649854, -705701904, -687505964, -669088878, -650478321, -631702693, + -612791011, -593772799, -574677975, -555536738, -536379451, -517236531, -498138325, -479115006, -460196455, + -441412148, -422791056, -404361529, -386151203, -368186897, -350494519, -333098980, -316024108, -299292569, + -282925795, -266943917, -251365705, -236208515, -221488240, -207219271, -193414462, -180085109, -167240926, + -154890033, -143038956, -131692624, -120854381, -110526001, -100707709, -91398213, -82594732, -74293042, + -66487516, -59171174, -52335732, -45971662, -40068237, -34613583, -29594719, -24997575, -20806969, + -17006497, -13578229, -10501942, -7753004, -5295536, -3050456 }; +# else +# define MDCT_WINDOW_FS_48000_frame_ms_25 NULL +# endif +#endif + +# ifdef ENABLE_HR_MODE +# ifdef SUBSET_NB +RAM_ALIGN const Word32 MDCT_WINDOW_FS_8000_frame_ms_50[70] = { + 1912909, 7335521, 18325724, 36910622, 64974178, 104198418, 155981280, 221305462, 300589079, + 393635120, 499623692, 617106989, 744004208, 877694270, 1015162828, 1153137249, 1288239038, 1417150998, + 1536791945, 1644447880, 1737962977, 1815833349, 1877263804, 1922306058, 1951829636, 1967471711, 1971505676, + 1966594148, 1955602246, 1941502114, 1927310881, 1914588900, 1905592841, 1900063224, 1897652925, 1897963170, + 1900562354, 1904988644, 1910750498, 1917333371, -1924208315, -1930837552, -1936677590, -1941187989, -1943846368, + -1944164165, -1941697923, -1936063536, -1926966575, -1914246866, -1895468226, -1869147188, -1832534703, -1783214725, + -1719263259, -1639330989, -1542778136, -1429960741, -1302431717, -1162827131, -1014564422, -861762630, -709123640, + -561741289, -424627691, -302165309, -197940066, -114914393, -55161222, -18600494 }; +# else +# define MDCT_WINDOW_FS_8000_frame_ms_50 NULL +# endif +# ifdef SUBSET_WB +RAM_ALIGN const Word32 MDCT_WINDOW_FS_16000_frame_ms_50[140] = { + 834388, 2023133, 3917156, 6701705, 10565521, 15685856, 22235650, 30384241, 40286022, + 52095516, 65948322, 81967398, 100265346, 120927126, 144016301, 169574495, 197607091, 228098907, + 261006859, 296253144, 333742048, 373344049, 414902600, 458235462, 503129294, 549353006, 596652543, + 644762423, 693401311, 742277119, 791098023, 839557429, 887360048, 934211532, 979820668, 1023922652, + 1066251747, 1106569674, 1144656239, 1180316465, 1213396318, 1243758349, 1271300584, 1295946391, 1317664404, + 1336461856, 1352374790, 1365487180, 1375907723, 1383780765, 1389286272, 1392625157, 1394020824, 1393712039, + 1391944281, 1388970703, 1385052050, 1380450904, 1375432870, 1370255673, 1365493257, 1360311818, 1355815371, + 1351987330, 1348809662, 1346259072, 1344307938, 1342925268, 1342077528, 1341729312, 1341843769, 1342382749, + 1343306801, 1344575110, 1346145481, 1347974400, 1350017219, 1352228384, 1354561632, 1356970112, -1359406807, + -1361823903, -1364173707, -1366408059, -1368478813, -1370338075, -1371938535, -1373233878, -1374179166, -1374731135, + -1374848407, -1374491689, -1373624022, -1372211199, -1370222452, -1367631371, -1364416934, -1360564607, -1356067324, + -1350921653, -1344029735, -1336226439, -1326949476, -1315967441, -1303050661, -1287981322, -1270565808, -1250633190, + -1228037147, -1202659404, -1174406746, -1143219019, -1109079369, -1072015866, -1032110341, -989504343, -944386484, + -896992664, -847599093, -796504062, -744037160, -690570612, -636495945, -582226621, -528203723, -474881089, + -422717084, -372160937, -323635430, -277529378, -234193138, -193941056, -157058932, -123809989, -94431397, + -69117849, -47990622, -31057417, -18172622, -9019056 }; +# else +# define MDCT_WINDOW_FS_16000_frame_ms_50 NULL +# endif +# ifdef SUBSET_SSWB +RAM_ALIGN const Word32 MDCT_WINDOW_FS_24000_frame_ms_50[210] = { + 564151, 1104419, 1865494, 2894039, 4235165, 5932159, 8033172, 10580362, 13613959, + 17177173, 21310358, 26053470, 31441110, 37512859, 44302113, 51841191, 60158985, 69285016, + 79244161, 90055834, 101740044, 114307277, 127770768, 142131061, 157390145, 173545185, 190584386, + 208498576, 227265343, 246867205, 267275117, 288457873, 310382420, 333006130, 356286886, 380173162, + 404613227, 429551030, 454926373, 480676280, 506737023, 533041379, 559520739, 586104532, 612719819, + 639298867, 665764101, 692044954, 718069120, 743765156, 769064062, 793893410, 818192510, 841895640, + 864939671, 887267243, 908824605, 929558785, 949422426, 968375342, 986383128, 1003413393, 1019433821, + 1034427350, 1048371873, 1061257817, 1073079562, 1083838763, 1093544388, 1102204732, 1109843920, 1116483171, + 1122153769, 1126889366, 1130731703, 1133726105, 1135920322, 1137368676, 1138125139, 1138249333, 1137797435, + 1136832092, 1135413661, 1133604477, 1131468200, 1129067483, 1126468580, 1123733695, 1120926768, 1118121453, + 1115661504, 1112733456, 1110039679, 1107592275, 1105388417, 1103424195, 1101694785, 1100194540, 1098917076, + 1097855409, 1097002014, 1096348961, 1095887953, 1095610427, 1095507566, 1095570351, 1095789547, 1096155725, + 1096659227, 1097290187, 1098038501, 1098893850, 1099845706, 1100883348, 1101995893, 1103172315, 1104401472, + 1105672121, 1106972938, 1108292669, -1109619302, -1110942189, -1112249205, -1113528884, -1114769580, -1115959638, + -1117087420, -1118141328, -1119109856, -1119981619, -1120745408, -1121390225, -1121905319, -1122280224, -1122504764, + -1122569097, -1122463704, -1122179448, -1121707579, -1121039818, -1120168401, -1119086203, -1117786804, -1116264645, + -1114515111, -1112534671, -1110320979, -1107872954, -1105190944, -1102290376, -1098369607, -1094349090, -1089850335, + -1084803470, -1079152632, -1072839707, -1065811535, -1058014404, -1049399648, -1039922082, -1029539502, -1018216878, + -1005918442, -992617105, -978287110, -962909114, -946468188, -928955851, -910372331, -890723372, -870025772, + -848301812, -825588219, -801924529, -777362543, -751959302, -725776798, -698887464, -671358557, -643273732, + -614708529, -585759042, -556515015, -527075925, -497538887, -468010517, -438598442, -409412725, -380564000, + -352163661, -324321484, -297140687, -270721761, -245158912, -220540161, -196946958, -174455223, -153136078, + -133056674, -114280750, -96868231, -80874056, -66345855, -53320577, -41820223, -31847346, -23380692, + -16371397, -10739000, -6256916 }; +# else +# define MDCT_WINDOW_FS_24000_frame_ms_50 NULL +# endif +# ifdef SUBSET_SWB +RAM_ALIGN const Word32 MDCT_WINDOW_FS_32000_frame_ms_50[280] = { + 882763, 1521118, 2358563, 3425984, 4762639, 6395771, 8362131, 10689006, 13418692, + 16576000, 20193865, 24299300, 28928500, 34104984, 39865074, 46229302, 53228467, 60887056, + 69236180, 78292965, 88087142, 98634050, 109959733, 122081209, 135019424, 148782425, 163392710, + 178855011, 195181305, 212377526, 230451659, 249395809, 269219382, 289915225, 311477904, 333897457, + 357170677, 381274098, 406199848, 431929301, 458441926, 485710203, 513718369, 542430861, 571822196, + 601857045, 632504350, 663719412, 695470641, 727711424, 760403450, 793496784, 826949741, 860710772, + 894737379, 928972875, 963373530, 997882662, 1032450522, 1067021806, 1101552211, 1135977909, 1170251366, + 1204317771, 1238127288, 1271622131, 1304759595, 1337479850, 1369736833, 1401482421, 1432674669, 1463259078, + 1493196881, 1522440628, 1550955893, 1578698536, 1605635690, 1631726882, 1656947594, 1681264014, 1704659250, + 1727103999, 1748576205, 1769054798, 1788533700, 1806990078, 1824418644, 1840812466, 1856170505, 1870488908, + 1883781944, 1896047096, 1907297858, 1917548829, 1926819646, 1935123035, 1942490021, 1948939055, 1954502859, + 1959211322, 1963101243, 1966202102, 1968559589, 1970206964, 1971189283, 1971546464, 1971324022, 1970559672, + 1969305529, 1967600289, 1965492731, 1963026251, 1960251018, 1957207403, 1953949375, 1950518787, 1946965804, + 1943332468, 1939669743, 1936018211, 1933074896, 1929170790, 1925511708, 1922091318, 1918913458, 1915970631, + 1913265545, 1910789617, 1908544525, 1906520767, 1904719178, 1903129502, 1901751868, 1900575443, 1899599816, + 1898813735, 1898216400, 1897796234, 1897552155, 1897472330, 1897555435, 1897789418, 1898172732, 1898693091, + 1899348726, 1900127098, 1901026195, 1902033230, 1903145941, 1904351313, 1905646871, 1907019391, 1908466229, + 1909973977, 1911539869, 1913150363, 1914802598, 1916482920, 1918188394, 1919905292, -1921630629, -1923350609, + -1925062194, -1926751519, -1928415501, -1930040212, -1931622556, -1933148598, -1934615259, -1936008644, -1937325739, + -1938552759, -1939686835, -1940714349, -1941632651, -1942428351, -1943099088, -1943631764, -1944024336, -1944264050, + -1944349204, -1944267410, -1944017355, -1943587051, -1942975631, -1942171601, -1941174620, -1939973809, -1938569504, + -1936951577, -1935121231, -1933069293, -1930798023, -1928299406, -1925576914, -1922623868, -1919445128, -1916035514, + -1912401346, -1908538993, -1903226832, -1898165387, -1892651677, -1886636702, -1880083188, -1872945708, -1865186866, + -1856760038, -1847633035, -1837760249, -1827110036, -1815644193, -1803335041, -1790145270, -1776055593, -1761033530, + -1745059396, -1728108424, -1710167501, -1691212572, -1671237793, -1650226116, -1628174600, -1605075941, -1580936677, + -1555754529, -1529546654, -1502320930, -1474101256, -1444909741, -1414780308, -1383738492, -1351831573, -1319095487, + -1285577912, -1251324682, -1216394344, -1180827594, -1144691880, -1108040592, -1070930654, -1033434550, -995621142, + -957552560, -919309430, -880954958, -842572374, -804234470, -766025822, -728021485, -690307576, -652960034, + -616065598, -579699451, -543943367, -508866771, -474546527, -441046910, -408438534, -376778154, -346129113, + -316541929, -288074358, -260771792, -234687576, -209863469, -186348825, -164181088, -143404068, -124048067, + -106147028, -89718620, -74780184, -61329654, -49360094, -38842904, -29739589, -21991349, -15513048, + -10180154 }; +# else +# define MDCT_WINDOW_FS_32000_frame_ms_50 NULL +# endif +# ifdef SUBSET_FB +RAM_ALIGN const Word32 MDCT_WINDOW_FS_48000_frame_ms_50[420] = { + 641452, 963468, 1344309, 1798864, 2336113, 2963727, 3690212, 4523143, 5470567, + 6539876, 7738462, 9075874, 10560639, 12200013, 14000287, 15968479, 18112467, 20440430, + 22959153, 25675517, 28597257, 31731569, 35084700, 38662325, 42471171, 46518292, 50811124, + 55354756, 60154720, 65216952, 70547205, 76150562, 82031461, 88195322, 94647798, 101393537, + 108435354, 115776449, 123420676, 131372779, 139634617, 148207504, 157093536, 166295700, 175815910, + 185653595, 195807761, 206278987, 217068929, 228177014, 239600679, 251337195, 263385931, 275745715, + 288413583, 301384760, 314655039, 328222340, 342083665, 356233498, 370664518, 385372123, 400351243, + 415596618, 431100575, 446855251, 462853492, 479088256, 495551477, 512233512, 529124734, 546216403, + 563499351, 580963667, 598598648, 616393743, 634338212, 652420945, 670630244, 688955012, 707384418, + 725906000, 744507517, 763176760, 781901922, 800670867, 819470287, 838286395, 857107788, 875922821, + 894718707, 913481313, 932196408, 950852353, 969437415, 987938553, 1006342043, 1024635125, 1042806406, + 1060844237, 1078734559, 1096464849, 1114023247, 1131399453, 1148583332, 1165562052, 1182324038, 1198858240, + 1215154081, 1231201466, 1246990634, 1262512157, 1277756598, 1292714571, 1307377034, 1321735176, 1335781943, + 1349510011, 1362912058, 1375982854, 1388718627, 1401109382, 1413152613, 1424839949, 1436168435, 1447135603, + 1457737882, 1467971469, 1477831821, 1487317959, 1496429995, 1505166563, 1513525606, 1521507797, 1529115290, + 1536350460, 1543213224, 1549704472, 1555827692, 1561587898, 1566989343, 1572034920, 1576728782, 1581076815, + 1585086027, 1588761389, 1592109107, 1595136511, 1597852394, 1600264963, 1602381209, 1604209606, 1605759882, + 1607041997, 1608065019, 1608838122, 1609371538, 1609676596, 1609763199, 1609640908, 1609320042, 1608811796, + 1608127979, 1607278811, 1606274326, 1605125864, 1603845218, 1602443629, 1600931810, 1599320348, 1597621250, + 1595846595, 1594007402, 1592114826, 1590179414, 1588213076, 1586227163, 1584231653, 1582234964, 1580207977, + 1578973545, 1576735799, 1574650444, 1572657612, 1570752789, 1568935343, 1567204832, 1565560739, 1564002460, + 1562529304, 1561140497, 1559835185, 1558612434, 1557471243, 1556410547, 1555429220, 1554526076, 1553699872, + 1552949321, 1552273100, 1551669839, 1551138129, 1550676530, 1550283581, 1549957792, 1549697644, 1549501594, + 1549368091, 1549295559, 1549282400, 1549326998, 1549427723, 1549582929, 1549790946, 1550050083, 1550358639, + 1550714889, 1551117086, 1551563464, 1552052237, 1552581604, 1553149738, 1553754795, 1554394911, 1555068212, + 1555772800, 1556506765, 1557268182, 1558055112, 1558865609, 1559697712, 1560549450, 1561418844, 1562303905, + 1563202640, 1564113045, 1565033113, 1565960825, 1566894119, 1567830370, -1568770400, -1569707772, -1570643299, + -1571574337, -1572498793, -1573414613, -1574319739, -1575212113, -1576089676, -1576950365, -1577792121, -1578612885, + -1579410602, -1580183223, -1580928704, -1581645010, -1582330113, -1582982003, -1583598681, -1584178165, -1584718489, + -1585217707, -1585673898, -1586085163, -1586449622, -1586765423, -1587030743, -1587243787, -1587402781, -1587505982, + -1587551679, -1587538195, -1587463877, -1587327103, -1587126293, -1586859906, -1586526431, -1586124397, -1585652387, + -1585109032, -1584493010, -1583803053, -1583037961, -1582196603, -1581277917, -1580280911, -1579204680, -1578048412, + -1576811384, -1575492968, -1574092640, -1572609980, -1571044684, -1569396562, -1567665543, -1565851670, -1563955090, + -1561975794, -1559909960, -1557699231, -1554579493, -1551951859, -1549122074, -1546121016, -1542941389, -1539572601, + -1536005010, -1532229275, -1528234689, -1524011122, -1519548313, -1514837211, -1509868869, -1504633300, -1499121016, + -1493323395, -1487232726, -1480841309, -1474140699, -1467123022, -1459782240, -1452112311, -1444106817, -1435759114, + -1427063276, -1418015155, -1408610288, -1398843935, -1388711462, -1378209682, -1367336091, -1356088102, -1344462791, + -1332458664, -1320075617, -1307313612, -1294173092, -1280654545, -1266760135, -1252493498, -1237857298, -1222855659, + -1207493934, -1191778366, -1175716859, -1159315327, -1142581197, -1125524357, -1108155092, -1090483582, -1072519662, + -1054273467, -1035757912, -1016986859, -997971439, -978723129, -959255645, -939584189, -919723670, -899686034, + -879484158, -859140109, -838667380, -818082710, -797402257, -776643501, -755824703, -734962210, -714073915, + -693179322, -672297393, -651446511, -630646657, -609917124, -589277150, -568746490, -548345449, -528092326, + -508008241, -488111645, -468421183, -448956496, -429734434, -410773661, -392090517, -373702005, -355624406, + -337873208, -320463322, -303409145, -286724555, -270422942, -254517317, -239020241, -223943842, -209300003, + -195100311, -181356034, -168078124, -155277193, -142963461, -131146681, -119836028, -109039985, -98766166, + -89021184, -79810417, -71137840, -63005796, -55414797, -48363340, -41847826, -35862016, -30397367, + -25442735, -20983937, -17003804, -13482292, -10414308, -8112352 }; +# else +# define MDCT_WINDOW_FS_48000_frame_ms_50 NULL +# endif +#endif + +#ifdef ENABLE_HR_MODE +RAM_ALIGN const Word32 *const LowDelayShapes_n960_5ms[6] = { + MDCT_WINDOW_FS_8000_frame_ms_50, MDCT_WINDOW_FS_16000_frame_ms_50, MDCT_WINDOW_FS_24000_frame_ms_50, MDCT_WINDOW_FS_32000_frame_ms_50, MDCT_WINDOW_FS_48000_frame_ms_50, NULL }; +#else +RAM_ALIGN const Word16 *const LowDelayShapes_n960_5ms[6] = {LowDelayShapes_n960_N40_5ms, LowDelayShapes_n960_N80_5ms, + LowDelayShapes_n960_N120_5ms, LowDelayShapes_n960_N160_5ms, + LowDelayShapes_n960_N240_5ms, NULL}; +#endif + +# ifdef ENABLE_HR_MODE +RAM_ALIGN const Word16 LowDelayShapes_n960_len_2_5ms[6] = {40, 80, 120, 160, 240, 480}; +# else +RAM_ALIGN const Word16 LowDelayShapes_n960_len_2_5ms[5] = {40, 80, 120, 160, 240}; +# endif + +RAM_ALIGN const Word16 LowDelayShapes_n960_la_zeroes_2_5ms[NUM_SAMP_FREQ] = {0, + 0, + 0, + 0, + 0 +}; + +#ifdef ENABLE_HR_MODE +RAM_ALIGN const Word32 *const LowDelayShapes_n960_2_5ms[6] = { + MDCT_WINDOW_FS_8000_frame_ms_25, MDCT_WINDOW_FS_16000_frame_ms_25, MDCT_WINDOW_FS_24000_frame_ms_25, MDCT_WINDOW_FS_32000_frame_ms_25, MDCT_WINDOW_FS_48000_frame_ms_25, NULL }; +#else +RAM_ALIGN const Word16 *const LowDelayShapes_n960_2_5ms[6] = { + LowDelayShapes_n960_N40_2_5ms, LowDelayShapes_n960_N80_2_5ms, LowDelayShapes_n960_N120_2_5ms, + LowDelayShapes_n960_N160_2_5ms, LowDelayShapes_n960_N240_2_5ms, NULL}; +#endif + +# ifdef ENABLE_HR_MODE +RAM_ALIGN const Word16 tns_subdiv_startfreq_48k_HR[6] = {12, 74, 137, 200, 266, 333}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_48k_HR[6] = {74, 137, 200, 266, 333, 400}; +RAM_ALIGN const Word16 tns_subdiv_startfreq_96k_HR[6] = {12, 74, 137, 200, 266, 333}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_96k_HR[6] = {74, 137, 200, 266, 333, 400}; +RAM_ALIGN const Word16 *const tns_subdiv_startfreq_HR[2] = {tns_subdiv_startfreq_48k_HR, tns_subdiv_startfreq_96k_HR}; +RAM_ALIGN const Word16 *const tns_subdiv_stopfreq_HR[2] = {tns_subdiv_stopfreq_48k_HR, tns_subdiv_stopfreq_96k_HR}; + +RAM_ALIGN const Word16 tns_subdiv_startfreq_48k_5ms_HR[4] = {6, 53, 100, 150}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_48k_5ms_HR[4] = {53, 100, 150, 200}; +RAM_ALIGN const Word16 tns_subdiv_startfreq_96k_5ms_HR[4] = {6, 53, 100, 150}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_96k_5ms_HR[4] = {53, 100, 150, 200}; + +RAM_ALIGN const Word16 *const tns_subdiv_startfreq_5ms_HR[2] = {tns_subdiv_startfreq_48k_5ms_HR, + tns_subdiv_startfreq_96k_5ms_HR}; +RAM_ALIGN const Word16 *const tns_subdiv_stopfreq_5ms_HR[2] = {tns_subdiv_stopfreq_48k_5ms_HR, + tns_subdiv_stopfreq_96k_5ms_HR}; + +RAM_ALIGN const Word16 tns_subdiv_startfreq_48k_2_5ms_HR[2] = {3, 51}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_48k_2_5ms_HR[2] = {51, 100}; +RAM_ALIGN const Word16 tns_subdiv_startfreq_96k_2_5ms_HR[2] = {3, 51}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_96k_2_5ms_HR[2] = {51, 100}; + +RAM_ALIGN const Word16 *const tns_subdiv_startfreq_2_5ms_HR[2] = {tns_subdiv_startfreq_48k_2_5ms_HR, + tns_subdiv_startfreq_96k_2_5ms_HR}; +RAM_ALIGN const Word16 *const tns_subdiv_stopfreq_2_5ms_HR[2] = {tns_subdiv_stopfreq_48k_2_5ms_HR, + tns_subdiv_stopfreq_96k_2_5ms_HR}; +# endif + + +RAM_ALIGN const Word16 tns_subdiv_startfreq_8k[6] = {12, 34, 57, 0, 0, 0}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_8k[6] = {34, 57, 80, 0, 0, 0}; +RAM_ALIGN const Word16 tns_subdiv_startfreq_16k[6] = {12, 61, 110, 0, 0, 0}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_16k[6] = {61, 110, 160, 0, 0, 0}; +RAM_ALIGN const Word16 tns_subdiv_startfreq_24k[6] = {12, 88, 164, 0, 0, 0}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_24k[6] = {88, 164, 240, 0, 0, 0}; +RAM_ALIGN const Word16 tns_subdiv_startfreq_32k[6] = {12, 61, 110, 160, 213, 266}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_32k[6] = {61, 110, 160, 213, 266, 320}; +RAM_ALIGN const Word16 tns_subdiv_startfreq_48k[6] = {12, 74, 137, 200, 266, 333}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_48k[6] = {74, 137, 200, 266, 333, 400}; +RAM_ALIGN const Word16 *const tns_subdiv_startfreq[MAX_BW_BANDS_NUMBER] = { + tns_subdiv_startfreq_8k, tns_subdiv_startfreq_16k, tns_subdiv_startfreq_24k, tns_subdiv_startfreq_32k, + tns_subdiv_startfreq_48k}; +RAM_ALIGN const Word16 *const tns_subdiv_stopfreq[MAX_BW_BANDS_NUMBER] = { + tns_subdiv_stopfreq_8k, tns_subdiv_stopfreq_16k, tns_subdiv_stopfreq_24k, tns_subdiv_stopfreq_32k, + tns_subdiv_stopfreq_48k}; + + +RAM_ALIGN const Word16 tns_subdiv_startfreq_8k_5ms[4] = {6, 23, 0, 0}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_8k_5ms[4] = {23, 40, 0, 0}; +RAM_ALIGN const Word16 tns_subdiv_startfreq_16k_5ms[4] = {6, 43, 0, 0}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_16k_5ms[4] = {43, 80, 0, 0}; +RAM_ALIGN const Word16 tns_subdiv_startfreq_24k_5ms[4] = {6, 63, 0, 0}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_24k_5ms[4] = {63, 120, 0, 0}; +RAM_ALIGN const Word16 tns_subdiv_startfreq_32k_5ms[4] = {6, 43, 80, 120}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_32k_5ms[4] = {43, 80, 120, 160}; +RAM_ALIGN const Word16 tns_subdiv_startfreq_48k_5ms[4] = {6, 53, 100, 150}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_48k_5ms[4] = {53, 100, 150, 200}; +RAM_ALIGN const Word16 *const tns_subdiv_startfreq_5ms[MAX_BW_BANDS_NUMBER] = { + tns_subdiv_startfreq_8k_5ms, tns_subdiv_startfreq_16k_5ms, tns_subdiv_startfreq_24k_5ms, + tns_subdiv_startfreq_32k_5ms, tns_subdiv_startfreq_48k_5ms}; +RAM_ALIGN const Word16 *const tns_subdiv_stopfreq_5ms[MAX_BW_BANDS_NUMBER] = { + tns_subdiv_stopfreq_8k_5ms, tns_subdiv_stopfreq_16k_5ms, tns_subdiv_stopfreq_24k_5ms, tns_subdiv_stopfreq_32k_5ms, + tns_subdiv_stopfreq_48k_5ms}; + +RAM_ALIGN const Word16 tns_subdiv_startfreq_8k_2_5ms[2] = {3, 11}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_8k_2_5ms[2] = {11, 20}; +RAM_ALIGN const Word16 tns_subdiv_startfreq_16k_2_5ms[2] = {3, 21}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_16k_2_5ms[2] = {21, 40}; +RAM_ALIGN const Word16 tns_subdiv_startfreq_24k_2_5ms[2] = {3, 31}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_24k_2_5ms[2] = {31, 60}; +RAM_ALIGN const Word16 tns_subdiv_startfreq_32k_2_5ms[2] = {3, 41}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_32k_2_5ms[2] = {41, 80}; +RAM_ALIGN const Word16 tns_subdiv_startfreq_48k_2_5ms[2] = {3, 51}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_48k_2_5ms[2] = {51, 100}; + +RAM_ALIGN const Word16 *const tns_subdiv_startfreq_2_5ms[MAX_BW_BANDS_NUMBER] = { + tns_subdiv_startfreq_8k_2_5ms, tns_subdiv_startfreq_16k_2_5ms, tns_subdiv_startfreq_24k_2_5ms, + tns_subdiv_startfreq_32k_2_5ms, tns_subdiv_startfreq_48k_2_5ms}; +RAM_ALIGN const Word16 *const tns_subdiv_stopfreq_2_5ms[MAX_BW_BANDS_NUMBER] = { + tns_subdiv_stopfreq_8k_2_5ms, tns_subdiv_stopfreq_16k_2_5ms, tns_subdiv_stopfreq_24k_2_5ms, + tns_subdiv_stopfreq_32k_2_5ms, tns_subdiv_stopfreq_48k_2_5ms}; + +#ifdef CR8_G_ADD_75MS +RAM_ALIGN const Word16 tns_subdiv_startfreq_8k_7_5ms[6] = {9, 26, 43, 0, 0, 0}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_8k_7_5ms[6] = {26, 43, 60, 0, 0, 0}; + +RAM_ALIGN const Word16 tns_subdiv_startfreq_16k_7_5ms[6] = {9, 46, 83, 0, 0, 0}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_16k_7_5ms[6] = {46, 83, 120, 0, 0, 0}; + +RAM_ALIGN const Word16 tns_subdiv_startfreq_24k_7_5ms[6] = {9, 66, 123, 0, 0, 0}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_24k_7_5ms[6] = {66, 123, 180, 0, 0, 0}; + +RAM_ALIGN const Word16 tns_subdiv_startfreq_32k_7_5ms[6] = {9, 46, 82, 120, 159, 200}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_32k_7_5ms[6] = {46, 82, 120, 159, 200, 240}; + +RAM_ALIGN const Word16 tns_subdiv_startfreq_48k_7_5ms[6] = {9, 56, 103, 150, 200, 250}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_48k_7_5ms[6] = {56, 103, 150, 200, 250, 300}; + +# ifdef ENABLE_HR_MODE +RAM_ALIGN const Word16 tns_subdiv_startfreq_96k_7_5ms[6] = {9, 56, 103, 150, 200, 250}; +RAM_ALIGN const Word16 tns_subdiv_stopfreq_96k_7_5ms[6] = {56, 103, 150, 200, 250, 300}; +# endif + +RAM_ALIGN const Word16 *const tns_subdiv_startfreq_7_5ms[] = { + tns_subdiv_startfreq_8k_7_5ms, tns_subdiv_startfreq_16k_7_5ms, tns_subdiv_startfreq_24k_7_5ms, + tns_subdiv_startfreq_32k_7_5ms, tns_subdiv_startfreq_48k_7_5ms +# ifdef ENABLE_HR_MODE + , tns_subdiv_startfreq_96k_7_5ms +# endif +}; +RAM_ALIGN const Word16 *const tns_subdiv_stopfreq_7_5ms[] = { + tns_subdiv_stopfreq_8k_7_5ms, tns_subdiv_stopfreq_16k_7_5ms, tns_subdiv_stopfreq_24k_7_5ms, + tns_subdiv_stopfreq_32k_7_5ms, tns_subdiv_stopfreq_48k_7_5ms +# ifdef ENABLE_HR_MODE + , tns_subdiv_stopfreq_96k_7_5ms +# endif +}; +# endif + +RAM_ALIGN const Word16 Tab_esc_nb[4] = {0 << (NBITS_CONTEXT + NBITS_RATEQ), 1 << (NBITS_CONTEXT + NBITS_RATEQ), + 2 << (NBITS_CONTEXT + NBITS_RATEQ), 3 << (NBITS_CONTEXT + NBITS_RATEQ)}; +RAM_ALIGN const Word8 ari_spec_lookup[4096] = { + 0x01, 0x27, 0x07, 0x19, 0x16, 0x16, 0x1C, 0x16, 0x16, 0x16, 0x16, 0x1C, 0x1C, 0x1C, 0x22, 0x1F, 0x1F, 0x28, 0x2B, + 0x2E, 0x31, 0x34, 0x0E, 0x11, 0x24, 0x24, 0x24, 0x26, 0x00, 0x39, 0x26, 0x16, 0x00, 0x08, 0x09, 0x0B, 0x2F, 0x0E, + 0x0E, 0x11, 0x24, 0x24, 0x24, 0x26, 0x3B, 0x3B, 0x26, 0x16, 0x16, 0x1A, 0x2E, 0x1D, 0x1E, 0x20, 0x21, 0x23, 0x24, + 0x24, 0x24, 0x26, 0x00, 0x3B, 0x17, 0x16, 0x2E, 0x2E, 0x2D, 0x2F, 0x30, 0x32, 0x32, 0x12, 0x36, 0x36, 0x36, 0x26, + 0x3B, 0x3B, 0x3B, 0x16, 0x00, 0x3E, 0x3F, 0x03, 0x21, 0x02, 0x02, 0x3D, 0x14, 0x14, 0x14, 0x15, 0x3B, 0x3B, 0x27, + 0x1C, 0x1C, 0x3F, 0x3F, 0x03, 0x21, 0x02, 0x02, 0x3D, 0x26, 0x26, 0x26, 0x15, 0x3B, 0x3B, 0x27, 0x1C, 0x1C, 0x06, + 0x06, 0x06, 0x02, 0x12, 0x3D, 0x14, 0x15, 0x15, 0x15, 0x3B, 0x27, 0x27, 0x07, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x35, 0x36, 0x14, 0x26, + 0x26, 0x39, 0x27, 0x27, 0x27, 0x07, 0x18, 0x22, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x38, 0x26, 0x39, 0x39, 0x3B, 0x07, 0x07, 0x07, 0x2A, + 0x2A, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x04, 0x04, 0x05, 0x15, 0x15, 0x3B, 0x07, 0x07, 0x07, 0x07, 0x19, 0x19, 0x19, 0x22, 0x04, 0x04, 0x04, 0x04, + 0x05, 0x17, 0x17, 0x27, 0x07, 0x07, 0x07, 0x2A, 0x19, 0x19, 0x16, 0x1F, 0x1F, 0x27, 0x27, 0x27, 0x27, 0x07, 0x07, + 0x2A, 0x00, 0x19, 0x16, 0x16, 0x16, 0x1C, 0x22, 0x1F, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, + 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x28, 0x08, 0x09, 0x31, 0x31, 0x34, 0x11, 0x11, 0x11, 0x04, 0x00, + 0x14, 0x11, 0x3C, 0x28, 0x28, 0x08, 0x2B, 0x1B, 0x31, 0x31, 0x0E, 0x11, 0x11, 0x11, 0x24, 0x2A, 0x2A, 0x11, 0x39, + 0x39, 0x28, 0x08, 0x1A, 0x1B, 0x31, 0x0C, 0x0E, 0x11, 0x11, 0x11, 0x24, 0x00, 0x26, 0x24, 0x01, 0x08, 0x08, 0x2B, + 0x09, 0x0B, 0x31, 0x0C, 0x0E, 0x0E, 0x21, 0x32, 0x32, 0x32, 0x3D, 0x24, 0x27, 0x08, 0x08, 0x2B, 0x2E, 0x31, 0x34, + 0x1E, 0x0E, 0x0E, 0x21, 0x32, 0x32, 0x32, 0x32, 0x12, 0x19, 0x08, 0x08, 0x2B, 0x2E, 0x31, 0x34, 0x1E, 0x0E, 0x0E, + 0x12, 0x05, 0x05, 0x05, 0x3D, 0x12, 0x17, 0x2B, 0x2B, 0x2B, 0x09, 0x31, 0x34, 0x03, 0x0E, 0x0E, 0x32, 0x32, 0x32, + 0x32, 0x3D, 0x11, 0x18, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, + 0x2B, 0x2B, 0x2B, 0x2B, 0x09, 0x0B, 0x34, 0x34, 0x0E, 0x0E, 0x11, 0x3D, 0x3D, 0x3D, 0x36, 0x11, 0x27, 0x2D, 0x2D, + 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2C, 0x1B, 0x1D, + 0x34, 0x30, 0x34, 0x34, 0x11, 0x11, 0x11, 0x11, 0x02, 0x11, 0x07, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x09, 0x1B, 0x1B, 0x0C, 0x34, 0x0E, 0x0E, 0x3A, 0x29, + 0x29, 0x29, 0x06, 0x11, 0x25, 0x09, 0x09, 0x09, 0x1B, 0x0B, 0x31, 0x0C, 0x34, 0x0E, 0x0E, 0x0E, 0x32, 0x00, 0x35, + 0x11, 0x1C, 0x34, 0x34, 0x31, 0x34, 0x0C, 0x34, 0x1E, 0x0E, 0x0E, 0x11, 0x02, 0x02, 0x02, 0x26, 0x26, 0x22, 0x1F, + 0x22, 0x22, 0x1F, 0x1F, 0x1F, 0x1F, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x1F, 0x13, 0x2C, 0x2C, 0x3E, 0x1E, + 0x20, 0x3A, 0x23, 0x24, 0x24, 0x26, 0x00, 0x3B, 0x07, 0x07, 0x27, 0x22, 0x22, 0x2D, 0x2F, 0x30, 0x21, 0x23, 0x23, + 0x24, 0x26, 0x26, 0x26, 0x3B, 0x07, 0x07, 0x27, 0x22, 0x22, 0x3E, 0x1E, 0x0F, 0x32, 0x35, 0x35, 0x36, 0x15, 0x15, + 0x15, 0x3B, 0x07, 0x07, 0x07, 0x22, 0x1E, 0x1E, 0x30, 0x21, 0x3A, 0x12, 0x12, 0x38, 0x17, 0x17, 0x17, 0x3B, 0x07, + 0x07, 0x18, 0x22, 0x22, 0x06, 0x06, 0x3A, 0x35, 0x36, 0x36, 0x15, 0x3B, 0x3B, 0x3B, 0x27, 0x07, 0x07, 0x2A, 0x22, + 0x06, 0x06, 0x21, 0x3A, 0x35, 0x36, 0x3D, 0x15, 0x3B, 0x3B, 0x3B, 0x27, 0x07, 0x07, 0x2A, 0x22, 0x22, 0x33, 0x33, + 0x35, 0x36, 0x38, 0x38, 0x39, 0x27, 0x27, 0x27, 0x07, 0x2A, 0x2A, 0x19, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x04, 0x04, 0x04, 0x05, 0x17, 0x17, 0x27, 0x07, + 0x07, 0x07, 0x2A, 0x19, 0x19, 0x16, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x05, 0x05, 0x05, 0x05, 0x39, 0x39, 0x27, 0x18, 0x18, 0x18, 0x2A, 0x16, 0x16, 0x1C, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x29, + 0x29, 0x29, 0x29, 0x27, 0x27, 0x07, 0x2A, 0x2A, 0x2A, 0x19, 0x1C, 0x1C, 0x1C, 0x1F, 0x1F, 0x29, 0x29, 0x29, 0x29, + 0x27, 0x27, 0x18, 0x19, 0x19, 0x19, 0x16, 0x1C, 0x1C, 0x22, 0x1F, 0x1F, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x1C, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1F, 0x13, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x0B, 0x2F, 0x20, 0x32, 0x12, 0x12, 0x14, 0x15, 0x15, 0x15, 0x27, + 0x3B, 0x22, 0x1A, 0x1A, 0x1B, 0x1D, 0x1E, 0x21, 0x32, 0x12, 0x12, 0x14, 0x39, 0x39, 0x39, 0x3B, 0x3B, 0x22, 0x1B, + 0x1B, 0x0B, 0x0C, 0x30, 0x32, 0x3A, 0x3D, 0x3D, 0x38, 0x39, 0x39, 0x39, 0x3B, 0x27, 0x22, 0x2D, 0x2D, 0x0C, 0x1E, + 0x20, 0x02, 0x02, 0x3D, 0x26, 0x26, 0x26, 0x39, 0x00, 0x3B, 0x27, 0x22, 0x3F, 0x3F, 0x03, 0x20, 0x3A, 0x12, 0x12, + 0x14, 0x15, 0x15, 0x15, 0x3B, 0x27, 0x27, 0x07, 0x1F, 0x1F, 0x03, 0x03, 0x21, 0x3A, 0x12, 0x12, 0x14, 0x15, 0x15, + 0x15, 0x3B, 0x07, 0x07, 0x07, 0x1F, 0x06, 0x06, 0x33, 0x33, 0x35, 0x36, 0x36, 0x26, 0x39, 0x39, 0x39, 0x27, 0x07, + 0x07, 0x2A, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x33, 0x35, 0x35, 0x36, 0x38, 0x38, 0x39, 0x3B, 0x3B, 0x3B, 0x07, 0x18, 0x18, 0x19, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x04, 0x04, 0x04, 0x36, 0x15, + 0x15, 0x39, 0x27, 0x27, 0x27, 0x07, 0x2A, 0x2A, 0x16, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x05, 0x05, 0x05, 0x05, 0x17, 0x17, 0x3B, 0x07, 0x07, 0x07, 0x2A, + 0x16, 0x16, 0x1C, 0x1F, 0x1F, 0x04, 0x04, 0x04, 0x05, 0x17, 0x17, 0x27, 0x18, 0x18, 0x18, 0x19, 0x1C, 0x1C, 0x22, + 0x1F, 0x1F, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x1C, 0x22, 0x22, 0x22, 0x1F, 0x1F, 0x1F, 0x1F, 0x13, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, + 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, + 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x00, + 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x3C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x00, + 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x3C, 0x10, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x10, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x10, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x10, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, + 0x3C, 0x10, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x25, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0D, 0x0D, 0x0D, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x00, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, + 0x00, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x00, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x13, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x13, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, + 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x3C, 0x3C, 0x3C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, + 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + +RAM_ALIGN const UWord16 ari_spec_cumfreq[64][17] = { + {0, 1, 2, 177, 225, 226, 227, 336, 372, 543, 652, 699, 719, 768, 804, 824, 834}, + {0, 18, 44, 61, 71, 98, 135, 159, 175, 197, 229, 251, 265, 282, 308, 328, 341}, + {0, 71, 163, 212, 237, 318, 420, 481, 514, 556, 613, 652, 675, 697, 727, 749, 764}, + {0, 160, 290, 336, 354, 475, 598, 653, 677, 722, 777, 808, 823, 842, 866, 881, 890}, + {0, 71, 144, 177, 195, 266, 342, 385, 411, 445, 489, 519, 539, 559, 586, 607, 622}, + {0, 48, 108, 140, 159, 217, 285, 327, 354, 385, 427, 457, 478, 497, 524, 545, 561}, + {0, 138, 247, 290, 308, 419, 531, 584, 609, 655, 710, 742, 759, 780, 807, 825, 836}, + {0, 16, 40, 62, 79, 103, 139, 170, 195, 215, 245, 270, 290, 305, 327, 346, 362}, + {0, 579, 729, 741, 743, 897, 970, 980, 982, 996, 1007, 1010, 1011, 1014, 1017, 1018, 1019}, + {0, 398, 582, 607, 612, 788, 902, 925, 931, 956, 979, 987, 990, 996, 1002, 1005, 1007}, + {0, 13, 34, 52, 63, 83, 112, 134, 149, 163, 183, 199, 211, 221, 235, 247, 257}, + {0, 281, 464, 501, 510, 681, 820, 857, 867, 902, 938, 953, 959, 968, 978, 984, 987}, + {0, 198, 362, 408, 421, 575, 722, 773, 789, 832, 881, 905, 915, 928, 944, 954, 959}, + {0, 1, 2, 95, 139, 140, 141, 213, 251, 337, 407, 450, 475, 515, 551, 576, 592}, + {0, 133, 274, 338, 366, 483, 605, 664, 691, 730, 778, 807, 822, 837, 857, 870, 878}, + {0, 128, 253, 302, 320, 443, 577, 636, 659, 708, 767, 799, 814, 833, 857, 872, 881}, + {0, 1, 2, 25, 42, 43, 44, 67, 85, 105, 126, 144, 159, 174, 191, 205, 217}, + {0, 70, 166, 229, 267, 356, 468, 533, 569, 606, 653, 685, 705, 722, 745, 762, 774}, + {0, 55, 130, 175, 200, 268, 358, 416, 449, 488, 542, 581, 606, 628, 659, 683, 699}, + {0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}, + {0, 34, 85, 123, 147, 196, 265, 317, 352, 386, 433, 470, 497, 518, 549, 574, 593}, + {0, 30, 73, 105, 127, 170, 229, 274, 305, 335, 377, 411, 436, 455, 483, 506, 524}, + {0, 9, 24, 38, 51, 65, 87, 108, 126, 139, 159, 177, 193, 204, 221, 236, 250}, + {0, 30, 74, 105, 125, 166, 224, 266, 294, 322, 361, 391, 413, 431, 457, 478, 494}, + {0, 15, 38, 58, 73, 95, 128, 156, 178, 196, 222, 245, 263, 276, 296, 314, 329}, + {0, 11, 28, 44, 57, 74, 100, 123, 142, 157, 179, 199, 216, 228, 246, 262, 276}, + {0, 448, 619, 639, 643, 821, 926, 944, 948, 971, 991, 998, 1000, 1005, 1010, 1012, 1013}, + {0, 332, 520, 549, 555, 741, 874, 903, 910, 940, 970, 981, 985, 991, 998, 1002, 1004}, + {0, 8, 21, 34, 45, 58, 78, 96, 112, 124, 141, 157, 170, 180, 194, 207, 219}, + {0, 239, 415, 457, 468, 631, 776, 820, 833, 872, 914, 933, 940, 951, 964, 971, 975}, + {0, 165, 310, 359, 375, 513, 652, 707, 727, 774, 828, 856, 868, 884, 904, 916, 923}, + {0, 3, 8, 13, 18, 23, 30, 37, 44, 48, 55, 62, 68, 72, 78, 84, 90}, + {0, 115, 237, 289, 311, 422, 547, 608, 635, 680, 737, 771, 788, 807, 832, 849, 859}, + {0, 107, 221, 272, 293, 399, 521, 582, 610, 656, 714, 749, 767, 787, 813, 831, 842}, + {0, 6, 16, 26, 35, 45, 60, 75, 89, 98, 112, 125, 137, 145, 157, 168, 178}, + {0, 72, 160, 210, 236, 320, 422, 482, 514, 555, 608, 644, 665, 685, 712, 732, 745}, + {0, 45, 108, 153, 183, 244, 327, 385, 421, 455, 502, 536, 559, 578, 605, 626, 641}, + {0, 1, 2, 9, 16, 17, 18, 26, 34, 40, 48, 55, 62, 68, 75, 82, 88}, + {0, 29, 73, 108, 132, 174, 236, 284, 318, 348, 391, 426, 452, 471, 500, 524, 543}, + {0, 20, 51, 76, 93, 123, 166, 200, 225, 247, 279, 305, 326, 342, 365, 385, 401}, + {0, 742, 845, 850, 851, 959, 997, 1001, 1002, 1009, 1014, 1016, 1017, 1019, 1020, 1021, 1022}, + {0, 42, 94, 121, 137, 186, 244, 280, 303, 330, 366, 392, 410, 427, 451, 470, 484}, + {0, 13, 33, 51, 66, 85, 114, 140, 161, 178, 203, 225, 243, 256, 275, 292, 307}, + {0, 501, 670, 689, 693, 848, 936, 952, 956, 975, 991, 997, 999, 1004, 1008, 1010, 1011}, + {0, 445, 581, 603, 609, 767, 865, 888, 895, 926, 954, 964, 968, 977, 986, 991, 993}, + {0, 285, 442, 479, 489, 650, 779, 818, 830, 870, 912, 930, 937, 949, 963, 971, 975}, + {0, 349, 528, 561, 569, 731, 852, 883, 892, 923, 953, 965, 970, 978, 987, 992, 994}, + {0, 199, 355, 402, 417, 563, 700, 750, 767, 811, 860, 884, 894, 909, 926, 936, 942}, + {0, 141, 275, 325, 343, 471, 606, 664, 686, 734, 791, 822, 836, 854, 877, 891, 899}, + {0, 243, 437, 493, 510, 649, 775, 820, 836, 869, 905, 923, 931, 941, 953, 960, 964}, + {0, 91, 197, 248, 271, 370, 487, 550, 580, 625, 684, 721, 741, 761, 788, 807, 819}, + {0, 107, 201, 242, 262, 354, 451, 503, 531, 573, 626, 660, 680, 701, 730, 751, 765}, + {0, 168, 339, 407, 432, 553, 676, 731, 755, 789, 830, 854, 866, 879, 895, 906, 912}, + {0, 67, 147, 191, 214, 290, 384, 441, 472, 513, 567, 604, 627, 648, 678, 700, 715}, + {0, 46, 109, 148, 171, 229, 307, 359, 391, 427, 476, 513, 537, 558, 588, 612, 629}, + {0, 848, 918, 920, 921, 996, 1012, 1013, 1014, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023}, + {0, 36, 88, 123, 145, 193, 260, 308, 340, 372, 417, 452, 476, 496, 525, 548, 565}, + {0, 24, 61, 90, 110, 145, 196, 237, 266, 292, 330, 361, 385, 403, 430, 453, 471}, + {0, 85, 182, 230, 253, 344, 454, 515, 545, 590, 648, 685, 706, 727, 756, 776, 789}, + {0, 22, 55, 82, 102, 135, 183, 222, 252, 278, 315, 345, 368, 385, 410, 431, 448}, + {0, 1, 2, 56, 89, 90, 91, 140, 172, 221, 268, 303, 328, 358, 388, 412, 430}, + {0, 45, 109, 152, 177, 239, 320, 376, 411, 448, 499, 537, 563, 585, 616, 640, 658}, + {0, 247, 395, 433, 445, 599, 729, 771, 785, 829, 875, 896, 905, 920, 937, 946, 951}, + {0, 231, 367, 408, 423, 557, 676, 723, 742, 786, 835, 860, 872, 889, 909, 921, 928}}; + +RAM_ALIGN const UWord16 ari_spec_freq[64][17] = { + {1, 1, 175, 48, 1, 1, 109, 36, 171, 109, 47, 20, 49, 36, 20, 10, 190}, + {18, 26, 17, 10, 27, 37, 24, 16, 22, 32, 22, 14, 17, 26, 20, 13, 683}, + {71, 92, 49, 25, 81, 102, 61, 33, 42, 57, 39, 23, 22, 30, 22, 15, 260}, + {160, 130, 46, 18, 121, 123, 55, 24, 45, 55, 31, 15, 19, 24, 15, 9, 134}, + {71, 73, 33, 18, 71, 76, 43, 26, 34, 44, 30, 20, 20, 27, 21, 15, 402}, + {48, 60, 32, 19, 58, 68, 42, 27, 31, 42, 30, 21, 19, 27, 21, 16, 463}, + {138, 109, 43, 18, 111, 112, 53, 25, 46, 55, 32, 17, 21, 27, 18, 11, 188}, + {16, 24, 22, 17, 24, 36, 31, 25, 20, 30, 25, 20, 15, 22, 19, 16, 662}, + {579, 150, 12, 2, 154, 73, 10, 2, 14, 11, 3, 1, 3, 3, 1, 1, 5}, + {398, 184, 25, 5, 176, 114, 23, 6, 25, 23, 8, 3, 6, 6, 3, 2, 17}, + {13, 21, 18, 11, 20, 29, 22, 15, 14, 20, 16, 12, 10, 14, 12, 10, 767}, + {281, 183, 37, 9, 171, 139, 37, 10, 35, 36, 15, 6, 9, 10, 6, 3, 37}, + {198, 164, 46, 13, 154, 147, 51, 16, 43, 49, 24, 10, 13, 16, 10, 5, 65}, + {1, 1, 93, 44, 1, 1, 72, 38, 86, 70, 43, 25, 40, 36, 25, 16, 432}, + {133, 141, 64, 28, 117, 122, 59, 27, 39, 48, 29, 15, 15, 20, 13, 8, 146}, + {128, 125, 49, 18, 123, 134, 59, 23, 49, 59, 32, 15, 19, 24, 15, 9, 143}, + {1, 1, 23, 17, 1, 1, 23, 18, 20, 21, 18, 15, 15, 17, 14, 12, 807}, + {70, 96, 63, 38, 89, 112, 65, 36, 37, 47, 32, 20, 17, 23, 17, 12, 250}, + {55, 75, 45, 25, 68, 90, 58, 33, 39, 54, 39, 25, 22, 31, 24, 16, 325}, + {1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 993}, + {34, 51, 38, 24, 49, 69, 52, 35, 34, 47, 37, 27, 21, 31, 25, 19, 431}, + {30, 43, 32, 22, 43, 59, 45, 31, 30, 42, 34, 25, 19, 28, 23, 18, 500}, + {9, 15, 14, 13, 14, 22, 21, 18, 13, 20, 18, 16, 11, 17, 15, 14, 774}, + {30, 44, 31, 20, 41, 58, 42, 28, 28, 39, 30, 22, 18, 26, 21, 16, 530}, + {15, 23, 20, 15, 22, 33, 28, 22, 18, 26, 23, 18, 13, 20, 18, 15, 695}, + {11, 17, 16, 13, 17, 26, 23, 19, 15, 22, 20, 17, 12, 18, 16, 14, 748}, + {448, 171, 20, 4, 178, 105, 18, 4, 23, 20, 7, 2, 5, 5, 2, 1, 11}, + {332, 188, 29, 6, 186, 133, 29, 7, 30, 30, 11, 4, 6, 7, 4, 2, 20}, + {8, 13, 13, 11, 13, 20, 18, 16, 12, 17, 16, 13, 10, 14, 13, 12, 805}, + {239, 176, 42, 11, 163, 145, 44, 13, 39, 42, 19, 7, 11, 13, 7, 4, 49}, + {165, 145, 49, 16, 138, 139, 55, 20, 47, 54, 28, 12, 16, 20, 12, 7, 101}, + {3, 5, 5, 5, 5, 7, 7, 7, 4, 7, 7, 6, 4, 6, 6, 6, 934}, + {115, 122, 52, 22, 111, 125, 61, 27, 45, 57, 34, 17, 19, 25, 17, 10, 165}, + {107, 114, 51, 21, 106, 122, 61, 28, 46, 58, 35, 18, 20, 26, 18, 11, 182}, + {6, 10, 10, 9, 10, 15, 15, 14, 9, 14, 13, 12, 8, 12, 11, 10, 846}, + {72, 88, 50, 26, 84, 102, 60, 32, 41, 53, 36, 21, 20, 27, 20, 13, 279}, + {45, 63, 45, 30, 61, 83, 58, 36, 34, 47, 34, 23, 19, 27, 21, 15, 383}, + {1, 1, 7, 7, 1, 1, 8, 8, 6, 8, 7, 7, 6, 7, 7, 6, 936}, + {29, 44, 35, 24, 42, 62, 48, 34, 30, 43, 35, 26, 19, 29, 24, 19, 481}, + {20, 31, 25, 17, 30, 43, 34, 25, 22, 32, 26, 21, 16, 23, 20, 16, 623}, + {742, 103, 5, 1, 108, 38, 4, 1, 7, 5, 2, 1, 2, 1, 1, 1, 2}, + {42, 52, 27, 16, 49, 58, 36, 23, 27, 36, 26, 18, 17, 24, 19, 14, 540}, + {13, 20, 18, 15, 19, 29, 26, 21, 17, 25, 22, 18, 13, 19, 17, 15, 717}, + {501, 169, 19, 4, 155, 88, 16, 4, 19, 16, 6, 2, 5, 4, 2, 1, 13}, + {445, 136, 22, 6, 158, 98, 23, 7, 31, 28, 10, 4, 9, 9, 5, 2, 31}, + {285, 157, 37, 10, 161, 129, 39, 12, 40, 42, 18, 7, 12, 14, 8, 4, 49}, + {349, 179, 33, 8, 162, 121, 31, 9, 31, 30, 12, 5, 8, 9, 5, 2, 30}, + {199, 156, 47, 15, 146, 137, 50, 17, 44, 49, 24, 10, 15, 17, 10, 6, 82}, + {141, 134, 50, 18, 128, 135, 58, 22, 48, 57, 31, 14, 18, 23, 14, 8, 125}, + {243, 194, 56, 17, 139, 126, 45, 16, 33, 36, 18, 8, 10, 12, 7, 4, 60}, + {91, 106, 51, 23, 99, 117, 63, 30, 45, 59, 37, 20, 20, 27, 19, 12, 205}, + {107, 94, 41, 20, 92, 97, 52, 28, 42, 53, 34, 20, 21, 29, 21, 14, 259}, + {168, 171, 68, 25, 121, 123, 55, 24, 34, 41, 24, 12, 13, 16, 11, 6, 112}, + {67, 80, 44, 23, 76, 94, 57, 31, 41, 54, 37, 23, 21, 30, 22, 15, 309}, + {46, 63, 39, 23, 58, 78, 52, 32, 36, 49, 37, 24, 21, 30, 24, 17, 395}, + {848, 70, 2, 1, 75, 16, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1}, + {36, 52, 35, 22, 48, 67, 48, 32, 32, 45, 35, 24, 20, 29, 23, 17, 459}, + {24, 37, 29, 20, 35, 51, 41, 29, 26, 38, 31, 24, 18, 27, 23, 18, 553}, + {85, 97, 48, 23, 91, 110, 61, 30, 45, 58, 37, 21, 21, 29, 20, 13, 235}, + {22, 33, 27, 20, 33, 48, 39, 30, 26, 37, 30, 23, 17, 25, 21, 17, 576}, + {1, 1, 54, 33, 1, 1, 49, 32, 49, 47, 35, 25, 30, 30, 24, 18, 594}, + {45, 64, 43, 25, 62, 81, 56, 35, 37, 51, 38, 26, 22, 31, 24, 18, 366}, + {247, 148, 38, 12, 154, 130, 42, 14, 44, 46, 21, 9, 15, 17, 9, 5, 73}, + {231, 136, 41, 15, 134, 119, 47, 19, 44, 49, 25, 12, 17, 20, 12, 7, 96}}; + +RAM_ALIGN const UWord16 ari_spec_bits[64][17] = { + {20480, 20480, 5220, 9042, 20480, 20480, 6619, 9892, 5289, 6619, 9105, 11629, 8982, 9892, 11629, 13677, 4977}, + {11940, 10854, 12109, 13677, 10742, 9812, 11090, 12288, 11348, 10240, 11348, 12683, 12109, 10854, 11629, 12902, + 1197}, + {7886, 7120, 8982, 10970, 7496, 6815, 8334, 10150, 9437, 8535, 9656, 11216, 11348, 10431, 11348, 12479, 4051}, + {5485, 6099, 9168, 11940, 6311, 6262, 8640, 11090, 9233, 8640, 10334, 12479, 11781, 11090, 12479, 13988, 6009}, + {7886, 7804, 10150, 11940, 7886, 7685, 9368, 10854, 10061, 9300, 10431, 11629, 11629, 10742, 11485, 12479, 2763}, + {9042, 8383, 10240, 11781, 8483, 8013, 9437, 10742, 10334, 9437, 10431, 11485, 11781, 10742, 11485, 12288, 2346}, + {5922, 6619, 9368, 11940, 6566, 6539, 8750, 10970, 9168, 8640, 10240, 12109, 11485, 10742, 11940, 13396, 5009}, + {12288, 11090, 11348, 12109, 11090, 9892, 10334, 10970, 11629, 10431, 10970, 11629, 12479, 11348, 11781, 12288, + 1289}, + {1685, 5676, 13138, 18432, 5598, 7804, 13677, 18432, 12683, 13396, 17234, 20480, 17234, 17234, 20480, 20480, 15725}, + {2793, 5072, 10970, 15725, 5204, 6487, 11216, 15186, 10970, 11216, 14336, 17234, 15186, 15186, 17234, 18432, 12109}, + {12902, 11485, 11940, 13396, 11629, 10531, 11348, 12479, 12683, 11629, 12288, 13138, 13677, 12683, 13138, 13677, + 854}, + {3821, 5088, 9812, 13988, 5289, 5901, 9812, 13677, 9976, 9892, 12479, 15186, 13988, 13677, 15186, 17234, 9812}, + {4856, 5412, 9168, 12902, 5598, 5736, 8863, 12288, 9368, 8982, 11090, 13677, 12902, 12288, 13677, 15725, 8147}, + {20480, 20480, 7088, 9300, 20480, 20480, 7844, 9733, 7320, 7928, 9368, 10970, 9581, 9892, 10970, 12288, 2550}, + {6031, 5859, 8192, 10635, 6410, 6286, 8433, 10742, 9656, 9042, 10531, 12479, 12479, 11629, 12902, 14336, 5756}, + {6144, 6215, 8982, 11940, 6262, 6009, 8433, 11216, 8982, 8433, 10240, 12479, 11781, 11090, 12479, 13988, 5817}, + {20480, 20480, 11216, 12109, 20480, 20480, 11216, 11940, 11629, 11485, 11940, 12479, 12479, 12109, 12683, 13138, + 704}, + {7928, 6994, 8239, 9733, 7218, 6539, 8147, 9892, 9812, 9105, 10240, 11629, 12109, 11216, 12109, 13138, 4167}, + {8640, 7724, 9233, 10970, 8013, 7185, 8483, 10150, 9656, 8694, 9656, 10970, 11348, 10334, 11090, 12288, 3391}, + {20480, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, + 91}, + {10061, 8863, 9733, 11090, 8982, 7970, 8806, 9976, 10061, 9105, 9812, 10742, 11485, 10334, 10970, 11781, 2557}, + {10431, 9368, 10240, 11348, 9368, 8433, 9233, 10334, 10431, 9437, 10061, 10970, 11781, 10635, 11216, 11940, 2119}, + {13988, 12479, 12683, 12902, 12683, 11348, 11485, 11940, 12902, 11629, 11940, 12288, 13396, 12109, 12479, 12683, + 828}, + {10431, 9300, 10334, 11629, 9508, 8483, 9437, 10635, 10635, 9656, 10431, 11348, 11940, 10854, 11485, 12288, 1946}, + {12479, 11216, 11629, 12479, 11348, 10150, 10635, 11348, 11940, 10854, 11216, 11940, 12902, 11629, 11940, 12479, + 1146}, + {13396, 12109, 12288, 12902, 12109, 10854, 11216, 11781, 12479, 11348, 11629, 12109, 13138, 11940, 12288, 12683, + 928}, + {2443, 5289, 11629, 16384, 5170, 6730, 11940, 16384, 11216, 11629, 14731, 18432, 15725, 15725, 18432, 20480, 13396}, + {3328, 5009, 10531, 15186, 5040, 6031, 10531, 14731, 10431, 10431, 13396, 16384, 15186, 14731, 16384, 18432, 11629}, + {14336, 12902, 12902, 13396, 12902, 11629, 11940, 12288, 13138, 12109, 12288, 12902, 13677, 12683, 12902, 13138, + 711}, + {4300, 5204, 9437, 13396, 5430, 5776, 9300, 12902, 9656, 9437, 11781, 14731, 13396, 12902, 14731, 16384, 8982}, + {5394, 5776, 8982, 12288, 5922, 5901, 8640, 11629, 9105, 8694, 10635, 13138, 12288, 11629, 13138, 14731, 6844}, + {17234, 15725, 15725, 15725, 15725, 14731, 14731, 14731, 16384, 14731, 14731, 15186, 16384, 15186, 15186, 15186, + 272}, + {6461, 6286, 8806, 11348, 6566, 6215, 8334, 10742, 9233, 8535, 10061, 12109, 11781, 10970, 12109, 13677, 5394}, + {6674, 6487, 8863, 11485, 6702, 6286, 8334, 10635, 9168, 8483, 9976, 11940, 11629, 10854, 11940, 13396, 5105}, + {15186, 13677, 13677, 13988, 13677, 12479, 12479, 12683, 13988, 12683, 12902, 13138, 14336, 13138, 13396, 13677, + 565}, + {7844, 7252, 8922, 10854, 7389, 6815, 8383, 10240, 9508, 8750, 9892, 11485, 11629, 10742, 11629, 12902, 3842}, + {9233, 8239, 9233, 10431, 8334, 7424, 8483, 9892, 10061, 9105, 10061, 11216, 11781, 10742, 11485, 12479, 2906}, + {20480, 20480, 14731, 14731, 20480, 20480, 14336, 14336, 15186, 14336, 14731, 14731, 15186, 14731, 14731, 15186, + 266}, + {10531, 9300, 9976, 11090, 9437, 8286, 9042, 10061, 10431, 9368, 9976, 10854, 11781, 10531, 11090, 11781, 2233}, + {11629, 10334, 10970, 12109, 10431, 9368, 10061, 10970, 11348, 10240, 10854, 11485, 12288, 11216, 11629, 12288, + 1469}, + {952, 6787, 15725, 20480, 6646, 9733, 16384, 20480, 14731, 15725, 18432, 20480, 18432, 20480, 20480, 20480, 18432}, + {9437, 8806, 10742, 12288, 8982, 8483, 9892, 11216, 10742, 9892, 10854, 11940, 12109, 11090, 11781, 12683, 1891}, + {12902, 11629, 11940, 12479, 11781, 10531, 10854, 11485, 12109, 10970, 11348, 11940, 12902, 11781, 12109, 12479, + 1054}, + {2113, 5323, 11781, 16384, 5579, 7252, 12288, 16384, 11781, 12288, 15186, 18432, 15725, 16384, 18432, 20480, 12902}, + {2463, 5965, 11348, 15186, 5522, 6934, 11216, 14731, 10334, 10635, 13677, 16384, 13988, 13988, 15725, 18432, 10334}, + {3779, 5541, 9812, 13677, 5467, 6122, 9656, 13138, 9581, 9437, 11940, 14731, 13138, 12683, 14336, 16384, 8982}, + {3181, 5154, 10150, 14336, 5448, 6311, 10334, 13988, 10334, 10431, 13138, 15725, 14336, 13988, 15725, 18432, 10431}, + {4841, 5560, 9105, 12479, 5756, 5944, 8922, 12109, 9300, 8982, 11090, 13677, 12479, 12109, 13677, 15186, 7460}, + {5859, 6009, 8922, 11940, 6144, 5987, 8483, 11348, 9042, 8535, 10334, 12683, 11940, 11216, 12683, 14336, 6215}, + {4250, 4916, 8587, 12109, 5901, 6191, 9233, 12288, 10150, 9892, 11940, 14336, 13677, 13138, 14731, 16384, 8383}, + {7153, 6702, 8863, 11216, 6904, 6410, 8239, 10431, 9233, 8433, 9812, 11629, 11629, 10742, 11781, 13138, 4753}, + {6674, 7057, 9508, 11629, 7120, 6964, 8806, 10635, 9437, 8750, 10061, 11629, 11485, 10531, 11485, 12683, 4062}, + {5341, 5289, 8013, 10970, 6311, 6262, 8640, 11090, 10061, 9508, 11090, 13138, 12902, 12288, 13396, 15186, 6539}, + {8057, 7533, 9300, 11216, 7685, 7057, 8535, 10334, 9508, 8694, 9812, 11216, 11485, 10431, 11348, 12479, 3541}, + {9168, 8239, 9656, 11216, 8483, 7608, 8806, 10240, 9892, 8982, 9812, 11090, 11485, 10431, 11090, 12109, 2815}, + {558, 7928, 18432, 20480, 7724, 12288, 20480, 20480, 18432, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480}, + {9892, 8806, 9976, 11348, 9042, 8057, 9042, 10240, 10240, 9233, 9976, 11090, 11629, 10531, 11216, 12109, 2371}, + {11090, 9812, 10531, 11629, 9976, 8863, 9508, 10531, 10854, 9733, 10334, 11090, 11940, 10742, 11216, 11940, 1821}, + {7354, 6964, 9042, 11216, 7153, 6592, 8334, 10431, 9233, 8483, 9812, 11485, 11485, 10531, 11629, 12902, 4349}, + {11348, 10150, 10742, 11629, 10150, 9042, 9656, 10431, 10854, 9812, 10431, 11216, 12109, 10970, 11485, 12109, 1700}, + {20480, 20480, 8694, 10150, 20480, 20480, 8982, 10240, 8982, 9105, 9976, 10970, 10431, 10431, 11090, 11940, 1610}, + {9233, 8192, 9368, 10970, 8286, 7496, 8587, 9976, 9812, 8863, 9733, 10854, 11348, 10334, 11090, 11940, 3040}, + {4202, 5716, 9733, 13138, 5598, 6099, 9437, 12683, 9300, 9168, 11485, 13988, 12479, 12109, 13988, 15725, 7804}, + {4400, 5965, 9508, 12479, 6009, 6360, 9105, 11781, 9300, 8982, 10970, 13138, 12109, 11629, 13138, 14731, 6994}}; + +RAM_ALIGN const Word32 tnsAcfWindow_lc3plus[MAXLAG] = {0x7FBF61E2, 0x7EFE4B00, 0x7DBF01E8, 0x7C0544D0, + 0x79D636E9, 0x773846E0, 0x74330F61, 0x70CF3251}; +RAM_ALIGN const Word16 tnsQuantPts[TNS_COEF_RES] = {-32628, -31517, -29333, -26149, -22076, -17250, -11837, -6021, 0, + 6021, 11837, 17250, 22076, 26149, 29333, 31517, 32628}; +RAM_ALIGN const Word16 tnsQuantThr[TNS_COEF_RES - 1] = {-32210, -30555, -27860, -24216, -19747, -14606, -8967, -3023, + 3023, 8967, 14606, 19747, 24216, 27860, 30555, 32210}; + +RAM_ALIGN const Word16 ac_tns_order_bits[2][MAXLAG] = {{17234, 13988, 11216, 8694, 6566, 4977, 3961, 3040}, + {12683, 9437, 6874, 5541, 5121, 5170, 5359, 5056}}; +RAM_ALIGN const Word16 ac_tns_order_freq[2][MAXLAG] = {{3, 9, 23, 54, 111, 190, 268, 366}, + {14, 42, 100, 157, 181, 178, 167, 185}}; +RAM_ALIGN const Word16 ac_tns_order_cumfreq[2][MAXLAG] = {{0, 3, 12, 35, 89, 200, 390, 658}, + {0, 14, 56, 156, 313, 494, 672, 839}}; +RAM_ALIGN const Word16 ac_tns_coef_bits[MAXLAG][TNS_COEF_RES] = { + {20480, 15725, 12479, 10334, 8694, 7320, 6964, 6335, 5504, 5637, 6566, 6758, 8433, 11348, 15186, 20480, 20480}, + {20480, 20480, 20480, 20480, 12902, 9368, 7057, 5901, 5254, 5485, 5598, 6076, 7608, 10742, 15186, 20480, 20480}, + {20480, 20480, 20480, 20480, 13988, 9368, 6702, 4841, 4585, 4682, 5859, 7764, 12109, 20480, 20480, 20480, 20480}, + {20480, 20480, 20480, 20480, 18432, 13396, 8982, 4767, 3779, 3658, 6335, 9656, 13988, 20480, 20480, 20480, 20480}, + {20480, 20480, 20480, 20480, 20480, 14731, 9437, 4275, 3249, 3493, 8483, 13988, 17234, 20480, 20480, 20480, 20480}, + {20480, 20480, 20480, 20480, 20480, 20480, 12902, 4753, 3040, 2953, 9105, 15725, 20480, 20480, 20480, 20480, 20480}, + {20480, 20480, 20480, 20480, 20480, 20480, 12902, 3821, 3346, 3000, 12109, 20480, 20480, 20480, 20480, 20480, + 20480}, + {20480, 20480, 20480, 20480, 20480, 20480, 15725, 3658, 20480, 1201, 10854, 18432, 20480, 20480, 20480, 20480, + 20480}}; +RAM_ALIGN const Word16 ac_tns_coef_freq[MAXLAG][TNS_COEF_RES] = { + {1, 5, 15, 31, 54, 86, 97, 120, 159, 152, 111, 104, 59, 22, 6, 1, 1}, + {1, 1, 1, 1, 13, 43, 94, 139, 173, 160, 154, 131, 78, 27, 6, 1, 1}, + {1, 1, 1, 1, 9, 43, 106, 199, 217, 210, 141, 74, 17, 1, 1, 1, 1}, + {1, 1, 1, 1, 2, 11, 49, 204, 285, 297, 120, 39, 9, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 7, 42, 241, 341, 314, 58, 9, 3, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 13, 205, 366, 377, 47, 5, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 13, 281, 330, 371, 17, 1, 1, 1, 1, 1, 1}, + {1, 1, 1, 1, 1, 1, 5, 297, 1, 682, 26, 2, 1, 1, 1, 1, 1}}; +RAM_ALIGN const Word16 ac_tns_coef_cumfreq[MAXLAG][TNS_COEF_RES] = { + {0, 1, 6, 21, 52, 106, 192, 289, 409, 568, 720, 831, 935, 994, 1016, 1022, 1023}, + {0, 1, 2, 3, 4, 17, 60, 154, 293, 466, 626, 780, 911, 989, 1016, 1022, 1023}, + {0, 1, 2, 3, 4, 13, 56, 162, 361, 578, 788, 929, 1003, 1020, 1021, 1022, 1023}, + {0, 1, 2, 3, 4, 6, 17, 66, 270, 555, 852, 972, 1011, 1020, 1021, 1022, 1023}, + {0, 1, 2, 3, 4, 5, 12, 54, 295, 636, 950, 1008, 1017, 1020, 1021, 1022, 1023}, + {0, 1, 2, 3, 4, 5, 6, 19, 224, 590, 967, 1014, 1019, 1020, 1021, 1022, 1023}, + {0, 1, 2, 3, 4, 5, 6, 19, 300, 630, 1001, 1018, 1019, 1020, 1021, 1022, 1023}, + {0, 1, 2, 3, 4, 5, 6, 11, 308, 309, 991, 1017, 1019, 1020, 1021, 1022, 1023}}; + +#ifdef SUBSET_NB +RAM_ALIGN const Word16 lpc_warp_pre_emphasis_64_8000[64] = { + 0x4000, 0x435c, 0x46e5, 0x4a9e, 0x4e89, 0x52a9, 0x5700, 0x5b91, 0x6060, 0x656f, 0x6ac2, 0x705d, 0x7643, + 0x7c79, 0x4181, 0x44f1, 0x4890, 0x4c5f, 0x5061, 0x549a, 0x590b, 0x5db7, 0x62a3, 0x67d1, 0x6d44, 0x7301, + 0x790a, 0x7f65, 0x430b, 0x4690, 0x4a44, 0x4e2a, 0x5245, 0x5696, 0x5b22, 0x5feb, 0x64f4, 0x6a41, 0x6fd5, + 0x75b4, 0x7be2, 0x4131, 0x449e, 0x4838, 0x4c02, 0x5000, 0x5433, 0x589f, 0x5d46, 0x622c, 0x6753, 0x6cc0, + 0x7275, 0x7878, 0x7ecb, 0x42b9, 0x463a, 0x49ea, 0x4dcb, 0x51e1, 0x562d, 0x5ab4, 0x5f77, 0x647a}; + +RAM_ALIGN const Word16 lpc_warp_pre_emphasis_64_e_8000[64] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05}; +#else +#define lpc_warp_pre_emphasis_64_8000 NULL +#define lpc_warp_pre_emphasis_64_e_8000 NULL +#endif + +#ifdef SUBSET_WB +RAM_ALIGN const Word16 lpc_warp_pre_emphasis_64_16000[64] = { + 0x4000, 0x445a, 0x4900, 0x4df7, 0x5344, 0x58ed, 0x5efa, 0x656f, 0x6c55, 0x73b2, 0x7b91, 0x41fc, 0x4678, + 0x4b43, 0x5061, 0x55d9, 0x5baf, 0x61eb, 0x6894, 0x6fb0, 0x7748, 0x7f65, 0x4407, 0x48a8, 0x4d98, 0x52df, + 0x5882, 0x5e87, 0x64f4, 0x6bd1, 0x7326, 0x7afb, 0x41ac, 0x4623, 0x4ae8, 0x5000, 0x5571, 0x5b40, 0x6174, + 0x6815, 0x6f29, 0x76b8, 0x7ecb, 0x43b5, 0x4850, 0x4d3a, 0x527b, 0x5817, 0x5e14, 0x647a, 0x6b4f, 0x729b, + 0x7a66, 0x415c, 0x45ce, 0x4a8d, 0x4f9f, 0x5509, 0x5ad1, 0x60fe, 0x6797, 0x6ea2, 0x7628, 0x7e31}; + +RAM_ALIGN const Word16 lpc_warp_pre_emphasis_64_e_16000[64] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06}; +#else +#define lpc_warp_pre_emphasis_64_16000 NULL +#define lpc_warp_pre_emphasis_64_e_16000 NULL +#endif + +#ifdef SUBSET_SSWB +RAM_ALIGN const Word16 lpc_warp_pre_emphasis_64_24000[64] = { + 0x4000, 0x455c, 0x4b2a, 0x5176, 0x5848, 0x5fac, 0x67af, 0x705d, 0x79c5, 0x41fc, 0x4782, 0x4d7f, 0x53fc, + 0x5b04, 0x62a3, 0x6ae5, 0x73d9, 0x7d8c, 0x4407, 0x49b9, 0x4fe6, 0x5696, 0x5dd6, 0x65b2, 0x6e35, 0x7770, + 0x40b8, 0x4623, 0x4c02, 0x5260, 0x5945, 0x60bf, 0x68d8, 0x71a0, 0x7b23, 0x42b9, 0x4850, 0x4e5e, 0x54ed, + 0x5c0a, 0x63be, 0x6c18, 0x7525, 0x7ef4, 0x44cb, 0x4a8d, 0x50cb, 0x578f, 0x5ee4, 0x66d6, 0x6f72, 0x78c7, + 0x4172, 0x46ed, 0x4cdd, 0x534c, 0x5a46, 0x61d5, 0x6a06, 0x72e6, 0x7c85, 0x4379, 0x491f, 0x4f3f}; + +RAM_ALIGN const Word16 lpc_warp_pre_emphasis_64_e_24000[64] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08}; +#else +#define lpc_warp_pre_emphasis_64_24000 NULL +#define lpc_warp_pre_emphasis_64_e_24000 NULL +#endif + +#ifdef SUBSET_SWB +RAM_ALIGN const Word16 lpc_warp_pre_emphasis_64_32000[64] = { + 0x4000, 0x4661, 0x4d65, 0x551d, 0x5d99, 0x66ed, 0x7130, 0x7c79, 0x4471, 0x4b43, 0x52c4, 0x5b04, 0x6417, + 0x6e11, 0x790a, 0x428e, 0x4930, 0x507c, 0x5882, 0x6154, 0x6b08, 0x75b4, 0x40b8, 0x472b, 0x4e44, 0x5611, + 0x5ea6, 0x6815, 0x7275, 0x7dde, 0x4535, 0x4c1b, 0x53b2, 0x5c0a, 0x6536, 0x6f4d, 0x7a66, 0x434d, 0x4a02, + 0x5163, 0x5980, 0x626c, 0x6c3c, 0x7706, 0x4172, 0x47f8, 0x4f25, 0x5708, 0x5fb5, 0x6940, 0x73be, 0x7f48, + 0x45fc, 0x4cf6, 0x54a2, 0x5d12, 0x6659, 0x708d, 0x7bc6, 0x440e, 0x4ad7, 0x524d, 0x5a81, 0x6387}; + +RAM_ALIGN const Word16 lpc_warp_pre_emphasis_64_e_32000[64] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, + 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09}; +#else +#define lpc_warp_pre_emphasis_64_32000 NULL +#define lpc_warp_pre_emphasis_64_e_32000 NULL +#endif + +#ifdef SUBSET_FB +RAM_ALIGN const Word16 lpc_warp_pre_emphasis_64_48000[64] = { + 0x4000, 0x476b, 0x4fb1, 0x58ed, 0x633c, 0x6ebc, 0x7b91, 0x44f1, 0x4cee, 0x55d9, 0x5fcb, 0x6ae5, 0x7748, + 0x428e, 0x4a44, 0x52df, 0x5c7a, 0x6731, 0x7326, 0x403f, 0x47b1, 0x5000, 0x5945, 0x639e, 0x6f29, 0x7c0b, + 0x4535, 0x4d3a, 0x562d, 0x602a, 0x6b4f, 0x77be, 0x42cf, 0x4a8d, 0x5331, 0x5cd5, 0x6797, 0x7398, 0x407f, + 0x47f8, 0x504f, 0x599d, 0x6400, 0x6f97, 0x7c85, 0x457a, 0x4d87, 0x5683, 0x6089, 0x6bb9, 0x7834, 0x4311, + 0x4ad7, 0x5383, 0x5d31, 0x67fd, 0x740a, 0x40be, 0x483f, 0x509e, 0x59f6, 0x6463, 0x7005, 0x7d00}; + +RAM_ALIGN const Word16 lpc_warp_pre_emphasis_64_e_48000[64] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a}; +#else +#define lpc_warp_pre_emphasis_64_48000 NULL +#define lpc_warp_pre_emphasis_64_e_48000 NULL +#endif + +#ifdef ENABLE_HR_MODE +RAM_ALIGN const Word16 lpc_warp_pre_emphasis_64_96000[64] = { + 0x4000, 0x4878, 0x520f, 0x5cea, 0x6936, 0x7721, 0x4372, 0x4c5f, 0x567a, 0x61eb, 0x6ee0, 0x7d8c, 0x4714, + 0x507c, 0x5b22, 0x6731, 0x74d8, 0x4227, 0x4ae8, 0x54d1, 0x600a, 0x6cc0, 0x7b23, 0x45b7, 0x4ef1, 0x5963, + 0x6536, 0x729b, 0x40e2, 0x4978, 0x5331, 0x5e33, 0x6aaa, 0x78c7, 0x4461, 0x4d6d, 0x57ac, 0x6346, 0x7068, + 0x7f48, 0x4810, 0x5199, 0x5c64, 0x689e, 0x7676, 0x4311, 0x4bf1, 0x55fd, 0x615e, 0x6e40, 0x7cd7, 0x46ae, + 0x5008, 0x5a9f, 0x669d, 0x7430, 0x41c8, 0x4a7c, 0x5457, 0x5f80, 0x6c23, 0x7a72, 0x4553, 0x4e7f}; + +RAM_ALIGN const Word16 lpc_warp_pre_emphasis_64_e_96000[64] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, + 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0c, 0x0c}; +#else +# define lpc_warp_pre_emphasis_64_96000 NULL +# define lpc_warp_pre_emphasis_64_e_96000 NULL +#endif + +RAM_ALIGN const Word16 *const lpc_pre_emphasis[NUM_SAMP_FREQ] = {lpc_warp_pre_emphasis_64_8000, + lpc_warp_pre_emphasis_64_16000, + lpc_warp_pre_emphasis_64_24000, + lpc_warp_pre_emphasis_64_32000, + lpc_warp_pre_emphasis_64_48000, + lpc_warp_pre_emphasis_64_96000 +}; + +RAM_ALIGN const Word16 *const lpc_pre_emphasis_e[NUM_SAMP_FREQ] = {lpc_warp_pre_emphasis_64_e_8000, + lpc_warp_pre_emphasis_64_e_16000, + lpc_warp_pre_emphasis_64_e_24000, + lpc_warp_pre_emphasis_64_e_32000, + lpc_warp_pre_emphasis_64_e_48000, + lpc_warp_pre_emphasis_64_e_96000 +}; + +#ifdef SUBSET_NB +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_20_8000[20] = {0x4be4, 0x5b79, 0x7a43, 0x53bf, 0x7106, 0x4a1f, 0x5e46, + 0x7477, 0x4613, 0x5260, 0x5ed4, 0x6b21, 0x76f9, 0x4109, + 0x4612, 0x4a79, 0x4e22, 0x50f6, 0x52e2, 0x53dc}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_20_e_8000[20] = { + (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xffff, (Word16)0xffff, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; + +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_40_8000[40] = { + 0x4a6c, 0x4e55, 0x5622, 0x61c5, 0x712d, 0x4220, 0x4d71, 0x5a77, 0x691e, 0x794e, 0x4577, 0x4ef1, 0x5906, 0x63a6, + 0x6ec1, 0x7a44, 0x430f, 0x491f, 0x4f46, 0x557c, 0x5bb8, 0x61ee, 0x6815, 0x6e25, 0x7412, 0x79d4, 0x7f61, 0x4259, + 0x44de, 0x473c, 0x4970, 0x4b76, 0x4d4b, 0x4eec, 0x5056, 0x5187, 0x527e, 0x5338, 0x53b5, 0x53f3}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_40_e_8000[40] = { + (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xffff, (Word16)0xffff, + (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0000, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; + + +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_80_8000[80] = { + 0x4a0e, 0x4b09, 0x4cfd, 0x4fec, 0x53d2, 0x58af, 0x5e81, 0x6545, 0x6cf9, 0x759a, 0x7f25, 0x44ca, 0x4a73, 0x508a, + 0x570e, 0x5dfa, 0x654e, 0x6d06, 0x751e, 0x7d94, 0x4332, 0x47c6, 0x4c83, 0x5168, 0x5673, 0x5ba2, 0x60f2, 0x6662, + 0x6bf0, 0x7199, 0x775b, 0x7d34, 0x4191, 0x4490, 0x4798, 0x4aa7, 0x4dba, 0x50d3, 0x53ee, 0x570b, 0x5a29, 0x5d46, + 0x6061, 0x637a, 0x668e, 0x699c, 0x6ca4, 0x6fa3, 0x729a, 0x7587, 0x7868, 0x7b3c, 0x7e03, 0x405e, 0x41b2, 0x42fd, + 0x4440, 0x4579, 0x46a9, 0x47cd, 0x48e7, 0x49f6, 0x4af9, 0x4bf0, 0x4cdb, 0x4db8, 0x4e89, 0x4f4c, 0x5001, 0x50a8, + 0x5140, 0x51ca, 0x5246, 0x52b2, 0x530f, 0x535d, 0x539b, 0x53ca, 0x53e9, 0x53f9}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_80_e_8000[80] = { + (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, + (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, + (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; +#else +#define lpc_lin_pre_emphasis_20_8000 NULL +#define lpc_lin_pre_emphasis_20_e_8000 NULL +#define lpc_lin_pre_emphasis_40_8000 NULL +#define lpc_lin_pre_emphasis_40_e_8000 NULL +#define lpc_lin_pre_emphasis_80_8000 NULL +#define lpc_lin_pre_emphasis_80_e_8000 NULL +#endif + +#ifdef SUBSET_WB +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_40_16000[40] = { + 0x516b, 0x5a81, 0x6c9d, 0x43d2, 0x55b6, 0x6bdd, 0x4313, 0x5233, 0x6336, 0x7602, 0x453d, 0x503e, 0x5bf4, 0x684b, + 0x7530, 0x4148, 0x4829, 0x4f33, 0x5658, 0x5d8f, 0x64cc, 0x6c03, 0x7328, 0x7a32, 0x408a, 0x43e1, 0x471b, 0x4a31, + 0x4d1e, 0x4fde, 0x526d, 0x54c7, 0x56e7, 0x58cb, 0x5a70, 0x5bd2, 0x5cf0, 0x5dc9, 0x5e59, 0x5ea2}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_40_e_16000[40] = { + (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xffff, + (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_80_16000[80] = { + 0x5091, 0x52d7, 0x5762, 0x5e30, 0x673f, 0x728b, 0x4008, 0x47e3, 0x50d6, 0x5adb, 0x65ef, 0x720e, 0x7f33, 0x46ac, + 0x4e3c, 0x5647, 0x5ec9, 0x67bf, 0x7126, 0x7afa, 0x429b, 0x47ec, 0x4d6d, 0x531c, 0x58f7, 0x5efb, 0x6527, 0x6b78, + 0x71eb, 0x787d, 0x7f2d, 0x42fc, 0x466d, 0x49e8, 0x4d6d, 0x50fa, 0x548d, 0x5825, 0x5bc1, 0x5f5e, 0x62fd, 0x669a, + 0x6a36, 0x6dce, 0x7161, 0x74ee, 0x7872, 0x7bee, 0x7f5f, 0x4162, 0x430e, 0x44b3, 0x4650, 0x47e4, 0x496f, 0x4af0, + 0x4c67, 0x4dd2, 0x4f33, 0x5087, 0x51ce, 0x5309, 0x5436, 0x5554, 0x5665, 0x5766, 0x5858, 0x593a, 0x5a0d, 0x5acf, + 0x5b80, 0x5c20, 0x5caf, 0x5d2d, 0x5d99, 0x5df4, 0x5e3c, 0x5e72, 0x5e97, 0x5ea9}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_80_e_16000[80] = { + (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffe, + (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xffff, + (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; +#else +#define lpc_lin_pre_emphasis_40_16000 NULL +#define lpc_lin_pre_emphasis_40_e_16000 NULL +#define lpc_lin_pre_emphasis_80_16000 NULL +#define lpc_lin_pre_emphasis_80_e_16000 NULL +#endif + +#ifdef SUBSET_SSWB +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_40_24000[40] = { + 0x44f2, 0x59a3, 0x4172, 0x603b, 0x447d, 0x5db8, 0x7ba7, 0x4f0d, 0x626d, 0x77d6, 0x4793, 0x541b, 0x6171, 0x6f7f, + 0x7e2f, 0x46b5, 0x4e8b, 0x568f, 0x5eb2, 0x66ea, 0x6f28, 0x775f, 0x7f83, 0x43c3, 0x47ae, 0x4b7d, 0x4f29, 0x52ac, + 0x5602, 0x5924, 0x5c0e, 0x5ebb, 0x6127, 0x634e, 0x652d, 0x66c1, 0x6807, 0x68fd, 0x69a2, 0x69f5}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_40_e_24000[40] = { + (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, + (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; + +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_60_24000[60] = { + 0x4382, 0x4cb6, 0x5f17, 0x7a99, 0x4f94, 0x6656, 0x40c0, 0x5081, 0x6263, 0x7658, 0x4629, 0x5222, + 0x5f0e, 0x6ce3, 0x7b98, 0x4591, 0x4dbc, 0x5647, 0x5f2b, 0x6862, 0x71e7, 0x7bb2, 0x42de, 0x47ff, + 0x4d39, 0x5288, 0x57e8, 0x5d55, 0x62cc, 0x6849, 0x6dc8, 0x7345, 0x78bc, 0x7e29, 0x41c5, 0x446c, + 0x4709, 0x499a, 0x4c1c, 0x4e8f, 0x50f0, 0x533e, 0x5577, 0x579a, 0x59a4, 0x5b96, 0x5d6c, 0x5f27, + 0x60c4, 0x6243, 0x63a3, 0x64e2, 0x6601, 0x66fd, 0x67d6, 0x688c, 0x691e, 0x698c, 0x69d6, 0x69fb}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_60_e_24000[60] = { + (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffe, + (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, + (Word16)0xffff, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; + +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_80_24000[80] = { + 0x4301, 0x482e, 0x5287, 0x6208, 0x76a9, 0x4832, 0x5797, 0x697e, 0x7dde, 0x4a59, 0x56f7, 0x64c5, 0x73bd, 0x41ed, + 0x4a8a, 0x53b2, 0x5d63, 0x6798, 0x724d, 0x7d7e, 0x4493, 0x4aa1, 0x50e5, 0x575e, 0x5e0a, 0x64e4, 0x6beb, 0x731d, + 0x7a75, 0x40f9, 0x44c7, 0x48a5, 0x4c91, 0x5088, 0x548a, 0x5895, 0x5ca7, 0x60bf, 0x64db, 0x68f9, 0x6d18, 0x7136, + 0x7552, 0x796a, 0x7d7c, 0x40c4, 0x42c4, 0x44c0, 0x46b6, 0x48a5, 0x4a8c, 0x4c6b, 0x4e41, 0x500e, 0x51d0, 0x5386, + 0x5531, 0x56cf, 0x5860, 0x59e4, 0x5b59, 0x5cbf, 0x5e16, 0x5f5c, 0x6092, 0x61b7, 0x62cb, 0x63cd, 0x64bc, 0x6599, + 0x6663, 0x671a, 0x67bd, 0x684c, 0x68c7, 0x692e, 0x6980, 0x69be, 0x69e8, 0x69fd}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_80_e_24000[80] = { + (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffd, (Word16)0xfffd, + (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xffff, + (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; +#else +#define lpc_lin_pre_emphasis_60_24000 NULL +#define lpc_lin_pre_emphasis_60_e_24000 NULL +#define lpc_lin_pre_emphasis_40_24000 NULL +#define lpc_lin_pre_emphasis_40_e_24000 NULL +#define lpc_lin_pre_emphasis_80_24000 NULL +#define lpc_lin_pre_emphasis_80_e_24000 NULL +#endif + +#ifdef SUBSET_SWB +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_80_32000[80] = { + 0x6eab, 0x4e92, 0x7d03, 0x614a, 0x47cb, 0x64a9, 0x439a, 0x57af, 0x6e8c, 0x4414, 0x523c, 0x61b9, 0x7284, 0x424c, + 0x4bf6, 0x563d, 0x611c, 0x6c8f, 0x7892, 0x4290, 0x491a, 0x4fe5, 0x56ed, 0x5e31, 0x65ac, 0x6d5d, 0x753f, 0x7d51, + 0x42c7, 0x46fa, 0x4b40, 0x4f96, 0x53fc, 0x5870, 0x5cef, 0x6178, 0x6609, 0x6aa1, 0x6f3d, 0x73dc, 0x787b, 0x7d1a, + 0x40db, 0x4327, 0x4570, 0x47b4, 0x49f4, 0x4c2d, 0x4e60, 0x508b, 0x52ae, 0x54c8, 0x56d7, 0x58dc, 0x5ad4, 0x5cc0, + 0x5e9f, 0x6070, 0x6232, 0x63e5, 0x6587, 0x6719, 0x689a, 0x6a08, 0x6b64, 0x6cad, 0x6de2, 0x6f03, 0x7010, 0x7108, + 0x71ea, 0x72b7, 0x736e, 0x740f, 0x7499, 0x750c, 0x7569, 0x75ae, 0x75dd, 0x75f4}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_80_e_32000[80] = { + (Word16)0xfff9, (Word16)0xfffa, (Word16)0xfffa, (Word16)0xfffb, (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffd, + (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xffff, + (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; +#else +#define lpc_lin_pre_emphasis_80_32000 NULL +#define lpc_lin_pre_emphasis_80_e_32000 NULL +#endif + +#ifdef SUBSET_FB +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_60_48000[60] = { + 0x7330, 0x62e5, 0x5ab1, 0x4c35, 0x753a, 0x5425, 0x72a0, 0x4afd, 0x5f0d, 0x7571, 0x470d, 0x547b, + 0x62fa, 0x727f, 0x4180, 0x4a38, 0x5362, 0x5cf7, 0x66f0, 0x7148, 0x7bf5, 0x4379, 0x491b, 0x4edc, + 0x54b9, 0x5aae, 0x60b6, 0x66cd, 0x6cee, 0x7316, 0x7941, 0x7f69, 0x42c5, 0x45d1, 0x48d4, 0x4bcf, + 0x4ebd, 0x519e, 0x546f, 0x572e, 0x59d9, 0x5c6f, 0x5eee, 0x6153, 0x639d, 0x65cb, 0x67dc, 0x69cc, + 0x6b9c, 0x6d4a, 0x6ed4, 0x703b, 0x717c, 0x7296, 0x738a, 0x7457, 0x74fb, 0x7576, 0x75c9, 0x75f2}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_60_e_48000[60] = { + (Word16)0xfff9, (Word16)0xfffa, (Word16)0xfffb, (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffd, (Word16)0xfffd, + (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, + (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_80_48000[80] = { + 0x6eab, 0x4e92, 0x7d03, 0x614a, 0x47cb, 0x64a9, 0x439a, 0x57af, 0x6e8c, 0x4414, 0x523c, 0x61b9, 0x7284, 0x424c, + 0x4bf6, 0x563d, 0x611c, 0x6c8f, 0x7892, 0x4290, 0x491a, 0x4fe5, 0x56ed, 0x5e31, 0x65ac, 0x6d5d, 0x753f, 0x7d51, + 0x42c7, 0x46fa, 0x4b40, 0x4f96, 0x53fc, 0x5870, 0x5cef, 0x6178, 0x6609, 0x6aa1, 0x6f3d, 0x73dc, 0x787b, 0x7d1a, + 0x40db, 0x4327, 0x4570, 0x47b4, 0x49f4, 0x4c2d, 0x4e60, 0x508b, 0x52ae, 0x54c8, 0x56d7, 0x58dc, 0x5ad4, 0x5cc0, + 0x5e9f, 0x6070, 0x6232, 0x63e5, 0x6587, 0x6719, 0x689a, 0x6a08, 0x6b64, 0x6cad, 0x6de2, 0x6f03, 0x7010, 0x7108, + 0x71ea, 0x72b7, 0x736e, 0x740f, 0x7499, 0x750c, 0x7569, 0x75ae, 0x75dd, 0x75f4}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_80_e_48000[80] = { + (Word16)0xfff9, (Word16)0xfffa, (Word16)0xfffa, (Word16)0xfffb, (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffd, + (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xffff, + (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; +#else +#define lpc_lin_pre_emphasis_60_48000 NULL +#define lpc_lin_pre_emphasis_60_e_48000 NULL +#define lpc_lin_pre_emphasis_80_48000 NULL +#define lpc_lin_pre_emphasis_80_e_48000 NULL +#endif + +# if defined(SUBSET_SWB) || defined(SUBSET_FB) +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_80_0_92[80] = { + 0x6eab, 0x4e92, 0x7d03, 0x614a, 0x47cb, 0x64a9, 0x439a, 0x57af, 0x6e8c, 0x4414, 0x523c, 0x61b9, 0x7284, 0x424c, + 0x4bf6, 0x563d, 0x611c, 0x6c8f, 0x7892, 0x4290, 0x491a, 0x4fe5, 0x56ed, 0x5e31, 0x65ac, 0x6d5d, 0x753f, 0x7d51, + 0x42c7, 0x46fa, 0x4b40, 0x4f96, 0x53fc, 0x5870, 0x5cef, 0x6178, 0x6609, 0x6aa1, 0x6f3d, 0x73dc, 0x787b, 0x7d1a, + 0x40db, 0x4327, 0x4570, 0x47b4, 0x49f4, 0x4c2d, 0x4e60, 0x508b, 0x52ae, 0x54c8, 0x56d7, 0x58dc, 0x5ad4, 0x5cc0, + 0x5e9f, 0x6070, 0x6232, 0x63e5, 0x6587, 0x6719, 0x689a, 0x6a08, 0x6b64, 0x6cad, 0x6de2, 0x6f03, 0x7010, 0x7108, + 0x71ea, 0x72b7, 0x736e, 0x740f, 0x7499, 0x750c, 0x7569, 0x75ae, 0x75dd, 0x75f4}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_80_e_0_92[80] = { + (Word16)0xfff9, (Word16)0xfffa, (Word16)0xfffa, (Word16)0xfffb, (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffd, + (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xffff, + (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; +# else +# define lpc_lin_pre_emphasis_80_0_92 NULL +# define lpc_lin_pre_emphasis_80_e_0_92 NULL +# endif + +RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis[NUM_SAMP_FREQ] = {lpc_lin_pre_emphasis_80_8000, lpc_lin_pre_emphasis_80_16000, + lpc_lin_pre_emphasis_80_24000, lpc_lin_pre_emphasis_80_32000, + lpc_lin_pre_emphasis_80_48000 +#ifdef ENABLE_HR_MODE + , lpc_lin_pre_emphasis_80_0_92 +#endif + }; + +RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis_e[NUM_SAMP_FREQ] = { + lpc_lin_pre_emphasis_80_e_8000, lpc_lin_pre_emphasis_80_e_16000, lpc_lin_pre_emphasis_80_e_24000, + lpc_lin_pre_emphasis_80_e_32000, lpc_lin_pre_emphasis_80_e_48000 +#ifdef ENABLE_HR_MODE + , lpc_lin_pre_emphasis_80_e_0_92 +#endif +}; + +RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis_5ms[NUM_SAMP_FREQ] = { + lpc_lin_pre_emphasis_40_8000, lpc_lin_pre_emphasis_80_16000, lpc_lin_pre_emphasis_40_24000, + lpc_lin_pre_emphasis_80_32000, lpc_lin_pre_emphasis_80_48000 +#ifdef ENABLE_HR_MODE + , lpc_lin_pre_emphasis_80_0_92 +#endif +}; + +RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis_e_5ms[NUM_SAMP_FREQ] = { + lpc_lin_pre_emphasis_40_e_8000, lpc_lin_pre_emphasis_80_e_16000, lpc_lin_pre_emphasis_40_e_24000, + lpc_lin_pre_emphasis_80_e_32000, lpc_lin_pre_emphasis_80_e_48000 +#ifdef ENABLE_HR_MODE + , lpc_lin_pre_emphasis_80_e_0_92 +#endif +}; + +RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis_2_5ms[NUM_SAMP_FREQ] = { + lpc_lin_pre_emphasis_20_8000, lpc_lin_pre_emphasis_40_16000, lpc_lin_pre_emphasis_60_24000, + lpc_lin_pre_emphasis_80_32000, lpc_lin_pre_emphasis_60_48000 +#ifdef ENABLE_HR_MODE + , lpc_lin_pre_emphasis_80_0_92 +#endif +}; + +RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis_e_2_5ms[NUM_SAMP_FREQ] = { + lpc_lin_pre_emphasis_20_e_8000, lpc_lin_pre_emphasis_40_e_16000, lpc_lin_pre_emphasis_60_e_24000, + lpc_lin_pre_emphasis_80_e_32000, lpc_lin_pre_emphasis_60_e_48000 +# ifdef ENABLE_HR_MODE + , lpc_lin_pre_emphasis_80_e_0_92 +#endif +}; + +# ifdef ENABLE_075_DMS_MODE +# ifdef CR8_G_ADD_75MS +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_60_0_62[60] = { + 0x4a26, 0x4be4, 0x4f5d, 0x5490, 0x5b79, 0x6414, 0x6e59, 0x7a43, 0x43e4, 0x4b6f, 0x53bf, 0x5ccc, 0x6690, 0x7106, + 0x7c25, 0x43f3, 0x4a1f, 0x5095, 0x574e, 0x5e46, 0x6578, 0x6cdf, 0x7477, 0x7c39, 0x4210, 0x4613, 0x4a24, 0x4e3e, + 0x5260, 0x5686, 0x5aae, 0x5ed4, 0x62f6, 0x6710, 0x6b21, 0x6f24, 0x7318, 0x76f9, 0x7ac4, 0x7e78, 0x4109, 0x42c7, + 0x4475, 0x4612, 0x479d, 0x4915, 0x4a79, 0x4bc8, 0x4d01, 0x4e22, 0x4f2c, 0x501e, 0x50f6, 0x51b4, 0x5259, 0x52e2, + 0x5351, 0x53a4, 0x53dc, 0x53f8}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_60_e_0_62[60] = { + (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, + (Word16)0xfffe, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, + (Word16)0xffff, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; + +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_60_0_72[60] = { + 0x50c9, 0x54d4, 0x5ce6, 0x68f9, 0x7906, 0x4681, 0x526e, 0x6043, 0x6ff6, 0x40be, 0x4a65, 0x54e8, 0x6040, 0x6c65, + 0x794f, 0x437a, 0x4aa6, 0x5226, 0x59f5, 0x620c, 0x6a68, 0x7301, 0x7bd2, 0x426a, 0x4701, 0x4baa, 0x5062, 0x5526, + 0x59f2, 0x5ec4, 0x6397, 0x6869, 0x6d35, 0x71f9, 0x76b1, 0x7b5a, 0x7ff1, 0x4239, 0x446d, 0x4694, 0x48aa, 0x4ab0, + 0x4ca4, 0x4e84, 0x504f, 0x5204, 0x53a1, 0x5526, 0x5691, 0x57e1, 0x5916, 0x5a2e, 0x5b29, 0x5c07, 0x5cc5, 0x5d65, + 0x5de6, 0x5e46, 0x5e87, 0x5ea7}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_60_e_0_72[60] = { + (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffe, (Word16)0xfffe, + (Word16)0xfffe, (Word16)0xfffe, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, + (Word16)0xffff, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0000, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; + +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_60_0_82[60] = { + 0x4382, 0x4cb6, 0x5f17, 0x7a99, 0x4f94, 0x6656, 0x40c0, 0x5081, 0x6263, 0x7658, 0x4629, 0x5222, 0x5f0e, 0x6ce3, + 0x7b98, 0x4591, 0x4dbc, 0x5647, 0x5f2b, 0x6862, 0x71e7, 0x7bb2, 0x42de, 0x47ff, 0x4d39, 0x5288, 0x57e8, 0x5d55, + 0x62cc, 0x6849, 0x6dc8, 0x7345, 0x78bc, 0x7e29, 0x41c5, 0x446c, 0x4709, 0x499a, 0x4c1c, 0x4e8f, 0x50f0, 0x533e, + 0x5577, 0x579a, 0x59a4, 0x5b96, 0x5d6c, 0x5f27, 0x60c4, 0x6243, 0x63a3, 0x64e2, 0x6601, 0x66fd, 0x67d6, 0x688c, + 0x691e, 0x698c, 0x69d6, 0x69fb}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_60_e_0_82[60] = { + (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffe, + (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, + (Word16)0xffff, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0000, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; + +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_60_0_92[60] = { + 0x7330, 0x62e5, 0x5ab1, 0x4c35, 0x753a, 0x5425, 0x72a0, 0x4afd, 0x5f0d, 0x7571, 0x470d, 0x547b, 0x62fa, 0x727f, + 0x4180, 0x4a38, 0x5362, 0x5cf7, 0x66f0, 0x7148, 0x7bf5, 0x4379, 0x491b, 0x4edc, 0x54b9, 0x5aae, 0x60b6, 0x66cd, + 0x6cee, 0x7316, 0x7941, 0x7f69, 0x42c5, 0x45d1, 0x48d4, 0x4bcf, 0x4ebd, 0x519e, 0x546f, 0x572e, 0x59d9, 0x5c6f, + 0x5eee, 0x6153, 0x639d, 0x65cb, 0x67dc, 0x69cc, 0x6b9c, 0x6d4a, 0x6ed4, 0x703b, 0x717c, 0x7296, 0x738a, 0x7457, + 0x74fb, 0x7576, 0x75c9, 0x75f2}; +RAM_ALIGN const Word16 lpc_lin_pre_emphasis_60_e_0_92[60] = { + (Word16)0xfff9, (Word16)0xfffa, (Word16)0xfffb, (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffd, (Word16)0xfffd, + (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, + (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, + (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0001, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, + (Word16)0x0002, (Word16)0x0002, (Word16)0x0002, (Word16)0x0002}; + +RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis_7_5ms[NUM_SAMP_FREQ] = { + lpc_lin_pre_emphasis_60_0_62, lpc_lin_pre_emphasis_60_0_72, lpc_lin_pre_emphasis_60_0_82, + lpc_lin_pre_emphasis_80_0_92, lpc_lin_pre_emphasis_60_0_92 +# ifdef ENABLE_HR_MODE + , lpc_lin_pre_emphasis_80_0_92 +# endif + }; +RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis_e_7_5ms[NUM_SAMP_FREQ] = { + lpc_lin_pre_emphasis_60_e_0_62, lpc_lin_pre_emphasis_60_e_0_72, lpc_lin_pre_emphasis_60_e_0_82, + lpc_lin_pre_emphasis_80_e_0_92, lpc_lin_pre_emphasis_60_e_0_92 +# ifdef ENABLE_HR_MODE + , lpc_lin_pre_emphasis_80_e_0_92 +# endif + }; +# endif +# endif + +#ifdef SUBSET_NB +RAM_ALIGN const Word16 lpc_warp_dee_emphasis_16_8000[16] = {0x4000, 0x673f, 0x5348, 0x432d, 0x6c5f, 0x576a, + 0x4682, 0x71bf, 0x5bc0, 0x4a02, 0x7764, 0x604d, + 0x4dae, 0x7d50, 0x6514, 0x5188}; + +RAM_ALIGN const Word16 lpc_warp_dee_emphasis_16_e_8000[16] = { + (Word16)0x0001, (Word16)0x0000, (Word16)0x0000, (Word16)0x0000, (Word16)0xffff, (Word16)0xffff, + (Word16)0xffff, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffd, (Word16)0xfffd, + (Word16)0xfffd, (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffc}; +#else +#define lpc_warp_dee_emphasis_16_8000 NULL +#define lpc_warp_dee_emphasis_16_e_8000 NULL +#endif + +#ifdef SUBSET_WB +RAM_ALIGN const Word16 lpc_warp_dee_emphasis_16_16000[16] = {0x4000, 0x6119, 0x49a8, 0x6fc0, 0x54c5, 0x404e, + 0x618f, 0x4a02, 0x7048, 0x552c, 0x409c, 0x6206, + 0x4a5c, 0x70d0, 0x5594, 0x40eb}; + +RAM_ALIGN const Word16 lpc_warp_dee_emphasis_16_e_16000[16] = { + (Word16)0x0001, (Word16)0x0000, (Word16)0x0000, (Word16)0xffff, (Word16)0xffff, (Word16)0xffff, + (Word16)0xfffe, (Word16)0xfffe, (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffc, + (Word16)0xfffc, (Word16)0xfffb, (Word16)0xfffb, (Word16)0xfffb}; +#else +#define lpc_warp_dee_emphasis_16_16000 NULL +#define lpc_warp_dee_emphasis_16_e_16000 NULL +#endif + +#ifdef SUBSET_SSWB +RAM_ALIGN const Word16 lpc_warp_dee_emphasis_16_24000[16] = {0x4000, 0x5b51, 0x4125, 0x5cf3, 0x424f, 0x5e9c, + 0x437f, 0x604d, 0x44b4, 0x6206, 0x45ee, 0x63c7, + 0x472e, 0x658f, 0x4874, 0x6760}; + +RAM_ALIGN const Word16 lpc_warp_dee_emphasis_16_e_24000[16] = { + (Word16)0x0001, (Word16)0x0000, (Word16)0x0000, (Word16)0xffff, (Word16)0xffff, (Word16)0xfffe, + (Word16)0xfffe, (Word16)0xfffd, (Word16)0xfffd, (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffb, + (Word16)0xfffb, (Word16)0xfffa, (Word16)0xfffa, (Word16)0xfff9}; +#else +#define lpc_warp_dee_emphasis_16_24000 NULL +#define lpc_warp_dee_emphasis_16_e_24000 NULL +#endif + +#ifdef SUBSET_SWB +RAM_ALIGN const Word16 lpc_warp_dee_emphasis_16_32000[16] = {0x4000, 0x55e1, 0x733b, 0x4d50, 0x67bd, 0x4599, + 0x5d64, 0x7d50, 0x5413, 0x70d0, 0x4bb0, 0x658f, + 0x4423, 0x5b6e, 0x7aaf, 0x524f}; + +RAM_ALIGN const Word16 lpc_warp_dee_emphasis_16_e_32000[16] = { + (Word16)0x0001, (Word16)0x0000, (Word16)0xffff, (Word16)0xffff, (Word16)0xfffe, (Word16)0xfffe, + (Word16)0xfffd, (Word16)0xfffc, (Word16)0xfffc, (Word16)0xfffb, (Word16)0xfffb, (Word16)0xfffa, + (Word16)0xfffa, (Word16)0xfff9, (Word16)0xfff8, (Word16)0xfff8}; +#else +#define lpc_warp_dee_emphasis_16_32000 NULL +#define lpc_warp_dee_emphasis_16_e_32000 NULL +#endif + +#ifdef SUBSET_FB +RAM_ALIGN const Word16 lpc_warp_dee_emphasis_16_48000[16] = {0x4000, 0x50c3, 0x65ea, 0x404e, 0x5126, 0x6666, + 0x409c, 0x5188, 0x66e3, 0x40eb, 0x51ec, 0x6760, + 0x413a, 0x524f, 0x67de, 0x4189}; + +RAM_ALIGN const Word16 lpc_warp_dee_emphasis_16_e_48000[16] = { + (Word16)0x0001, (Word16)0x0000, (Word16)0xffff, (Word16)0xffff, (Word16)0xfffe, (Word16)0xfffd, + (Word16)0xfffd, (Word16)0xfffc, (Word16)0xfffb, (Word16)0xfffb, (Word16)0xfffa, (Word16)0xfff9, + (Word16)0xfff9, (Word16)0xfff8, (Word16)0xfff7, (Word16)0xfff7}; +#else +#define lpc_warp_dee_emphasis_16_48000 NULL +#define lpc_warp_dee_emphasis_16_e_48000 NULL +#endif + +# ifdef ENABLE_HR_MODE +RAM_ALIGN const Word16 lpc_warp_dee_emphasis_16_96000[16] = {0x4000, 0x4bf4, 0x5a23, 0x6af9, 0x7ef3, 0x4b54, + 0x5966, 0x6a18, 0x7de9, 0x4ab6, 0x58aa, 0x6939, + 0x7ce0, 0x4a19, 0x57f0, 0x685d}; + +RAM_ALIGN const Word16 lpc_warp_dee_emphasis_16_e_96000[16] = { + (Word16)0x0001, (Word16)0x0000, (Word16)0xffff, (Word16)0xfffe, (Word16)0xfffd, (Word16)0xfffd, + (Word16)0xfffc, (Word16)0xfffb, (Word16)0xfffa, (Word16)0xfffa, (Word16)0xfff9, (Word16)0xfff8, + (Word16)0xfff7, (Word16)0xfff7, (Word16)0xfff6, (Word16)0xfff5}; +# else +# define lpc_warp_dee_emphasis_16_96000 NULL +# define lpc_warp_dee_emphasis_16_e_96000 NULL +# endif + +RAM_ALIGN const Word16 *const lpc_warp_dee_emphasis[NUM_SAMP_FREQ] = { + lpc_warp_dee_emphasis_16_8000, lpc_warp_dee_emphasis_16_16000, lpc_warp_dee_emphasis_16_24000, + lpc_warp_dee_emphasis_16_32000, lpc_warp_dee_emphasis_16_48000, lpc_warp_dee_emphasis_16_96000}; +RAM_ALIGN const Word16 *const lpc_warp_dee_emphasis_e[NUM_SAMP_FREQ] = { + lpc_warp_dee_emphasis_16_e_8000, lpc_warp_dee_emphasis_16_e_16000, lpc_warp_dee_emphasis_16_e_24000, + lpc_warp_dee_emphasis_16_e_32000, lpc_warp_dee_emphasis_16_e_48000, lpc_warp_dee_emphasis_16_e_96000}; + +RAM_ALIGN const Word16 bands_nrg_scale[32] = {0, 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}; + +#ifdef ENABLE_HR_MODE +RAM_ALIGN const Word16 bands_offset_48000_HR[65] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, 23, 25, + 27, 29, 31, 33, 36, 39, 42, 45, 48, 51, 55, 59, 63, 67, 72, 77, 83, 89, 95, 101, 108, 116, + 124, 133, 142, 152, 163, 174, 187, 200, 214, 229, 244, 262, 280, 299, 320, 343, 367, 392, 419, 449, 480}; + +RAM_ALIGN const Word16 bands_offset_96000_HR[65] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, + 33, 36, 39, 42, 46, 50, 54, 59, 64, 69, 75, 82, 89, 96, 104, 113, 122, 132, 143, 155, 168, 181, + 196, 213, 230, 249, 270, 292, 316, 342, 371, 401, 434, 470, 509, 551, 596, 646, 699, 757, 819, 887, 960}; + +RAM_ALIGN const Word16 *const bands_offset_HR[2] = {bands_offset_48000_HR, bands_offset_96000_HR}; + +RAM_ALIGN const Word16 bands_offset_48000_5ms_HR[56] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 21, 23, 25, 27, 29, 31, 33, 35, 38, 41, 44, 47, 50, 54, 58, 62, 66, 71, + 76, 81, 87, 93, 100, 107, 114, 122, 131, 140, 149, 160, 171, 183, 196, 209, 224, 240}; +RAM_ALIGN const Word16 bands_offset_96000_5ms_HR[59] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, + 23, 25, 27, 29, 31, 34, 37, 40, 44, 48, 52, 56, 61, 66, 71, 77, 83, 90, 98, 106, + 115, 124, 135, 146, 158, 171, 185, 200, 217, 235, 254, 275, 298, 323, 349, 378, 409, 443, 480}; + +RAM_ALIGN const Word16 *const bands_offset_5ms_HR[2] = {bands_offset_48000_5ms_HR, bands_offset_96000_5ms_HR}; + +RAM_ALIGN const Word16 bands_offset_48000_2_5ms_HR[46] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 23, 25, + 27, 29, 31, 33, 35, 37, 40, 43, 46, 49, 53, 57, 61, 65, 69, 74, 79, 85, 91, 97, 104, 112, 120}; +RAM_ALIGN const Word16 bands_offset_96000_2_5ms_HR[50] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 26, 28, 30, 32, + 35, 38, 41, 45, 49, 53, 57, 62, 67, 73, 79, 85, 92, 100, 108, 117, 127, 137, 149, 161, 174, 189, 204, 221, 240}; + +RAM_ALIGN const Word16 *const bands_offset_2_5ms_HR[2] = {bands_offset_48000_2_5ms_HR, bands_offset_96000_2_5ms_HR}; + +#ifdef CR8_G_ADD_75MS +RAM_ALIGN const Word16 bands_offset_48000_7_5ms_HR[65] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 24, + 26, 28, 30, 32, 34, 36, 38, 41, 44, 47, 50, 53, 56, 60, 64, 68, 73, 78, 83, 89, 95, 101, 108, + 115, 122, 130, 139, 148, 158, 168, 179, 191, 203, 217, 231, 246, 262, 279, 298, 317, 338, 360}; +RAM_ALIGN const Word16 bands_offset_96000_7_5ms_HR[65] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 26, 28, + 30, 32, 35, 38, 41, 44, 48, 52, 56, 61, 66, 71, 77, 83, 90, 97, 105, 114, 123, 132, 143, 155, 167, + 180, 195, 210, 227, 245, 265, 286, 309, 334, 360, 389, 420, 454, 490, 529, 572, 617, 667, 720}; + +RAM_ALIGN const Word16 *const bands_offset_7_5ms_HR[2] = {bands_offset_48000_7_5ms_HR, bands_offset_96000_7_5ms_HR}; +# endif +#endif /* ENABLE_HR_MODE */ + +#ifdef SUBSET_NB +RAM_ALIGN const Word16 bands_offset_8000_lpc_warp[65] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, + 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, + 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, + 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0033, 0x0035, + 0x0037, 0x0039, 0x003b, 0x003d, 0x003f, 0x0041, 0x0043, 0x0045, 0x0047, 0x0049, 0x004b, 0x004d, 0x0050}; +#else +#define bands_offset_8000_lpc_warp NULL +#endif + +#ifdef SUBSET_WB +RAM_ALIGN const Word16 bands_offset_16000_lpc_warp[65] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, + 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, + 0x001a, 0x001b, 0x001c, 0x001e, 0x0020, 0x0022, 0x0024, 0x0026, 0x0028, 0x002a, 0x002c, 0x002e, 0x0030, + 0x0032, 0x0034, 0x0037, 0x003a, 0x003d, 0x0040, 0x0043, 0x0046, 0x0049, 0x004c, 0x0050, 0x0054, 0x0058, + 0x005c, 0x0060, 0x0065, 0x006a, 0x006f, 0x0074, 0x0079, 0x007f, 0x0085, 0x008b, 0x0092, 0x0099, 0x00a0}; +#else +#define bands_offset_16000_lpc_warp NULL +#endif + +#ifdef SUBSET_SSWB +RAM_ALIGN const Word16 bands_offset_24000_lpc_warp[65] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, + 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0019, 0x001b, + 0x001d, 0x001f, 0x0021, 0x0023, 0x0025, 0x0027, 0x0029, 0x002b, 0x002e, 0x0031, 0x0034, 0x0037, 0x003a, + 0x003d, 0x0040, 0x0044, 0x0048, 0x004c, 0x0050, 0x0055, 0x005a, 0x005f, 0x0064, 0x006a, 0x0070, 0x0076, + 0x007d, 0x0084, 0x008b, 0x0093, 0x009b, 0x00a4, 0x00ad, 0x00b7, 0x00c1, 0x00cc, 0x00d7, 0x00e3, 0x00f0}; +#else +#define bands_offset_24000_lpc_warp NULL +#endif + +#ifdef SUBSET_SWB +RAM_ALIGN const Word16 bands_offset_32000_lpc_warp[65] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, + 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0016, 0x0018, 0x001a, 0x001c, 0x001e, + 0x0020, 0x0022, 0x0024, 0x0026, 0x0029, 0x002c, 0x002f, 0x0032, 0x0035, 0x0038, 0x003c, 0x0040, 0x0044, + 0x0048, 0x004c, 0x0051, 0x0056, 0x005b, 0x0061, 0x0067, 0x006d, 0x0074, 0x007b, 0x0083, 0x008b, 0x0094, + 0x009d, 0x00a6, 0x00b0, 0x00bb, 0x00c7, 0x00d3, 0x00e0, 0x00ee, 0x00fc, 0x010c, 0x011c, 0x012e, 0x0140}; +#else +#define bands_offset_32000_lpc_warp NULL +#endif + +#ifdef SUBSET_FB +RAM_ALIGN const Word16 bands_offset_48000_lpc_warp[65] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, + 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0014, 0x0016, 0x0018, 0x001a, 0x001c, 0x001e, 0x0020, + 0x0022, 0x0024, 0x0027, 0x002a, 0x002d, 0x0030, 0x0033, 0x0037, 0x003b, 0x003f, 0x0043, 0x0047, 0x004c, + 0x0051, 0x0056, 0x005c, 0x0062, 0x0069, 0x0070, 0x0077, 0x007f, 0x0087, 0x0090, 0x009a, 0x00a4, 0x00af, + 0x00ba, 0x00c6, 0x00d3, 0x00e1, 0x00f0, 0x0100, 0x0111, 0x0123, 0x0136, 0x014a, 0x0160, 0x0177, 0x0190}; +#else +#define bands_offset_48000_lpc_warp NULL +#endif + +#ifdef SUBSET_NB +RAM_ALIGN const Word16 bands_offset_8000_lpc_lin[81] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, + 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, + 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, + 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, + 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050}; +#else +#define bands_offset_8000_lpc_lin NULL +#endif + +#ifdef SUBSET_WB +RAM_ALIGN const Word16 bands_offset_16000_lpc_lin[81] = { + 0x0000, 0x0002, 0x0004, 0x0006, 0x0008, 0x000a, 0x000c, 0x000e, 0x0010, 0x0012, 0x0014, 0x0016, 0x0018, 0x001a, + 0x001c, 0x001e, 0x0020, 0x0022, 0x0024, 0x0026, 0x0028, 0x002a, 0x002c, 0x002e, 0x0030, 0x0032, 0x0034, 0x0036, + 0x0038, 0x003a, 0x003c, 0x003e, 0x0040, 0x0042, 0x0044, 0x0046, 0x0048, 0x004a, 0x004c, 0x004e, 0x0050, 0x0052, + 0x0054, 0x0056, 0x0058, 0x005a, 0x005c, 0x005e, 0x0060, 0x0062, 0x0064, 0x0066, 0x0068, 0x006a, 0x006c, 0x006e, + 0x0070, 0x0072, 0x0074, 0x0076, 0x0078, 0x007a, 0x007c, 0x007e, 0x0080, 0x0082, 0x0084, 0x0086, 0x0088, 0x008a, + 0x008c, 0x008e, 0x0090, 0x0092, 0x0094, 0x0096, 0x0098, 0x009a, 0x009c, 0x009e, 0x00a0}; +#else +#define bands_offset_16000_lpc_lin NULL +#endif + +#ifdef SUBSET_SSWB +RAM_ALIGN const Word16 bands_offset_24000_lpc_lin[81] = { + 0x0000, 0x0003, 0x0006, 0x0009, 0x000c, 0x000f, 0x0012, 0x0015, 0x0018, 0x001b, 0x001e, 0x0021, 0x0024, 0x0027, + 0x002a, 0x002d, 0x0030, 0x0033, 0x0036, 0x0039, 0x003c, 0x003f, 0x0042, 0x0045, 0x0048, 0x004b, 0x004e, 0x0051, + 0x0054, 0x0057, 0x005a, 0x005d, 0x0060, 0x0063, 0x0066, 0x0069, 0x006c, 0x006f, 0x0072, 0x0075, 0x0078, 0x007b, + 0x007e, 0x0081, 0x0084, 0x0087, 0x008a, 0x008d, 0x0090, 0x0093, 0x0096, 0x0099, 0x009c, 0x009f, 0x00a2, 0x00a5, + 0x00a8, 0x00ab, 0x00ae, 0x00b1, 0x00b4, 0x00b7, 0x00ba, 0x00bd, 0x00c0, 0x00c3, 0x00c6, 0x00c9, 0x00cc, 0x00cf, + 0x00d2, 0x00d5, 0x00d8, 0x00db, 0x00de, 0x00e1, 0x00e4, 0x00e7, 0x00ea, 0x00ed, 0x00f0}; +#else +#define bands_offset_24000_lpc_lin NULL +#endif + +#ifdef SUBSET_SWB +RAM_ALIGN const Word16 bands_offset_32000_lpc_lin[81] = { + 0x0000, 0x0004, 0x0008, 0x000c, 0x0010, 0x0014, 0x0018, 0x001c, 0x0020, 0x0024, 0x0028, 0x002c, 0x0030, 0x0034, + 0x0038, 0x003c, 0x0040, 0x0044, 0x0048, 0x004c, 0x0050, 0x0054, 0x0058, 0x005c, 0x0060, 0x0064, 0x0068, 0x006c, + 0x0070, 0x0074, 0x0078, 0x007c, 0x0080, 0x0084, 0x0088, 0x008c, 0x0090, 0x0094, 0x0098, 0x009c, 0x00a0, 0x00a4, + 0x00a8, 0x00ac, 0x00b0, 0x00b4, 0x00b8, 0x00bc, 0x00c0, 0x00c4, 0x00c8, 0x00cc, 0x00d0, 0x00d4, 0x00d8, 0x00dc, + 0x00e0, 0x00e4, 0x00e8, 0x00ec, 0x00f0, 0x00f4, 0x00f8, 0x00fc, 0x0100, 0x0104, 0x0108, 0x010c, 0x0110, 0x0114, + 0x0118, 0x011c, 0x0120, 0x0124, 0x0128, 0x012c, 0x0130, 0x0134, 0x0138, 0x013c, 0x0140}; +#else +#define bands_offset_32000_lpc_lin NULL +#endif + +#ifdef SUBSET_FB +RAM_ALIGN const Word16 bands_offset_48000_lpc_lin[81] = { + 0x0000, 0x0006, 0x000c, 0x0012, 0x0018, 0x001e, 0x0024, 0x002a, 0x0030, 0x0036, 0x003c, 0x0042, 0x0048, 0x004e, + 0x0054, 0x005a, 0x0060, 0x0066, 0x006c, 0x0072, 0x0078, 0x007e, 0x0084, 0x008a, 0x0090, 0x0096, 0x009c, 0x00a2, + 0x00a8, 0x00ae, 0x00b4, 0x00ba, 0x00c0, 0x00c6, 0x00cc, 0x00d2, 0x00d8, 0x00de, 0x00e4, 0x00ea, 0x00f0, 0x00f6, + 0x00fc, 0x0102, 0x0108, 0x010e, 0x0114, 0x011a, 0x0120, 0x0126, 0x012c, 0x0132, 0x0138, 0x013e, 0x0144, 0x014a, + 0x0150, 0x0156, 0x015c, 0x0162, 0x0168, 0x016e, 0x0174, 0x017a, 0x0180, 0x0186, 0x018c, 0x0192, 0x0198, 0x019e, + 0x01a4, 0x01aa, 0x01b0, 0x01b6, 0x01bc, 0x01c2, 0x01c8, 0x01ce, 0x01d4, 0x01da, 0x01e0}; +#else +#define bands_offset_48000_lpc_lin NULL +#endif + +#ifdef SUBSET_NB +RAM_ALIGN const Word16 bands_offset_8000_lpc_warp_5ms[40] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, + 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, + 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0028}; +#else +#define bands_offset_8000_lpc_warp_5ms NULL +#endif + +#ifdef SUBSET_WB +RAM_ALIGN const Word16 bands_offset_16000_lpc_warp_5ms[51] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, + 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, + 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x0020, 0x0022, 0x0024, 0x0026, 0x0028, 0x002a, 0x002c, 0x002e, + 0x0030, 0x0032, 0x0034, 0x0036, 0x0039, 0x003c, 0x003f, 0x0042, 0x0045, 0x0048, 0x004c, 0x0050}; +#else +#define bands_offset_16000_lpc_warp_5ms NULL +#endif + +#ifdef SUBSET_SSWB +RAM_ALIGN const Word16 bands_offset_24000_lpc_warp_5ms[53] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, + 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x001a, 0x001c, 0x001e, + 0x0020, 0x0022, 0x0024, 0x0026, 0x0028, 0x002a, 0x002c, 0x002f, 0x0032, 0x0035, 0x0038, 0x003b, 0x003e, 0x0041, + 0x0045, 0x0049, 0x004d, 0x0051, 0x0056, 0x005b, 0x0060, 0x0065, 0x006b, 0x0071, 0x0078}; +#else +#define bands_offset_24000_lpc_warp_5ms NULL +#endif + +#ifdef SUBSET_SWB +RAM_ALIGN const Word16 bands_offset_32000_lpc_warp_5ms[55] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, + 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0018, 0x001a, 0x001c, 0x001e, 0x0020, + 0x0022, 0x0024, 0x0026, 0x0028, 0x002a, 0x002d, 0x0030, 0x0033, 0x0036, 0x0039, 0x003d, 0x0041, 0x0045, 0x0049, + 0x004e, 0x0053, 0x0058, 0x005d, 0x0063, 0x0069, 0x0070, 0x0077, 0x007e, 0x0086, 0x008e, 0x0097, 0x00a0}; +#else +#define bands_offset_32000_lpc_warp_5ms NULL +#endif + +#ifdef SUBSET_FB +RAM_ALIGN const Word16 bands_offset_48000_lpc_warp_5ms[56] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, + 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0017, 0x0019, 0x001b, 0x001d, 0x001f, 0x0021, + 0x0023, 0x0025, 0x0028, 0x002b, 0x002e, 0x0031, 0x0034, 0x0037, 0x003b, 0x003f, 0x0043, 0x0048, 0x004d, 0x0052, + 0x0057, 0x005d, 0x0063, 0x0069, 0x0070, 0x0078, 0x0080, 0x0088, 0x0091, 0x009b, 0x00a5, 0x00b0, 0x00bb, 0x00c8}; +#else +#define bands_offset_48000_lpc_warp_5ms NULL +#endif + + +#ifdef SUBSET_NB +RAM_ALIGN const Word16 bands_offset_8000_lpc_warp_2_5ms[21] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; +#else +#define bands_offset_8000_lpc_warp_2_5ms NULL +#endif + +#ifdef SUBSET_WB +RAM_ALIGN const Word16 bands_offset_16000_lpc_warp_2_5ms[36] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 32, 34, 36, 38, 40}; +#else +#define bands_offset_16000_lpc_warp_2_5ms NULL +#endif + +#ifdef SUBSET_SSWB +RAM_ALIGN const Word16 bands_offset_24000_lpc_warp_2_5ms[41] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, + 30, 32, 34, 36, 38, 40, 42, 44, 47, 50, 53, 56, 60}; +#else +#define bands_offset_24000_lpc_warp_2_5ms NULL +#endif + +#ifdef SUBSET_SWB +RAM_ALIGN const Word16 bands_offset_32000_lpc_warp_2_5ms[44] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 26, 28, 30, 32, 34, 36, 38, 40, 43, 46, 49, 52, 55, 59, 63, 67, 71, 75, 80}; +#else +#define bands_offset_32000_lpc_warp_2_5ms NULL +#endif + +#ifdef SUBSET_FB +RAM_ALIGN const Word16 bands_offset_48000_lpc_warp_2_5ms[45] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, + 25, 27, 29, 31, 33, 35, 37, 40, 43, 46, 49, 52, 56, 60, 64, 68, 72, 77, 82, 87, 93, 100}; +#else +#define bands_offset_48000_lpc_warp_2_5ms NULL +#endif + + + +RAM_ALIGN const Word16 *const bands_offset[6] = {bands_offset_8000_lpc_warp, bands_offset_16000_lpc_warp, + bands_offset_24000_lpc_warp, bands_offset_32000_lpc_warp, + bands_offset_48000_lpc_warp, NULL}; + +#ifdef CR8_G_ADD_75MS +RAM_ALIGN const Word16 bands_offset_with_one_max_7_5ms[NUM_OFFSETS] = {60, 34, 27, 24, 22 +# ifdef ENABLE_HR_MODE + , 20, 16 +# endif +}; +RAM_ALIGN const Word16 bands_offset_with_two_max_7_5ms[NUM_OFFSETS] = {0, 48, 38, 33, 31 +# ifdef ENABLE_HR_MODE + , 29, 24 +# endif +}; +# endif + +RAM_ALIGN const Word16 bands_offset_with_one_max[NUM_OFFSETS] = {49, 28, 23, 20, 18 +# ifdef ENABLE_HR_MODE + , 17, 12 +# endif + }; +RAM_ALIGN const Word16 bands_offset_with_two_max[NUM_OFFSETS] = {63, 40, 33, 29, 27 +# ifdef ENABLE_HR_MODE + , 25, 21 +# endif + }; + +RAM_ALIGN const Word16 *const bands_offset_5ms[6] = {bands_offset_8000_lpc_warp_5ms, bands_offset_16000_lpc_warp_5ms, + bands_offset_24000_lpc_warp_5ms, bands_offset_32000_lpc_warp_5ms, + bands_offset_48000_lpc_warp_5ms, NULL}; +RAM_ALIGN const Word16 bands_offset_with_one_max_5ms[NUM_OFFSETS] = {38, 30, 24, 22, 21 +# ifdef ENABLE_HR_MODE + , 19, 17 +# endif + }; +RAM_ALIGN const Word16 bands_offset_with_two_max_5ms[NUM_OFFSETS] = {39, 42, 34, 32, 29 +# ifdef ENABLE_HR_MODE + , 27, 24 +# endif + }; + +#ifdef CR8_G_ADD_75MS +# ifdef ENABLE_HR_MODE +RAM_ALIGN const Word16 bands_number_7_5ms [] = {60, 64, 64, 64, 64, 64}; +# else +RAM_ALIGN const Word16 bands_number_7_5ms [] = {60, 64, 64, 64, 64}; +# endif +#endif + +#ifdef ENABLE_HR_MODE +RAM_ALIGN const Word16 bands_number_5ms[NUM_SAMP_FREQ] = {39, 50, 52, 54, 55, 58}; +#else +RAM_ALIGN const Word16 bands_number_5ms[NUM_SAMP_FREQ] = {39, 50, 52, 54, 55}; +#endif + +RAM_ALIGN const Word16 *const bands_offset_2_5ms[6] = { + bands_offset_8000_lpc_warp_2_5ms, bands_offset_16000_lpc_warp_2_5ms, bands_offset_24000_lpc_warp_2_5ms, + bands_offset_32000_lpc_warp_2_5ms, bands_offset_48000_lpc_warp_2_5ms, NULL}; + +RAM_ALIGN const Word16 bands_offset_with_one_max_2_5ms[NUM_OFFSETS] = {20, 30, 26, 24, 21 +# ifdef ENABLE_HR_MODE + , 19, 16 +# endif + }; +RAM_ALIGN const Word16 bands_offset_with_two_max_2_5ms[NUM_OFFSETS] = {20, 35, 35, 32, 29 +# ifdef ENABLE_HR_MODE + , 28, 24 +# endif + }; + +# ifdef ENABLE_HR_MODE +RAM_ALIGN const Word16 bands_number_2_5ms_HR[] = {20, 35, 40, 43, 45, 49}; +RAM_ALIGN const Word16 bands_number_2_5ms [] = {20, 35, 40, 43, 44, 49}; +# else +RAM_ALIGN const Word16 bands_number_2_5ms [] = {20, 35, 40, 43, 44}; +# endif + +# ifdef ENABLE_HR_MODE +RAM_ALIGN const Word16 bands_offset_96000_lpc_lin[81] = +{ + 0x0000, 0x000c, 0x0018, 0x0024, 0x0030, 0x003c, 0x0048, 0x0054, 0x0060, 0x006c, 0x0078, 0x0084, 0x0090, 0x009c, + 0x00a8, 0x00b4, 0x00c0, 0x00cc, 0x00d8, 0x00e4, 0x00f0, 0x00fc, 0x0108, 0x0114, 0x0120, 0x012c, 0x0138, 0x0144, + 0x0150, 0x015c, 0x0168, 0x0174, 0x0180, 0x018c, 0x0198, 0x01a4, 0x01b0, 0x01bc, 0x01c8, 0x01d4, 0x01e0, 0x01ec, + 0x01f8, 0x0204, 0x0210, 0x021c, 0x0228, 0x0234, 0x0240, 0x024c, 0x0258, 0x0264, 0x0270, 0x027c, 0x0288, 0x0294, + 0x02a0, 0x02ac, 0x02b8, 0x02c4, 0x02d0, 0x02dc, 0x02e8, 0x02f4, 0x0300, 0x030c, 0x0318, 0x0324, 0x0330, 0x033c, + 0x0348, 0x0354, 0x0360, 0x036c, 0x0378, 0x0384, 0x0390, 0x039c, 0x03a8, 0x03b4, 0x03c0 +}; + +# ifdef CR8_G_ADD_75MS +RAM_ALIGN const Word16 bands_offset_96000_lpc_lin_7_5ms[81] = +{ + 0x0000, 0x0009, 0x0012, 0x001b, 0x0024, 0x002d, 0x0036, 0x003f, 0x0048, 0x0051, 0x005a, 0x0063, 0x006c, 0x0075, + 0x007e, 0x0087, 0x0090, 0x0099, 0x00a2, 0x00ab, 0x00b4, 0x00bd, 0x00c6, 0x00cf, 0x00d8, 0x00e1, 0x00ea, 0x00f3, + 0x00fc, 0x0105, 0x010e, 0x0117, 0x0120, 0x0129, 0x0132, 0x013b, 0x0144, 0x014d, 0x0156, 0x015f, 0x0168, 0x0171, + 0x017a, 0x0183, 0x018c, 0x0195, 0x019e, 0x01a7, 0x01b0, 0x01b9, 0x01c2, 0x01cb, 0x01d4, 0x01dd, 0x01e6, 0x01ef, + 0x01f8, 0x0201, 0x020a, 0x0213, 0x021c, 0x0225, 0x022e, 0x0237, 0x0240, 0x0249, 0x0252, 0x025b, 0x0264, 0x026d, + 0x0276, 0x027f, 0x0288, 0x0291, 0x029a, 0x02a3, 0x02ac, 0x02b5, 0x02be, 0x02c7, 0x02d0 +}; +# endif +# endif + + +RAM_ALIGN const Word16 *const bands_offset_lin[NUM_SAMP_FREQ] = {bands_offset_8000_lpc_lin, bands_offset_16000_lpc_lin, + bands_offset_24000_lpc_lin, bands_offset_32000_lpc_lin, + bands_offset_48000_lpc_lin +# ifdef ENABLE_HR_MODE + , bands_offset_96000_lpc_lin +# endif + }; + +# ifdef CR8_G_ADD_75MS +RAM_ALIGN const Word16 *const bands_offset_lin_7_5ms[NUM_SAMP_FREQ] = {bands_offset_8000_lpc_lin, bands_offset_16000_lpc_lin, + bands_offset_24000_lpc_lin, bands_offset_24000_lpc_lin, + bands_offset_48000_lpc_lin +# ifdef ENABLE_HR_MODE + , bands_offset_96000_lpc_lin_7_5ms +# endif + }; +# endif + +RAM_ALIGN const Word16 *const bands_offset_lin_5ms[NUM_SAMP_FREQ] = {bands_offset_8000_lpc_lin, bands_offset_8000_lpc_lin, + bands_offset_24000_lpc_lin, bands_offset_16000_lpc_lin, + bands_offset_24000_lpc_lin +# ifdef ENABLE_HR_MODE + , bands_offset_48000_lpc_lin +# endif + }; +RAM_ALIGN const Word16 *const bands_offset_lin_2_5ms[NUM_SAMP_FREQ] = {bands_offset_8000_lpc_lin, bands_offset_8000_lpc_lin, + bands_offset_8000_lpc_lin, bands_offset_8000_lpc_lin, + bands_offset_16000_lpc_lin +# ifdef ENABLE_HR_MODE + , bands_offset_24000_lpc_lin +# endif + }; + +RAM_ALIGN const Word16 bands_offset_with_one_max_lin[NUM_SAMP_FREQ] = {80, 0, 0, 0, 0 +# ifdef ENABLE_HR_MODE + , 0 +# endif + }; +RAM_ALIGN const Word16 bands_offset_with_two_max_lin[NUM_SAMP_FREQ] = {0, 80, 0, 0, 0 +# ifdef ENABLE_HR_MODE + , 0 +# endif + }; + +# ifdef CR8_G_ADD_75MS +RAM_ALIGN const Word16 bands_offset_with_one_max_lin_7_5ms[NUM_SAMP_FREQ] = {60, 0, 0, 0, 0 +# ifdef ENABLE_HR_MODE + , 0 +# endif + }; + +RAM_ALIGN const Word16 bands_offset_with_two_max_lin_7_5ms[NUM_SAMP_FREQ] = {0, 60, 0, 0, 0 +# ifdef ENABLE_HR_MODE + , 0 +# endif + }; +#endif + +RAM_ALIGN const Word16 bands_offset_with_one_max_lin_5ms[NUM_SAMP_FREQ] = {40, 80, 0, 0, 0 +# ifdef ENABLE_HR_MODE + , 0 +# endif + }; +RAM_ALIGN const Word16 bands_offset_with_two_max_lin_5ms[NUM_SAMP_FREQ] = {0, 0, 0, 80, 0 +# ifdef ENABLE_HR_MODE + , 0 +# endif + }; +RAM_ALIGN const Word16 bands_offset_with_one_max_lin_2_5ms[NUM_SAMP_FREQ] = {20, 40, 60, 80, 0 +# ifdef ENABLE_HR_MODE + , 0 +# endif + }; +RAM_ALIGN const Word16 bands_offset_with_two_max_lin_2_5ms[NUM_SAMP_FREQ] = {0, 0, 0, 0, 60 +# ifdef ENABLE_HR_MODE + , 0 +# endif + }; +#ifdef CR8_G_ADD_75MS +# ifdef SUBSET_NB +RAM_ALIGN const Word16 bands_offset_8000_lpc_warp_7_5ms[61] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60}; +# else +# define bands_offset_8000_lpc_warp_7_5ms NULL +# endif + +# ifdef SUBSET_WB +RAM_ALIGN const Word16 bands_offset_16000_lpc_warp_7_5ms[65] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, + 54, 56, 58, 60, 62, 65, 68, 71, 74, 77, 80, 83, 86, 90, 94, 98, 102, 106, 110, 115, 120}; +# else +# define bands_offset_16000_lpc_warp_7_5ms NULL +# endif + +# ifdef SUBSET_SSWB +RAM_ALIGN const Word16 bands_offset_24000_lpc_warp_7_5ms[65] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 52, 55, 58, 61, 64, + 67, 70, 74, 78, 82, 86, 90, 95, 100, 105, 110, 115, 121, 127, 134, 141, 148, 155, 163, 171, 180}; +# else +# define bands_offset_24000_lpc_warp_7_5ms NULL +# endif + +# ifdef SUBSET_SWB +RAM_ALIGN const Word16 bands_offset_32000_lpc_warp_7_5ms[65] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 45, 48, 51, 54, 57, 60, 63, 67, 71, 75, + 79, 84, 89, 94, 99, 105, 111, 117, 124, 131, 138, 146, 154, 163, 172, 182, 192, 203, 215, 227, 240}; +# else +# define bands_offset_32000_lpc_warp_7_5ms NULL +# endif + +# ifdef SUBSET_FB +RAM_ALIGN const Word16 bands_offset_48000_lpc_warp_7_5ms[65] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 43, 46, 49, 52, 55, 59, 63, 67, 71, 75, 80, 85, + 90, 96, 102, 108, 115, 122, 129, 137, 146, 155, 165, 175, 186, 197, 209, 222, 236, 251, 266, 283, 300}; +# else +# define bands_offset_48000_lpc_warp_7_5ms NULL +# endif + +RAM_ALIGN const Word16 *const bands_offset_7_5ms[5] = { + bands_offset_8000_lpc_warp_7_5ms, bands_offset_16000_lpc_warp_7_5ms, bands_offset_24000_lpc_warp_7_5ms, + bands_offset_32000_lpc_warp_7_5ms, bands_offset_48000_lpc_warp_7_5ms}; +# endif /* ifdef CR8_G_ADD_75MS */ + +RAM_ALIGN const Word32 inv_odft_twiddle_80_re[M] = { + 0x7ff9af04, 0x7fe6bcb0, 0x7fc72ae2, 0x7f9afcb9, 0x7f62368f, 0x7f1cde01, 0x7ecaf9e5, 0x7e6c9251, + 0x7e01b096, 0x7d8a5f40, 0x7d06aa16, 0x7c769e18, 0x7bda497d, 0x7b31bbb2, 0x7a7d055b, 0x79bc384d}; + +RAM_ALIGN const Word32 inv_odft_twiddle_80_im[M] = { + 0x02835b5a, 0x05067734, 0x07891418, 0x0a0af299, 0x0c8bd35e, 0x0f0b7727, 0x11899ed3, 0x14060b68, + 0x16807e15, 0x18f8b83c, 0x1b6e7b7a, 0x1de189a6, 0x2051a4dd, 0x22be8f87, 0x25280c5e, 0x278dde6e}; + +RAM_ALIGN const Word32 inv_odft_twiddle_60_re[16] = { + 0x7ff4c56f, 0x7fd317b4, 0x7f9afcb9, 0x7f4c7e54, 0x7ee7aa4c, 0x7e6c9251, 0x7ddb4bfc, 0x7d33f0ca, + 0x7c769e18, 0x7ba3751d, 0x7aba9ae6, 0x79bc384d, 0x78a879f4, 0x777f903c, 0x7641af3d, 0x74ef0ebc}; + +RAM_ALIGN const Word32 inv_odft_twiddle_60_im[16] = { + 0x0359c428, 0x06b2f1d2, 0x0a0af299, 0x0d61304e, 0x10b5150f, 0x14060b68, 0x17537e63, 0x1a9cd9ac, + 0x1de189a6, 0x2120fb83, 0x245a9d65, 0x278dde6e, 0x2aba2ee4, 0x2ddf0040, 0x30fbc54d, 0x340ff242}; + +RAM_ALIGN const Word32 inv_odft_twiddle_40_re[16] = { + 0x7fe6bcb0, 0x7f9afcb9, 0x7f1cde01, 0x7e6c9251, 0x7d8a5f40, 0x7c769e18, 0x7b31bbb2, 0x79bc384d, + 0x7816a759, 0x7641af3d, 0x743e0918, 0x720c8075, 0x6fadf2fc, 0x6d23501b, 0x6a6d98a4, 0x678dde6e}; + +RAM_ALIGN const Word32 inv_odft_twiddle_40_im[16] = { + 0x05067734, 0x0a0af299, 0x0f0b7727, 0x14060b68, 0x18f8b83c, 0x1de189a6, 0x22be8f87, 0x278dde6e, + 0x2c4d9050, 0x30fbc54d, 0x3596a46c, 0x3a1c5c57, 0x3e8b240e, 0x42e13ba4, 0x471cece7, 0x4b3c8c12}; + +RAM_ALIGN const Word32 inv_odft_twiddle_20_re[16] = { + 0x7f9afcb9, 0x7e6c9251, 0x7c769e18, 0x79bc384d, 0x7641af3d, 0x720c8075, 0x6d23501b, 0x678dde6e, + 0x6154fb91, 0x5a82799a, 0x53211d18, 0x4b3c8c12, 0x42e13ba4, 0x3a1c5c57, 0x30fbc54d, 0x278dde6e}; + +RAM_ALIGN const Word32 inv_odft_twiddle_20_im[16] = { + 0x0a0af299, 0x14060b68, 0x1de189a6, 0x278dde6e, 0x30fbc54d, 0x3a1c5c57, 0x42e13ba4, 0x4b3c8c12, + 0x53211d18, 0x5a82799a, 0x6154fb91, 0x678dde6e, 0x6d23501b, 0x720c8075, 0x7641af3d, 0x79bc384d}; + +#ifdef SUBSET_NB +RAM_ALIGN const Word16 resamp_filt_8k[240] = { + 214, 417, -1052, -4529, 26233, -4529, -1052, 417, 214, 0, 212, 277, -1281, -3928, 26037, -4979, + -755, 550, 206, -8, 200, 136, -1439, -3214, 25456, -5243, -401, 668, 187, -18, 180, 0, + -1522, -2427, 24506, -5289, 0, 763, 156, -28, 154, -125, -1534, -1605, 23211, -5090, 432, 831, + 114, -39, 124, -234, -1478, -785, 21609, -4626, 877, 865, 61, -50, 92, -323, -1361, 0, + 19741, -3885, 1317, 861, 0, -61, 60, -391, -1194, 720, 17658, -2863, 1729, 815, -68, -69, + 29, -436, -987, 1351, 15414, -1563, 2093, 727, -140, -76, 0, -457, -752, 1873, 13068, 0, + 2389, 598, -213, -79, -25, -457, -501, 2274, 10677, 1803, 2597, 430, -282, -77, -46, -436, + -247, 2545, 8302, 3815, 2700, 229, -345, -72, -61, -398, 0, 2686, 5997, 5997, 2686, 0, + -398, -61, -72, -345, 229, 2700, 3815, 8302, 2545, -247, -436, -46, -77, -282, 430, 2597, + 1803, 10677, 2274, -501, -457, -25, -79, -213, 598, 2389, 0, 13068, 1873, -752, -457, 0, + -76, -140, 727, 2093, -1563, 15414, 1351, -987, -436, 29, -69, -68, 815, 1729, -2863, 17658, + 720, -1194, -391, 60, -61, 0, 861, 1317, -3885, 19741, 0, -1361, -323, 92, -50, 61, + 865, 877, -4626, 21609, -785, -1478, -234, 124, -39, 114, 831, 432, -5090, 23211, -1605, -1534, + -125, 154, -28, 156, 763, 0, -5289, 24506, -2427, -1522, 0, 180, -18, 187, 668, -401, + -5243, 25456, -3214, -1439, 136, 200, -8, 206, 550, -755, -4979, 26037, -3928, -1281, 277, 212}; +#else +#define resamp_filt_8k NULL +#endif + +#ifdef SUBSET_WB +RAM_ALIGN const Word16 resamp_filt_16k[240] = { + -61, 214, -398, 417, 0, -1052, 2686, -4529, 5997, 26233, 5997, -4529, 2686, -1052, 0, 417, + -398, 214, -61, 0, -72, 212, -345, 277, 229, -1281, 2700, -3928, 3815, 26037, 8302, -4979, + 2545, -755, -247, 550, -436, 206, -46, -8, -77, 200, -282, 136, 430, -1439, 2597, -3214, + 1803, 25456, 10677, -5243, 2274, -401, -501, 668, -457, 187, -25, -18, -79, 180, -213, 0, + 598, -1522, 2389, -2427, 0, 24506, 13068, -5289, 1873, 0, -752, 763, -457, 156, 0, -28, + -76, 154, -140, -125, 727, -1534, 2093, -1605, -1563, 23211, 15414, -5090, 1351, 432, -987, 831, + -436, 114, 29, -39, -69, 124, -68, -234, 815, -1478, 1729, -785, -2863, 21609, 17658, -4626, + 720, 877, -1194, 865, -391, 61, 60, -50, -61, 92, 0, -323, 861, -1361, 1317, 0, + -3885, 19741, 19741, -3885, 0, 1317, -1361, 861, -323, 0, 92, -61, -50, 60, 61, -391, + 865, -1194, 877, 720, -4626, 17658, 21609, -2863, -785, 1729, -1478, 815, -234, -68, 124, -69, + -39, 29, 114, -436, 831, -987, 432, 1351, -5090, 15414, 23211, -1563, -1605, 2093, -1534, 727, + -125, -140, 154, -76, -28, 0, 156, -457, 763, -752, 0, 1873, -5289, 13068, 24506, 0, + -2427, 2389, -1522, 598, 0, -213, 180, -79, -18, -25, 187, -457, 668, -501, -401, 2274, + -5243, 10677, 25456, 1803, -3214, 2597, -1439, 430, 136, -282, 200, -77, -8, -46, 206, -436, + 550, -247, -755, 2545, -4979, 8302, 26037, 3815, -3928, 2700, -1281, 229, 277, -345, 212, -72}; +#else +#define resamp_filt_16k NULL +#endif + +#ifdef SUBSET_SSWB +RAM_ALIGN const Word16 resamp_filt_24k[240] = { + -50, 19, 143, -93, -290, 278, 485, -658, -701, 1396, 901, -3019, -1042, 10276, 17488, 10276, + -1042, -3019, 901, 1396, -701, -658, 485, 278, -290, -93, 143, 19, -50, 0, -46, 0, + 141, -45, -305, 185, 543, -501, -854, 1153, 1249, -2619, -1908, 8712, 17358, 11772, 0, -3319, + 480, 1593, -504, -796, 399, 367, -261, -142, 138, 40, -52, -5, -41, -17, 133, 0, + -304, 91, 574, -334, -959, 878, 1516, -2143, -2590, 7118, 16971, 13161, 1202, -3495, 0, 1731, + -267, -908, 287, 445, -215, -188, 125, 62, -52, -12, -34, -30, 120, 41, -291, 0, + 577, -164, -1015, 585, 1697, -1618, -3084, 5534, 16337, 14406, 2544, -3526, -523, 1800, 0, -985, + 152, 509, -156, -230, 104, 83, -48, -19, -26, -41, 103, 76, -265, -83, 554, 0, + -1023, 288, 1791, -1070, -3393, 3998, 15474, 15474, 3998, -3393, -1070, 1791, 288, -1023, 0, 554, + -83, -265, 76, 103, -41, -26, -19, -48, 83, 104, -230, -156, 509, 152, -985, 0, + 1800, -523, -3526, 2544, 14406, 16337, 5534, -3084, -1618, 1697, 585, -1015, -164, 577, 0, -291, + 41, 120, -30, -34, -12, -52, 62, 125, -188, -215, 445, 287, -908, -267, 1731, 0, + -3495, 1202, 13161, 16971, 7118, -2590, -2143, 1516, 878, -959, -334, 574, 91, -304, 0, 133, + -17, -41, -5, -52, 40, 138, -142, -261, 367, 399, -796, -504, 1593, 480, -3319, 0, + 11772, 17358, 8712, -1908, -2619, 1249, 1153, -854, -501, 543, 185, -305, -45, 141, 0, -46}; +#else +#define resamp_filt_24k NULL +#endif + +#ifdef SUBSET_SWB +RAM_ALIGN const Word16 resamp_filt_32k[240] = { + -30, -31, 46, 107, 0, -199, -162, 209, 430, 0, -681, -526, 658, 1343, 0, -2264, + -1943, 2999, 9871, 13116, 9871, 2999, -1943, -2264, 0, 1343, 658, -526, -681, 0, 430, 209, + -162, -199, 0, 107, 46, -31, -30, 0, -25, -36, 30, 106, 31, -173, -195, 139, + 432, 114, -597, -641, 439, 1350, 360, -1964, -2313, 1908, 8829, 13019, 10804, 4151, -1431, -2489, + -393, 1273, 864, -378, -739, -123, 408, 275, -117, -218, -34, 103, 62, -23, -35, -4, + -20, -39, 14, 100, 57, -141, -218, 68, 416, 215, -494, -719, 216, 1298, 676, -1607, + -2545, 902, 7707, 12728, 11606, 5339, -781, -2621, -803, 1137, 1047, -200, -767, -251, 364, 334, + -62, -228, -70, 94, 77, -13, -38, -9, -14, -39, 0, 90, 78, -106, -229, 0, + 382, 299, -376, -761, 0, 1194, 937, -1214, -2644, 0, 6534, 12253, 12253, 6534, 0, -2644, + -1214, 937, 1194, 0, -761, -376, 299, 382, 0, -229, -106, 78, 90, 0, -39, -14, + -9, -38, -13, 77, 94, -70, -228, -62, 334, 364, -251, -767, -200, 1047, 1137, -803, + -2621, -781, 5339, 11606, 12728, 7707, 902, -2545, -1607, 676, 1298, 216, -719, -494, 215, 416, + 68, -218, -141, 57, 100, 14, -39, -20, -4, -35, -23, 62, 103, -34, -218, -117, + 275, 408, -123, -739, -378, 864, 1273, -393, -2489, -1431, 4151, 10804, 13019, 8829, 1908, -2313, + -1964, 360, 1350, 439, -641, -597, 114, 432, 139, -195, -173, 31, 106, 30, -36, -25}; +#else +#define resamp_filt_32k NULL +#endif + +#ifdef ENABLE_HR_MODE +RAM_ALIGN const Word16 resamp_filt_96k[240] = { + -3, -7, -10, -13, -13, -10, -4, 5, 15, 26, 33, 36, 31, 19, 0, -23, -47, -66, -76, + -73, -54, -21, 23, 70, 111, 139, 143, 121, 72, 0, -84, -165, -227, -256, -240, -175, -67, 72, + 219, 349, 433, 448, 379, 225, 0, -268, -536, -755, -874, -848, -648, -260, 301, 1000, 1780, 2569, 3290, + 3869, 4243, 4372, 4243, 3869, 3290, 2569, 1780, 1000, 301, -260, -648, -848, -874, -755, -536, -268, 0, 225, + 379, 448, 433, 349, 219, 72, -67, -175, -240, -256, -227, -165, -84, 0, 72, 121, 143, 139, 111, + 70, 23, -21, -54, -73, -76, -66, -47, -23, 0, 19, 31, 36, 33, 26, 15, 5, -4, -10, + -13, -13, -10, -7, -3, 0, -1, -5, -8, -12, -13, -12, -8, 0, 10, 21, 30, 35, 34, + 26, 10, -11, -35, -58, -73, -76, -65, -39, 0, 46, 92, 127, 144, 136, 100, 38, -41, -125, + -199, -246, -254, -214, -126, 0, 146, 288, 398, 450, 424, 312, 120, -131, -405, -655, -830, -881, -771, + -477, 0, 636, 1384, 2178, 2943, 3601, 4084, 4340, 4340, 4084, 3601, 2943, 2178, 1384, 636, 0, -477, -771, + -881, -830, -655, -405, -131, 120, 312, 424, 450, 398, 288, 146, 0, -126, -214, -254, -246, -199, -125, + -41, 38, 100, 136, 144, 127, 92, 46, 0, -39, -65, -76, -73, -58, -35, -11, 10, 26, 34, + 35, 30, 21, 10, 0, -8, -12, -13, -12, -8, -5, -1}; +#else +# define resamp_filt_96k NULL +#endif + +#ifdef SUBSET_FB +RAM_ALIGN const Word16 resamp_filt_48k[240] = { + -13, -25, -20, 10, 51, 71, 38, -47, -133, -145, -42, 139, 277, 242, 0, -329, + -511, -351, 144, 698, 895, 450, -535, -1510, -1697, -521, 1999, 5138, 7737, 8744, 7737, 5138, + 1999, -521, -1697, -1510, -535, 450, 895, 698, 144, -351, -511, -329, 0, 242, 277, 139, + -42, -145, -133, -47, 38, 71, 51, 10, -20, -25, -13, 0, -9, -23, -24, 0, + 41, 71, 52, -23, -115, -152, -78, 92, 254, 272, 76, -251, -493, -427, 0, 576, + 900, 624, -262, -1309, -1763, -954, 1272, 4356, 7203, 8679, 8169, 5886, 2767, 0, -1542, -1660, + -809, 240, 848, 796, 292, -252, -507, -398, -82, 199, 288, 183, 0, -130, -145, -71, + 20, 69, 60, 20, -15, -26, -17, -3, -6, -20, -26, -8, 31, 67, 62, 0, + -94, -152, -108, 45, 223, 287, 143, -167, -454, -480, -134, 439, 866, 758, 0, -1071, + -1748, -1295, 601, 3559, 6580, 8485, 8485, 6580, 3559, 601, -1295, -1748, -1071, 0, 758, 866, + 439, -134, -480, -454, -167, 143, 287, 223, 45, -108, -152, -94, 0, 62, 67, 31, + -8, -26, -20, -6, -3, -17, -26, -15, 20, 60, 69, 20, -71, -145, -130, 0, + 183, 288, 199, -82, -398, -507, -252, 292, 796, 848, 240, -809, -1660, -1542, 0, 2767, + 5886, 8169, 8679, 7203, 4356, 1272, -954, -1763, -1309, -262, 624, 900, 576, 0, -427, -493, + -251, 76, 272, 254, 92, -78, -152, -115, -23, 52, 71, 41, 0, -24, -23, -9}; +#else +#define resamp_filt_48k NULL +#endif + + +RAM_ALIGN const Word16 *const resamp_filts[NUM_SAMP_FREQ] = {resamp_filt_8k, + resamp_filt_16k, + resamp_filt_24k, + resamp_filt_32k, + resamp_filt_48k, + resamp_filt_96k +}; + +RAM_ALIGN const Word16 resamp_params[NUM_SAMP_FREQ][4] = { +#ifdef SUBSET_NB + {24, 5, 0, 15}, +#else + {0}, +#endif +#ifdef SUBSET_WB + {12, 10, 1, 3}, +#else + {0}, +#endif +#ifdef SUBSET_SSWB + {8, 15, 1, 7}, +#else + {0}, +#endif +#ifdef SUBSET_SWB + {6, 20, 2, 3}, +#else + {0}, +#endif +#ifdef SUBSET_FB + {4, 30, 3, 3}, +#else + {0}, +#endif +#ifdef ENABLE_HR_MODE + {2, 60, 7, 1}, +#endif +}; + +RAM_ALIGN const Word16 highpass50_filt_num[3] = {32204, -32204, 32204}; +RAM_ALIGN const Word16 highpass50_filt_den[2] = {32199, -31650}; + +RAM_ALIGN const Word16 olpa_ac_weighting[98] = { + 32767, 32598, 32429, 32260, 32091, 31922, 31754, 31585, 31416, 31247, 31078, 30909, 30740, 30571, + 30402, 30233, 30065, 29896, 29727, 29558, 29389, 29220, 29051, 28882, 28713, 28544, 28376, 28207, + 28038, 27869, 27700, 27531, 27362, 27193, 27024, 26855, 26687, 26518, 26349, 26180, 26011, 25842, + 25673, 25504, 25335, 25166, 24998, 24829, 24660, 24491, 24322, 24153, 23984, 23815, 23646, 23477, + 23308, 23140, 22971, 22802, 22633, 22464, 22295, 22126, 21957, 21788, 21619, 21451, 21282, 21113, + 20944, 20775, 20606, 20437, 20268, 20099, 19930, 19762, 19593, 19424, 19255, 19086, 18917, 18748, + 18579, 18410, 18241, 18073, 17904, 17735, 17566, 17397, 17228, 17059, 16890, 16721, 16552, 16384}; + +RAM_ALIGN const Word16 ltpf_ac_interp_filt[7][9] = { + {90, 151, -2472, 26787, 10819, -3468, 940, -94, 0}, {-98, 967, -4270, 19769, 19769, -4270, 967, -98, 0}, + {-94, 940, -3468, 10819, 26787, -2472, 151, 90, 0}, {0, 503, -1550, 2739, 29447, 2739, -1550, 503, 0}, + {0, 90, 151, -2472, 26787, 10819, -3468, 940, -94}, {0, -98, 967, -4270, 19769, 19769, -4270, 967, -98}, + {0, -94, 940, -3468, 10819, 26787, -2472, 151, 90}}; + +RAM_ALIGN const Word16 inter_filter[5][4][12] = { + {{6877, 19121, 6877, 0}, {3506, 18025, 11000, 220}, {1300, 15048, 15048, 1300}, {220, 11000, 18025, 3506}}, + {{6877, 19121, 6877, 0}, {3506, 18025, 11000, 220}, {1300, 15048, 15048, 1300}, {220, 11000, 18025, 3506}}, + {{2072, 8216, 12170, 8216, 2072, 0}, + {1134, 6509, 11883, 9787, 3320, 140}, + {503, 4831, 11057, 11057, 4831, 503}, + {140, 3320, 9787, 11883, 6509, 1134}}, + {{950, 3702, 7248, 8926, 7248, 3702, 950, 0}, + {558, 2858, 6427, 8812, 7946, 4606, 1466, 102}, + {281, 2106, 5530, 8479, 8479, 5530, 2106, 281}, + {102, 1466, 4606, 7946, 8812, 6427, 2858, 558}}, + {{355, 1183, 2515, 4068, 5333, 5822, 5333, 4068, 2515, 1183, 355, 0}, + {231, 924, 2145, 3685, 5074, 5791, 5543, 4433, 2900, 1474, 510, 67}, + {136, 700, 1797, 3293, 4771, 5697, 5697, 4771, 3293, 1797, 700, 136}, + {67, 510, 1474, 2900, 4433, 5543, 5791, 5074, 3685, 2145, 924, 231}}}; +RAM_ALIGN const Word16 inter_filter_shift[5] = {1, 1, 2, 3, 5}; +RAM_ALIGN const Word16 inter_filter_len[5] = {4, 4, 6, 8, 12}; + +RAM_ALIGN const Word16 tilt_filter[5][4][11] = { + {{16777, 11692, -525}, {16697, 11692, -444}, {16622, 11692, -369}, {16551, 11692, -298}}, + {{16777, 11692, -525}, {16697, 11692, -444}, {16622, 11692, -369}, {16551, 11692, -298}}, + {{11112, 14323, 2797, -356, -44}, + {10998, 14271, 2906, -304, -38}, + {10890, 14222, 3008, -255, -32}, + {10788, 14175, 3104, -208, -26}}, + {{8307, 12959, 5866, 1049, -283, -71, -9}, + {8199, 12866, 5931, 1133, -242, -61, -8}, + {8098, 12777, 5992, 1212, -203, -51, -6}, + {8002, 12693, 6050, 1287, -166, -42, -5}}, + {{5519, 9817, 7001, 3967, 1589, 259, -201, -88, -31, -8, -1}, + {5433, 9706, 6991, 4014, 1651, 309, -172, -76, -27, -7, -1}, + {5353, 9601, 6981, 4058, 1710, 356, -145, -64, -23, -6, -1}, + {5277, 9501, 6970, 4100, 1767, 402, -118, -52, -19, -5, -1}}}; +RAM_ALIGN const Word16 tilt_filter_len[5] = {2, 2, 4, 6, 10}; + +RAM_ALIGN const Word16 gain_scale_fac[4] = {13108, 11468, 9832, 8192}; + +RAM_ALIGN const UWord16 pitch_scale[NUM_SAMP_FREQ] = {5120, + 10240, + 15360, + 20480, + 30720 +}; + +RAM_ALIGN const Word16 ltpf_overlap_len[NUM_SAMP_FREQ] = {20, 40, 60, 80, 120 +}; + +/* set up of SNS VQ stages 1 ( split VQ) and SNS stage 2(Transformed PVQ) for bit rate 38 bits */ + +/* trained gain set for DCT Q12 */ +RAM_ALIGN const Word16 sns_vq_reg_adj_gains[2] = {8915, 12054}; +RAM_ALIGN const Word16 sns_vq_reg_lf_adj_gains[4] = {6245, 15043, 17861, 21014}; +RAM_ALIGN const Word16 sns_vq_near_adj_gains[4] = {7099, 9132, 11253, 14808}; +RAM_ALIGN const Word16 sns_vq_far_adj_gains[8] = {4336, 5067, 5895, 8149, 10235, 12825, 16868, 19882}; + +RAM_ALIGN const Word16 *const sns_gaintabPtr[4] = {sns_vq_reg_adj_gains, sns_vq_reg_lf_adj_gains, sns_vq_near_adj_gains, + sns_vq_far_adj_gains}; +RAM_ALIGN const Word16 sns_gainSz[4] = {2, 4, 4, 8}; +RAM_ALIGN const Word16 sns_gainMSBbits[4] = {1, 1, 2, 2}; +RAM_ALIGN const Word16 sns_gainLSBbits[4] = {0, 1, 0, 1}; +RAM_ALIGN const Word16 sns_Kval[4][2] = {{10, 1}, {10, 0}, {8, 0}, {6, 0}}; +RAM_ALIGN const UWord32 sns_MPVQ_Sz[4][2] = { + {4780008U >> 1, (2U * 6U)}, {4780008U >> 1, (2U)}, {30316544U >> 1, 0U}, {MPVQ_SZ_OUTL_FAR, 0U}}; + +#ifdef ENABLE_HR_MODE +RAM_ALIGN const Word32 st1SCF0_7_base5_32x8_Q27[256] = { + 303712392, 109160791, -71161366, -182086260, -214684177, -193406093, -153520450, -101361734, 395293327, + 323657083, 128910102, -59488852, -164971858, -208829415, -200908713, -149907762, -293414324, -264613117, + -239872071, -257518046, -240785425, -182185002, -94683128, -6417929, 93105259, 128259784, 77206169, + -15381811, -86711449, -127822437, -144156883, -101748810, -174150364, -99370653, -46355110, -42048494, + -54086690, -49931794, -10514807, 13025043, 122762518, 233932163, 256230537, 207243559, 146760322, + 86903234, 4855873, -39875122, -337462040, -388124479, -269040331, -100785739, 59217144, 161317613, + 178164447, 163811504, -123774032, 84892061, 145943568, 81688751, 17605952, -39748467, -27784884, + 18109316, 106075262, 84342590, 52763395, 64425544, 60104730, 28150050, 881397, -11559399, + 194314494, 365609026, 310154713, 125500457, -36875504, -121074819, -126256135, -85053377, 106482242, + 1931812, -76213503, -87880462, -64351897, -23339746, 9128989, 39611134, 365643112, 397214108, + 248240465, 75602822, 18779354, 48270210, 92537937, 85871184, -71246823, -28546860, 773918, + 57025285, 63502293, 115278828, 159868294, 133706314, 226463440, 326973859, 312753384, 238885783, + 193825560, 204004473, 197567682, 131222320, -396188282, -213934330, -14753048, 52158227, 68844655, + 84303846, 110410429, 117560157, 13673880, 79169310, 83087169, 170095890, 324754621, 302223766, + 70670604, -53229612, 360045196, 178157942, 17473172, -45437142, -49421549, -25728189, -20774539, + -31434755, 647866186, 418689256, 187252080, 33594069, -52829955, -86363494, -86244384, -97065351, + 11789953, -76448652, -153687373, -224101311, -247677903, -210007831, -149983961, -71669806, 186699958, + 265947702, 149338424, -29542330, -104014124, -79733903, 18379464, 109822702, 51618245, -21553862, + -72392588, -71042662, 25559558, 343681831, 378354941, 88136873, 259345425, 404035869, 411436250, + 335692175, 259160465, 76793185, -108950139, -157896166, 23498902, -100733469, -139511132, -152441152, + -139852059, -2040916, 277895647, 460298246, -159473505, 49230106, 175768625, 225929624, 167907618, + 126483532, 110897463, 59049457, 340003306, 283568025, 169501437, 102208613, 70077483, 15928969, + -60712963, -93999711, 536723054, 547476463, 378877401, 231669479, 86858248, -44446002, -118654185, + -151259810, 68169532, 213189358, 232061142, 135146824, 50616355, 63937402, 145968142, 145970189, + 425278032, 437353108, 325116396, 240848448, 204249734, 157298757, 65685431, -8359023, 254228196, + 167918047, 79249020, 81652507, 117866118, 150206430, 136711039, 83275912, 127356599, 286205131, + 365535742, 371764419, 341298198, 271181905, 111406869, -3698627, -252365241, -169692913, 41798753, + 246517983, 302841086, 274903406, 294643934, 272005129, 33067993, 128261383, 204073729, 265277850, + 260441270, 299809987, 266873132, 170768802 }; +RAM_ALIGN const Word32 st1SCF8_15_base5_32x8_Q27[256] = { + 31142327, -135412629, -287525918, -318812488, -299361815, -292052248, -307447065, -339955249, -173817241, + -241497912, -253273077, -242922894, -236679593, -246180047, -242237472, -233108740, 18694612, -34653021, + -87349511, -143365648, -217337078, -293618146, -354009441, -399831591, -42481669, -64122205, -73975722, + -65067182, -31995949, -19196424, 9169576, 11852254, 118046962, 40042530, -122861082, -296146014, + -367947407, -384049364, -387676629, -396187390, -39822658, -130862945, -182344850, -132032812, -87638397, + -132873805, -216717640, -323078583, 45765709, 36091119, 7560964, 6698995, -12806126, -102027773, + -312402661, -506209524, -189555374, -199343014, -159187030, -83886299, 20656444, 77361286, 106715523, + 80069550, -30714319, -44791015, -108625274, -219563932, -252982160, -220783722, -188597085, -196852406, + -143812455, -190276467, -207892204, -195013074, -138489838, -92696486, -57558441, -66432436, -79321135, + -9552782, 46401689, 40339066, -150142954, -327610913, -299110559, -254354980, -113874897, -78279377, + 12085282, 113417337, 143039033, 98996714, 34438988, -66030204, 153101016, 129388157, 51198856, + -64806941, -243783312, -376184794, -434040973, -464270818, -50503881, 5713319, 69329858, 33784868, + -29015184, -71682211, -86004854, -116735202, 89255342, 147358670, 185680385, 180291129, 110458350, + 28974493, -54348215, -143647337, -110899539, -90084420, -30668159, 69656431, 183505023, 292625568, + 340370914, 295441538, 189258173, 101259479, -175222029, -251166616, -166441640, -170071209, -273362338, + -388808843, 48504518, -2952679, -77761569, -118034823, -114177011, -104608901, -98271929, -119232119, + 58716127, 40995519, -991583, -66524997, -108266901, -164325304, -228381893, -301307946, 86986552, + 91576640, 33990299, 9876306, 42173453, 31504911, 19407902, -9155262, 150216257, 165712633, + 79077091, -184136602, -318224471, -269482063, -223725572, -258546087, 19038449, -14852543, -37960074, + -885587, 38376778, 6179995, -80879122, -304095400, 67652037, 110995667, 150298671, 158261551, + 144938274, 93621729, -122480229, -480076341, -67253289, -43711762, 3768810, 35172367, 48397679, + 85311972, 128716474, 175483179, 503277534, 204470792, -61433556, -107201177, -51918012, -50452587, + -88293374, -172018761, -154697999, -148714432, -75512923, -29603347, -46955117, -101124035, -132687189, + -172859645, 138012394, 147331497, 103165859, 27659855, -46010607, -101326252, -139849742, -201777098, + 17291535, 92534989, 150789463, 175737342, 181881080, 191007103, 155298567, 54535272, 179896088, + 186558381, 140214471, 85338684, -36874140, -207934631, -327812990, -405951728, 287015358, 570037814, + 388874539, 125188990, -39301937, -108770623, -105880084, -125540975, 75810265, 213654461, 321816127, + 407615675, 357588710, 186971315, 54201685, -88083199, -56701695, 43775062, 186792575, 299502316, + 350549113, 357744389, 322261535, 236116337 }; +#endif + +RAM_ALIGN const Word16 st1SCF0_7_base5_32x8_Q11[256] = { + 4634, 1666, -1086, -2778, -3276, -2951, -2343, -1547, 6032, 4939, 1967, -908, -2517, -3186, -3066, -2287, + -4477, -4038, -3660, -3929, -3674, -2780, -1445, -98, 1421, 1957, 1178, -235, -1323, -1950, -2200, -1553, + -2657, -1516, -707, -642, -825, -762, -160, 199, 1873, 3570, 3910, 3162, 2239, 1326, 74, -608, + -5149, -5922, -4105, -1538, 904, 2462, 2719, 2500, -1889, 1295, 2227, 1246, 269, -607, -424, 276, + 1619, 1287, 805, 983, 917, 430, 13, -176, 2965, 5579, 4733, 1915, -563, -1847, -1927, -1298, + 1625, 29, -1163, -1341, -982, -356, 139, 604, 5579, 6061, 3788, 1154, 287, 737, 1412, 1310, + -1087, -436, 12, 870, 969, 1759, 2439, 2040, 3456, 4989, 4772, 3645, 2958, 3113, 3015, 2002, + -6045, -3264, -225, 796, 1050, 1286, 1685, 1794, 209, 1208, 1268, 2595, 4955, 4612, 1078, -812, + 5494, 2718, 267, -693, -754, -393, -317, -480, 9886, 6389, 2857, 513, -806, -1318, -1316, -1481, + 180, -1167, -2345, -3420, -3779, -3204, -2289, -1094, 2849, 4058, 2279, -451, -1587, -1217, 280, 1676, + 788, -329, -1105, -1084, 390, 5244, 5773, 1345, 3957, 6165, 6278, 5122, 3954, 1172, -1662, -2409, + 359, -1537, -2129, -2326, -2134, -31, 4240, 7024, -2433, 751, 2682, 3447, 2562, 1930, 1692, 901, + 5188, 4327, 2586, 1560, 1069, 243, -926, -1434, 8190, 8354, 5781, 3535, 1325, -678, -1811, -2308, + 1040, 3253, 3541, 2062, 772, 976, 2227, 2227, 6489, 6673, 4961, 3675, 3117, 2400, 1002, -128, + 3879, 2562, 1209, 1246, 1798, 2292, 2086, 1271, 1943, 4367, 5578, 5673, 5208, 4138, 1700, -56, + -3851, -2589, 638, 3762, 4621, 4195, 4496, 4150, 505, 1957, 3114, 4048, 3974, 4575, 4072, 2606}; + +RAM_ALIGN const Word16 st1SCF8_15_base5_32x8_Q11[256] = { + 475, -2066, -4387, -4865, -4568, -4456, -4691, -5187, -2652, -3685, -3865, -3707, -3611, -3756, -3696, -3557, + 285, -529, -1333, -2188, -3316, -4480, -5402, -6101, -648, -978, -1129, -993, -488, -293, 140, 181, + 1801, 611, -1875, -4519, -5614, -5860, -5915, -6045, -608, -1997, -2782, -2015, -1337, -2027, -3307, -4930, + 698, 551, 115, 102, -195, -1557, -4767, -7724, -2892, -3042, -2429, -1280, 315, 1180, 1628, 1222, + -469, -683, -1657, -3350, -3860, -3369, -2878, -3004, -2194, -2903, -3172, -2976, -2113, -1414, -878, -1014, + -1210, -146, 708, 616, -2291, -4999, -4564, -3881, -1738, -1194, 184, 1731, 2183, 1511, 525, -1008, + 2336, 1974, 781, -989, -3720, -5740, -6623, -7084, -771, 87, 1058, 516, -443, -1094, -1312, -1781, + 1362, 2249, 2833, 2751, 1685, 442, -829, -2192, -1692, -1375, -468, 1063, 2800, 4465, 5194, 4508, + 2888, 1545, -2674, -3832, -2540, -2595, -4171, -5933, 740, -45, -1187, -1801, -1742, -1596, -1500, -1819, + 896, 626, -15, -1015, -1652, -2507, -3485, -4598, 1327, 1397, 519, 151, 644, 481, 296, -140, + 2292, 2529, 1207, -2810, -4856, -4112, -3414, -3945, 291, -227, -579, -14, 586, 94, -1234, -4640, + 1032, 1694, 2293, 2415, 2212, 1429, -1869, -7325, -1026, -667, 58, 537, 738, 1302, 1964, 2678, + 7679, 3120, -937, -1636, -792, -770, -1347, -2625, -2361, -2269, -1152, -452, -716, -1543, -2025, -2638, + 2106, 2248, 1574, 422, -702, -1546, -2134, -3079, 264, 1412, 2301, 2682, 2775, 2915, 2370, 832, + 2745, 2847, 2140, 1302, -563, -3173, -5002, -6194, 4380, 8698, 5934, 1910, -600, -1660, -1616, -1916, + 1157, 3260, 4911, 6220, 5456, 2853, 827, -1344, -865, 668, 2850, 4570, 5349, 5459, 4917, 3603}; + +/* tables for MPVQ pulse enumeration */ + +/* N=16, K=12 31.74 bits */ +RAM_ALIGN const UWord32 h_memN16K12[12 + 2] = { + 0U, 1U, 31U, 481U, 4991U, 39041U, 246047U, + 1303777U, 5984767U, 24331777U, 89129247U, 298199265U, 921406335U, /*U*/ 1326824512U}; + +/*N=16,K=8,h_memN16K8={0U,1U,31U,481U,4991U,39041U,246047U,1303777U,5984767U, 12165888U,}; */ + +/*N=10, K=20 +UWord32 h_memN10K20[20+2] = +{ + 0U,1U,19U,181U,1159U,5641U,22363U,75517U,224143U,598417U,1462563U, + 3317445U,7059735U,14218905U,27298155U,50250765U,89129247U,152951073U,254831667U,413442773U,654862247U, + 507444884U +}; +*/ +/*N=10, K=22 31.84 bits */ +RAM_ALIGN const UWord32 h_memN10K22[22 + 2] = {0U, + 1U, + 19U, + 181U, + 1159U, + 5641U, + 22363U, + 75517U, + 224143U, + 598417U, + 1462563U, + 3317445U, + 7059735U, + 14218905U, + 27298155U, + 50250765U, + 89129247U, + 152951073U, + 254831667U, + 413442773U, + 654862247U, + 1014889769U, + 1541911931U, + /*U*/ 1150204814U}; +/* N=10,K=10,h_memN10K10={0U,1U,19U,181U,1159U,5641U,22363U,75517U,224143U,598417U,1462563U,1658722U,}; */ + +/* N=6,K=2,*/ +RAM_ALIGN const UWord32 h_memN6K2[2 + 2] = {0U, 1U, 11U, /*U*/ 30U}; +/*N=6,K=1, h_memN6K1={0U,1U, 5U,}; */ + +RAM_ALIGN const UWord32 *const MPVQ_offs_ptr[M + 1] = {NULL /*0*/, NULL, NULL, NULL, NULL, NULL, + h_memN6K2, NULL, NULL, NULL, h_memN10K22, NULL, + NULL, NULL, NULL, NULL, h_memN16K12}; + +/*maxK coefficents for MPVQ de-indexing lookup */ +RAM_ALIGN const Word16 tabledKMAX[M + 1] = { + 0, 0, 0, 0, 0, 0, 2 /*N=6*/, 0, 0, 0, 22 /*N=10*/, 0, 0, 0, 0, 0, 12 /*N=16*/ +}; + +RAM_ALIGN const Word16 isqrt_Q16tab[1 + 64] = {/*table generated using ISqrt16 function + shift to Q16 */ + 32767, 32767, 32767, 32767, 32766, 29308, 26754, 24770, 23169, 21844, + 20723, 19759, 18918, 18176, 17515, 16921, 16383, 15894, 15446, 15034, + 14654, 14300, 13972, 13665, 13377, 13107, 12852, 12612, 12385, 12169, + 11965, 11770, 11584, 11407, 11238, 11077, 10922, 10773, 10631, 10493, + 10361, 10234, 10112, 9993, 9879, 9769, 9662, 9559, 9459, 9362, + 9268, 9176, 9088, 9001, 8918, 8836, 8757, 8680, 8605, 8532, + 8460, 8390, 8323, 8256, 8191}; + +#ifdef ENABLE_HR_MODE +RAM_ALIGN const Word32 isqrt_Q31tab[1 + 64] = {/* 2^31 / sqrt(idx) */ + 2147483647, 2147483647, 1518500249, 1239850262, 1073741824, 960383883, + 876706528, 811672525, 759250124, 715827882, 679093956, 647490682, + 619925131, 595604800, 573939146, 554477893, 536870912, 520841288, + 506166749, 492666537, 480191941, 468619350, 457845052, 447781294, + 438353264, 429496729, 421156193, 413283420, 405836262, 398777702, + 392075078, 385699449, 379625062, 373828919, 368290407, 362990988, + 357913941, 353044136, 348367849, 343872591, 339546978, 335380599, + 331363920, 327488186, 323745341, 320127961, 316629189, 313242684, + 309962565, 306783378, 303700049, 300707858, 297802400, 294979564, + 292235509, 289566636, 286969573, 284441157, 281978417, 279578557, + 277238946, 274957105, 272730696, 270557508, 268435456 }; +#endif + +# ifdef ENABLE_HR_MODE +RAM_ALIGN const Word16 adjust_global_gain_tables[5][NUM_SAMP_FREQ] = {{80, 230, 380, 530, 680, 830}, + {500, 1025, 1550, 2075, 2600, 3125}, + {850, 1700, 2550, 3400, 4250, 5100}, + {189, 164, 155, 151, 148, 146}, + {1310, 3241, 5268, 7326, 9400, 11482}}; +# else +RAM_ALIGN const Word16 adjust_global_gain_tables[5][NUM_SAMP_FREQ] = {{80, 230, 380, 530, 680}, + {500, 1025, 1550, 2075, 2600}, + {850, 1700, 2550, 3400, 4250}, + {189, 164, 155, 151, 148}, + {1310, 3241, 5268, 7326, 9400}}; +# endif + +#if defined(CR8_A_PLC_FADEOUT_TUNING) +const Word16 plc_fadeout_param_maxlen[4] = {800, 400, 266, 200}; +const Word16 plc_fadeout_param_maxbytes[4] = {27, 14, 9, 7}; +#endif diff --git a/lib_lc3plus/constants.h b/lib_lc3plus/constants.h new file mode 100644 index 0000000000000000000000000000000000000000..8dee7e6ebae1bfde803fc1787049f0ccced10e3e --- /dev/null +++ b/lib_lc3plus/constants.h @@ -0,0 +1,402 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#ifndef CONSTANTS_H +#define CONSTANTS_H + +#include "defines.h" + +#include "basop_util_lc3plus.h" + + +#ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word16 BW_cutoff_bin_all_HR[]; + +extern RAM_ALIGN const Word32 *const LowDelayShapes_n960_HRA_2_5ms[2]; +extern RAM_ALIGN const Word32 *const LowDelayShapes_n960_HRA_5ms[2]; +extern RAM_ALIGN const Word32 *const LowDelayShapes_n960_HRA_7_5ms[2]; +extern RAM_ALIGN const Word32 *const LowDelayShapes_n960_HRA[2]; +#endif + +# ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word16 LowDelayShapes_n960_len[6]; +# else +extern RAM_ALIGN const Word16 LowDelayShapes_n960_len[5]; +# endif +extern RAM_ALIGN const Word16 LowDelayShapes_n960_la_zeroes[NUM_SAMP_FREQ]; +# ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word32 *const LowDelayShapes_n960[6]; +# else +extern RAM_ALIGN const Word16 *const LowDelayShapes_n960[6]; +# endif + +# ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word16 LowDelayShapes_n960_len_5ms[6]; +# else +extern RAM_ALIGN const Word16 LowDelayShapes_n960_len_5ms[5]; +# endif +extern RAM_ALIGN const Word16 LowDelayShapes_n960_la_zeroes_5ms[NUM_SAMP_FREQ]; +# ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word32 *const LowDelayShapes_n960_5ms[6]; +# else +extern RAM_ALIGN const Word16 *const LowDelayShapes_n960_5ms[6]; +# endif +#ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word16 LowDelayShapes_n960_len_2_5ms[6]; +#else +extern RAM_ALIGN const Word16 LowDelayShapes_n960_len_2_5ms[5]; +#endif +extern RAM_ALIGN const Word16 LowDelayShapes_n960_la_zeroes_2_5ms[NUM_SAMP_FREQ]; +# ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word32 *const LowDelayShapes_n960_2_5ms[6]; +# else +extern RAM_ALIGN const Word16 *const LowDelayShapes_n960_2_5ms[6]; +# endif + +# ifdef CR8_G_ADD_75MS +# ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word32 *const LowDelayShapes_n960_7_5ms[5]; +# else +extern RAM_ALIGN const Word16 *const LowDelayShapes_n960_7_5ms[5]; +# endif + +# ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word16 LowDelayShapes_n960_len_7_5ms[6]; +# else +extern RAM_ALIGN const Word16 LowDelayShapes_n960_len_7_5ms[5]; +# endif +extern RAM_ALIGN const Word16 LowDelayShapes_n960_la_zeroes_7_5ms[NUM_SAMP_FREQ]; +# endif + +extern RAM_ALIGN const Word16 NN_thresh; +extern RAM_ALIGN const Word16 NN_thresh_exp; +#ifdef CR8_E_TONE_DETECTOR +# ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word32 TD_HR_thresh_10ms; +# ifdef ENABLE_075_DMS_MODE +extern RAM_ALIGN const Word32 TD_HR_thresh_7_5ms; +# endif +extern RAM_ALIGN const Word32 TD_HR_thresh_5ms; +extern RAM_ALIGN const Word32 TD_HR_thresh_2_5ms; +# endif /* ENABLE_HR_MODE */ +#endif /* CR8_E_TONE_DETECTOR */ +extern RAM_ALIGN const Word32 BW_thresh_quiet[4]; +extern RAM_ALIGN const Word16 BW_thresh_quiet_exp; +extern RAM_ALIGN const Word16 BW_thresh_brickwall[4]; + +extern RAM_ALIGN const Word16 BW_cutoff_bin_all[]; +extern RAM_ALIGN const Word16 BW_cutoff_bits_all[]; + +#ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word16 bands_number_2_5ms_HR[]; +#endif + +extern RAM_ALIGN const Word16 BW_brickwall_dist[4]; +extern RAM_ALIGN const Word16 *const BW_warp_idx_start_all[MAX_BW_BANDS_NUMBER - 1]; +extern RAM_ALIGN const Word16 *const BW_warp_idx_stop_all[MAX_BW_BANDS_NUMBER - 1]; + +extern RAM_ALIGN const Word16 BW_brickwall_dist_5ms[4]; +extern RAM_ALIGN const Word16 *const BW_warp_idx_start_all_5ms[MAX_BW_BANDS_NUMBER - 1]; +extern RAM_ALIGN const Word16 *const BW_warp_idx_stop_all_5ms[MAX_BW_BANDS_NUMBER - 1]; +extern RAM_ALIGN const Word16 BW_brickwall_dist_2_5ms[4]; +extern RAM_ALIGN const Word16 *const BW_warp_idx_start_all_2_5ms[MAX_BW_BANDS_NUMBER - 1]; +extern RAM_ALIGN const Word16 *const BW_warp_idx_stop_all_2_5ms[MAX_BW_BANDS_NUMBER - 1]; + +#ifdef CR8_G_ADD_75MS +# ifdef ENABLE_075_DMS_MODE +extern RAM_ALIGN const Word16 BW_brickwall_dist_7_5ms[4]; +extern RAM_ALIGN const Word16 *const BW_warp_idx_start_all_7_5ms[]; +extern RAM_ALIGN const Word16 *const BW_warp_idx_stop_all_7_5ms[]; +# endif +#endif + +extern RAM_ALIGN const Word16 *const tns_subdiv_startfreq[MAX_BW_BANDS_NUMBER]; +extern RAM_ALIGN const Word16 *const tns_subdiv_stopfreq[MAX_BW_BANDS_NUMBER]; + +# ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word16 *const tns_subdiv_startfreq_HR[2]; +extern RAM_ALIGN const Word16 *const tns_subdiv_stopfreq_HR[2]; + +extern RAM_ALIGN const Word16 *const tns_subdiv_startfreq_5ms_HR[2]; +extern RAM_ALIGN const Word16 *const tns_subdiv_stopfreq_5ms_HR[2]; + +extern RAM_ALIGN const Word16 *const tns_subdiv_startfreq_2_5ms_HR[2]; +extern RAM_ALIGN const Word16 *const tns_subdiv_stopfreq_2_5ms_HR[2]; +# endif + +extern RAM_ALIGN const Word16 *const tns_subdiv_startfreq_5ms[MAX_BW_BANDS_NUMBER]; +extern RAM_ALIGN const Word16 *const tns_subdiv_stopfreq_5ms[MAX_BW_BANDS_NUMBER]; + + +extern RAM_ALIGN const Word16 *const tns_subdiv_startfreq_2_5ms[MAX_BW_BANDS_NUMBER]; +extern RAM_ALIGN const Word16 *const tns_subdiv_stopfreq_2_5ms[MAX_BW_BANDS_NUMBER]; + +#ifdef CR8_G_ADD_75MS +# ifdef ENABLE_075_DMS_MODE +extern RAM_ALIGN const Word16 *const tns_subdiv_startfreq_7_5ms[]; +extern RAM_ALIGN const Word16 *const tns_subdiv_stopfreq_7_5ms[]; +# endif +#endif + +extern RAM_ALIGN const Word16 Tab_esc_nb[4]; + +extern RAM_ALIGN const Word8 ari_spec_lookup[4096]; +extern RAM_ALIGN const UWord16 ari_spec_cumfreq[64][17]; +extern RAM_ALIGN const UWord16 ari_spec_freq[64][17]; +extern RAM_ALIGN const UWord16 ari_spec_bits[64][17]; + +extern RAM_ALIGN const Word32 tnsAcfWindow_lc3plus[MAXLAG]; +extern RAM_ALIGN const Word16 ac_tns_order_bits[2][MAXLAG]; +extern RAM_ALIGN const Word16 ac_tns_order_freq[2][MAXLAG]; +extern RAM_ALIGN const Word16 ac_tns_order_cumfreq[2][MAXLAG]; +extern RAM_ALIGN const Word16 ac_tns_coef_bits[MAXLAG][TNS_COEF_RES]; +extern RAM_ALIGN const Word16 ac_tns_coef_freq[MAXLAG][TNS_COEF_RES]; +extern RAM_ALIGN const Word16 ac_tns_coef_cumfreq[MAXLAG][TNS_COEF_RES]; +extern RAM_ALIGN const Word16 tnsQuantPts[TNS_COEF_RES]; +extern RAM_ALIGN const Word16 tnsQuantThr[TNS_COEF_RES - 1]; + +extern RAM_ALIGN const Word16 *const lpc_pre_emphasis[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 *const lpc_pre_emphasis_e[NUM_SAMP_FREQ]; + +extern RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis_e[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis_5ms[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis_e_5ms[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis_2_5ms[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis_e_2_5ms[NUM_SAMP_FREQ]; + +extern RAM_ALIGN const Word16 *const lpc_warp_dee_emphasis[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 *const lpc_warp_dee_emphasis_e[NUM_SAMP_FREQ]; + +#ifdef CR8_G_ADD_75MS +# ifdef ENABLE_075_DMS_MODE +extern RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis_7_5ms[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 *const lpc_lin_pre_emphasis_e_7_5ms[NUM_SAMP_FREQ]; +# endif +#endif + +extern RAM_ALIGN const Word16 bands_nrg_scale[32]; + +# ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word16 *const bands_offset_2_5ms_HR[2]; +extern RAM_ALIGN const Word16 *const bands_offset_5ms_HR[2]; +extern RAM_ALIGN const Word16 *const bands_offset_HR[2]; +# endif + +extern RAM_ALIGN const Word16 *const bands_offset[6]; +extern RAM_ALIGN const Word16 bands_offset_with_one_max[NUM_OFFSETS]; +extern RAM_ALIGN const Word16 bands_offset_with_two_max[NUM_OFFSETS]; + +extern RAM_ALIGN const Word16 bands_number_5ms[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 *const bands_offset_5ms[6]; +extern RAM_ALIGN const Word16 bands_offset_with_one_max_5ms[NUM_OFFSETS]; +extern RAM_ALIGN const Word16 bands_offset_with_two_max_5ms[NUM_OFFSETS]; +extern RAM_ALIGN const Word16 bands_number_2_5ms[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 *const bands_offset_2_5ms[6]; +extern RAM_ALIGN const Word16 bands_offset_with_one_max_2_5ms[NUM_OFFSETS]; +extern RAM_ALIGN const Word16 bands_offset_with_two_max_2_5ms[NUM_OFFSETS]; + +#ifdef CR8_G_ADD_75MS +#ifdef ENABLE_075_DMS_MODE +extern RAM_ALIGN const Word16 bands_number_7_5ms[]; +# ifndef GENERATE_BAND_TABLES +extern RAM_ALIGN const Word16 *const bands_offset_7_5ms[5]; +# endif +# ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word16 bands_number_7_5ms_HR[]; +# ifndef GENERATE_BAND_TABLES +extern RAM_ALIGN const Word16 *const bands_offset_7_5ms_HR[2]; +# endif +# endif +#endif +#endif + +extern RAM_ALIGN const Word16 pitch_max[5]; +extern RAM_ALIGN const Word16 plc_preemph_fac[NUM_SAMP_FREQ]; + +extern RAM_ALIGN const Word16 TDC_high_16[11]; +extern RAM_ALIGN const Word16 TDC_high_32[11]; +extern RAM_ALIGN const Word16 TDC_high_16_harm[11]; +extern RAM_ALIGN const Word16 TDC_high_32_harm[11]; + +extern RAM_ALIGN const Word32 *const lag_win[NUM_SAMP_FREQ]; + +extern RAM_ALIGN const Word16 *const bands_offset_lin[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 bands_offset_with_one_max_lin[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 bands_offset_with_two_max_lin[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 *const bands_offset_lin_5ms[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 bands_offset_with_one_max_lin_5ms[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 bands_offset_with_two_max_lin_5ms[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 *const bands_offset_lin_2_5ms[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 bands_offset_with_one_max_lin_2_5ms[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 bands_offset_with_two_max_lin_2_5ms[NUM_SAMP_FREQ]; + +#ifdef CR8_G_ADD_75MS +# ifdef ENABLE_075_DMS_MODE +extern RAM_ALIGN const Word16 bands_offset_with_one_max_7_5ms[NUM_OFFSETS]; +extern RAM_ALIGN const Word16 bands_offset_with_two_max_7_5ms[NUM_OFFSETS]; +extern RAM_ALIGN const Word16 *const bands_offset_lin_7_5ms[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 bands_offset_with_one_max_lin_7_5ms[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 bands_offset_with_two_max_lin_7_5ms[NUM_SAMP_FREQ]; +# endif +#endif + +extern RAM_ALIGN const Word32 inv_odft_twiddle_80_re[M]; +extern RAM_ALIGN const Word32 inv_odft_twiddle_80_im[M]; +extern RAM_ALIGN const Word32 inv_odft_twiddle_60_re[M]; +extern RAM_ALIGN const Word32 inv_odft_twiddle_60_im[M]; +extern RAM_ALIGN const Word32 inv_odft_twiddle_40_re[M]; +extern RAM_ALIGN const Word32 inv_odft_twiddle_40_im[M]; +extern RAM_ALIGN const Word32 inv_odft_twiddle_20_re[M]; +extern RAM_ALIGN const Word32 inv_odft_twiddle_20_im[M]; + +#ifdef SUBSET_WB +extern RAM_ALIGN const Word16 resamp_filt_16k[240]; +#else +extern RAM_ALIGN const Word16 resamp_filt_16k[1]; +#endif +#ifdef SUBSET_SSWB +extern RAM_ALIGN const Word16 resamp_filt_24k[240]; +#else +extern RAM_ALIGN const Word16 resamp_filt_24k[1]; +#endif +#ifdef SUBSET_SWB +extern RAM_ALIGN const Word16 resamp_filt_32k[240]; +#else +extern RAM_ALIGN const Word16 resamp_filt_32k[1]; +#endif +#ifdef SUBSET_FB +extern RAM_ALIGN const Word16 resamp_filt_48k[240]; +#else +extern RAM_ALIGN const Word16 resamp_filt_48k[1]; +#endif + +extern RAM_ALIGN const Word16 resamp_params[NUM_SAMP_FREQ][4]; +extern RAM_ALIGN const Word16 *const resamp_filts[NUM_SAMP_FREQ]; + +extern RAM_ALIGN const Word16 highpass50_filt_num[3]; +extern RAM_ALIGN const Word16 highpass50_filt_den[2]; + +extern RAM_ALIGN const Word16 olpa_ac_weighting[98]; + +extern RAM_ALIGN const Word16 ltpf_ac_interp_filt[7][9]; +extern RAM_ALIGN const Word16 inter_filter[5][4][12]; +extern RAM_ALIGN const Word16 inter_filter_shift[5]; +extern RAM_ALIGN const Word16 inter_filter_len[5]; +extern RAM_ALIGN const Word16 tilt_filter[5][4][11]; +extern RAM_ALIGN const Word16 tilt_filter_len[5]; +extern RAM_ALIGN const Word16 gain_scale_fac[4]; +extern RAM_ALIGN const UWord16 pitch_scale[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 ltpf_overlap_len[NUM_SAMP_FREQ]; + +extern RAM_ALIGN const Word16 sns_vq_reg_adj_scf[2]; +extern RAM_ALIGN const Word16 sns_vq_reg_lf_adj_scf[4]; +extern RAM_ALIGN const Word16 sns_vq_near_adj_scf[4]; +extern RAM_ALIGN const Word16 sns_vq_far_adj_scf[8]; +extern RAM_ALIGN const Word16 *const sns_gaintabPtr[4]; +extern RAM_ALIGN const Word16 sns_gainSz[4]; +extern RAM_ALIGN const Word16 sns_gainMSBbits[4]; +extern RAM_ALIGN const Word16 sns_gainLSBbits[4]; +extern RAM_ALIGN const Word16 sns_Kval[4][2]; +extern RAM_ALIGN const UWord32 sns_MPVQ_Sz[4][2]; + +extern RAM_ALIGN const Word16 st1SCF0_7_base5_32x8_Q11[256]; +extern RAM_ALIGN const Word16 st1SCF8_15_base5_32x8_Q11[256]; + +#ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word32 st1SCF0_7_base5_32x8_Q27[256]; +extern RAM_ALIGN const Word32 st1SCF8_15_base5_32x8_Q27[256]; +#endif + +/* PVQ deindexing tables */ +extern RAM_ALIGN const UWord32 h_memN16K12[12 + 2]; +extern RAM_ALIGN const UWord32 h_memN10K22[22 + 2]; +extern RAM_ALIGN const UWord32 h_memN6K2[2 + 2]; +extern RAM_ALIGN const Word16 tabledKMAX[16 + 1]; +extern RAM_ALIGN const UWord32 *const MPVQ_offs_ptr[16 + 1]; + +extern RAM_ALIGN const Word16 isqrt_Q16tab[1 + SQRT_EN_MAX_FX]; +#ifdef ENABLE_HR_MODE +extern RAM_ALIGN const Word32 isqrt_Q31tab[1 + SQRT_EN_MAX_FX]; +#endif + +extern RAM_ALIGN const Word16 adjust_global_gain_tables[5][NUM_SAMP_FREQ]; + +extern RAM_ALIGN const Word16 sqrt_table_phecu[]; +extern RAM_ALIGN const Word16 POW_ATT_TABLE0[]; +extern RAM_ALIGN const Word16 POW_ATT_TABLE1[]; +#ifdef PLC2_FADEOUT_IN_MS +#if PLC2_FADEOUT_IN_MS == 0 +extern RAM_ALIGN const Word16 *const POW_ATT_TABLES[3]; +#else +#ifdef CR8_A_PLC_FADEOUT_TUNING +extern RAM_ALIGN const Word16 fade_scheme_tab_fx[24 / 2][3]; +extern RAM_ALIGN const Word16 *const POW_ATT_TABLES[1+24/2]; +#else +extern RAM_ALIGN const Word16 *const POW_ATT_TABLES[11]; +#endif + +#endif +#else +extern RAM_ALIGN const Word16 *const POW_ATT_TABLES[3]; +#endif + +#ifdef CR8_A_PLC_FADEOUT_TUNING +extern RAM_ALIGN const Word16 scATHFx[7]; +#endif + +extern RAM_ALIGN const Word16 e_tot_headroom[]; +extern RAM_ALIGN const Word16 xfp_wE_MDCT2FFTQ11[]; + +extern RAM_ALIGN const Word16 num_FsByResQ0[5]; +extern RAM_ALIGN const Word16 *const LprotSzPtr; +extern RAM_ALIGN const Word16 InvLprot_Q22[5]; +extern RAM_ALIGN const Word16 PhEcuFftScale[5]; +extern RAM_ALIGN const Word16 oneOverFrameQ15Tab[5]; +extern RAM_ALIGN const Word16 PhEcu_Xsav_Flt2FxDnShift[]; +extern RAM_ALIGN const Word16 PhEcu_Xsav_Flt2FxScaleQ15[]; +extern RAM_ALIGN const Word16 PhEcu_frac_thr_rise_lin_Q15[]; +extern RAM_ALIGN const Word16 PhEcu_frac_thr_decay_lin_Q15[]; + +extern RAM_ALIGN const Word16 mdct_grp_bins_fx[]; +extern RAM_ALIGN const Word16 xavg_N_grp_fx[]; +extern RAM_ALIGN const Word16 spec_shape_headroom[]; +extern RAM_ALIGN const Word16 rectLengthTab[NUM_SAMP_FREQ]; +extern RAM_ALIGN const Word16 hamm_len2Tab[]; + +#ifndef CR10_A_ATTENUATION_CURVE_SELECTOR +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH +extern RAM_ALIGN const Word16 FADE_OUT_TYPE_2_ALPHA_5MS[30]; +extern RAM_ALIGN const Word16 FADE_OUT_TYPE_2_ALPHA_2_5MS[60]; +#endif +#endif +extern RAM_ALIGN const Word16 gw_len_inv_shift_fx[]; +extern RAM_ALIGN const Word16 gwlpr_fx[]; + +extern RAM_ALIGN const Word16 sin_quarterQ15_fx[]; +extern RAM_ALIGN const Word16 sincos_lowres_tab_sinQ15_fx[]; + +extern RAM_ALIGN const Word16 *const PhECU_wins[5][3]; + +extern RAM_ALIGN const Word16 *const w_new[]; +extern RAM_ALIGN const Word16 *const w_old[]; + +/* extern RAM_ALIGN const Word16 WORK_LEN[]; */ +extern RAM_ALIGN const Word16 COPY_LEN[]; +extern RAM_ALIGN const Word16 OLA_LEN[]; + +#if defined(CR8_A_PLC_FADEOUT_TUNING) +extern const Word16 plc_fadeout_param_maxlen[4]; +extern const Word16 plc_fadeout_param_maxbytes[4]; +#endif +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR +extern RAM_ALIGN const Word16 PLC_FADEOUT_TYPE_2_SELECTOR; +#endif + +#endif /* CONSTANTS_H */ diff --git a/lib_lc3plus/cutoff_bandwidth.c b/lib_lc3plus/cutoff_bandwidth.c new file mode 100644 index 0000000000000000000000000000000000000000..8ab047c8143107351822bfa8271bd7dd669dcf7c --- /dev/null +++ b/lib_lc3plus/cutoff_bandwidth.c @@ -0,0 +1,26 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +void process_cutoff_bandwidth(Word32 d_fx[], Word16 len, Word16 bw_bin) +{ + Word32 i = 0; + if (len > bw_bin){ + /* roll off */ + for (i = -1; i < 3; i++) { + d_fx[bw_bin + i] = L_shr(d_fx[bw_bin + i], add(i, 2)); + } + + for (i = bw_bin + 3; i < len; i++) { + d_fx[i] = 0; move32(); + } + } +} + diff --git a/lib_lc3plus/dct2_fx.c b/lib_lc3plus/dct2_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..c301c2aebc7d10e4d4c61522404e1c2f55519c5f --- /dev/null +++ b/lib_lc3plus/dct2_fx.c @@ -0,0 +1,473 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +void idct16_fx(const Word16 *in, Word16 *out) +{ + Dyn_Mem_Deluxe_In( + Word16 a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15; + Word16 b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15; + ); + + a8 = add(mult_r(in[1], 1136), mult_r(in[15], -11529)); /* Sπ/32/√8 -S15π/32/√8 */ + a9 = add(mult_r(in[9], 8956), mult_r(in[7], -7350)); /* S9π/32/√8 -S7π/32/√8 */ + a10 = add(mult_r(in[5], 5461), mult_r(in[11], -10217)); /* S5π/32/√8 -S11π/32/√8 */ + a11 = add(mult_r(in[13], 11086), mult_r(in[3], -3363)); /* S13π/32/√8 -S3π/32/√8 */ + a12 = add(mult_r(in[3], 11086), mult_r(in[13], 3363)); /* C3π/32/√8 C13π/32/√8 */ + a13 = add(mult_r(in[11], 5461), mult_r(in[5], 10217)); /* C11π/32/√8 C5π/32/√8 */ + a14 = add(mult_r(in[7], 8956), mult_r(in[9], 7350)); /* C7π/32/√8 C9π/32/√8 */ + a15 = add(mult_r(in[15], 1136), mult_r(in[1], 11529)); /* C15π/32/√8 Cπ/32/√8 */ + + b4 = add(mult_r(in[2], 2260), mult_r(in[14], -11363)); /* Sπ/16/√8 -S7π/16/√8 */ + b5 = add(mult_r(in[10], 9633), mult_r(in[6], -6436)); /* S5π/16/√8 -S3π/16/√8 */ + b6 = add(mult_r(in[6], 9633), mult_r(in[10], 6436)); /* C3π/16/√8 C5π/16/√8 */ + b7 = add(mult_r(in[14], 2260), mult_r(in[2], 11363)); /* C7π/16/√8 Cπ/16/√8 */ + b8 = add(a9, a8); + b9 = sub(a8, a9); + b10 = sub(a11, a10); + b11 = add(a10, a11); + b12 = add(a13, a12); + b13 = sub(a12, a13); + b14 = sub(a15, a14); + b15 = add(a14, a15); + + a0 = add(mult_r(in[0], 8192), mult_r(in[8], 8192)); /* Cπ/4/√8 Cπ/4/√8 */ + a1 = add(mult_r(in[8], -8192), mult_r(in[0], 8192)); /* -Cπ/4/√8 Cπ/4/√8 */ + a2 = add(mult_r(in[4], 4433), mult_r(in[12], -10703)); /* Sπ/8/√8 -S3π/8/√8 */ + a3 = add(mult_r(in[12], 4433), mult_r(in[4], 10703)); /* C3π/8/√8 Cπ/8/√8 */ + a4 = add(b5, b4); + a5 = sub(b4, b5); + a6 = sub(b7, b6); + a7 = add(b6, b7); + a8 = b8; move16(); + a9 = add(mult_r(b9, -30274), mult_r(b14, 12540)); /* -Cπ/8 C3π/8 */ + a10 = add(mult_r(b10, -12540), mult_r(b13, -30274)); /* -Sπ/8 -S3π/8 */ + a11 = b11; move16(); + a12 = b12; move16(); + a13 = add(mult_r(b13, 12540), mult_r(b10, -30274)); /* C3π/8 -Cπ/8 */ + a14 = add(mult_r(b14, 30274), mult_r(b9, 12540)); /* S3π/8 Sπ/8 */ + a15 = b15; move16(); + + b0 = add(a3, a0); + b1 = add(a2, a1); + b2 = sub(a1, a2); + b3 = sub(a0, a3); + b4 = a4; move16(); + b5 = add(mult_r(a5, -23170), mult_r(a6, 23170)); /* -Cπ/4 Cπ/4 */ + b6 = add(mult_r(a6, 23170), mult_r(a5, 23170)); /* Cπ/4 Cπ/4 */ + b7 = a7; move16(); + b8 = add(a11, a8); + b9 = add(a10, a9); + b10 = sub(a9, a10); + b11 = sub(a8, a11); + b12 = sub(a15, a12); + b13 = sub(a14, a13); + b14 = add(a13, a14); + b15 = add(a12, a15); + + a0 = add(b7, b0); + a1 = add(b6, b1); + a2 = add(b5, b2); + a3 = add(b4, b3); + a4 = sub(b3, b4); + a5 = sub(b2, b5); + a6 = sub(b1, b6); + a7 = sub(b0, b7); + a10 = add(mult_r(b10, -23170), mult_r(b13, 23170)); /* -Cπ/4 Cπ/4 */ + a11 = add(mult_r(b11, -23170), mult_r(b12, 23170)); /* -Cπ/4 Cπ/4 */ + a12 = add(mult_r(b12, 23170), mult_r(b11, 23170)); /* Cπ/4 Cπ/4 */ + a13 = add(mult_r(b13, 23170), mult_r(b10, 23170)); /* Cπ/4 Cπ/4 */ + + out[0] = add(b15, a0); move16(); + out[1] = add(b14, a1); move16(); + out[2] = add(a13, a2); move16(); + out[3] = add(a12, a3); move16(); + out[4] = add(a11, a4); move16(); + out[5] = add(a10, a5); move16(); + out[6] = add(b9, a6); move16(); + out[7] = add(b8, a7); move16(); + out[8] = sub(a7, b8); move16(); + out[9] = sub(a6, b9); move16(); + out[10] = sub(a5, a10); move16(); + out[11] = sub(a4, a11); move16(); + out[12] = sub(a3, a12); move16(); + out[13] = sub(a2, a13); move16(); + out[14] = sub(a1, b14); move16(); + out[15] = sub(a0, b15); move16(); + + Dyn_Mem_Deluxe_Out(); +} + +void dct32_fx(const Word32 *in, Word32 *out) +{ + Dyn_Mem_Deluxe_In(Word32 a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15; + Word32 b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15;); + + a0 = L_add(in[15], in[0]); + a1 = L_add(in[14], in[1]); + a2 = L_add(in[13], in[2]); + a3 = L_add(in[12], in[3]); + a4 = L_add(in[11], in[4]); + a5 = L_add(in[10], in[5]); + a6 = L_add(in[9], in[6]); + a7 = L_add(in[8], in[7]); + a10 = L_sub(in[5], in[10]); + a11 = L_sub(in[4], in[11]); + a12 = L_sub(in[3], in[12]); + a13 = L_sub(in[2], in[13]); + + b0 = L_add(a7, a0); + b1 = L_add(a6, a1); + b2 = L_add(a5, a2); + b3 = L_add(a4, a3); + b4 = L_sub(a3, a4); +#ifdef CR9_C_FIX_DCT2_OVERFLOW + b5 = L_sub_sat(a2, a5); +#else + b5 = L_sub(a2, a5); +#endif +#ifdef CR9_C_FIX_DCT2_OVERFLOW + b6 = L_sub_sat(a1, a6); +#else + b6 = L_sub(a1, a6); +#endif + b7 = L_sub(a0, a7); + b8 = L_sub(in[7], in[8]); + b9 = L_sub(in[6], in[9]); + b10 = L_add(Mpy_32_16_lc3plus(a10, -23170), Mpy_32_16_lc3plus(a13, 23170)); /* -Cπ/4 Cπ/4 */ + b11 = L_add(Mpy_32_16_lc3plus(a11, -23170), Mpy_32_16_lc3plus(a12, 23170)); /* -Cπ/4 Cπ/4 */ + b12 = L_add(Mpy_32_16_lc3plus(a12, 23170), Mpy_32_16_lc3plus(a11, 23170)); /* Cπ/4 Cπ/4 */ + b13 = L_add(Mpy_32_16_lc3plus(a13, 23170), Mpy_32_16_lc3plus(a10, 23170)); /* Cπ/4 Cπ/4 */ + b14 = L_sub(in[1], in[14]); + b15 = L_sub(in[0], in[15]); + + a0 = L_add(b3, b0); + a1 = L_add(b2, b1); + a2 = L_sub(b1, b2); + a3 = L_sub_sat(b0, b3); + a4 = b4; + move16(); + a5 = L_add(Mpy_32_16_lc3plus(b5, -23170), Mpy_32_16_lc3plus(b6, 23170)); /* -Cπ/4 Cπ/4 */ + a6 = L_add(Mpy_32_16_lc3plus(b6, 23170), Mpy_32_16_lc3plus(b5, 23170)); /* Cπ/4 Cπ/4 */ + a7 = b7; + move16(); + a8 = L_add(b11, b8); + a9 = L_add(b10, b9); + a10 = L_sub(b9, b10); + a11 = L_sub(b8, b11); + a12 = L_sub(b15, b12); + a13 = L_sub(b14, b13); + a14 = L_add(b13, b14); + a15 = L_add(b12, b15); + + out[0] = L_add(Mpy_32_16_lc3plus(a0, 8192), Mpy_32_16_lc3plus(a1, 8192)); + move16(); /* Cπ/4/√8 Cπ/4/√8 */ + out[8] = L_add(Mpy_32_16_lc3plus(a1, -8192), Mpy_32_16_lc3plus(a0, 8192)); + move16(); /* -Cπ/4/√8 Cπ/4/√8 */ + out[4] = L_add(Mpy_32_16_lc3plus(a2, 4433), Mpy_32_16_lc3plus(a3, 10703)); + move16(); /* Sπ/8/√8 Cπ/8/√8 */ + out[12] = L_add(Mpy_32_16_lc3plus(a3, 4433), Mpy_32_16_lc3plus(a2, -10703)); + move16(); /* C3π/8/√8 -S3π/8/√8 */ + b4 = L_add(a5, a4); + b5 = L_sub(a4, a5); + b6 = L_sub_sat(a7, a6); + b7 = L_add(a6, a7); + b8 = a8; + move16(); + b9 = L_add(Mpy_32_16_lc3plus(a9, -30274), Mpy_32_16_lc3plus(a14, 12540)); /* -Cπ/8 Sπ/8 */ + b10 = L_add(Mpy_32_16_lc3plus(a10, -12540), Mpy_32_16_lc3plus(a13, -30274)); /* -Sπ/8 -Cπ/8 */ + b11 = a11; + move16(); + b12 = a12; + move16(); + b13 = L_add(Mpy_32_16_lc3plus(a13, 12540), Mpy_32_16_lc3plus(a10, -30274)); /* C3π/8 -S3π/8 */ + b14 = L_add(Mpy_32_16_lc3plus(a14, 30274), Mpy_32_16_lc3plus(a9, 12540)); /* S3π/8 C3π/8 */ + b15 = a15; + move16(); + + out[2] = L_add(Mpy_32_16_lc3plus(b4, 2260), Mpy_32_16_lc3plus(b7, 11363)); + move16(); /* Sπ/16/√8 Cπ/16/√8 */ + out[10] = L_add(Mpy_32_16_lc3plus(b5, 9633), Mpy_32_16_lc3plus(b6, 6436)); + move16(); /* S5π/16/√8 C5π/16/√8 */ + out[6] = L_add(Mpy_32_16_lc3plus(b6, 9633), Mpy_32_16_lc3plus(b5, -6436)); + move16(); /* C3π/16/√8 -S3π/16/√8 */ + out[14] = L_add(Mpy_32_16_lc3plus(b7, 2260), Mpy_32_16_lc3plus(b4, -11363)); + move16(); /* C7π/16/√8 -S7π/16/√8 */ + + a8 = L_add_sat(b9, b8); + a9 = L_sub_sat(b8, b9); + a10 = L_sub_sat(b11, b10); + a11 = L_add_sat(b10, b11); + a12 = L_add_sat(b13, b12); + a13 = L_sub_sat(b12, b13); + a14 = L_sub_sat(b15, b14); + a15 = L_add_sat(b14, b15); + + out[1] = L_add(Mpy_32_16_lc3plus(a8, 1136), Mpy_32_16_lc3plus(a15, 11529)); + move16(); /* Sπ/32/√8 Cπ/32/√8 */ + out[9] = L_add(Mpy_32_16_lc3plus(a9, 8956), Mpy_32_16_lc3plus(a14, 7350)); + move16(); /* S9π/32/√8 C9π/32/√8 */ + out[5] = L_add(Mpy_32_16_lc3plus(a10, 5461), Mpy_32_16_lc3plus(a13, 10217)); + move16(); /* S5π/32/√8 C5π/32/√8 */ + out[13] = L_add(Mpy_32_16_lc3plus(a11, 11086), Mpy_32_16_lc3plus(a12, 3363)); + move16(); /* S13π/32/√8 C13π/32/√8 */ + out[3] = L_add(Mpy_32_16_lc3plus(a12, 11086), Mpy_32_16_lc3plus(a11, -3363)); + move16(); /* C3π/32/√8 -S3π/32/√8 */ + out[11] = L_add(Mpy_32_16_lc3plus(a13, 5461), Mpy_32_16_lc3plus(a10, -10217)); + move16(); /* C11π/32/√8 -S11π/32/√8 */ + out[7] = L_add(Mpy_32_16_lc3plus(a14, 8956), Mpy_32_16_lc3plus(a9, -7350)); + move16(); /* C7π/32/√8 -S7π/32/√8 */ + out[15] = L_add(Mpy_32_16_lc3plus(a15, 1136), Mpy_32_16_lc3plus(a8, -11529)); + move16(); /* C15π/32/√8 -S15/32/√8 */ + + Dyn_Mem_Deluxe_Out(); +} + +void idct32_fx(const Word32 *in, Word32 *out) +{ + Dyn_Mem_Deluxe_In(Word32 a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15; + Word32 b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15;); + + a8 = L_add(Mpy_32_16_lc3plus(in[1], 1136), Mpy_32_16_lc3plus(in[15], -11529)); /* Sπ/32/√8 -S15π/32/√8 */ + a9 = L_add(Mpy_32_16_lc3plus(in[9], 8956), Mpy_32_16_lc3plus(in[7], -7350)); /* S9π/32/√8 -S7π/32/√8 */ + a10 = L_add(Mpy_32_16_lc3plus(in[5], 5461), Mpy_32_16_lc3plus(in[11], -10217)); /* S5π/32/√8 -S11π/32/√8 */ + a11 = L_add(Mpy_32_16_lc3plus(in[13], 11086), Mpy_32_16_lc3plus(in[3], -3363)); /* S13π/32/√8 -S3π/32/√8 */ + a12 = L_add(Mpy_32_16_lc3plus(in[3], 11086), Mpy_32_16_lc3plus(in[13], 3363)); /* C3π/32/√8 C13π/32/√8 */ + a13 = L_add(Mpy_32_16_lc3plus(in[11], 5461), Mpy_32_16_lc3plus(in[5], 10217)); /* C11π/32/√8 C5π/32/√8 */ + a14 = L_add(Mpy_32_16_lc3plus(in[7], 8956), Mpy_32_16_lc3plus(in[9], 7350)); /* C7π/32/√8 C9π/32/√8 */ + a15 = L_add(Mpy_32_16_lc3plus(in[15], 1136), Mpy_32_16_lc3plus(in[1], 11529)); /* C15π/32/√8 Cπ/32/√8 */ + + b4 = L_add(Mpy_32_16_lc3plus(in[2], 2260), Mpy_32_16_lc3plus(in[14], -11363)); /* Sπ/16/√8 -S7π/16/√8 */ + b5 = L_add(Mpy_32_16_lc3plus(in[10], 9633), Mpy_32_16_lc3plus(in[6], -6436)); /* S5π/16/√8 -S3π/16/√8 */ + b6 = L_add(Mpy_32_16_lc3plus(in[6], 9633), Mpy_32_16_lc3plus(in[10], 6436)); /* C3π/16/√8 C5π/16/√8 */ + b7 = L_add(Mpy_32_16_lc3plus(in[14], 2260), Mpy_32_16_lc3plus(in[2], 11363)); /* C7π/16/√8 Cπ/16/√8 */ + b8 = L_add(a9, a8); + b9 = L_sub(a8, a9); + b10 = L_sub(a11, a10); + b11 = L_add(a10, a11); + b12 = L_add(a13, a12); + b13 = L_sub(a12, a13); + b14 = L_sub(a15, a14); + b15 = L_add(a14, a15); + + a0 = L_add(Mpy_32_16_lc3plus(in[0], 8192), Mpy_32_16_lc3plus(in[8], 8192)); /* Cπ/4/√8 Cπ/4/√8 */ + a1 = L_add(Mpy_32_16_lc3plus(in[8], -8192), Mpy_32_16_lc3plus(in[0], 8192)); /* -Cπ/4/√8 Cπ/4/√8 */ + a2 = L_add(Mpy_32_16_lc3plus(in[4], 4433), Mpy_32_16_lc3plus(in[12], -10703)); /* Sπ/8/√8 -S3π/8/√8 */ + a3 = L_add(Mpy_32_16_lc3plus(in[12], 4433), Mpy_32_16_lc3plus(in[4], 10703)); /* C3π/8/√8 Cπ/8/√8 */ + a4 = L_add(b5, b4); + a5 = L_sub(b4, b5); + a6 = L_sub(b7, b6); + a7 = L_add(b6, b7); + a8 = b8; + move32(); + a9 = L_add(Mpy_32_16_lc3plus(b9, -30274), Mpy_32_16_lc3plus(b14, 12540)); /* -Cπ/8 C3π/8 */ + a10 = L_add(Mpy_32_16_lc3plus(b10, -12540), Mpy_32_16_lc3plus(b13, -30274)); /* -Sπ/8 -S3π/8 */ + a11 = b11; + move32(); + a12 = b12; + move32(); + a13 = L_add(Mpy_32_16_lc3plus(b13, 12540), Mpy_32_16_lc3plus(b10, -30274)); /* C3π/8 -Cπ/8 */ + a14 = L_add(Mpy_32_16_lc3plus(b14, 30274), Mpy_32_16_lc3plus(b9, 12540)); /* S3π/8 Sπ/8 */ + a15 = b15; + move32(); + + b0 = L_add(a3, a0); + b1 = L_add(a2, a1); + b2 = L_sub(a1, a2); + b3 = L_sub(a0, a3); + b4 = a4; + move32(); + b5 = L_add(Mpy_32_16_lc3plus(a5, -23170), Mpy_32_16_lc3plus(a6, 23170)); /* -Cπ/4 Cπ/4 */ + b6 = L_add(Mpy_32_16_lc3plus(a6, 23170), Mpy_32_16_lc3plus(a5, 23170)); /* Cπ/4 Cπ/4 */ + b7 = a7; + move32(); + b8 = L_add(a11, a8); + b9 = L_add(a10, a9); + b10 = L_sub(a9, a10); + b11 = L_sub(a8, a11); + b12 = L_sub(a15, a12); + b13 = L_sub(a14, a13); + b14 = L_add(a13, a14); + b15 = L_add(a12, a15); + + a0 = L_add(b7, b0); + a1 = L_add(b6, b1); + a2 = L_add(b5, b2); + a3 = L_add(b4, b3); + a4 = L_sub(b3, b4); + a5 = L_sub(b2, b5); + a6 = L_sub(b1, b6); + a7 = L_sub(b0, b7); + a10 = L_add(Mpy_32_16_lc3plus(b10, -23170), Mpy_32_16_lc3plus(b13, 23170)); /* -Cπ/4 Cπ/4 */ + a11 = L_add(Mpy_32_16_lc3plus(b11, -23170), Mpy_32_16_lc3plus(b12, 23170)); /* -Cπ/4 Cπ/4 */ + a12 = L_add(Mpy_32_16_lc3plus(b12, 23170), Mpy_32_16_lc3plus(b11, 23170)); /* Cπ/4 Cπ/4 */ + a13 = L_add(Mpy_32_16_lc3plus(b13, 23170), Mpy_32_16_lc3plus(b10, 23170)); /* Cπ/4 Cπ/4 */ + + out[0] = L_add(b15, a0); + move32(); + out[1] = L_add(b14, a1); + move32(); + out[2] = L_add(a13, a2); + move32(); + out[3] = L_add(a12, a3); + move32(); + out[4] = L_add(a11, a4); + move32(); + out[5] = L_add(a10, a5); + move32(); + out[6] = L_add(b9, a6); + move32(); + out[7] = L_add(b8, a7); + move32(); + out[8] = L_sub(a7, b8); + move32(); + out[9] = L_sub(a6, b9); + move32(); + out[10] = L_sub(a5, a10); + move32(); + out[11] = L_sub(a4, a11); + move32(); + out[12] = L_sub(a3, a12); + move32(); + out[13] = L_sub(a2, a13); + move32(); + out[14] = L_sub(a1, b14); + move32(); + out[15] = L_sub(a0, b15); + move32(); + + Dyn_Mem_Deluxe_Out(); +} + +void idct32_32_fx(const Word32 *in, Word32 *out) +{ + Dyn_Mem_Deluxe_In(Word32 a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15; + Word32 b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15;); + + /*round(sin(pi*(1:16)/32)/sqrt(8)*2^31) = + 74419526 148122351 220398677 290552444 357908031 421816769 481663180 536870912 + 586908283 631293407 669598830 701455651 726557070 744661347 755594128 759250125 + */ + /*ound(cos(pi*(1:16)/32)/sqrt(8)*2^31) = + 755594128 744661347 726557070 701455651 669598830 631293407 586908283 536870912 + 481663180 421816769 357908031 290552444 220398677 148122351 74419526 0 + */ + + a8 = L_add(Mpy_32_32_lc3plus(in[1], 74419526), Mpy_32_32_lc3plus(in[15], -755594128)); /* Sπ/32/√8 -S15π/32/√8 */ + a9 = L_add(Mpy_32_32_lc3plus(in[9], 586908283), Mpy_32_32_lc3plus(in[7], -481663180)); /* S9π/32/√8 -S7π/32/√8 */ + a10 = L_add(Mpy_32_32_lc3plus(in[5], 357908031), Mpy_32_32_lc3plus(in[11], -669598830)); /* S5π/32/√8 -S11π/32/√8 */ + a11 = L_add(Mpy_32_32_lc3plus(in[13], 726557070), Mpy_32_32_lc3plus(in[3], -220398677)); /* S13π/32/√8 -S3π/32/√8 */ + + a12 = L_add(Mpy_32_32_lc3plus(in[3], 726557070), Mpy_32_32_lc3plus(in[13], 220398677)); /* C3π/32/√8 C13π/32/√8 */ + a13 = L_add(Mpy_32_32_lc3plus(in[11], 357908031), Mpy_32_32_lc3plus(in[5], 669598830)); /* C11π/32/√8 C5π/32/√8 */ + a14 = L_add(Mpy_32_32_lc3plus(in[7], 586908283), Mpy_32_32_lc3plus(in[9], 481663180)); /* C7π/32/√8 C9π/32/√8 */ + a15 = L_add(Mpy_32_32_lc3plus(in[15], 74419526), Mpy_32_32_lc3plus(in[1], 755594128)); /* C15π/32/√8 Cπ/32/√8 */ + + b4 = L_add(Mpy_32_32_lc3plus(in[2], 148122351), Mpy_32_32_lc3plus(in[14], -744661347)); /* Sπ/16/√8 -S7π/16/√8 */ + b5 = L_add(Mpy_32_32_lc3plus(in[10], 631293407), Mpy_32_32_lc3plus(in[6], -421816769)); /* S5π/16/√8 -S3π/16/√8 */ + b6 = L_add(Mpy_32_32_lc3plus(in[6], 631293407), Mpy_32_32_lc3plus(in[10], 421816769)); /* C3π/16/√8 C5π/16/√8 */ + b7 = L_add(Mpy_32_32_lc3plus(in[14], 148122351), Mpy_32_32_lc3plus(in[2], 744661347)); /* C7π/16/√8 Cπ/16/√8 */ + b8 = L_add(a9, a8); + b9 = L_sub(a8, a9); + b10 = L_sub(a11, a10); + b11 = L_add(a10, a11); + b12 = L_add(a13, a12); + b13 = L_sub(a12, a13); + b14 = L_sub(a15, a14); + b15 = L_add(a14, a15); + + a0 = L_add(Mpy_32_32_lc3plus(in[0], 536870912), Mpy_32_32_lc3plus(in[8], 536870912)); /* Cπ/4/√8 Cπ/4/√8 */ + a1 = L_add(Mpy_32_32_lc3plus(in[8], -536870912), Mpy_32_32_lc3plus(in[0], 536870912)); /* -Cπ/4/√8 Cπ/4/√8 */ + a2 = L_add(Mpy_32_32_lc3plus(in[4], 290552444), Mpy_32_32_lc3plus(in[12], -701455651)); /* Sπ/8/√8 -S3π/8/√8 */ + a3 = L_add(Mpy_32_32_lc3plus(in[12], 290552444), Mpy_32_32_lc3plus(in[4], 701455651)); /* C3π/8/√8 Cπ/8/√8 */ + a4 = L_add(b5, b4); + a5 = L_sub(b4, b5); + a6 = L_sub(b7, b6); + a7 = L_add(b6, b7); + a8 = b8; + move32(); + a9 = L_add(Mpy_32_32_lc3plus(b9, -1984016189), Mpy_32_32_lc3plus(b14, 821806413)); /* -Cπ/8 C3π/8 */ + a10 = L_add(Mpy_32_32_lc3plus(b10, -821806413), Mpy_32_32_lc3plus(b13, -1984016189)); /* -Sπ/8 -S3π/8 */ + a11 = b11; + move32(); + a12 = b12; + move32(); + a13 = L_add(Mpy_32_32_lc3plus(b13, 821806413), Mpy_32_32_lc3plus(b10, -1984016189)); /* C3π/8 -Cπ/8 */ + a14 = L_add(Mpy_32_32_lc3plus(b14, 1984016189), Mpy_32_32_lc3plus(b9, 821806413)); /* S3π/8 Sπ/8 */ + a15 = b15; + move32(); + + b0 = L_add(a3, a0); + b1 = L_add(a2, a1); + b2 = L_sub(a1, a2); + b3 = L_sub(a0, a3); + b4 = a4; + move32(); + b5 = L_add(Mpy_32_32_lc3plus(a5, -1518500250), Mpy_32_32_lc3plus(a6, 1518500250)); /* -Cπ/4 Cπ/4 */ + b6 = L_add(Mpy_32_32_lc3plus(a6, 1518500250), Mpy_32_32_lc3plus(a5, 1518500250)); /* Cπ/4 Cπ/4 */ + b7 = a7; + move32(); + b8 = L_add(a11, a8); + b9 = L_add(a10, a9); + b10 = L_sub(a9, a10); + b11 = L_sub(a8, a11); + b12 = L_sub(a15, a12); + b13 = L_sub(a14, a13); + b14 = L_add(a13, a14); + b15 = L_add(a12, a15); + + a0 = L_add(b7, b0); + a1 = L_add(b6, b1); + a2 = L_add(b5, b2); + a3 = L_add(b4, b3); + a4 = L_sub(b3, b4); + a5 = L_sub(b2, b5); + a6 = L_sub(b1, b6); + a7 = L_sub(b0, b7); + a10 = L_add(Mpy_32_32_lc3plus(b10, -1518500250), Mpy_32_32_lc3plus(b13, 1518500250)); /* -Cπ/4 Cπ/4 */ + a11 = L_add(Mpy_32_32_lc3plus(b11, -1518500250), Mpy_32_32_lc3plus(b12, 1518500250)); /* -Cπ/4 Cπ/4 */ + a12 = L_add(Mpy_32_32_lc3plus(b12, 1518500250), Mpy_32_32_lc3plus(b11, 1518500250)); /* Cπ/4 Cπ/4 */ + a13 = L_add(Mpy_32_32_lc3plus(b13, 1518500250), Mpy_32_32_lc3plus(b10, 1518500250)); /* Cπ/4 Cπ/4 */ + + out[0] = L_add(b15, a0); + move32(); + out[1] = L_add(b14, a1); + move32(); + out[2] = L_add(a13, a2); + move32(); + out[3] = L_add(a12, a3); + move32(); + out[4] = L_add(a11, a4); + move32(); + out[5] = L_add(a10, a5); + move32(); + out[6] = L_add(b9, a6); + move32(); + out[7] = L_add(b8, a7); + move32(); + out[8] = L_sub(a7, b8); + move32(); + out[9] = L_sub(a6, b9); + move32(); + out[10] = L_sub(a5, a10); + move32(); + out[11] = L_sub(a4, a11); + move32(); + out[12] = L_sub(a3, a12); + move32(); + out[13] = L_sub(a2, a13); + move32(); + out[14] = L_sub(a1, b14); + move32(); + out[15] = L_sub(a0, b15); + move32(); + + Dyn_Mem_Deluxe_Out(); +} diff --git a/lib_lc3plus/dct4_fx.c b/lib_lc3plus/dct4_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..dca4e382cf1d540fc6736a08d71955091f8411a6 --- /dev/null +++ b/lib_lc3plus/dct4_fx.c @@ -0,0 +1,228 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" +#include "rom_basop_util_lc3plus.h" + + +void dct_IV(Word32 *pDat, /* i/o: pointer to data buffer */ + Word16 *pDat_e, /* i/o: pointer to data exponent */ + Word16 L, /* i : length of block */ +#ifdef CR8_F_ADAPT_MDCT_DCT_PRECISION +# ifdef ENABLE_HR_MODE + Word16 hrmode, /* indicate high precision usage */ +# endif +#endif /* CR8_F_ADAPT_MDCT_DCT_PRECISION */ + Word32 *workBuffer) /* : size of L */ + +{ + Word16 sin_step; + Word16 idx; + Word16 M_var; + Word16 M2; + + Word32 *pDat_0; + Word32 *pDat_1; + + Word32 accu1; + Word32 accu2; + Word32 accu3; + Word32 accu4; + + Word32 i; + +#ifdef ENABLE_HR_MODE + const PWord32 *twiddle; + const PWord32 *sin_twiddle; +#else + const PWord16 *twiddle; + const PWord16 *sin_twiddle; +#endif + +#ifdef ENABLE_DCTIV_RESCALE + Word16 scale; +#endif + +#ifdef DYNMEM_COUNT +#ifdef ENABLE_HR_MODE + Dyn_Mem_In("dct_IV", sizeof(struct { + Word16 sin_step; + Word16 idx; + Counter i; + Word16 M_var; + Word16 M2; + + Word32 *pDat_0; + Word32 *pDat_1; + + Word32 accu1; + Word32 accu2; + Word32 accu3; + Word32 accu4; + + const PWord32 *twiddle; + const PWord32 *sin_twiddle; + })); + +#else + Dyn_Mem_In("dct_IV", sizeof(struct { + Word16 sin_step; + Word16 idx; + Counter i; + Word16 M_var; + Word16 M2; + + Word32 *pDat_0; + Word32 *pDat_1; + + Word32 accu1; + Word32 accu2; + Word32 accu3; + Word32 accu4; + + const PWord16 *twiddle; + const PWord16 *sin_twiddle; + })); +#endif /* ENABLE_HR_MODE */ +#endif /* DYNMEM_COUNT */ + + M_var = shr_pos_pos(L, 1); + M2 = sub(M_var, 1); + + BASOP_getTables(&twiddle, &sin_twiddle, &sin_step, L); + + pDat_0 = &pDat[0]; + pDat_1 = &pDat[L - 2]; + + FOR (i = 0; i < M2; i += 2) + { +#ifdef ENABLE_HR_MODE +# ifdef CR8_F_ADAPT_MDCT_DCT_PRECISION + if (hrmode) { + cplxMpy32_32_32_2(accu1, accu2, pDat_1[1], pDat_0[0], twiddle[i].v.re, twiddle[i].v.im); + cplxMpy32_32_32_2(accu3, accu4, pDat_1[0], pDat_0[1], twiddle[i + 1].v.re, twiddle[i + 1].v.im); + } else { + cplxMpy32_32_16_2(accu1, accu2, pDat_1[1], pDat_0[0], round_fx_sat(twiddle[i].v.re), round_fx_sat(twiddle[i].v.im)); + cplxMpy32_32_16_2(accu3, accu4, pDat_1[0], pDat_0[1], round_fx_sat(twiddle[i + 1].v.re), round_fx_sat(twiddle[i + 1].v.im)); + } +# else /* CR8_F_ADAPT_MDCT_DCT_PRECISION */ + cplxMpy32_32_32_2(accu1, accu2, pDat_1[1], pDat_0[0], twiddle[i].v.re, twiddle[i].v.im); + cplxMpy32_32_32_2(accu3, accu4, pDat_1[0], pDat_0[1], twiddle[i + 1].v.re, twiddle[i + 1].v.im); +# endif /* CR8_F_ADAPT_MDCT_DCT_PRECISION */ + +#else + cplxMpy32_32_16_2(accu1, accu2, pDat_1[1], pDat_0[0], twiddle[i].v.re, twiddle[i].v.im); + cplxMpy32_32_16_2(accu3, accu4, pDat_1[0], pDat_0[1], twiddle[i + 1].v.re, twiddle[i + 1].v.im); +#endif + + pDat_0[0] = accu2; move32(); + pDat_0[1] = accu1; move32(); + pDat_1[0] = accu4; move32(); + pDat_1[1] = L_negate(accu3); move32(); + + pDat_0 = pDat_0 + 2; + pDat_1 = pDat_1 - 2; + } + +#ifdef ENABLE_DCTIV_RESCALE +# ifdef CR8_F_ADAPT_MDCT_DCT_PRECISION + if (hrmode) +# endif /* CR8_F_ADAPT_MDCT_DCT_PRECISION */ + { + + scale = s_max(getScaleFactor32_lc3plus(pDat, L), 0); move16(); + + FOR (i = 0; i < L; i++) + { + pDat[i] = L_shl_pos(pDat[i], scale); move32(); + } + + *pDat_e = sub(*pDat_e, scale); move16(); + } +#endif + + BASOP_cfft_lc3plus(&pDat[0], &pDat[1], M_var, 2, pDat_e, workBuffer); + + pDat_0 = &pDat[0]; + pDat_1 = &pDat[L - 2]; + + idx = sin_step; + M2 = sub(shr_pos_pos(add(M_var, 1), 1), 1); + + /* Sin and Cos values are 0.0f and 1.0f */ +#ifdef ENABLE_HR_MODE + cplxMpy32_32_32_2(accu3, accu4, pDat_1[0], pDat_1[1], sin_twiddle[idx].v.re, sin_twiddle[idx].v.im); +#else + cplxMpy32_32_16_2(accu3, accu4, pDat_1[0], pDat_1[1], sin_twiddle[idx].v.re, sin_twiddle[idx].v.im); +#endif + + pDat_1[1] = L_negate(L_shr_pos(pDat_0[1], 1)); move32(); + pDat_0[0] = L_shr_pos(pDat_0[0], 1); move32(); + + FOR (i = 1; i < M2; i++) + { + pDat_0[1] = accu3; move32(); + pDat_1[0] = accu4; move32(); + + pDat_0 = pDat_0 + 2; + pDat_1 = pDat_1 - 2; + +#ifdef ENABLE_HR_MODE + cplxMpy32_32_32_2(accu1, accu2, pDat_0[1], pDat_0[0], sin_twiddle[idx].v.re, sin_twiddle[idx].v.im); +#else + cplxMpy32_32_16_2(accu1, accu2, pDat_0[1], pDat_0[0], sin_twiddle[idx].v.re, sin_twiddle[idx].v.im); +#endif + + idx += sin_step; + +#ifdef ENABLE_HR_MODE + cplxMpy32_32_32_2(accu3, accu4, pDat_1[0], pDat_1[1], sin_twiddle[idx].v.re, sin_twiddle[idx].v.im); +#else + cplxMpy32_32_16_2(accu3, accu4, pDat_1[0], pDat_1[1], sin_twiddle[idx].v.re, sin_twiddle[idx].v.im); +#endif + + pDat_1[1] = L_negate(accu1); move32(); + pDat_0[0] = accu2; move32(); + } + + pDat_0[1] = accu3; move32(); + pDat_1[0] = accu4; move32(); + + pDat_0 = pDat_0 + 2; + pDat_1 = pDat_1 - 2; + +#ifdef ENABLE_HR_MODE + cplxMpy32_32_32_2(accu3, accu4, pDat_0[1], pDat_0[0], sin_twiddle[idx].v.re, sin_twiddle[idx].v.im); +#else + cplxMpy32_32_16_2(accu3, accu4, pDat_0[1], pDat_0[0], sin_twiddle[idx].v.re, sin_twiddle[idx].v.im); +#endif + +/* Last Sin and Cos value pair are the same */ +#ifdef ENABLE_HR_MODE + accu1 = L_shr_pos(Mpy_32_32_lc3plus(pDat_1[0], TWIDDLE), 1); + accu2 = L_shr_pos(Mpy_32_32_lc3plus(pDat_1[1], TWIDDLE), 1); +#else + accu1 = L_shr_pos(Mpy_32_16_lc3plus(pDat_1[0], TWIDDLE), 1); + accu2 = L_shr_pos(Mpy_32_16_lc3plus(pDat_1[1], TWIDDLE), 1); +#endif + + pDat_1[0] = L_add(accu1, accu2); move32(); + pDat_0[1] = L_sub(accu1, accu2); move32(); + + pDat_1[1] = L_negate(accu3); move32(); + pDat_0[0] = accu4; move32(); + + /* twiddeling scale is 2 */ + *pDat_e = add(*pDat_e, 2); move16(); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + diff --git a/lib_lc3plus/dec_entropy.c b/lib_lc3plus/dec_entropy.c new file mode 100644 index 0000000000000000000000000000000000000000..572438615fd43ca3d3a9a3ce1c4eb4966cf6acc0 --- /dev/null +++ b/lib_lc3plus/dec_entropy.c @@ -0,0 +1,387 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +static Word16 read_indice(UWord8 *ptr, Word16 *bp, Word16 *mask, Word16 numbits); + +static Word16 ac_dec_split_st2VQ_CW( /* local BER flag */ + const Word32 L_cwRx, /* max 25 bits */ + const Word32 L_szA, const Word32 L_szB, Word32 *L_cwA, Word32 *L_cwB, + Word16 *submodeLSB); + +void processDecoderEntropy_fx(UWord8 *bytes, Word16 *bp_side, Word16 *mask_side, Word16 nbbits, + Word16 L_spec, Word16 fs_idx, Word16 BW_cutoff_bits, Word16 *tns_numfilters, + Word16 *lsbMode, Word16 *lastnz, Word16 *bfi, Word16 *tns_order, Word16 *fac_ns_idx, + Word16 *gg_idx, Word16 *BW_cutoff_idx, Word16 *ltpf_idx, Word32 *L_scf_idx, + Word16 frame_dms) +{ + Dyn_Mem_Deluxe_In( + Word16 L, submodeLSB; + Word32 tmp32, tmp32lim; + Word16 gain_e, gain, submodeMSB, BER_detect; + Word32 n; + UWord8 *ptr; + ); + + ptr = bytes; + *bp_side = shr_pos(sub(nbbits, 1), 3); + *mask_side = shl(1, sub(8, sub(nbbits, shl_pos(*bp_side, 3)))); + + /* Cutoff-detection */ + IF (BW_cutoff_bits > 0) + { + *BW_cutoff_idx = read_indice(ptr, bp_side, mask_side, BW_cutoff_bits); + /* check for bitflips */ + IF (sub(fs_idx, *BW_cutoff_idx) < 0) + { + *BW_cutoff_idx = fs_idx; + *bfi = 1; move16(); + Dyn_Mem_Deluxe_Out(); + return; + } + } + ELSE + { + *BW_cutoff_idx = fs_idx; + } + + /* Number of TNS filters */ + IF (sub(*BW_cutoff_idx, 3) >= 0 && frame_dms >= 50) + { + *tns_numfilters = 2; move16(); + } + ELSE + { + *tns_numfilters = 1; move16(); + } + + /* Decode number of ntuples */ + L = sub(14, norm_s(negate(L_spec))); + n = read_indice(ptr, bp_side, mask_side, L); + n = add(n, 1); + *lastnz = shl_pos(n, 1); + IF (sub(*lastnz, L_spec) > 0) + { + *bfi = 1; move16(); + Dyn_Mem_Deluxe_Out(); + return; + } + + /* Mode bit */ + *lsbMode = read_bit(ptr, bp_side, mask_side); + + /* Decode global-gain */ + *gg_idx = read_indice(ptr, bp_side, mask_side, 8); move16(); + tmp32 = L_shl_pos(L_mult0(*gg_idx, 0x797D), 7); /* 6Q25; 0x797D -> log2(10)/28 (Q18) */ + gain_e = add(extract_l(L_shr_pos(tmp32, 25)), 1); /* get exponent */ + gain = round_fx(BASOP_Util_InvLog2_lc3plus(L_or(tmp32, 0xFE000000))); + assert(gain >= 0); /* JSv, check if shr_pos(gain,1) is more appropriate) */ + gain = shr_r(gain, 1); + gain_e = add(gain_e, 1); + + /* Decode TNS on/off flag */ + tns_order[1] = 0; move16(); /* fix problem with uninitialized memory */ + FOR (n = 0; n < *tns_numfilters; n++) + { + tns_order[n] = read_bit(ptr, bp_side, mask_side); move16(); + } + + /* LTPF on/off */ +#ifdef ENABLE_HR_MODE + ltpf_idx[0] = read_bit(ptr, bp_side, mask_side); move16(); +#else + ltpf_idx[0] = read_indice(ptr, bp_side, mask_side, 1); move16(); +#endif + + /* Decode SNS VQ parameters - 1st stage (10 bits) */ +#ifdef ENABLE_HR_MODE + L = read_indice(ptr, bp_side, mask_side, 5 + 5); + L_scf_idx[0] = L_deposit_l(s_and(L, 0x1F)); /* stage1 LF 5 bits */ + L_scf_idx[1] = L_deposit_l(shr_pos(L, 5)); /* stage1 HF 5 bits */ +#else + L_scf_idx[0] = L_deposit_l(read_indice(ptr, bp_side, mask_side, 5)); /* stage1 LF 5 bits */ + L_scf_idx[1] = L_deposit_l(read_indice(ptr, bp_side, mask_side, 5)); /* stage1 HF 5 bits */ +#endif + + /* Decode SNS VQ parameters - 2nd stage side-info (3-4 bits) */ + submodeMSB = read_bit(ptr, bp_side, mask_side); /* submodeMSB 1 bit */ + L_scf_idx[2] = L_deposit_l(shl_pos(submodeMSB, 1)); + ASSERT(sns_gainMSBbits[L_scf_idx[2]] > 0); + L_scf_idx[3] = L_deposit_l( + read_indice(ptr, bp_side, mask_side, sns_gainMSBbits[L_scf_idx[2]])); /* gains or gain MSBs 1-2 bits */ + L_scf_idx[4] = read_bit(ptr, bp_side, mask_side); /* shape LS 1 bit */ + + /* Decode SNS VQ parameters - 2nd stage data (24-25 bits) */ + IF (submodeMSB == 0) + { /* shape_j = 0, or 1 */ + /* regular mode A,B indexes integer multiplexed, total 24.x bits MPVQ codeword section A and codeword for + * section B */ + /* regular mode mode shape index total 24.9999 bits MPVQ codeword */ + tmp32 = L_deposit_l(read_indice(ptr, bp_side, mask_side, 13)); + tmp32 = L_or(tmp32, L_shl_pos(read_indice(ptr, bp_side, mask_side, 12), 13)); move16(); /*for ber state */ + BER_detect = + ac_dec_split_st2VQ_CW( /* local BER flag */ + tmp32, /* L_cwRx max 25 bits */ + sns_MPVQ_Sz[0][0], UL_addNsD(sns_MPVQ_Sz[0][1], sns_MPVQ_Sz[1][1]), /* 12+2 = 14 */ + (&L_scf_idx[5]), /* shape A */ + (&L_scf_idx[6]), /* shape B or gain LSB */ + &submodeLSB /* total submode update below */ + ); + IF (submodeLSB != 0) + { /* add gainLSB bit */ + L_scf_idx[3] = L_add(L_shl_pos(L_scf_idx[3], 1), L_scf_idx[6]); + L_scf_idx[6] = -2L; + } + } + ELSE + { /* shape_j = 2 or 3 */ + ASSERT(submodeMSB == 1); + /* outlier mode shape index total 23.8536 + 19.5637 (19.5637 < (log2(2.^24 -2.^23.8537)) bits MPVQ + * codeword */ + tmp32 = L_deposit_l(read_indice(ptr, bp_side, mask_side, 12)); + tmp32 = L_or(tmp32, L_shl_pos(read_indice(ptr, bp_side, mask_side, 12), 12)); + L_scf_idx[5] = tmp32; move32(); /*shape outl_near or outl_far */ + submodeLSB = 0; move16(); + BER_detect = 0; move16(); + tmp32lim = L_add(sns_MPVQ_Sz[2][0], L_shl_pos(sns_MPVQ_Sz[3][0], 1)); + IF (L_sub(tmp32, tmp32lim) >= 0) + { + BER_detect = 1; move16(); + } + ELSE + { + tmp32 = L_sub(tmp32, sns_MPVQ_Sz[2][0]); /* a potential high index is computed */ + IF (tmp32 >= 0) + { + submodeLSB = 1; move16(); + ASSERT(tmp32 >= 0 && tmp32 < (Word32)(2 * sns_MPVQ_Sz[3][0])); + L_scf_idx[3] = L_add(L_shl_pos(L_scf_idx[3], 1), L_and(tmp32, 0x1)); /* add LSB_gain bit to gain MSBs */ + L_scf_idx[5] = L_shr_pos(tmp32, 1); /* MPVQ index with offset and gainLSB removed */ + L_scf_idx[6] = -2L; move32(); + } + ELSE + { + L_scf_idx[6] = -1L; move32(); + } + } + } + L_scf_idx[2] = + L_add(L_scf_idx[2], L_deposit_l(submodeLSB)); /* decoder internal signal shape_j = submode 0..3 to VQ */ + + IF (BER_detect > 0) + { + *bfi = 1; move16(); + Dyn_Mem_Deluxe_Out(); + return; + } + + /* LTPF data */ + IF (ltpf_idx[0] != 0) + { +#ifdef ENABLE_HR_MODE + L = read_indice(ptr, bp_side, mask_side, 1+9); move16(); + ltpf_idx[1] = s_and(L, 1); move16(); + ltpf_idx[2] = shr_pos(L, 1); move16(); +#else + ltpf_idx[1] = read_indice(ptr, bp_side, mask_side, 1); move16(); + ltpf_idx[2] = read_indice(ptr, bp_side, mask_side, 9); move16(); + +#endif + } + ELSE + { + ltpf_idx[1] = 0; move16(); + ltpf_idx[2] = 0; move16(); + } + + /* Decode noise-fac */ + *fac_ns_idx = read_indice(ptr, bp_side, mask_side, 3); move16(); + + Dyn_Mem_Deluxe_Out(); +} + +#ifdef ENABLE_PADDING +int paddingDec_fx(UWord8 *bytes, Word16 nbbits, Word16 L_spec, Word16 BW_cutoff_bits, Word16 ep_enabled, + Word16 *total_padding, Word16 *np_zero) +{ + Word16 lastnz_threshold; + Word16 padding_len_bits, padding_len; + + Word16 bp_side; + Word16 nbbytes = shr(nbbits,3); + + Word16 mask_side; + UWord8 *ptr = bytes; + + Word16 lastnz; + Word16 nbits = sub(14, norm_s(negate(L_spec))); + if (sub(nbbits, nbits) < 0) + { + return 1; + } + *np_zero = 0; + + *total_padding = 0; + + bp_side = shr_pos(sub(nbbits, 1), 3); + mask_side = shl(1, sub(8, sub(nbbits, shl_pos(bp_side, 3)))); + + test(); + IF (sub(bp_side, 19) < 0 || sub(bp_side, LC3PLUS_MAX_BYTES ) >= 0) { + return 1; + } + + ptr = bytes; + + IF (BW_cutoff_bits > 0) + { + read_indice(ptr, &bp_side, &mask_side, BW_cutoff_bits); + move16(); + } + + lastnz = read_indice(ptr, &bp_side, &mask_side, nbits); + move16(); + + lastnz_threshold = sub(shl(1, nbits), 2); + + WHILE (lastnz == lastnz_threshold) + { + padding_len_bits = sub(sub(12, nbits), BW_cutoff_bits); + + /*Read padding length*/ + padding_len = read_indice(ptr, &bp_side, &mask_side, padding_len_bits); + move16(); + + /* Read 4 reserved bits */ + read_indice(ptr, &bp_side, &mask_side, 4); + move16(); + + IF (ep_enabled == 0) + { + /* Discard padding length bytes */ + bp_side = sub(bp_side, padding_len); + *total_padding = add(add(*total_padding, padding_len), 2); move16(); + } + ELSE + { + *total_padding = add(*total_padding, 2); move16(); + *np_zero = add(*np_zero, padding_len); move16(); + } + + /* test if we have less than 20 bytes left; if so frame is broken */ + IF (sub(sub(nbbytes,add(*total_padding,*np_zero)),20) < 0) { + return 1; + } + + /* Read bandwidth bits */ + IF (BW_cutoff_bits > 0) + { + read_indice(ptr, &bp_side, &mask_side, BW_cutoff_bits); + move16(); + } + + lastnz = read_indice(ptr, &bp_side, &mask_side, nbits); + move16(); + } + + IF (ep_enabled != 0) + { + *total_padding = add(*total_padding, *np_zero); move16(); + } + return 0; +} +#endif + +static __forceinline Word16 read_indice(UWord8 *ptr, Word16 *bp, Word16 *mask, Word16 numbits) +{ + Dyn_Mem_Deluxe_In( + Word16 indice, bit; + Counter i; + ); + + indice = read_bit(ptr, bp, mask); + + FOR (i = 1; i < numbits; i++) + { + bit = read_bit(ptr, bp, mask); + indice = add(indice, lshl_pos(bit, i)); + } + + Dyn_Mem_Deluxe_Out(); + return indice; +} + +static __forceinline Word16 ac_dec_split_st2VQ_CW( /* local BER flag */ + const Word32 L_cwRx, /* max 25 bits */ + const Word32 L_szA, const Word32 L_szB, Word32 *L_cwA, Word32 *L_cwB, + Word16 *submodeLSB) +{ + /* demultiplex: L_cwRx = L_cwB(21.z bits) * L_szA(3.y bits) + L_cwA(21.x bits)); */ + Word16 start, fin, ind; + Word32 L_tmp, L_max_size; + Counter i; + + L_max_size = (Word32)UL_Mpy_32_32((UWord32)L_szB, (UWord32)L_szA); /* may be tabled */ + + /* section B ind larger than 13 out of the possible 14 = 0..13 */ + IF (L_sub(L_cwRx, L_max_size) >= 0) + { + *L_cwA = L_deposit_l(0); + *L_cwB = L_deposit_l(0); + *submodeLSB = 0; move16(); + return (Word16)1; /* set berFlag and exit */ + } + + /*initial binary split of cw, select top or low half */ + start = 0; move16(); + + ASSERT((L_szB & 0x1L) == 0); /* this middle split only works if L_szB is even */ + if (L_sub(L_cwRx, L_shr_pos(L_max_size, 1)) >= 0) + { + start = L_shr_pos(L_szB, 1); /* top half start index */ + } + + /*linear loop over a low or a high section */ + ind = start; move16(); + L_tmp = L_negate(L_cwRx); /* search from negative side */ + + L_tmp = L_add(L_tmp, (Word32)UL_Mpy_32_32(UL_deposit_l((UWord16)start), (UWord32)L_szA)); + /* start is 0 or 7 */ /*non-fractional mult is (int)start * L_szA */ + + /* a short linear run over ceil(szB/2) = 7 values */ + + fin = add(start, shr_pos(L_szB, 1)); + FOR (i = start; i < fin; i++) + { + ind = add(ind, 1); + L_tmp = L_add(L_tmp, L_szA); + if (L_tmp > 0) + { + ind = sub(ind, 1); /* passed criteria point, keep index */ + } + } + + *L_cwB = L_deposit_l(ind); + *L_cwA = L_sub(L_cwRx, (Word32)UL_Mpy_32_32(UL_deposit_l((UWord16)ind), + (UWord32)L_szA)); /* non-fractional mult; (int)ind * L_szA */ + + ASSERT(*L_cwA >= 0 && *L_cwA < L_szA); + ASSERT(*L_cwB >= 0 && *L_cwB < L_szB); + + *submodeLSB = 0; + *L_cwB = L_sub(*L_cwB, 2); + if (*L_cwB < 0) + { + *submodeLSB = 1; move16(); + } + *L_cwB = L_mac0(*L_cwB, 2, *submodeLSB); /* add back gain ind if needed */ + + return 0; /* no BER */ +} diff --git a/lib_lc3plus/dec_lc3.c b/lib_lc3plus/dec_lc3.c new file mode 100644 index 0000000000000000000000000000000000000000..1b23927c6d3fa5419b1f1e8d9814cb9a936cdf4a --- /dev/null +++ b/lib_lc3plus/dec_lc3.c @@ -0,0 +1,788 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +static int Dec_LC3PLUS_Channel(LC3PLUS_Dec *decoder, int channel, int bits_per_sample, UWord8 *bs_in, void *s_out, Word16 bfi, + Word8 *scratchBuffer) +{ + Word16 scale; + Word32 offset; + Word16 fill_bits; + Word16 nf_seed, gg_idx, fac_ns_idx, q_fx_exp = 0; + Word16 bp_side, mask_side; + Word16 tns_numfilters, lsbMode, lastnz, BW_cutoff_idx, BW_cutoff_idx_nf; + Word16 zero_frame = 0; +#ifdef ENABLE_RFRAME + Word16 rframe = 0; +#endif + Word16 ltpf_idx[3]; + Word16 spec_inv_idx = 0; + Counter i; + + /* Buffers */ + Word16 *int_scf_fx_exp, tns_order[TNS_NUMFILTERS_MAX]; + UWord8 *resBitBuf; +#ifdef ENABLE_HR_MODE + Word32 *sqQdec; +#else + Word16 * sqQdec; + Word16 * int_scf_fx; +#endif + Word16 * x_fx, *indexes; + Word16 scf_q[M]; + Word32 * L_scf_idx; + Word32 * q_d_fx; + Word8 * currentScratch; + DecSetup *h_DecSetup = decoder->channel_setup[channel]; +#ifdef ENABLE_HR_MODE + Word32 *x_fx_ip; + Word32 *int_scf_fx_ip; + Word32 scf_q_ip[M]; +#endif + +#ifdef DYNMEM_COUNT + struct _dynmem + { + Counter i; + Word16 scale; + Word32 offset; + Word16 fill_bits; + Word16 nf_seed, gg_idx, fac_ns_idx, q_fx_exp; + Word16 bp_side, mask_side; + Word16 tns_numfilters, lsbMode, lastnz, BW_cutoff_idx, BW_cutoff_idx_nf; + Word16 zero_frame; + Word16 ltpf_idx[3]; +#ifdef ENABLE_RFRAME + Word16 rframe; +#endif + Word16 spec_inv_idx; + + /* Buffers */ + Word16 *int_scf_fx_exp, tns_order[TNS_NUMFILTERS_MAX]; + UWord8 *resBitBuf; +#ifdef ENABLE_HR_MODE + Word32 *sqQdec; +#else + Word16 *sqQdec; +#endif + Word16 *int_scf_fx, *x_fx, *indexes; + Word32 *L_scf_idx; + Word32 *q_d_fx; + Word8 * currentScratch; + Word16 scf_q[M]; +#ifdef ENABLE_HR_MODE + Word32 scf_q_ip[M]; +#endif + }; + Dyn_Mem_In("Dec_LC3_Channel", sizeof(struct _dynmem)); +#endif + +#ifdef DISABLE_PLC + UNUSED(decoder->plcMeth); +#endif + + + /* BUFFER INITIALISATION. Some buffers may overlap since they are not used in the whole decoding process */ + q_d_fx = scratchAlign(scratchBuffer, 0); /* Size = 4 * MAX_LEN bytes */ +#ifdef ENABLE_HR_MODE + /* allocate memory for residual bits */ + if (decoder->hrmode) + { + resBitBuf = scratchAlign(q_d_fx, sizeof(*q_d_fx) * + decoder->frame_length); + basop_memset(resBitBuf, 0, sizeof(*resBitBuf) * MAX_RESBITS_LEN); + } + else +#endif + { + resBitBuf = scratchAlign(q_d_fx, sizeof(*q_d_fx) * + decoder->frame_length); /* Size = 2 * NPRM_RESQ = 2 * MAX_LEN bytes for + normal case and 2*MAX_RESBITS_LEN for hrmode */ + basop_memset(resBitBuf, 0, sizeof(*resBitBuf) * 2 * decoder->frame_length); + } + +#ifdef ENABLE_HR_MODE + indexes = scratchAlign(resBitBuf, sizeof(*resBitBuf) * MAX_RESBITS_LEN); +#else + indexes = scratchAlign(resBitBuf, sizeof(*resBitBuf) * 2 * decoder->frame_length); +#endif + memset(indexes, 0, sizeof(*indexes) * TNS_NUMFILTERS_MAX * MAXLAG); + + /* indexes Size = 2 * TNS_NUMFILTERS_MAX * MAXLAG = 32 bytes */ + + L_scf_idx = scratchAlign(indexes, sizeof(*indexes) * TNS_NUMFILTERS_MAX * + MAXLAG); /* Size = 4 * SCF_MAX_PARAM = 28 bytes -> aligned to 32 bytes */ + sqQdec = scratchAlign(L_scf_idx, sizeof(*L_scf_idx) * (SCF_MAX_PARAM)); /* Size = 2 * MAX_LEN bytes */ + int_scf_fx_exp = scratchAlign(sqQdec, sizeof(*sqQdec) * decoder->frame_length); /* Size = 2 * MAX_BANDS_NUMBER = 128 bytes */ +#ifndef ENABLE_HR_MODE + int_scf_fx = scratchAlign(int_scf_fx_exp, + sizeof(*int_scf_fx_exp) * MAX_BANDS_NUMBER); /* Size = 2 * MAX_BANDS_NUMBER = 128 bytes */ +#endif +#ifdef ENABLE_HR_MODE + x_fx = + scratchAlign(int_scf_fx_exp, sizeof(*int_scf_fx_exp) * MAX_BANDS_NUMBER); /* Size = 2 * (MAX_LEN + MDCT_MEM_LEN_MAX) = 2 + * MAX_LEN + 1.25 * MAX_LEN = 3.25 * MAX_LEN */ +#else + x_fx = + scratchAlign(q_d_fx, sizeof(*q_d_fx) * decoder->frame_length); /* Size = 2 * (MAX_LEN + MDCT_MEM_LEN_MAX) = 2 + * MAX_LEN + 1.25 * MAX_LEN = 3.25 * MAX_LEN */ +#endif + +#ifdef ENABLE_HR_MODE + x_fx_ip = scratchAlign(x_fx, sizeof(*x_fx) * (decoder->frame_length + decoder->stDec_ola_mem_fx_len)); + int_scf_fx_ip = scratchAlign(x_fx_ip, sizeof(*x_fx_ip) * (decoder->frame_length + decoder->stDec_ola_mem_fx_len)); + + currentScratch = scratchAlign(int_scf_fx_ip, sizeof(*int_scf_fx_ip) * 2 * MAX_BANDS_NUMBER); /* Size = 4 * MAX_LEN */ +#else + currentScratch = scratchAlign(x_fx, sizeof(*x_fx) * 4 * MAX_LEN); /* Size = 4 * MAX_LEN */ +#endif + +#ifdef DISABLE_PLC + memset(q_d_fx, 0, decoder->frame_length * sizeof(*q_d_fx)); +#endif + +#ifdef WMOPS + push_wmops("Decoder"); +#endif + +#ifdef ENABLE_RFRAME + IF (sub(bfi, 3) == 0) + { + bfi = 2; + move16(); + rframe = 1; + move16(); + } +#endif + + if (bfi != 1) + { +#ifdef WMOPS + push_wmops("Dec(bfi=0)"); +#endif + } + else + { +#ifdef WMOPS + push_wmops("Dec(bfi=1)"); +#endif + } + +#ifdef WMOPS + push_wmops("Entropy dec"); +#endif + IF (sub(bfi, 1) != 0) + { + processDecoderEntropy_fx(bs_in, &bp_side, &mask_side, h_DecSetup->total_bits, decoder->yLen, decoder->fs_idx, + decoder->BW_cutoff_bits, &tns_numfilters, &lsbMode, &lastnz, &bfi, tns_order, + &fac_ns_idx, &gg_idx, &BW_cutoff_idx, ltpf_idx, L_scf_idx, decoder->frame_dms); + BW_cutoff_idx_nf = BW_cutoff_idx; + move16(); + } +#ifdef WMOPS + pop_wmops(); /* Entropy dec */ +#endif + +#ifdef WMOPS + push_wmops("Ari dec"); +#endif + IF (sub(bfi, 1) != 0) + { + processAriDecoder_fx(bs_in, &bp_side, &mask_side, h_DecSetup->total_bits, decoder->yLen, decoder->fs_idx, + h_DecSetup->enable_lpc_weighting, tns_numfilters, lsbMode, lastnz, &bfi, tns_order, + fac_ns_idx, gg_idx, decoder->frame_dms, + decoder->n_pc, decoder->be_bp_left, decoder->be_bp_right, 0, &spec_inv_idx, &scale, + &fill_bits, sqQdec, &nf_seed, resBitBuf, indexes, &zero_frame, currentScratch +#ifdef ENABLE_HR_MODE + , decoder->hrmode +#endif + ); + +#ifdef ENABLE_RFRAME + test();test(); + IF (sub(rframe, 1) == 0 && zero_frame == 0 && sub(bfi, 1) != 0) + { + bfi = 2; + move16(); + Word16 max_bw_stopband = BW_cutoff_bin_all[BW_cutoff_idx]; + SWITCH (decoder->frame_dms) + { +#ifdef ENABLE_025_DMS_MODE + case 25: + max_bw_stopband = shr_pos(max_bw_stopband, 2); + BREAK; +#endif +#ifdef ENABLE_050_DMS_MODE + case 50: + max_bw_stopband = shr_pos(max_bw_stopband, 1); + BREAK; +#endif +#ifdef CR8_G_ADD_75MS + case 75: + max_bw_stopband = add(shr_pos(max_bw_stopband, 2), add(shr_pos(max_bw_stopband, 2), shr_pos(max_bw_stopband, 2))); + BREAK; +#endif + case 100: + BREAK; + } + + spec_inv_idx = s_max(lastnz, max_bw_stopband); + move16(); + } +#endif + + IF (bfi == 0) + { + processAriDecoderScaling_fx(sqQdec, decoder->yLen, q_d_fx, &q_fx_exp); + } + } +#ifdef WMOPS + pop_wmops(); /* Ari dec */ +#endif + +#ifdef WMOPS + push_wmops("SnsQuantScfDec"); +#endif + IF (sub(bfi, 1) != 0) + { + /* currentScratch Size = 96 bytes */ +#ifdef ENABLE_HR_MODE + processSnsQuantizeScfDecoder_fx(L_scf_idx, scf_q_ip, currentScratch); + downshift_w32_arr(scf_q_ip, scf_q, 15, M); /* required for PLC */ +#else + processSnsQuantizeScfDecoder_fx(L_scf_idx, scf_q, currentScratch); +#endif + } +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("PLC::ComputeStabFac"); +#endif + if (h_DecSetup->plcAd) + { + processPLCcomputeStabFac_main(scf_q, h_DecSetup->plcAd->old_scf_q, h_DecSetup->plcAd->old_old_scf_q, bfi, + h_DecSetup->prev_bfi, h_DecSetup->prev_prev_bfi, &h_DecSetup->plcAd->stab_fac); + } +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Partial Concealment"); +#endif + IF (sub(bfi, 1) != 0) + { + scale = 32767; + move16(); + + IF (h_DecSetup->plcAd) + { + scale = h_DecSetup->plcAd->stab_fac; + } + + processPCmain_fx(rframe, &bfi, decoder->yLen, decoder->frame_dms, h_DecSetup->q_old_res_fx, + &h_DecSetup->q_old_res_fx_exp, sqQdec, h_DecSetup->q_old_d_fx, spec_inv_idx, ltpf_idx[0], + scale, q_d_fx, &q_fx_exp, gg_idx, h_DecSetup->quantizedGainOff, &h_DecSetup->prev_gg, + &h_DecSetup->prev_gg_e, &BW_cutoff_idx_nf, &h_DecSetup->prev_BW_cutoff_idx_nf, fac_ns_idx, + &h_DecSetup->prev_fac_ns_fx, &h_DecSetup->pc_nbLostFramesInRow); + } +#ifdef WMOPS + pop_wmops(); +#endif + + IF (sub(bfi, 1) != 0) + { +#ifdef WMOPS + push_wmops("Residual dec"); +#endif + processResidualDecoding_fx(q_d_fx, q_fx_exp, decoder->yLen, resBitBuf, fill_bits +#ifdef ENABLE_HR_MODE + , decoder->hrmode +#endif + ); +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Noisefill"); +#endif + /* currentScratch Size = 2 * MAX_LEN bytes */ + IF (zero_frame == 0) + { + processNoiseFilling_fx(q_d_fx, nf_seed, q_fx_exp, fac_ns_idx, BW_cutoff_idx_nf, decoder->frame_dms, + h_DecSetup->prev_fac_ns_fx, spec_inv_idx, currentScratch +#ifdef ENABLE_HR_MODE + , decoder->hrmode +#endif + ); + } +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("applyGlobalGain"); +#endif + processApplyGlobalGain_fx(q_d_fx, &q_fx_exp, decoder->yLen, gg_idx, h_DecSetup->quantizedGainOff); +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Tns_dec"); +#endif + /* currentScratch Size = 48 bytes */ + processTnsDecoder_fx(indexes, q_d_fx, decoder->yLen, tns_order, &q_fx_exp, BW_cutoff_idx, decoder->frame_dms, + currentScratch +#ifdef ENABLE_HR_MODE + , decoder->hrmode +#endif + ); +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef ENABLE_HR_MODE +#ifdef WMOPS + push_wmops("SnsInterpScfDec"); +#endif + processSnsInterpolateScf_fx(scf_q_ip, int_scf_fx_ip, int_scf_fx_exp, 0, decoder->bands_number, currentScratch); + +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Mdct shaping_dec"); +#endif + processScfScaling(int_scf_fx_exp, decoder->bands_number, &q_fx_exp); + + processMdctShaping_fx(q_d_fx, int_scf_fx_ip, int_scf_fx_exp, decoder->bands_offset, decoder->bands_number); +#ifdef WMOPS + pop_wmops(); +#endif +#else +#ifdef WMOPS + push_wmops("SnsInterpScfDec"); +#endif + /* currentScratch Size = 128 bytes */ + processSnsInterpolateScf_fx(scf_q, int_scf_fx, int_scf_fx_exp, 0, decoder->bands_number, currentScratch); +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Mdct shaping_dec"); +#endif + processScfScaling(int_scf_fx_exp, decoder->bands_number, &q_fx_exp); + processMdctShaping_fx(q_d_fx, int_scf_fx, int_scf_fx_exp, decoder->bands_offset, decoder->bands_number); +#ifdef WMOPS + pop_wmops(); +#endif + /* end int_scf_fx */ +#endif /* ENABLE_HR_MODE */ + } + + /* x_fx_ip will be used to store h_DecSetup->stDec_ola_mem_fx returned by PLCmain_fx*/ + /* This will be upshifted to 32 bit overlap buffer outside of the PLCmain function */ +#ifdef ENABLE_HR_MODE + Word16 *plc_ola_mem = (Word16 *)x_fx_ip; + IF(sub(bfi, 1) == 0) + { + FOR(i = 0; i < decoder->stDec_ola_mem_fx_len; i++) + { + plc_ola_mem[i] = round_fx(h_DecSetup->stDec_ola_mem_fx[i]); + } + } +#endif + +#ifdef WMOPS + push_wmops("PLC::Main"); +#endif + /* currentScratch Size = 2 * MAX_LGW + 8 * MAX_LPROT + 12 * MAX_L_FRAME */ + processPLCmain_fx(decoder->plcMeth, &h_DecSetup->concealMethod, &h_DecSetup->nbLostFramesInRow, bfi, + h_DecSetup->prev_bfi, decoder->frame_length, decoder->la_zeroes, decoder->W_fx, x_fx, +#ifdef ENABLE_HR_MODE + plc_ola_mem, +#else + h_DecSetup->stDec_ola_mem_fx, +#endif + &h_DecSetup->stDec_ola_mem_fx_exp, h_DecSetup->q_old_d_fx, + &h_DecSetup->q_old_fx_exp, q_d_fx, &q_fx_exp, decoder->yLen, decoder->fs_idx, + decoder->bands_offset, decoder->bands_number, &h_DecSetup->plc_damping, h_DecSetup->ltpf_mem_pitch_int, + h_DecSetup->ltpf_mem_pitch_fr, &h_DecSetup->ns_cum_alpha, &h_DecSetup->ns_seed, h_DecSetup->plcAd, + decoder->frame_dms, currentScratch, &h_DecSetup->pc_nbLostFramesInRow +#ifdef ENABLE_HR_MODE + , decoder->hrmode +#endif +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + , h_DecSetup->rel_pitch_change +#endif +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR + , decoder->alpha_type_2_table +#endif + ); +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef ENABLE_HR_MODE + IF(sub(bfi, 1) == 0) + { + FOR(i = 0; i < decoder->stDec_ola_mem_fx_len; i++) + { + h_DecSetup->stDec_ola_mem_fx[i] = L_deposit_h(plc_ola_mem[i]); + } + } +#endif + +#ifdef WMOPS + push_wmops("PLC/PC::DampingScrambling"); +#endif + if (h_DecSetup->plcAd) + { + processPLCDampingScrambling_main_fx( + bfi, h_DecSetup->concealMethod, h_DecSetup->nbLostFramesInRow, &h_DecSetup->plcAd->cum_fflcAtten, + h_DecSetup->pc_nbLostFramesInRow, &h_DecSetup->ns_seed, &h_DecSetup->pc_seed, + h_DecSetup->ltpf_mem_pitch_int, ltpf_idx[0], q_d_fx, &q_fx_exp, h_DecSetup->q_old_d_fx, + &h_DecSetup->q_old_fx_exp, decoder->yLen, h_DecSetup->plcAd->stab_fac, decoder->frame_dms, + &h_DecSetup->plcAd->cum_fading_slow, &h_DecSetup->plcAd->cum_fading_fast, spec_inv_idx +#ifdef CR8_A_PLC_FADEOUT_TUNING + , h_DecSetup->plcAd->plc_fadeout_type +#endif + ); + } +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Imdct"); +#endif + /* currentScratch Size = 4 * MAX_LEN */ + ProcessingIMDCT(q_d_fx, &q_fx_exp, decoder->W_fx, h_DecSetup->stDec_ola_mem_fx, &h_DecSetup->stDec_ola_mem_fx_exp, +#ifdef ENABLE_HR_MODE + x_fx_ip, +#else + x_fx, +#endif + decoder->W_size, decoder->frame_length, decoder->stDec_ola_mem_fx_len, decoder->frame_dms, + h_DecSetup->concealMethod, bfi, h_DecSetup->prev_bfi, h_DecSetup->nbLostFramesInRow, + h_DecSetup->plcAd, + currentScratch +#ifdef ENABLE_HR_MODE + , decoder->hrmode +#endif + ); + +#ifdef ENABLE_HR_MODE + IF(sub(bfi, 1) != 0 || sub(h_DecSetup->concealMethod, LC3_CON_TEC_NS_STD) == 0 || sub(h_DecSetup->concealMethod, LC3_CON_TEC_NS_ADV) == 0 || sub(h_DecSetup->concealMethod, LC3_CON_TEC_FREQ_MUTING) == 0) + { + round_w32tow16_arr(x_fx_ip, x_fx, decoder->frame_length); + } + ELSE + { + FOR(i = 0; i < decoder->frame_length; i++) + { + x_fx_ip[i] = L_deposit_h(x_fx[i]); + } + } +#endif /* ENABLE_HR_MODE */ + +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("PLC::Update"); +#endif + + processPLCupdate_fx(h_DecSetup->plcAd, x_fx, q_fx_exp, h_DecSetup->concealMethod, decoder->frame_length, + decoder->fs_idx, &h_DecSetup->nbLostFramesInRow, &h_DecSetup->prev_prev_bfi, + &h_DecSetup->prev_bfi, bfi, scf_q, &h_DecSetup->ns_cum_alpha +#ifdef ENABLE_HR_MODE + , decoder->hrmode +#endif + ); +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("LtpfDec"); +#endif + /* currentScratch Size = 0.5 * MAX_LEN + 20 bytes */ + process_ltpf_decoder_fx(&q_fx_exp, decoder->frame_length, decoder->ltpf_mem_x_len, decoder->fs_idx, + decoder->ltpf_mem_y_len, &h_DecSetup->ltpf_mem_e, x_fx, h_DecSetup->ltpf_mem_x, x_fx, + h_DecSetup->ltpf_mem_y, ltpf_idx[0], ltpf_idx[1], ltpf_idx[2], + &h_DecSetup->ltpf_mem_pitch_int, &h_DecSetup->ltpf_mem_pitch_fr, &h_DecSetup->ltpf_mem_gain, + &h_DecSetup->ltpf_mem_active, h_DecSetup->ltpf_scale_fac_idx, bfi, + h_DecSetup->concealMethod, + h_DecSetup->plc_damping, &h_DecSetup->ltpf_mem_scale_fac_idx, +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + &h_DecSetup->rel_pitch_change, decoder->hrmode, decoder->frame_dms, +#endif + currentScratch); +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef ENABLE_HR_MODE + IF (!(decoder->hrmode)) + { + FOR (i = 0; i < decoder->frame_length; i++) + { + x_fx_ip[i] = L_deposit_h(x_fx[i]); + } + } +#endif + +#ifdef WMOPS + push_wmops("Output scaling"); +#endif + { + scale = sub(sub(31 + 16, bits_per_sample), q_fx_exp); + offset = L_shr_sat(32768, sub(16, scale)); + IF (bits_per_sample == 16) + { + scale = sub(15, q_fx_exp); + FOR (i = 0; i < decoder->frame_length; i++) + { +#ifdef ENABLE_HR_MODE + ((Word16 *)s_out)[i] = round_fx_sat(L_shr_sat(x_fx_ip[i], scale)); +#else + ((Word16 *)s_out)[i] = round_fx_sat(L_shr_sat(L_deposit_h(x_fx[i]), scale)); +#endif + move16(); + } + } + ELSE + { + FOR (i = 0; i < decoder->frame_length; i++) + { +#ifdef ENABLE_HR_MODE + ((Word32 *)s_out)[i] = L_shr_sat(L_add_sat(x_fx_ip[i], offset), scale); +#else + ((Word32 *)s_out)[i] = L_shr_sat(L_add_sat(L_deposit_h(x_fx[i]), offset), scale); +#endif + move32(); + } + } + } +#ifdef WMOPS + pop_wmops(); /* Output scaling */ +#endif + +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + pop_wmops(); /* Decoder */ +#endif + + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif + return bfi; +} + +/* num_bytes = 0 -> bad frame */ +LC3PLUS_Error Dec_LC3PLUS(LC3PLUS_Dec *decoder, UWord8 *input, int num_bytes, void **output, int bits_per_sample, void *scratch, + int bfi_ext) +{ + int ch = 0, bfi = bfi_ext; + LC3PLUS_Error err = LC3PLUS_OK; + int fec_num_bytes; + int lc3_num_bytes; + int lc3_channel_num_bytes; + int channel_bfi, out_bfi; + Word16 channel_epmr; + + if (bfi == 0) + { + bfi = !num_bytes; + } + + if (decoder->ep_enabled) + { + decoder->combined_channel_coding = decoder->channels > 1 && num_bytes <= 160; + + if (decoder->combined_channel_coding) + { + fec_num_bytes = num_bytes; + +#ifdef WMOPS + push_wmops("fec_dec"); +#endif + + decoder->error_report = + fec_decoder(input, fec_num_bytes, &lc3_num_bytes, &decoder->epmr, decoder->combined_channel_coding, + &decoder->n_pccw, &bfi, &decoder->be_bp_left, &decoder->be_bp_right, &decoder->n_pc, + &decoder->m_fec, scratch); + +#ifdef WMOPS + pop_wmops(); +#endif + + for (ch = 0; ch < decoder->channels; ch++) + { + lc3_channel_num_bytes = lc3_num_bytes / decoder->channels + (ch < (lc3_num_bytes % decoder->channels)); + + + if (bfi != 1 && lc3_channel_num_bytes != decoder->channel_setup[ch]->last_size) + { + err = update_dec_bitrate(decoder, ch, lc3_channel_num_bytes); + + if (err) + { + bfi = 1; + } + else + { + decoder->channel_setup[ch]->last_size = lc3_channel_num_bytes; + } + } + + bfi = Dec_LC3PLUS_Channel(decoder, ch, bits_per_sample, input, output[ch], bfi, scratch); + input += decoder->channel_setup[ch]->targetBytes; + } + } + else + { + decoder->epmr = 12; + out_bfi = 0; + + for (ch = 0; ch < decoder->channels; ch++) + { + fec_num_bytes = num_bytes / decoder->channels + (ch < (num_bytes % decoder->channels)); + +#ifdef WMOPS + push_wmops("fec_dec"); +#endif + + channel_bfi = bfi; + + decoder->error_report = + fec_decoder(input, fec_num_bytes, &lc3_num_bytes, &channel_epmr, decoder->combined_channel_coding, + &decoder->n_pccw, &channel_bfi, &decoder->be_bp_left, &decoder->be_bp_right, + &decoder->n_pc, &decoder->m_fec, scratch); + +#ifdef WMOPS + pop_wmops(); +#endif + + decoder->epmr = MIN(decoder->epmr, channel_epmr); + + +#ifdef ENABLE_PADDING + if (channel_bfi != 1) + { + Word16 padding_len, np_zero; + + if (paddingDec_fx(input, shl(lc3_num_bytes, 3), decoder->yLen, decoder->BW_cutoff_bits, + decoder->ep_enabled, &padding_len, &np_zero)) + { + channel_bfi = 1; + } + + input = input + np_zero; + decoder->n_pc = s_max(decoder->n_pc - (2 * np_zero), 0); + + if (channel_bfi == 2) + { + if (decoder->be_bp_right < (8 * np_zero)) + { + channel_bfi = 0; + decoder->be_bp_left = -1; + decoder->be_bp_right = -1; + } + else + { + decoder->be_bp_right = decoder->be_bp_right - (8 * np_zero); + decoder->be_bp_left = s_max(decoder->be_bp_left - (8 * np_zero), 0); + } + } + + lc3_num_bytes = lc3_num_bytes - padding_len; + } +#endif + + if (channel_bfi != 1 && lc3_num_bytes != decoder->channel_setup[ch]->last_size) + { + err = update_dec_bitrate(decoder, ch, lc3_num_bytes); + if (err) + { + channel_bfi = 1; + } + else + { + decoder->channel_setup[ch]->last_size = lc3_num_bytes; + } + } + + channel_bfi = Dec_LC3PLUS_Channel(decoder, ch, bits_per_sample, input, output[ch], channel_bfi, scratch); + + out_bfi |= channel_bfi; + input += fec_num_bytes; + } + + bfi = out_bfi & 1; + } + } + else + { + for (ch = 0; ch < decoder->channels; ch++) + { + lc3_num_bytes = num_bytes / decoder->channels + (ch < (num_bytes % decoder->channels)); + +#ifdef ENABLE_PADDING + if (bfi != 1) + { + Word16 padding_len, np_zero; + + if (paddingDec_fx(input, shl(lc3_num_bytes, 3), decoder->yLen, decoder->BW_cutoff_bits, + decoder->ep_enabled, &padding_len, &np_zero)) + { + bfi = 1; + } + + lc3_num_bytes = lc3_num_bytes - padding_len; + if (lc3_num_bytes < 20 || lc3_num_bytes > LC3PLUS_MAX_BYTES) + { + bfi = 1; /* mark frame as broken if frame sizeif below the minimum of 20 bytes */ + } + } +#endif + + if (bfi != 1 && lc3_num_bytes != decoder->channel_setup[ch]->last_size) + { + err = update_dec_bitrate(decoder, ch, lc3_num_bytes); + if (err) + { + bfi = 1; + } + else + { + decoder->channel_setup[ch]->last_size = lc3_num_bytes; + } + } + + bfi = Dec_LC3PLUS_Channel(decoder, ch, bits_per_sample, input, output[ch], bfi, scratch); + input += decoder->channel_setup[ch]->targetBytes; + } + } + + return bfi == 1 ? LC3PLUS_DECODE_ERROR : LC3PLUS_OK; +} diff --git a/lib_lc3plus/defines.h b/lib_lc3plus/defines.h new file mode 100644 index 0000000000000000000000000000000000000000..2d280620f3ee01fcb15d28a7a8b20a01b2a6edf9 --- /dev/null +++ b/lib_lc3plus/defines.h @@ -0,0 +1,761 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#ifndef DEFINES_H +#define DEFINES_H + +#ifndef DISABLE_HR_MODE +# define ENABLE_HR_MODE +#endif + +#ifdef ENABLE_HR_MODE +# define MAX_BW_HR 960 +#endif + +#ifdef ENABLE_HR_MODE +# define extractW16(a) extract_h(a) +#else +# define extractW16(a) (a) +#endif + +#define MAX_BR 320000 /* 400 * 800 */ + +/* FUNCTION MACROS */ +/* NB, divisions in some of these MACROs, use mainly for initial setup, do not use in loops */ +#define CEILING(x, y) (((x) + (y)-1) / (y)) + +#define FRAME2FS_IDX(x) (x / 100) /* 80 -> 0, 160 -> 1, 240 -> 2, 320 -> 3, 480 -> 4 */ +#ifdef ENABLE_HR_MODE +# define FS2FS_IDX(x) ((x) == 96000 ? 5 : (x) / 10000) /* 8000 -> 0, 16000 -> 1, 24000 -> 2, 32000 -> 3, 48000 -> 4, 96000 -> 5 */ +#else +# define FS2FS_IDX(x) (x / 10000) /* 8000 -> 0, 16000 -> 1, 24000 -> 2, 32000 -> 3, 48000 -> 4 */ +#endif + +#define UNUSED(x) (void)(x) /* silence unused parameter warning */ +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define STATIC_ASSERTS(cond, s) typedef char assert_##s[(cond) ? 1 : -1] +#define STATIC_ASSERTI(cond, i) STATIC_ASSERTS(cond, i) +#define STATIC_ASSERT(cond) STATIC_ASSERTI(cond, __LINE__) +#define TRACE(x) PRINTF("%s:%i %s = %i\n", __FILE__, __LINE__, #x, (int)(x)) + +/* For dynamic memory calculations */ +#define CODEC_FS(fs) ((fs) == 44100 ? 48000 : (fs)) + +#define DYN_MAX_LEN(fs) (CODEC_FS(fs) / 100) +#define DYN_MAX_LEN_EXT(fs) MAX(CODEC_FS(fs) / 100, 160) /* extension to length 160 for NB(fs=8000) */ +#define DYN_MAX_LPROT(fs) ((512 * (CODEC_FS(fs) / 100)) / 320) + +#define DYN_MAX_PLOCS(fs) (DYN_MAX_LPROT(fs) / 4 + 1) +#define DYN_MAX_MDCT_LEN(fs) (DYN_MAX_LEN(fs) - (180 * DYN_MAX_LEN(fs) / 480)) + +#define MAX_PITCH_FS(fs) (CEILING((MAX_PITCH_12K8 * CODEC_FS(fs)), (12800))) + +/* get the maximum buffer size assuming 10 ms framing */ +/* MAX_PITCH was previously always the highest fs in the current SUBSET , i.e. typically 48 kHz */ +/* now fs(from incoming wav file) adaptive MAX_PITCH_FS(fs) is used instead */ +#define DYN_MAX_LEN_PCM_PLC_CLASSIFIER(fs) \ + (MAX_PITCH_FS(fs) + DYN_MAX_LEN(fs)) /* CLASSIFIER PCM memory requirement */ +#define DYN_MAX_LEN_PCM_PLC_TDCAPPLYFILTER(fs) \ + ((M + 1) + MAX_PITCH_FS(fs) + (DYN_MAX_LEN(fs) / 2)) /* TDC filtering PCM memory requirement */ + +#ifdef ENABLE_HR_MODE +# define DYN_MAX_LEN_PCM_PLC(fs) (MAX_PITCH_FS(fs) + DYN_MAX_LEN(fs)) +#else +# define DYN_MAX_LEN_PCM_PLC(fs) MAX(DYN_MAX_LEN_PCM_PLC_CLASSIFIER(fs), DYN_MAX_LEN_PCM_PLC_TDCAPPLYFILTER(fs)) +#endif + +#define FRAME_MS_BLOCK 25 + +/* OPTIONS */ +#define ENABLE_2_5MS_MODE +#define ENABLE_5MS_MODE +#define ENABLE_075_DMS_MODE +#define ENABLE_10_MS_MODE +#define ENABLE_ADVANCED_PLC +#define ENABLE_ADVANCED_PLC_DEFAULT +#define ENABLE_BW_CONTROLLER +#define ENABLE_ERROR_PROTECTION +#define ENABLE_RFRAME +#define ENABLE_PC +#define ENABLE_PLC +#define ENABLE_PADDING +/* flags */ +#define ENABLE_BANDWIDTH_FLAG +#define ENABLE_RBANDWIDTH_FLAG +#define ENABLE_EP_MODE_FLAG +#define ENABLE_FRAME_MS_FLAG + +#define CR8_A_PLC_FADEOUT_TUNING /* Adapt PLC fadeout to avoid gaps in signal */ +#define CR8_E_TONE_DETECTOR /* Tone detector for hrmode to deactivate TNS - improves SNR and THD+N */ +#define CR8_F_ADAPT_MDCT_DCT_PRECISION +#define CR8_G_ADD_75MS + + +#define CR9_B_FIX_MDCT_OVERFLOW /* Fix overflow */ +#define CR9_C_FIX_DCT2_OVERFLOW /* Fix overflow */ + +#define CR9_F_PITCH_WIN_LEN_FIX /* Increase window length for pitch calculation */ +#define CR9_G_IMPROVE_TDC /* summarize G,H,J,L,N */ +#ifdef CR9_G_IMPROVE_TDC +# define CR9_G_PLC_NS_TDC_FIX /* Always use TDC if pitch > 0 */ +# define CR9_H_REMOVE_SWITCH_TO_PLC_NS +# define CR9_J_SLOW_TDC_FADEOUT +# define CR9_L_RETRAIN_FADEOUT_TYPE_CLASSIFIER +# ifdef ENABLE_HR_MODE +# define CR10_A_ATTENUATION_CURVE_SELECTOR +# ifdef CR10_A_ATTENUATION_CURVE_SELECTOR +# define CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH +# endif +# endif +#endif /* CR9_G_IMPROVE_TDC */ +#define CR9_I_INC_TDC_FADEOUT_LEN +#define CR9_K_REDUCE_NORM_CORR_TH +#define CR9_M_FIX_DIV_ZERO + +#ifndef NO_POST_REL_CHANGES +/* Post-release non-bitexact changes */ + +#define CR11_A_FIX_IN_PLC_LONGTERM_STATISTIC + +#endif /* NO_POST_REL_CHANGES Post-release changes */ + +#ifdef CR8_A_PLC_FADEOUT_TUNING +# ifdef CR9_L_RETRAIN_FADEOUT_TYPE_CLASSIFIER +# ifdef CR9_K_REDUCE_NORM_CORR_TH +# define THRESH_100_DMS_TDC_CNT 9 +# define THRESH_100_DMS_NS_CNT 7 +# define THRESH_100_DMS_TDC_NS_CNT 73 +# define THRESH_075_DMS_TDC_CNT 7 +# define THRESH_075_DMS_NS_CNT 7 +# define THRESH_075_DMS_TDC_NS_CNT 87 +# define THRESH_050_DMS_TDC_CNT 22 +# define THRESH_050_DMS_NS_CNT 15 +# define THRESH_050_DMS_TDC_NS_CNT 141 +# define THRESH_025_DMS_TDC_CNT 20 +# define THRESH_025_DMS_NS_CNT 21 +# define THRESH_025_DMS_TDC_NS_CNT 278 +# else +# define THRESH_100_DMS_TDC_CNT 3 +# define THRESH_100_DMS_NS_CNT 35 +# define THRESH_100_DMS_TDC_NS_CNT 114 +# define THRESH_075_DMS_TDC_CNT 6 +# define THRESH_075_DMS_NS_CNT 37 +# define THRESH_075_DMS_TDC_NS_CNT 130 +# define THRESH_050_DMS_TDC_CNT 12 +# define THRESH_050_DMS_NS_CNT 55 +# define THRESH_050_DMS_TDC_NS_CNT 227 +# define THRESH_025_DMS_TDC_CNT 10 +# define THRESH_025_DMS_NS_CNT 138 +# define THRESH_025_DMS_TDC_NS_CNT 431 +# endif +# else +# define FAC1_FADEOUT 6710886 /* 0.2 * 2^25 */ +# define SHIFT1_FADEOUT 25-15 /* 25 - 16 */ +# define FAC2_FADEOUT 50331648 /* 1.5 * 2^25 */ +# define SHIFT2_FADEOUT 25-15 /* 25 - 16 */ +# define FAC3_FADEOUT 58720256 /* 1.75 * 2^25 */ +# define SHIFT3_FADEOUT 25-15 /* 25 - 16 */ +# endif +# define PLC_LONGTERM_ANALYSIS_MS 200 /* Nominal analysis window 2000 ms */ +# define PLC_LONGTERM_ANALYSIS_STARTUP_FILL (Word16)(0.5*32768.0) /* 16384/32768 == 0.5 required buffer fill amount, set to 0.0 to not require any fill at all */ +#endif /* CR8_A_PLC_FADEOUT_TUNING */ + +#define REL_PITCH_THRESH 11796 + +# define MIN_BR_100DMS 16000 /* 20 * 800 * 100/100 */ +# ifdef SUBSET_NB +# define MAX_BR_100DMS_NB 114400 /* for 100ms at 8kHz */ +# endif +# ifdef SUBSET_WB +# define MAX_BR_100DMS_WB 221600 /* for 100ms at 16kHz */ +# endif +# ifdef SUBSET_SSWB +# define MAX_BR_100DMS_SSWB 314400 /* for 100ms at 24kHz */ +# endif + +/* G192 bitstream writing/reading */ +#define G192_GOOD_FRAME 0x6B21 +#define G192_BAD_FRAME 0x6B20 +#define G192_REDUNDANCY_FRAME 0x6B22 +#define G192_ZERO 0x007F +#define G192_ONE 0x0081 +#define READ_G192FER /* allow C executable to also read G192 formatted FER files */ + +#ifdef DEBUG +#ifdef READ_G192FER +# define READ_G192_FER_BYTE /* Allow C executable to also read G192 byte formatted FER files 0x20=BAD , 0x21=Good */ +#endif +#endif + + +// #define DYNMEM_COUNT +#define STAMEM_COUNT + + +/* +do not change __forceinline for mex compilation using gcc6.3.0 or larger + gcc630 supported by MATLAB 2018b, via Mingw "app" + */ +#ifdef __GNUC__ +# define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) +#else +# define GCC_VERSION 0 +#endif + +/* Define __forceinline as empty if ARM not activated to avoid any errors */ +#undef __forceinline +/* The above undef is needed to compile using make_mex.m without the following warning in Matlab for windows */ +#define __forceinline + +/* SUBSETS */ +#if !(defined(SUBSET_NB) || defined(SUBSET_WB) || defined(SUBSET_SSWB) || defined(SUBSET_SWB) || defined(SUBSET_FB) || defined(SUBSET_UB)) +# define SUBSET_NB +# define SUBSET_WB +# define SUBSET_SSWB +# define SUBSET_SWB +# define SUBSET_FB +# ifdef ENABLE_HR_MODE +# define SUBSET_UB +# endif +#endif + +# define MIN_BR_100DMS 16000 /* 20 * 800 * 100/100 */ +# define MIN_BR_025DMS 64000 /* 20 * 800 * 100/ 25 */ +# define MIN_BR_050DMS 32000 /* 20 * 800 * 100/ 50 */ +# define MAX_BR_050DMS_NB 260800 /* 163 * 800 * 100/ 50 */ +# ifdef SUBSET_NB +# define MAX_BR_100DMS_NB 114400 /* for 100ms at 8kHz */ +# endif +# ifdef SUBSET_WB +# define MAX_BR_100DMS_WB 221600 /* for 100ms at 16kHz */ +# endif +# ifdef SUBSET_SSWB +# define MAX_BR_100DMS_SSWB 314400 /* for 100ms at 24kHz */ +# endif + +#ifdef CR8_G_ADD_75MS +# define MIN_BR_075DMS_48KHZ_HR ((int)124800/ 800/2)* 800 +# define MIN_BR_075DMS_96KHZ_HR ((int)149600/ 800/2)* 800 +# define MIN_BR_075DMS 21334 /* ceil( 20 * 800 * 100/ 75) */ +# define MAX_BR_075DMS 426667 /* ceil(400 * 800 * 100/ 75) */ +# define MAX_BR_075DMS_NB 152534 /* ceil(143 * 800 * 100/ 75) */ +# define MAX_BR_075DMS_WB 295467 /* ceil(277 * 800 * 100/ 75) */ +# define MAX_BR_075DMS_SSWB 419200 /* ceil(393 * 800 * 100/ 75) */ + +# define NOISEFILLWIDTH_7_5MS 2 +# define NOISEFILLSTART_7_5MS 18 +#endif + +#define PACK_RESBITS + +/* FRAME/BUFFER */ +#ifdef SUBSET_UB +# define MAX_LEN 960 /* = 10ms at 96kHz */ +#elif defined SUBSET_FB +# define MAX_LEN 480 /* = 10ms at 48kHz */ +#elif defined(SUBSET_SWB) +# define MAX_LEN 320 /* = 10ms at 32kHz */ +#elif defined(SUBSET_SSWB) +# define MAX_LEN 240 /* = 10ms at 24kHz */ +#elif defined(SUBSET_WB) +# define MAX_LEN 160 /* = 10ms at 16kHz */ +#elif defined(SUBSET_NB) +# define MAX_LEN 80 /* = 10ms at 8kHz */ +#endif + +#ifdef ENABLE_HR_MODE +# define ENABLE_FFT_RESCALE +# define ENABLE_FFT_30X16 +# define ENABLE_DCTIV_RESCALE + +# define EXT_RES_ITER_MAX 20 +# define MAX_RESBITS 5000 +# define HR_MODE_SCRATCH_SIZE 60 +#else /* ENABLE_HR_MODE */ +# define MAX_RESBITS MAX_LEN +#endif /* ENABLE_HR_MODE */ + +/* BW Cutoff-Detection */ +#define MAX_BW_BANDS_NUMBER 5 + +#ifdef ENABLE_HR_MODE +# define RESBITS_PACK_SHIFT 3 +# define RESBITS_PACK_N (1<<(RESBITS_PACK_SHIFT)) +# define RESBITS_PACK_MASK (RESBITS_PACK_N - 1) +# define MAX_RESBITS_LEN ((MAX_RESBITS + RESBITS_PACK_MASK) >> RESBITS_PACK_SHIFT) +# define MAX_RESBITS_LEN_32BIT_ALIGN (((MAX_RESBITS_LEN + 3)/4)*4) +#else /* ENABLE_HR_MODE */ +# define MAX_RESBITS_LEN (MAX_RESBITS) +# define MAX_RESBITS_LEN_32BIT_ALIGN (((MAX_RESBITS_LEN + 3)/4)*4) +#endif /* ENABLE_HR_MODE */ + +#define MAX_CHANNELS 2 +#define MIN_NBYTES 20 /* 100dms: 16 kbps at !=44.1kHz, 14.7kbps at 44.1kHz + 50dms: 32 kbps at !=44.1kHz, 29.4kbps at 44.1kHz + 25dms: 64 kbps at !=44.1kHz, 58.8kbps at 44.1kHz */ +#define MAX_NBYTES_025 100 /* any dms: 320 kbps at !=44.1kHz, 294 kbps at 44.1kHz */ +#define MAX_NBYTES_050 200 /* any dms: 320 kbps at !=44.1kHz, 294 kbps at 44.1kHz */ +#define MAX_NBYTES_075 400 /* any dms: 320 kbps at !=44.1kHz, 294 kbps at 44.1kHz */ +#define MAX_NBYTES_100 400 /* any dms: 320 kbps at !=44.1kHz, 294 kbps at 44.1kHz */ +#ifdef ENABLE_HR_MODE +# define MIN_BR_25MS_48KHZ_HR ((int)172800/3200/2)*3200 +# define MIN_BR_25MS_96KHZ_HR ((int)198400/3200/2)*3200 +# define MIN_BR_50MS_48KHZ_HR ((int)148800/1600/2)*1600 +# define MIN_BR_50MS_96KHZ_HR ((int)174400/1600/2)*1600 +# define MIN_BR_100MS_48KHZ_HR ((int)124800/800/2)*800 +# define MIN_BR_100MS_96KHZ_HR ((int)149600/800/2)*800 +# define MAX_NBYTES_RED_HR 625 /* From table 5.2 */ +# define BYTESBUFSIZE (MAX_NBYTES_RED_HR * LC3PLUS_MAX_CHANNELS) +#else +# define BYTESBUFSIZE (MAX_NBYTES_100 * LC3PLUS_MAX_CHANNELS) +#endif +#define MAX_BW_BIN 400 +#define FEC_SLOT_BYTES_MIN 40 +# define FEC_SLOT_BYTES_MAX 400 +#if MAX_BW_BIN > MAX_LEN +# define MAX_BW MAX_LEN +#else +# define MAX_BW MAX_BW_BIN +#endif + +#define NUM_OFFSETS 7 +#define NUM_SAMP_FREQ 6 + +/* SCF */ +#define M 16 /* LPC_ORDER */ +#define MAX_BANDS_NUMBER 64 +#define MAX_BANDS_NUMBER_PLC 80 +#define PVQ_MAX_VEC_SIZE M +#define KMAX_FX 10 /* N=10 */ +#define K_OUTL_FAR 6 +#define MPVQ_SZ_OUTL_FAR (1549824U >> 1) +#define TOTBITS_SHAPE OUTL_FAR(1.0 + 19.5637) +#define SQRT_EN_MAX_FX 64 /* table size, for fast inv_sqrt */ +#define N_SETA 10 +#define N_SETB (PVQ_MAX_VEC_SIZE - N_SETA) + +#define SNS_DAMPING 27853 /* 0.85 in Q15 */ +#ifdef ENABLE_HR_MODE +# define SNS_DAMPING_HRMODE 19661 /* 0.6 in Q15 */ +# define SNS_DAMPING_HRMODE_UB_10MS 6881 /* 0.21 in Q15 */ +# define SNS_DAMPING_HRMODE_UB_7_5MS 5898 /* 0.18 in Q15 */ +# define SNS_DAMPING_HRMODE_UB_5MS 4915 /* 0.15 in Q15 */ +# define SNS_DAMPING_HRMODE_UB_2_5MS 4915 /* 0.15 in Q15 */ +#endif + +/* PVQ VQ setup */ +#define VQMODES26 \ + ((0 << 4) + (1 << 3) + (1 << 2) + (1 << 1) + \ + (1 << 0)) /* select all shapes, including extended lf, and new far \ + shape for MODE26, add extreme far mode not enabled */ +#define SCF_STAGE1_MAX_BITS (5 + 5) /* typically only (5+5) used */ +#define SCF_STAGE1_NBCDKENTRIES 32 +#define SCF_STAGE2_MAX_GAIN_BITS 2 +#define SCF_STAGE2_NB_MODE_BITS 1 +#define SCF_STAGE2_MAX_NB_SHAPES 3 +#define SCF_MAX_PARAM 7 /* (L+H) + submode_MSB +gain+(Ia_leads+Ia_mpvq)+(Ib_joint_mpvq), submode-LSB */ +#define SCF_MAX_PARAM_ST2 (SCF_MAX_PARAM - 2) +#define N_SCF_SHAPES_ST2 4 +#define N_SCF_SHAPE_SETUPS 1 + +/* ARITHMETIC ENCODER */ +#define NBITS_CONTEXT 8 +#define NBITS_RATEQ 2 +#define A_THRES_SHIFT 2 +#define A_THRES (1 << A_THRES_SHIFT) +#define VAL_ESC 16 +#define SYM_BITS_Q 11 + +/* RESIDUAL CODING */ +#define NPRM_RESQ MAX_LEN + +/* NOISE FILLING */ +#define NOISEFILLWIDTH 3 +#define NOISEFILLSTART 24 +#define NOISEFILLWIDTH_5MS 1 +#define NOISEFILLSTART_5MS 12 +#define NOISEFILLWIDTH_2_5MS 1 +#define NOISEFILLSTART_2_5MS 6 + +/* MDCT */ +#ifdef ENABLE_HR_MODE +# define TWIDDLE ((Word32)0x5a82799a) +#else +# define TWIDDLE WORD322WORD16(0x5a82799a) +#endif +#define MDCT_MEM_LEN_MAX (MAX_LEN - ((180 * MAX_LEN) / 480)) + +/* TNS */ +#define TNS_NUMFILTERS_MAX 2 +#define TNS_COEF_RES 17 +#define INDEX_SHIFT 8 +#define NSUBDIV 3 +#define MAXLAG 8 + +/* OLPA/LTPF */ +#define LEN_12K8 128 +#define LEN_6K4 64 +#define MIN_PITCH_6K4 17 +#define MAX_PITCH_6K4 114 +#define RANGE_PITCH_6K4 98 +#define MIN_PITCH_12K8 32 +#define MAX_PITCH_12K8 228 +#define RES2_PITCH_12K8 157 +#define RES4_PITCH_12K8 127 +#define LTPF_MEMIN_LEN (MAX_PITCH_12K8 + 4) +#define M_LTPF 24 +#define LTPF_MEM_X_LEN (MAX_LEN + MAX_LEN / 40 - 2) +#define LTPF_MEM_Y_LEN (MAX_LEN + CEILING(MAX_PITCH_12K8 * MAX_LEN, 128) + (MAX_LEN / 80)) + +/* PLC */ +#ifdef CR9_I_INC_TDC_FADEOUT_LEN +# define PLC_FADEOUT_TYPE_1_IN_MS 200 +#endif +#define PLC_FADEOUT_IN_MS 60 /* fade-out to zero in ms for TD-PLC and NS, minimum value is 20 */ + +# ifdef CR8_A_PLC_FADEOUT_TUNING + /* table settings */ +# define PLC2_FADEOUT_IN_MS_MIN 30 /* table min */ +# define PLC2_FADEOUT_IN_MS_MAX 140 /* table max */ +# define PLC2_FADEOUT_RES 10 /* 10 ms steps used in fade tables */ + +/* current settings */ +# define PLC2_FADEOUT_LONG_IN_MS 120 +# define PLC2_FADEOUT_IN_MS 30 /* 0 uses original constants for PLC2 + -1 uses TDC::PLC_FADEOUT_IN_MS as basis for a PLC2 macro-re-calculation + 30..140 will use a separate settings for PLC2 fadeout + 30: P800 short fade optimization + 120: Mushra optimized fade */ +#else +# define PLC2_FADEOUT_IN_MS 30 /* 0 uses original fixed values for PLC2 + -1 uses PLC_FADEOUT_IN_MS as basis for a PLC2 macro-re-calculation + 30..100 uses separate setting for PLC2 */ +#endif + + + +#define PLC4_TRANSIT_END_IN_MS PLC_FADEOUT_IN_MS /* end of transition time for noise substitution */ +#define PLC4_TRANSIT_START_IN_MS 20 /* begin of transition time for noise substitution for voiced signals */ +#define PLC34_ATTEN_FAC_100_FX 0x4000 /* attenuation factor for NS and TDC @ 10 ms (0.5000)*/ +#define PLC34_ATTEN_FAC_050_FX 0x5A83 /* attenuation factor for NS and TDC @ 5.0 ms (0.7071)*/ +#define PLC34_ATTEN_FAC_025_FX 0x6BA3 /* attenuation factor for NS and TDC @ 2.5 ms (0.8409)*/ +#ifdef CR8_G_ADD_75MS +#define PLC34_ATTEN_FAC_075_FX 0x4C1C /* attenuation factor for NS and TDC @ 7.5 ms (0.5946) */ +#endif +#define PLC3_HPBLENDTHROTTLE 30 /* higher numbers increase throttled blending from hp filtered to unfiltered uv excitation (0 is no throttle) */ + +#define MAX_PITCH_8K (CEILING((MAX_PITCH_12K8 * 8000), (12800))) /*NB was a risky MACRO at 0.5 border !!, */ +#define MAX_PITCH_16K ((MAX_PITCH_12K8 * 16000) / (12800)) /* exact integer */ +#define MAX_PITCH_24K \ + (CEILING((MAX_PITCH_12K8 * 24000), (12800))) /* was a risky MACRO truncation at 0.5 border !! , */ +#define MAX_PITCH_32K ((MAX_PITCH_12K8 * 32000) / (12800)) /* exact integer */ +#define MAX_PITCH_48K ((MAX_PITCH_12K8 * 48000) / (12800)) /* exact integer */ + +#ifdef ENABLE_HR_MODE +# define MAX_PITCH_96K ((MAX_PITCH_12K8 * 96000) / (12800)) /* exact integer */ +#endif + +#ifdef ENABLE_HR_MODE +# define MAX_PITCH MAX_PITCH_96K +#elif defined(SUBSET_FB) +# define MAX_PITCH MAX_PITCH_48K +#elif defined(SUBSET_SWB) +# define MAX_PITCH MAX_PITCH_32K +#elif defined(SUBSET_SSWB) +# define MAX_PITCH MAX_PITCH_24K +#elif defined(SUBSET_WB) +# define MAX_PITCH MAX_PITCH_16K +#elif defined(SUBSET_NB) +# define MAX_PITCH MAX_PITCH_8K +#endif + + +/* macri MAX_LEN_PCM_PLC is used for WC memory size checking + DYN_MAX_LEN_PCM_PLC(fs) is used by static memory buffers + */ +#define MAX_LEN_PCM_PLC (MAX_PITCH + MAX_LEN) + +#define TDC_L_FIR_HP 11 +#define TDC_L_FIR_LP 11 + +#define BASE_LPROT 512 /* BASE Lprot set to 512 for 32 kHz sampling */ + +#define LPROT48K (BASE_LPROT * 48 / 32) /* Fs based Lprot */ +#define LPROT40K (BASE_LPROT * 40 / 32) /* For Fs == 48000 only use 0 - 20000 Hz in 8 bands */ +#define LPROT32K BASE_LPROT +#define LPROT24K (BASE_LPROT * 24 / 32) +#define LPROT16K (BASE_LPROT * 16 / 32) +#define LPROT8K (BASE_LPROT * 8 / 32) + +/* #define PHECU_XFP_LA 1 */ /* Original soluiton xfp generated with 1ms look ahead into MDCT memory + ctrl.PhECU.LA = 0.001 * ctrl.fs; */ +/* #define PHECU_XFP_LA 4 */ /* Option with some lookahead 1/4 ms look ahead into MDCT memory + ctrl.PhECU.LA = 0.001 * ctrl.fs / 4; */ +#define PHECU_XFP_LA \ + 0 /* Option without lookahead 0 ms look ahead into MDCT memory \ + ctrl.PhECU.LA = 0; */ + +#if (PHECU_XFP_LA == 0) + +# define PHECU_LA_48K 0 /* 0 ms */ +# define PHECU_LA_32K 0 /* 0 ms */ +# define PHECU_LA_24K 0 /* 0 ms */ +# define PHECU_LA_16K 0 /* 0 ms */ +# define PHECU_LA_8K 0 /* 0 ms */ + +# define MAX_PHECU_LA (0) + +#else +# if (PHECU_XFP_LA == 4) + +# define PHECU_LA_48K (48 / 4) /* 0.25 ms */ +# define PHECU_LA_32K (32 / 4) /* 0.25 ms */ +# define PHECU_LA_24K (24 / 4) /* 0.25 ms */ +# define PHECU_LA_16K (16 / 4) /* 0.25 ms */ +# define PHECU_LA_8K (8 / 4) /* 0.25 ms */ + +# define MAX_PHECU_LA (MAX_LEN / 10 / 4) + +# else + +# define PHECU_LA_48K 48 /* 1 ms */ +# define PHECU_LA_32K 32 /* 1 ms */ +# define PHECU_LA_24K 24 /* 1 ms */ +# define PHECU_LA_16K 16 /* 1 ms */ +# define PHECU_LA_8K 8 /* 1 ms */ + +# define MAX_PHECU_LA (MAX_LEN / 10) + +# endif +#endif + + +/* (PHECU_LA_48K == 0) */ + +#define COPY_LEN_8K 16 +#define COPY_LEN_16K 32 +#define COPY_LEN_24K 48 +#define COPY_LEN_32K 64 +#define COPY_LEN_48K 96 + +#define OLA_LEN_8K 14 +#define OLA_LEN_16K 28 +#define OLA_LEN_24K 42 +#define OLA_LEN_32K 56 +#define OLA_LEN_48K 84 + +#define LPROT48K_RED LPROT40K /* limit peak searched part of spectrum for FB */ +#define LPROT32K_RED LPROT32K /* limit peak searched part of spectrum for SWB */ +#define LPROT24K_RED LPROT24K /* limit peak searched part of spectrum for HQ */ +#define LPROT16K_RED LPROT16K /* limit peak searched part of spectrum for SQ */ +#define LPROT8K_RED LPROT8K /* limit peak searched part of spectrum for NB */ + +#define INV_LPROT48K_Q22 5461 /* round(2^22/LPROT48K) , 1/6 */ +#define INV_LPROT32K_Q22 8192 /* round(2^22/LPROT32K) , 1/4 */ +#define INV_LPROT24K_Q22 10923 /* round(2^22/LPROT24K) , 1/3 */ +#define INV_LPROT16K_Q22 16384 /* round(2^22/LPROT16K) , 1/2 */ +#define INV_LPROT8K_Q22 32767 /* round(2^22/LPROT8K) , 1/1 */ + +#define LGW48K 8 /* 8 bands defined , but may the same frequency groups as for SWB(32k) */ +#define LGW32K 7 +#define LGW24K 6 +#define LGW16K 5 +#define LGW8K 4 + +#define MAX_LGW 9 /* LGW48K + 1 !! */ + +#define UNINIT_OR_UNSAFE_OOLD_SENTINEL -32768 +#define LTOT_INIT_FLAG -32768 +#define LTOT_MIN_MAN 1 /* lowest possible energy value */ +#define LTOT_MIN_EXP -61 /* L_tot= LTOT_MIN_MAN*2^(LTOT_MIN_EXP-31) */ +#define GRP_SHAPE_INIT 0 /* Q15 */ + +#define TRANA_TIME 4 /* Transient analysis length in ms */ +#define LTRANA48K (48000 * TRANA_TIME / 1000) +#define LTRANA32K (32000 * TRANA_TIME / 1000) +#define LTRANA24K (24000 * TRANA_TIME / 1000) +#define LTRANA16K (16000 * TRANA_TIME / 1000) +#define LTRANA8K (8000 * TRANA_TIME / 1000) + +#define MAX_PLOCS ((MAX_LPROT / 4) + 1) /* maximum number of spectral peaks to be searched */ +#define QUOT_LPR_LTR 4 + +#define BETA_MUTE_FAC_INI 16384 /* Q15, initial noise attenuation factor */ + +#define OFF_FRAMES_LIMIT 30 /* Hard limit to a maximum of 300ms of burst decay frames */ + +#define Lprot_hamm_len2_48k (3 * 48) +#define Lprot_hamm_len2_32k (3 * 32) +#define Lprot_hamm_len2_24k (3 * 24) +#define Lprot_hamm_len2_16k (3 * 16) +#define Lprot_hamm_len2_8k (3 * 8) + +#define FRAME_TIME 10 /* Frame length in ms */ + +#define L_FRAME48K (48000 * FRAME_TIME / 1000) +#define L_FRAME32K (32000 * FRAME_TIME / 1000) +#define L_FRAME24K (24000 * FRAME_TIME / 1000) +#define L_FRAME16K (16000 * FRAME_TIME / 1000) +#define L_FRAME8K (8000 * FRAME_TIME / 1000) + +#ifdef DISABLE_PLC +# define MAX_LTRANA 0 +# define MAX_LPROT LPROT48K +# define MAX_L_FRAME L_FRAME48K +# define MAX_LPROT_RED LPROT48K_RED +#else + +# ifdef SUBSET_UB +# define MAX_LPROT LPROT48K /* Max length of protype frame for buffer allocation */ +# define MAX_LPROT_RED LPROT48K_RED /* stack alloc peak searched part */ +# define MAX_LTRANA LTRANA48K +# define MAX_L_FRAME L_FRAME48K +# elif defined(SUBSET_FB) +# define MAX_LPROT LPROT48K /* Max length of protype frame for buffer allocation */ +# define MAX_LPROT_RED LPROT48K_RED /* stack alloc peak searched part */ +# define MAX_LTRANA LTRANA48K +# define MAX_L_FRAME L_FRAME48K +# elif defined(SUBSET_SWB) +# define MAX_LPROT LPROT32K +# define MAX_LPROT_RED LPROT32K_RED /* stack alloc peak searched part */ +# define MAX_LTRANA LTRANA32K +# define MAX_L_FRAME L_FRAME32K +# elif defined(SUBSET_SSWB) +# define MAX_LPROT LPROT24K +# define MAX_LPROT_RED LPROT24K_RED /* stack alloc peak searched part */ +# define MAX_LTRANA LTRANA24K +# define MAX_L_FRAME L_FRAME24K +# elif defined(SUBSET_WB) +# define MAX_LPROT LPROT16K +# define MAX_LPROT_RED LPROT16K_RED /* stack alloc peak searched part */ +# define MAX_LTRANA LTRANA16K +# define MAX_L_FRAME L_FRAME16K +# elif defined(SUBSET_NB) +# define MAX_LPROT LPROT8K +# define MAX_LPROT_RED LPROT8K_RED /* stack alloc peak searched part */ +# define MAX_LTRANA LTRANA8K +# define MAX_L_FRAME L_FRAME8K +# endif + +#endif /* #ifdef DISABLE_PLC */ + +#define INV_L_FRAME48K_Q15 32768 / L_FRAME48K +#define INV_L_FRAME32K_Q15 32768 / L_FRAME32K +#define INV_L_FRAME24K_Q15 32768 / L_FRAME24K +#define INV_L_FRAME16K_Q15 32768 / L_FRAME16K +#define INV_L_FRAME8K_Q15 32768 / L_FRAME8K + +#define MDCT_MEM_LEN_48 (L_FRAME48K - ((180 * L_FRAME48K) / 480)) + +#define R1_48 690 +#define R2_48 420 +#define R1_16 230 +#define R2_16 140 +#define R1_25 368 +#define R2_25 224 + +#define MAX_LEN_PCM_PLC_TOT (MAX_LEN_PCM_PLC) /* TDC_pcm_buff */ +#define MAX_WIN_PRE_TDA (0) /* not in RAM any longer , now stored in ROM only as PhECU_wins[fs_idx][1] */ + +#define MAX_PLCMETH 1 + +/* Scratch buffer defines */ +#define scratchBuffer_ACTIVE +#ifdef ENABLE_HR_MODE +# define SCRATCH_BUF_LEN_ENC (4 * MAX_LEN + 32 + 32 + 4 * MAX_LEN + 3 * MAX_LEN + MAX_RESBITS_LEN_32BIT_ALIGN) +# define SCRATCH_BUF_LEN_ENC_CURRENT_SCRATCH (4 * MAX_LEN + 8 * 60 + MAX_LEN) +#else +# define SCRATCH_BUF_LEN_ENC (4 * MAX_LEN + 32 + 32 + 2 * MAX_LEN + 3 * MAX_LEN + MAX_RESBITS_LEN_32BIT_ALIGN) +# define SCRATCH_BUF_LEN_ENC_CURRENT_SCRATCH (4 * MAX_LEN) +#endif + +#define SCRATCH_BUF_LEN_ENC_TOT (SCRATCH_BUF_LEN_ENC + SCRATCH_BUF_LEN_ENC_CURRENT_SCRATCH) + +#ifdef ENABLE_HR_MODE +# define SCRATCH_BUF_LEN_DEC (4 * MAX_LEN + MAX_RESBITS_LEN_32BIT_ALIGN + 32 + 32 + 4 * MAX_LEN + 32 + 128 + 128) +#else +# define SCRATCH_BUF_LEN_DEC (4 * MAX_LEN + 2 * MAX_LEN + 32 + 32 + 2 * MAX_LEN + 32 + 128 + 128) +#endif +#define SCRATCH_BUF_LEN_DEC_CURRENT_SCRATCH (2 * MAX_LGW + 8 * MAX_LPROT + 12 * MAX_L_FRAME) +#ifdef ENABLE_HR_MODE +# define SCRATCH_BUF_LEN_DEC_TOT (SCRATCH_BUF_LEN_DEC + (4 * HR_MODE_SCRATCH_SIZE) + SCRATCH_BUF_LEN_DEC_CURRENT_SCRATCH) +#else +# define SCRATCH_BUF_LEN_DEC_TOT (SCRATCH_BUF_LEN_DEC + SCRATCH_BUF_LEN_DEC_CURRENT_SCRATCH) +#endif + +#define ADVACED_PLC_SIZE \ + (sizeof(AplcSetup) + (4 + 2) * MAX_PLOCS + 2 * MAX_LEN_PCM_PLC_TOT + 0 * MAX_LPROT + 2 * MDCT_MEM_LEN_MAX + \ + 2 * MAX_WIN_PRE_TDA) +/* ERI : Correct this sum after ROM/RAM , joint RAM optimizations */ + + +#define ENC_MAX_SIZE (sizeof(LC3PLUS_Enc) + MAX_CHANNELS * (sizeof(EncSetup) + 6 * MDCT_MEM_LEN_MAX)) +#define DEC_MAX_SIZE \ + (sizeof(LC3PLUS_Dec) + MAX_CHANNELS * (sizeof(DecSetup) + ADVACED_PLC_SIZE + 2 * LTPF_MEM_X_LEN + 2 * LTPF_MEM_Y_LEN + \ + 2 * MDCT_MEM_LEN_MAX + 2 * MAX_BW)) + +#if (defined(_M_ARM) || defined(__CC_ARM) || defined(__TMS470__) || defined(__arm__) || defined(__aarch64__)) && \ + (defined(__TARGET_FEATURE_NEON) || defined(__ARM_NEON) || defined(__ARM_NEON__) || defined(__ARM_AARCH64_NEON__)) +# define ALIGNMENT_DEFAULT 16 +#elif defined(__bfin__) +# define ALIGNMENT_DEFAULT 4 +#else +# define ALIGNMENT_DEFAULT 8 +#endif + +/* RAM_ALIGN keyword causes memory alignment of global variables. */ +#if defined(__GNUC__) +# define RAM_ALIGN __attribute__((aligned(ALIGNMENT_DEFAULT))) +#elif defined(__CC_ARM) +# define RAM_ALIGN __align(ALIGNMENT_DEFAULT) +#elif defined(__ANALOG_EXTENSIONS__) +# define RAM_ALIGN +# pragma pack(ALIGNMENT_DEFAULT) +#elif defined(_MSC_VER) +# define RAM_ALIGN __declspec(align(ALIGNMENT_DEFAULT)) +#else +# define RAM_ALIGN +#endif + +#define scratchAlign(ptr, offset) (void *)(((uintptr_t)(ptr) + (offset) + 0x3) & ~0x3) + + +/* some configurations leave empty translation units. */ +extern int fix_empty_translation_unit_warning; + +#define FIX_IVAS_LC3PLUS_DUPLICATES +#ifdef FIX_IVAS_LC3PLUS_DUPLICATES +#define Tab_esc_nb Tab_esc_nb_lc3plus +#define POW_ATT_TABLE0 POW_ATT_TABLE0_lc3plus +#define POW_ATT_TABLE1 POW_ATT_TABLE1_lc3plus +#define InvIntTable InvIntTable_lc3plus +#define SineTable320 SineTable320_lc3plus +#define RotVector_320 RotVector_320_lc3plus +#define RotVector_480 RotVector_480_lc3plus +#define SineWindow20 SineWindow20_lc3plus +#define SineWindow40 SineWindow40_lc3plus +#define SineWindow60 SineWindow60_lc3plus +#define SineWindow80 SineWindow80_lc3plus +#define SineWindow120 SineWindow120_lc3plus +#define SineWindow160 SineWindow160_lc3plus +#define SineWindow180 SineWindow180_lc3plus +#define SineWindow320 SineWindow320_lc3plus +#define BASOP_getTables BASOP_getTables_lc3plus +#define ISqrt16 ISqrt16_lc3plus +#define getScaleFactor16 getScaleFactor16_lc3plus +#define Norm32Norm Norm32Norm_lc3plus +#define Scale_sig Scale_sig_lc3plus +#define Copy_Scale_sig Copy_Scale_sig_lc3plus +#define get_size_mpvq_calc_offset_fx get_size_mpvq_calc_offset_fx_lc3plus +#endif + +#define FIX_IVAS_LC3PLUS_WARNINGS + +#endif diff --git a/lib_lc3plus/detect_cutoff_warped_fx.c b/lib_lc3plus/detect_cutoff_warped_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..adbf04afad360ad7daafc39ab5eaa1b81836f41b --- /dev/null +++ b/lib_lc3plus/detect_cutoff_warped_fx.c @@ -0,0 +1,124 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" +#include "rom_basop_util_lc3plus.h" + +void processDetectCutoffWarped_fx(Word16 *bw_idx, Word32 *d2_fx, Word16 d2_fx_exp, Word16 fs_idx, Word16 frame_dms) +{ + + Dyn_Mem_Deluxe_In( + Counter iBand; + Word32 d2_fx_sum; + Word32 d2_fx_mean; + Word32 delta_energy; + Word16 d2_fx_sum_exp; + Word16 d2_fx_mean_exp; + Word16 nrg_below_thresh; + Word16 counter; + Word16 brickwall; + Word16 stop; + Word16 brickwall_dist; + const Word16 *warp_idx_start, *warp_idx_stop, *bw_brickwall_dist; + ); + + SWITCH (frame_dms) + { + case 25: + warp_idx_start = BW_warp_idx_start_all_2_5ms[fs_idx - 1]; move16(); + warp_idx_stop = BW_warp_idx_stop_all_2_5ms[fs_idx - 1]; move16(); + bw_brickwall_dist = BW_brickwall_dist_2_5ms; + BREAK; + case 50: + warp_idx_start = BW_warp_idx_start_all_5ms[fs_idx - 1]; move16(); + warp_idx_stop = BW_warp_idx_stop_all_5ms[fs_idx - 1]; move16(); + bw_brickwall_dist = BW_brickwall_dist_5ms; + BREAK; +#ifdef CR8_G_ADD_75MS + case 75: + warp_idx_start = BW_warp_idx_start_all_7_5ms[fs_idx - 1]; move16(); + warp_idx_stop = BW_warp_idx_stop_all_7_5ms[fs_idx - 1]; move16(); + bw_brickwall_dist = BW_brickwall_dist_7_5ms; + BREAK; +#endif + default: /* 100 */ + warp_idx_start = BW_warp_idx_start_all[fs_idx - 1]; move16(); + warp_idx_stop = BW_warp_idx_stop_all[fs_idx - 1]; move16(); + bw_brickwall_dist = BW_brickwall_dist; + BREAK; + } + + counter = fs_idx; + DO + { + + /* counter is 0...num_idxs-1 */ + counter = sub(counter, 1); + + /* always code the lowest band (NB), skip check against threshold if counter == -1 */ + IF (counter < 0) + { + BREAK; + } + + d2_fx_mean = 0; move32(); + d2_fx_mean_exp = 0; move16(); + + iBand = warp_idx_start[counter]; move16(); + d2_fx_sum = d2_fx[iBand]; move32(); + d2_fx_sum_exp = d2_fx_exp; move16(); + + iBand++; + FOR (; iBand <= warp_idx_stop[counter]; iBand++) + { + d2_fx_sum = BASOP_Util_Add_Mant32Exp_lc3plus(d2_fx[iBand], d2_fx_exp, d2_fx_sum, d2_fx_sum_exp, &d2_fx_sum_exp); + } + /* Energy-sum */ + d2_fx_mean = Mpy_32_16_lc3plus(d2_fx_sum, InvIntTable[add(sub(warp_idx_stop[counter], warp_idx_start[counter]), 1)]); + d2_fx_mean_exp = d2_fx_sum_exp; move16(); + + /* check if above threshold */ + nrg_below_thresh = BASOP_Util_Cmp_Mant32Exp_lc3plus(BW_thresh_quiet[counter], BW_thresh_quiet_exp, d2_fx_mean, + d2_fx_mean_exp); /* true if firstNumber > secondNumber */ + } + WHILE (nrg_below_thresh > 0) + ; + + *bw_idx = add(1, counter); move16(); + + /* addtional check for brickwall characteristic */ + IF (sub(fs_idx, *bw_idx) > 0) + { + brickwall = 0; move16(); + stop = add(warp_idx_start[counter + 1], 1); + brickwall_dist = bw_brickwall_dist[counter + 1]; + + FOR (iBand = stop; iBand >= sub(stop, brickwall_dist); iBand--) + { + /* Band(x) > Band(x-3)*Thr */ + delta_energy = + L_sub(Mpy_32_16_lc3plus(d2_fx[iBand - brickwall_dist], BW_thresh_brickwall[counter + 1]), d2_fx[iBand]); + if (delta_energy > 0) + { + brickwall = 1; move16(); + } + IF (brickwall) + { + BREAK; + } + } + if (brickwall == 0) + { + *bw_idx = fs_idx; + } + } + + Dyn_Mem_Deluxe_Out(); +} + diff --git a/lib_lc3plus/dynmem.c b/lib_lc3plus/dynmem.c new file mode 100644 index 0000000000000000000000000000000000000000..65e157d0a19674301e84bd729035143ff4f1d153 --- /dev/null +++ b/lib_lc3plus/dynmem.c @@ -0,0 +1,288 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +/* + Tool for dynamic memory estimation + Anisse Taleb, November 2003 + +*/ + +/* turn off stdlib function warnings in visual studio */ +#ifdef _MSC_VER +#define _CRT_SECURE_NO_WARNINGS +#endif + +#include +#include +#include +#include +#include + +#include "dynmem.h" + +#define MAX_FUNC_NAME_LENGTH 128 + + + +struct C_Path{ + char func_name[MAX_FUNC_NAME_LENGTH]; + long mem_usage; + long mem_usage_acc; + struct C_Path *next; + struct C_Path *parent; +}; + + +typedef struct C_Path C_Path; + +static C_Path *Max_Mem_path; /* Snap shot of the maximum memory usage path */ +static C_Path *Head_path; +static C_Path *Curr_path; /* Current code path */ + + +static long Max_mem_usage; + +static C_Path *Static_mem_head; +static C_Path *Static_mem_curr; + +/* + * initialisation. Must be called at start, sets up all the + * structures and resets counters. + * + * Called externally. + */ + +static void path_free(C_Path * path) +{ + C_Path *path_end,*tmp; + path_end = path; + + if(path == NULL) return; + /* find last node */ + while(path_end->next != NULL) path_end = path_end->next; + + /* walk back */ + while(path_end != NULL) { + tmp = path_end; + path_end = path_end->parent; + free(tmp); + } + +} +static void path_save(void) +{ + C_Path * node; + C_Path * node_save; + C_Path * previous; + /* free the old path */ + path_free(Max_Mem_path); + Max_Mem_path = NULL; + /* */ + + Max_Mem_path = (C_Path *) malloc(sizeof(C_Path)); + + node = Head_path; + node_save = Max_Mem_path; + previous = NULL; + while(node != NULL){ + + strcpy(node_save->func_name,node->func_name); + node_save->mem_usage = node->mem_usage; + node_save->mem_usage_acc = node->mem_usage_acc; + + node_save->parent = previous; + node_save->next = NULL; + + if(node->next != NULL) { + node_save->next = (C_Path *) malloc(sizeof(C_Path)); + } + node = node->next; + previous = node_save; + node_save = node_save->next; + } while(node != NULL); + +} + +void P_Dyn_Mem_Init(void) +{ + + /* initialize the path */ + Head_path = (C_Path *) malloc(sizeof(C_Path)); + strcpy(Head_path->func_name,"---Top---"); + Head_path->mem_usage = 0; + Head_path->mem_usage_acc = 0; /*memory usage accumulator */ + Head_path->parent = NULL; + Head_path->next = NULL; + + Curr_path = Head_path; + /* Initilaize the memory consumptions */ + Max_mem_usage = 0; + Max_Mem_path = NULL; +} + +void P_Dyn_Mem_In(const char *func_name, + long mem_usage) +{ +#ifdef DEBUG_DYNMEM + printf( "Entering: %s\n", func_name ); +#endif + + /* Enter a new function, push on the stack */ + if(Curr_path->next != NULL) { + fprintf(stderr,"\n Something went wrong !!"); + exit(0); + + } + Curr_path->next = (C_Path*) malloc (sizeof(C_Path)); + + if(Curr_path->next == NULL) { + fprintf(stderr,"\n Can't allocate memory"); + exit(0); + } + + Curr_path->next->parent = Curr_path; + Curr_path = Curr_path->next; + Curr_path->next = NULL; + /* save function name */ + strcpy(Curr_path->func_name,func_name); + /* save memory usage */ + Curr_path->mem_usage = mem_usage; + /* update memory usage accumulator */ + Curr_path->mem_usage_acc = Curr_path->parent->mem_usage_acc + mem_usage; +} + +/* Add memory size to current function */ +void P_Dyn_Mem_Add(long mem_usage) +{ +#ifdef DEBUG_DYNMEM + printf( "Staying in: %s\n", Curr_path->func_name); +#endif + + /* Staying in the current function, nothing to push */ + + /* save memory usage */ + Curr_path->mem_usage = Curr_path->mem_usage + mem_usage; + /* update memory usage accumulator */ + Curr_path->mem_usage_acc = Curr_path->mem_usage_acc + mem_usage; +} + + +/* before any return */ + +void P_Dyn_Mem_Out(void) +{ + C_Path *tmp; + if(Curr_path->mem_usage_acc > Max_mem_usage) { + /* set new memory usage record */ + Max_mem_usage = Curr_path->mem_usage_acc; + /* save snap shot */ + path_save(); + } + +#ifdef DEBUG_DYNMEM + printf( "Exiting: %s\n", Curr_path->func_name ); +#endif + + /* delete last node */ + tmp = Curr_path; + + Curr_path = Curr_path->parent; + Curr_path->next = NULL; + free(tmp); +} + + +/* Write data and exit */ + +void P_Dyn_Mem_Exit(void) +{ + /*FILE *f_mem_statistics;*/ + C_Path *node; + /*f_mem_statistics = fopen("mem_stat.txt","wt"); + fprintf(f_mem_statistics,"\n Maximum dynamic memory usage = %ld b, %ld kW \n Critical Memory Usage Path", Max_mem_usage, Max_mem_usage/(1000*2));*/ + /* fprintf(stderr,"\n Maximum dynamic memory usage = %ld kWords (%ld bytes)\n Critical Memory Usage Path", Max_mem_usage/(1000*2),Max_mem_usage); */ + fprintf(stderr,"\n Maximum dynamic memory usage = %.2f kWords (%ld bytes)\n Critical Memory Usage Path", (ceil((float)Max_mem_usage/20.f)/100.f), Max_mem_usage); + + node = Max_Mem_path; + while (node != NULL) { + /*fprintf(f_mem_statistics,"\n %-30s %10ld bytes (+ %10ld bytes)",node->func_name, node->mem_usage_acc, node->mem_usage);*/ + fprintf(stderr,"\n %-30s %10ld bytes (+ %10ld bytes)",node->func_name, node->mem_usage_acc, node->mem_usage); + node=node->next; + } + + /*fclose(f_mem_statistics);*/ + fprintf(stderr,"\n"); + +#ifdef CTEST_MEASUREMENTS + printf("%.3f\n", "dynMem [kWords]", "numeric/float", Max_mem_usage/(1000.0*2)); +#endif + + path_free(Max_Mem_path); + path_free(Head_path); +} + +void P_Dyn_Mem_Exit_noprint(void) +{ + path_free(Max_Mem_path); + path_free(Head_path); +} +void P_Sta_Mem_Init(void) +{ + /* initialize the head object */ + Static_mem_head = (C_Path *) malloc(sizeof(C_Path)); + strcpy(Static_mem_head->func_name,"---Top---"); + Static_mem_head->mem_usage = 0; + Static_mem_head->mem_usage_acc = 0; + Static_mem_head->parent = NULL; + Static_mem_head->next = NULL; + Static_mem_curr = Static_mem_head; +} + +void P_Sta_Mem_Add(const char *func_name, + long mem_usage) +{ + /* Enter a new function, push on the stack */ + Static_mem_curr->next = (C_Path*) malloc (sizeof(C_Path)); + Static_mem_curr->next->parent = Static_mem_curr; + Static_mem_curr = Static_mem_curr->next; + Static_mem_curr->next = NULL; + /* save function name */ + strcpy(Static_mem_curr->func_name,func_name); + /* save memory usage */ + Static_mem_curr->mem_usage = mem_usage; + /* update memory usage accumulator */ + Static_mem_curr->mem_usage_acc = Static_mem_curr->parent->mem_usage_acc + mem_usage; +} + +void P_Sta_Mem_Exit(void) +{ + C_Path *node; + /* fprintf(stderr,"\n Static memory usage = %ld kWords (%ld bytes)\n Detailed Memory Usage", Static_mem_curr->mem_usage_acc/(1000*2),Static_mem_curr->mem_usage_acc); */ + fprintf(stderr,"\n Static memory usage = %.2f kWords (%ld bytes)\n Detailed Memory Usage", (ceil((float)Static_mem_curr->mem_usage_acc/20.f)/100.f),Static_mem_curr->mem_usage_acc); + + node = Static_mem_head->next; + while (node != NULL) { + fprintf(stderr,"\n %-30s %10ld bytes (+ %10ld bytes)",node->func_name, node->mem_usage_acc, node->mem_usage); + node=node->next; + } + + fprintf(stderr,"\n"); + +#ifdef CTEST_MEASUREMENTS + printf("%.3f\n", "statMem [kWords]", "numeric/float", Static_mem_curr->mem_usage_acc/(1000.0*2)); +#endif + + path_free(Static_mem_head); +} + +void P_Sta_Mem_Exit_noprint(void) +{ + path_free(Static_mem_head); +} diff --git a/lib_lc3plus/dynmem.h b/lib_lc3plus/dynmem.h new file mode 100644 index 0000000000000000000000000000000000000000..e81169a3379a3ab3e601f397bccbd00330e00c56 --- /dev/null +++ b/lib_lc3plus/dynmem.h @@ -0,0 +1,80 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#ifndef DYNMEM_H +#define DYNMEM_H + +#ifdef _MSC_VER +/* This disables warnings about anonymous temporary struct declarations */ +#pragma warning(disable:4115) +#pragma warning(disable:4116) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +void P_Dyn_Mem_Init(void); +void P_Dyn_Mem_In(const char *func_name, + long mem_usage); +void P_Dyn_Mem_Add(long mem_usage); +void P_Dyn_Mem_Out(void); +void P_Dyn_Mem_Exit(void); +void P_Dyn_Mem_Exit_noprint(void); + +void P_Sta_Mem_Init(void); +void P_Sta_Mem_Add(const char *func_name, + long mem_usage); +void P_Sta_Mem_Exit(void); +void P_Sta_Mem_Exit_noprint(void); + +#ifdef DONT_COUNT_MEM + +#define Dyn_Mem_Init() +#define Dyn_Mem_Exit() +#define Dyn_Mem_Exit_noprint() +#define Dyn_Mem_In(a,b) +#define Dyn_Mem_Add(b) +#define Dyn_Mem_Out() + +#define DYN_MEM_IN Dyn_Mem_In +#define DYN_MEM_ADD Dyn_Mem_Add +#define DYN_MEM_OUT Dyn_Mem_Out + +#define Sta_Mem_Init() +#define Sta_Mem_Exit() +#define Sta_Mem_Exit_noprint() +#define Sta_Mem_Add(a,b) + +#else /* DONT_COUNT_MEM */ + +#define Dyn_Mem_Init P_Dyn_Mem_Init +#define Dyn_Mem_Exit P_Dyn_Mem_Exit +#define Dyn_Mem_Exit_noprint P_Dyn_Mem_Exit_noprint +#define Dyn_Mem_In P_Dyn_Mem_In +#define Dyn_Mem_Add P_Dyn_Mem_Add +#define Dyn_Mem_Out P_Dyn_Mem_Out + +#define DYN_MEM_IN P_Dyn_Mem_In +#define DYN_MEM_ADD P_Dyn_Mem_Add +#define DYN_MEM_OUT P_Dyn_Mem_Out + +#define Sta_Mem_Init P_Sta_Mem_Init +#define Sta_Mem_Exit P_Sta_Mem_Exit +#define Sta_Mem_Exit_noprint P_Sta_Mem_Exit_noprint +#define Sta_Mem_Add P_Sta_Mem_Add + +#endif /* DONT_COUNT_MEM */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/lib_lc3plus/enc_entropy.c b/lib_lc3plus/enc_entropy.c new file mode 100644 index 0000000000000000000000000000000000000000..35dd8d95064901dd5061436dfbb808011ac35b6d --- /dev/null +++ b/lib_lc3plus/enc_entropy.c @@ -0,0 +1,173 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +static Word32 ac_enc_mux_st2VQ_cws( /* o: max 25 bits total codeword */ + const Word32 L_szA, /* i: max 22 bits */ + const Word32 L_szB, /* i: max 4 bits */ + const Word32 L_cwA, const Word32 L_cwB); + +void processEncoderEntropy(UWord8 *bytes, Word16 *bp_side, Word16 *mask_side, Word16 nbbits, Word16 targetBytes, + Word16 L_spec, Word16 BW_cutoff_bits, Word16 tns_numfilters, + Word16 lsbMode, Word16 lastnz, Word16 *tns_order, Word16 fac_ns_idx, Word16 gg_idx, + Word16 BW_cutoff_idx, Word16 *ltpf_idx, Word32 *L_scf_idx, Word16 bfi_ext, Word16 fs_idx) +{ + Word16 tmp; + Word32 L_tmp; + Word16 submode_LSB, submode_MSB, gain_MSBs; + Word32 L_gain_LSB; + Counter n; + UWord8 *ptr; + + Word16 lastnzTrigger[5] = {63, 127, 127, 255, 255}; + +#ifdef DYNMEM_COUNT + struct _dynmem + { + Word16 tmp; + Word32 L_tmp; + Word16 submode_LSB, submode_MSB, gain_MSBs; + Word32 L_gain_LSB; + Counter n; + UWord8 *ptr; + Word16 lastnzTrigger[5]; + }; + Dyn_Mem_In("processEncoderEntropy", sizeof(struct _dynmem)); +#endif + + /* Init */ + *bp_side = shr_pos(sub(nbbits, 1), 3); + *mask_side = shl(1, sub(8, sub(nbbits, shl_pos(*bp_side, 3)))); + ptr = bytes; + + basop_memset(bytes, 0, targetBytes * sizeof(*bytes)); + + /* Cutoff-detection */ + IF (BW_cutoff_bits > 0) + { + write_indice_backward(ptr, bp_side, mask_side, BW_cutoff_idx, BW_cutoff_bits); + } + + /* Encode last non-zero tuple */ + tmp = sub(14, norm_s(negate(L_spec))); + + IF (sub(bfi_ext, 1) == 0) + { + write_indice_backward(ptr, bp_side, mask_side, lastnzTrigger[fs_idx], tmp); + } + ELSE + { + write_indice_backward(ptr, bp_side, mask_side, sub(shr_pos(lastnz, 1), 1), tmp); + } + + /* Mode bit */ + write_bit_backward(ptr, bp_side, mask_side, lsbMode); + + /* Encode global-gain */ + write_indice_backward(ptr, bp_side, mask_side, gg_idx, 8); + + /* TNS on/off flag */ + FOR (n = 0; n < tns_numfilters; n++) + { + write_bit_backward(ptr, bp_side, mask_side, s_min(tns_order[n], 1)); + } + + /* LTPF on/off*/ + write_indice_backward(ptr, bp_side, mask_side, ltpf_idx[0], 1); + + /* Encode SCF VQ parameters - 1st stage (10 bits) */ + write_indice_backward(ptr, bp_side, mask_side, extract_l(L_scf_idx[0]), 5); /* stage1 LF 5 bits */ + write_indice_backward(ptr, bp_side, mask_side, extract_l(L_scf_idx[1]), 5); /* stage1 HF 5 bits */ + + /* Encode SCF VQ parameters - 2nd stage side-info (3-4 bits) */ + submode_MSB = shr_pos(extract_l(L_scf_idx[2]), 1); /* explicit tx */ + write_bit_backward(ptr, bp_side, mask_side, submode_MSB); /* submode MSB 1 explicit bit */ + submode_LSB = s_and(extract_l(L_scf_idx[2]), 0x1); /* for joint coding with shapeCw */ + gain_MSBs = extract_l(L_scf_idx[3]); /* all gain bits */ + L_gain_LSB = L_and(L_scf_idx[3], 0x1L); + gain_MSBs = shr(gain_MSBs, sns_gainLSBbits[L_scf_idx[2]]); + + ASSERT(gain_MSBs >= 0 && gain_MSBs < (1 << sns_gainMSBbits[L_scf_idx[2]])); /* ASSERT max 2 MSB(s) in gain bits */ + + write_indice_backward(ptr, bp_side, mask_side, gain_MSBs, + sns_gainMSBbits[L_scf_idx[2]]); /* adjgain or MSBs of adjGains 1-2 bits */ + write_bit_backward(ptr, bp_side, mask_side, extract_l(L_scf_idx[4])); /* shape LS 1 bit */ + + /* Encode SCF VQ parameters - 2nd stage data (24-25 bits) */ + IF (submode_MSB == 0) + { /* regular,regular_lf*/ + ASSERT(submode_MSB == 0); + + L_tmp = L_add(L_gain_LSB, 0); /* gain-LSB 0,1 for regular_lf, offset is 0 */ + if (submode_LSB == 0) + { + L_tmp = L_add(L_scf_idx[6], + sns_MPVQ_Sz[1][1]); /* shape B pos offset is 2 , upshifted two positions , 0..11 -> 2..13 */ + } + /* regular mode A,B indexes multiplexed, total 24.x bits MPVQ codeword section A + codeword for section B */ + L_tmp = ac_enc_mux_st2VQ_cws(sns_MPVQ_Sz[0][0], /* max 21.3 bits*/ + UL_addNsD(sns_MPVQ_Sz[0][1], sns_MPVQ_Sz[1][1]), /* max log2(14) bits */ + L_scf_idx[5] /* shapeA */, L_tmp /* shapeB joint with adjGainLSB */); + /* regular mode mode shape index total 1+23.9999 bits MPVQ codeword */ + ASSERT(L_tmp < (1L << 25)); + write_indice_backward(ptr, bp_side, mask_side, extract_l(L_tmp), 13); /* multiplex 13 bits */ + write_indice_backward(ptr, bp_side, mask_side, extract_l(L_shr_pos(L_tmp, 13)), 12); /* multiplex 12 bits */ + } + ELSE + { /* outlier near, outlier far */ + ASSERT(submode_MSB == 1); + L_tmp = L_scf_idx[5]; move32(); /* outlier near section assumed */ + if (submode_LSB != 0) + { /* outl_far */ + L_tmp = L_add(L_shl_pos(L_tmp, 1), L_gain_LSB); /* add lsb bit of Gain */ + L_tmp = L_add(L_tmp, sns_MPVQ_Sz[2][0]); /* outlier far section offset added */ + } + + ASSERT(L_tmp < (1L << 24)); + /* outlier mode shape index total 23.8536 ( + ~.14 ) bits as MPVQ codeword */ + write_indice_backward(ptr, bp_side, mask_side, extract_l(L_tmp), 12); /* multiplex 12 bits LSB*/ + write_indice_backward(ptr, bp_side, mask_side, extract_l(L_shr(L_tmp, 12)), 12); /* multiplex 12 bits MSBs */ + } + + /* LTPF data */ + IF (ltpf_idx[0] != 0) + { + write_indice_backward(ptr, bp_side, mask_side, ltpf_idx[1], 1); + write_indice_backward(ptr, bp_side, mask_side, ltpf_idx[2], 9); + } + + /* Encoder noise-fac */ + write_indice_backward(ptr, bp_side, mask_side, fac_ns_idx, 3); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +static __forceinline Word32 +ac_enc_mux_st2VQ_cws( /* o: max 25 bits total codeword */ + const Word32 L_szA, /* i: max 22 bits */ + const Word32 L_szB, /* i: max 4 bits 0..13 */ + const Word32 L_cwA, + const Word32 L_cwB) /* [0..13} corresponding to gains{0,1}, shapeB{0..11} or */ +{ + + Word32 L_cwTx; + /* L_cw_tx = L_cwB(21.z bits) * L_szA(3.y bits) + L_cwA(21.x bits)); */ + L_cwTx = (Word32)UL_Mpy_32_32( + (UWord32)L_cwB, (UWord32)L_szA); /* non-fractional 16x32 -> 32 may possibly also be used if available */ + L_cwTx = L_add(L_cwTx, L_cwA); + + ASSERT((L_szA * L_szB) <= 1 << 25); /* multiplexing only allowed up to 25 bits (+ leading sign) */ + ASSERT(L_cwTx >= 0 && L_cwTx <= 0x01ffFFff); /* max 25 bits allowed */ + UNUSED(L_szB); + + return L_cwTx; +} diff --git a/lib_lc3plus/enc_lc3.c b/lib_lc3plus/enc_lc3.c new file mode 100644 index 0000000000000000000000000000000000000000..f2276a2ed91c6f42f18fa9704e74ff0d0e421ef1 --- /dev/null +++ b/lib_lc3plus/enc_lc3.c @@ -0,0 +1,680 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" +#include // ToDo: probably to be removed + +static void Enc_LC3PLUS_Channel(LC3PLUS_Enc *encoder, int channel, int bits_per_sample, Word32 *s_in, UWord8 *bytes, + Word8 *scratchBuffer, int bfi_ext) +{ +#ifdef ENABLE_HR_MODE + Dyn_Mem_Deluxe_In(Word16 d_fx_exp; + Word16 gain_e, gain, quantizedGain, quantizedGainMin; + Word16 ener_fx_exp; + Word16 pitch, normcorr; + Word16 ltpf_bits; + Word16 tns_numfilters; + Word16 lsbMode, lastnz, BW_cutoff_idx; + Word16 gainChange, fac_ns_idx; + Word16 nBits, numResBits; + Word16 bp_side, mask_side; + Word16 s_12k8_len; + Word16 b_left; + Word32 * L_scf_idx; + Word32 * d_fx, *ener_fx; + Word16 * s_12k8, *int_scf_fx_exp, tns_order[TNS_NUMFILTERS_MAX], *indexes; + Word32 * q_d_fx24; + Word16 * scf; + Word16 * codingdata; + Word32 * scf_q, *int_scf_fx; + Word32 * s_in_scaled; + Word16 * s_in_scaled_lp; + UWord8 * resBits; + Word16 ltpf_idx[3]; + EncSetup * h_EncSetup; + Word8 * currentScratch; + Word16 hrmode; + ); +#else + Dyn_Mem_Deluxe_In(Word16 d_fx_exp; Word16 gain_e, gain, quantizedGain, quantizedGainMin; Word16 ener_fx_exp; + Word16 pitch, normcorr; Word16 ltpf_bits; Word16 tns_numfilters; + Word16 lsbMode, lastnz, BW_cutoff_idx; Word16 gainChange, fac_ns_idx; Word16 nBits, numResBits; + Word16 bp_side, mask_side; Word16 s_12k8_len; Word16 b_left; + + Word32 * L_scf_idx; Word32 * d_fx, *ener_fx; + Word16 * s_12k8, *int_scf_fx_exp, *q_d_fx16, *int_scf_fx, tns_order[TNS_NUMFILTERS_MAX], *indexes; + Word16 * scf, *scf_q; Word16 * codingdata; Word16 * s_in_scaled; UWord8 * resBits; + Word8 * currentScratch; Word16 ltpf_idx[3]; EncSetup * h_EncSetup;); +#endif /* ENABLE_HR_MODE */ + + h_EncSetup = encoder->channel_setup[channel]; + +#ifdef ENABLE_HR_MODE +# ifdef CR8_F_ADAPT_MDCT_DCT_PRECISION + hrmode = encoder->hrmode; +# endif +#endif /* CR8_F_ADAPT_MDCT_DCT_PRECISION */ + +#ifdef WMOPS + push_wmops("Encoder"); +#endif + + /* BUFFER INITIALISATION. Some buffers may overlap since they are not used in the whole encoding process */ + d_fx = scratchAlign(scratchBuffer, 0); /* Size = 4 * MAX_LEN bytes */ + L_scf_idx = scratchAlign( + d_fx, sizeof(*d_fx) * s_max(80, encoder->frame_length)); /* Size = 4 * SCF_MAX_PARAM -> aligned to 32 bytes */ + indexes = scratchAlign(L_scf_idx, + sizeof(*L_scf_idx) * SCF_MAX_PARAM); /* Size = 2 * TNS_NUMFILTERS_MAX * MAXLAG = 32 bytes */ + +#ifdef ENABLE_HR_MODE + q_d_fx24 = scratchAlign(indexes, sizeof(*indexes) * (TNS_NUMFILTERS_MAX * MAXLAG)); +#else + q_d_fx16 = scratchAlign(indexes, sizeof(*indexes) * (TNS_NUMFILTERS_MAX * MAXLAG)); /* Size = 2 * MAX_LEN bytes */ +#endif /* ENABLE_HR_MODE */ + +#ifdef ENABLE_HR_MODE + codingdata = + scratchAlign(q_d_fx24, sizeof(*q_d_fx24) * s_max(80, encoder->frame_length)); /* Size = 3 * MAX_LEN bytes */ +#else + codingdata = + scratchAlign(q_d_fx16, sizeof(*q_d_fx16) * s_max(80, encoder->frame_length)); /* Size = 3 * MAX_LEN bytes */ +#endif + +#ifdef ENABLE_HR_MODE + ener_fx = scratchAlign(q_d_fx24, 0); /* Size = 4 * MAX_BANDS_NUMBER = 256 bytes */ + s_in_scaled = scratchAlign(q_d_fx24, 0); /* Size = 2 * MAX_LEN bytes */ +#else + ener_fx = scratchAlign(q_d_fx16, 0); /* Size = 4 * MAX_BANDS_NUMBER = 256 bytes */ + s_in_scaled = scratchAlign(q_d_fx16, 0); /* Size = 2 * MAX_LEN bytes */ +#endif + +#ifdef ENABLE_HR_MODE + s_in_scaled_lp = (Word16 *)s_in_scaled; +#endif + +#ifdef ENABLE_HR_MODE + /* allocate memory for residual bits */ + if (encoder->hrmode) + { + resBits = scratchAlign(codingdata, sizeof(*codingdata) * (3 * s_max(80, encoder->frame_length) / 2)); + } + else +#endif /* #ifdef ENABLE_HR_MODE */ + { + resBits = scratchAlign(codingdata, + sizeof(*codingdata) * (3 * s_max(80, encoder->frame_length) / 2)); /* Size = MAX_LEN bytes */ + } + + { +#ifdef ENABLE_HR_MODE + currentScratch = + scratchAlign(resBits, sizeof(*resBits) * MAX_RESBITS_LEN); /* Size = 4 * MAX_LEN */ +#else + currentScratch = + scratchAlign(resBits, sizeof(*resBits) * s_max(80, encoder->frame_length)); /* Size = 4 * MAX_LEN */ +#endif /* #ifdef ENABLE_HR_MODE */ + } + + s_12k8 = scratchAlign( + s_in_scaled, + sizeof(*s_in_scaled) * + s_max(80, encoder->frame_length)); /* Size = 2 * (LEN_12K8 + 1) = 258 bytes -> aligned to 288 bytes */ + scf_q = scratchAlign(ener_fx, sizeof(*ener_fx) * MAX_BANDS_NUMBER); /* Size = 2 * M */ + scf = scratchAlign(scf_q, sizeof(*scf_q) * M); /* Size = 2 * M */ + int_scf_fx = scratchAlign(scf, sizeof(*scf) * M); /* Size = 2 * MAX_BANDS_NUMBER = 128 bytes */ + int_scf_fx_exp = + scratchAlign(int_scf_fx, sizeof(*int_scf_fx) * MAX_BANDS_NUMBER); /* Size = 2 * MAX_BANDS_NUMBER = 128 bytes */ + + /* Scale 24-bit input data */ + IF (sub(bits_per_sample, 24) == 0) + { +#ifdef WMOPS + push_wmops("Scale_signal24"); +#endif + scale_signal24_fx(s_in, s_in_scaled, &h_EncSetup->x_exp, h_EncSetup->stEnc_mdct_mem, + encoder->stEnc_mdct_mem_len, h_EncSetup->r12k8_mem_in, encoder->r12k8_mem_in_len, + h_EncSetup->r12k8_mem_50, h_EncSetup->r12k8_mem_out, encoder->r12k8_mem_out_len, + h_EncSetup->mdct_mem32, encoder->frame_length, h_EncSetup->resamp_mem32, + h_EncSetup->olpa_mem_s12k8, &h_EncSetup->resamp_exp); +#ifdef WMOPS + pop_wmops(); +#endif + } + ELSE + { +#ifdef ENABLE_HR_MODE + Word16 *ip_buf = (Word16*)s_in; + Word32 i; + FOR(i = 0; i < encoder->frame_length; i++) + { + s_in_scaled[i] = L_deposit_h(ip_buf[i]); + } + h_EncSetup->x_exp = 15; move16(); +#else + memcpy(s_in_scaled, s_in, encoder->frame_length * sizeof(*s_in_scaled)); +#endif + } + +#ifdef WMOPS + push_wmops("Mdct"); +#endif + + /* currentScratch Size = 4 * MAX_LEN */ + processMdct_fx(s_in_scaled, h_EncSetup->x_exp, encoder->frame_length, +#ifdef ENABLE_HR_MODE +# ifdef CR8_F_ADAPT_MDCT_DCT_PRECISION + hrmode, +# endif +#endif + encoder->W_fx, encoder->W_size, + h_EncSetup->stEnc_mdct_mem, encoder->stEnc_mdct_mem_len, d_fx, &d_fx_exp, currentScratch); +#ifdef WMOPS + pop_wmops(); +#endif + + /* begin s_12k8 */ +#ifdef WMOPS + push_wmops("Resamp12k8"); +#endif + /* currentScratch Size = 2.25 * MAX_LEN bytes */ +#ifdef ENABLE_HR_MODE + downshift_w32_arr(s_in_scaled, s_in_scaled_lp, 16, encoder->frame_length); /* s_in_scaled is no longer required */ + + process_resamp12k8_fx(s_in_scaled_lp, encoder->frame_length, h_EncSetup->r12k8_mem_in, encoder->r12k8_mem_in_len, + h_EncSetup->r12k8_mem_50, h_EncSetup->r12k8_mem_out, encoder->r12k8_mem_out_len, s_12k8, + &s_12k8_len, encoder->fs_idx, encoder->frame_dms, currentScratch + , bits_per_sample + ); +#else + process_resamp12k8_fx(s_in_scaled, encoder->frame_length, h_EncSetup->r12k8_mem_in, encoder->r12k8_mem_in_len, + h_EncSetup->r12k8_mem_50, h_EncSetup->r12k8_mem_out, encoder->r12k8_mem_out_len, s_12k8, + &s_12k8_len, encoder->fs_idx, encoder->frame_dms, currentScratch + , bits_per_sample + ); +#endif /* ENABLE_HR_MODE */ +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Olpa"); +#endif + /* currentScratch Size = 392 bytes */ + process_olpa_fx(&h_EncSetup->olpa_mem_s6k4_exp, h_EncSetup->olpa_mem_s12k8, h_EncSetup->olpa_mem_s6k4, &pitch, + s_12k8, s_12k8_len, &normcorr, &h_EncSetup->olpa_mem_pitch, +#ifdef CR9_F_PITCH_WIN_LEN_FIX + &h_EncSetup->pitch_flag, +#endif + h_EncSetup->resamp_exp, encoder->frame_dms, currentScratch); +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("LtpfEnc"); +#endif + /* currentScratch Size = 512 bytes */ + process_ltpf_coder_fx(<pf_bits, pitch, h_EncSetup->ltpf_enable, &h_EncSetup->ltpf_mem_in_exp, + h_EncSetup->ltpf_mem_in, encoder->ltpf_mem_in_len, ltpf_idx, s_12k8, s_12k8_len, + &h_EncSetup->ltpf_mem_normcorr, &h_EncSetup->ltpf_mem_mem_normcorr, normcorr, + &h_EncSetup->ltpf_mem_ltpf_on, &h_EncSetup->ltpf_mem_pitch, h_EncSetup->resamp_exp, + encoder->frame_dms, currentScratch +#ifdef CR9_K_REDUCE_NORM_CORR_TH + ,encoder->hrmode +#endif +); +#ifdef WMOPS + pop_wmops(); +#endif + + /* end s_12k8 */ +#ifdef WMOPS + push_wmops("AttackDetector"); +#endif + /* currentScratch Size = ??? bytes */ +#ifdef ENABLE_HR_MODE + attack_detector_fx(encoder, h_EncSetup, s_in_scaled_lp, sub(h_EncSetup->x_exp, 15), currentScratch); +#else + attack_detector_fx(encoder, h_EncSetup, s_in_scaled, sub(h_EncSetup->x_exp, 15), currentScratch); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + + /* begin ener_fx */ +#ifdef WMOPS + push_wmops("PerBandEnergy"); +#endif + /* currentScratch Size = 160 bytes */ + processPerBandEnergy_fx(ener_fx, &ener_fx_exp, d_fx, d_fx_exp, encoder->bands_offset, encoder->fs_idx, + encoder->bands_number, 0, encoder->frame_dms, currentScratch +#ifdef ENABLE_HR_MODE + , encoder->hrmode +#endif + ); +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Near Nyquist Detector"); +#endif + /* Near Nyquist Detector */ + processNearNyquistdetector_fx(&encoder->near_nyquist_flag, encoder->fs_idx, encoder->near_nyquist_index, + encoder->bands_number, ener_fx, ener_fx_exp +#ifdef CR8_E_TONE_DETECTOR +#ifdef ENABLE_HR_MODE + , encoder->frame_dms, encoder->hrmode ); +#else + ); +#endif +#else + ); +#endif + /* Disable LTPF if nyquist detector triggers */ + IF (encoder->near_nyquist_flag != 0 || sub(h_EncSetup->lfe, 1) == 0) + { + h_EncSetup->ltpf_mem_ltpf_on = 0; move16(); + ltpf_idx[1] = 0; move16(); + } +#ifdef WMOPS + pop_wmops(); +#endif +#ifdef WMOPS + push_wmops("BW Cutoff-Detection"); +#endif + IF (h_EncSetup->lfe == 0) + { +#ifdef ENABLE_HR_MODE + /* No BW Cutoff for 8 kHz and 96 kHz */ + IF (encoder->fs_idx > 0 && encoder->hrmode == 0 && encoder->bw_ctrl_active == 0) + { +#else /* ENABLE_HR_MODE */ + IF (encoder->fs_idx > 0 && encoder->bw_ctrl_active == 0) + { +#endif /* ENABLE_HR_MODE */ + processDetectCutoffWarped_fx(&BW_cutoff_idx, ener_fx, ener_fx_exp, encoder->fs_idx, encoder->frame_dms); + } + ELSE + { + BW_cutoff_idx = encoder->fs_idx; + move16(); + } + } + ELSE + { + BW_cutoff_idx = 0; + } +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("SnsCompScf"); +#endif + + + /* currentScratch Size = 512 bytes */ + processSnsComputeScf_fx(ener_fx, ener_fx_exp, encoder->fs_idx, encoder->bands_number, scf, + h_EncSetup->attdec_detected, encoder->attdec_damping, currentScratch, encoder->sns_damping + ); +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("SnsQuantScfEnc"); +#endif + /* currentScratch Size = 500 bytes */ + + processSnsQuantizeScfEncoder_fx(scf, L_scf_idx, scf_q, currentScratch); +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("SnsInterpScfEnc"); +#endif + /* currentScratch Size = 128 bytes */ + processSnsInterpolateScf_fx(scf_q, int_scf_fx, int_scf_fx_exp, 1, encoder->bands_number, currentScratch); +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Mdct shaping_enc"); +#endif + processMdctShaping_fx(d_fx, int_scf_fx, int_scf_fx_exp, encoder->bands_offset, encoder->bands_number); + +#ifdef WMOPS + pop_wmops(); +#endif + /* end int_scf_fx_exp */ +#ifdef WMOPS + push_wmops("BandwidthControl_enc"); +#endif + if (encoder->bandwidth < L_shr_pos(encoder->fs, 1)) + { + process_cutoff_bandwidth(d_fx, encoder->yLen, encoder->bw_ctrl_cutoff_bin); + BW_cutoff_idx = s_min(BW_cutoff_idx, encoder->bw_index); + } +#ifdef WMOPS + pop_wmops(); +#endif +#ifdef WMOPS + push_wmops("Tns_enc"); +#endif + /* currentScratch Size = 2 * MAX_LEN + 220 */ + + IF (h_EncSetup->lfe == 0) + { + processTnsCoder_fx(&(h_EncSetup->tns_bits), indexes, d_fx, BW_cutoff_idx, tns_order, &tns_numfilters, + h_EncSetup->enable_lpc_weighting, encoder->nSubdivisions, encoder->frame_dms, + encoder->frame_length, currentScratch +#ifdef ENABLE_HR_MODE + , encoder->hrmode +#endif + , encoder->near_nyquist_flag + ); + } + ELSE + { + tns_numfilters = 1; + move16(); + tns_order[0] = 0; + move16(); + h_EncSetup->tns_bits = tns_numfilters; + move16(); + } +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Est. Global Gain"); +#endif + /* currentScratch Size = 4 * MAX_LEN bytes */ + h_EncSetup->targetBitsQuant = sub(h_EncSetup->targetBitsInit, add(h_EncSetup->tns_bits, ltpf_bits)); + + test(); + IF (h_EncSetup->targetBitsQuant < 0 && sub(ltpf_bits, 1) > 0) + { + /* Disable LTPF */ + h_EncSetup->ltpf_mem_ltpf_on = 0; move16(); + ltpf_idx[1] = 0; move16(); + ltpf_bits = 1; move16(); + h_EncSetup->targetBitsQuant = sub(h_EncSetup->targetBitsInit, add(h_EncSetup->tns_bits, ltpf_bits)); + } + +#ifdef ENABLE_HR_MODE + Word32 gain32; +#endif + + processEstimateGlobalGain_fx(d_fx, d_fx_exp, encoder->yLen, h_EncSetup->targetBitsQuant, +#ifdef ENABLE_HR_MODE + &gain32, +#else + &gain, +#endif + &gain_e, + &quantizedGain, &quantizedGainMin, h_EncSetup->quantizedGainOff, + &h_EncSetup->targetBitsOff, &h_EncSetup->mem_targetBits, h_EncSetup->mem_specBits, + currentScratch +#ifdef ENABLE_HR_MODE + , encoder->hrmode, h_EncSetup->regBits, encoder->frame_dms +#endif + ); +#ifdef WMOPS + pop_wmops(); +#endif + /* begin q_d_fx16 */ + +#ifdef WMOPS + push_wmops("Quant. 1"); +#endif +#ifdef ENABLE_HR_MODE + processQuantizeSpec_fx(d_fx, d_fx_exp, gain32, gain_e, q_d_fx24, encoder->yLen, h_EncSetup->targetBitsQuant, + h_EncSetup->targetBitsAri, &h_EncSetup->mem_specBits, &nBits, encoder->fs_idx, &lastnz, + codingdata, &lsbMode, -1, encoder->hrmode); + +#else + processQuantizeSpec_fx(d_fx, d_fx_exp, gain, gain_e, q_d_fx16, encoder->yLen, h_EncSetup->targetBitsQuant, + h_EncSetup->targetBitsAri, &h_EncSetup->mem_specBits, &nBits, encoder->fs_idx, &lastnz, + codingdata, &lsbMode, -1); +#endif /* ENABLE_HR_MODE */ +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Adj. Global Gain"); +#endif +#ifdef ENABLE_HR_MODE + //gain32 = L_shl_pos((Word32)gain, 16); + processAdjustGlobalGain_fx(&quantizedGain, quantizedGainMin, h_EncSetup->quantizedGainOff, &gain32, &gain_e, + h_EncSetup->targetBitsQuant, h_EncSetup->mem_specBits, &gainChange, encoder->fs_idx + , encoder->hrmode, encoder->frame_dms + ); + gain = round_fx(gain32); +#else + processAdjustGlobalGain_fx(&quantizedGain, quantizedGainMin, h_EncSetup->quantizedGainOff, &gain, &gain_e, + h_EncSetup->targetBitsQuant, h_EncSetup->mem_specBits, &gainChange, encoder->fs_idx); +#endif /* ENABLE_HR_MODE */ +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Quant. 2"); +#endif + IF (sub(gainChange, 1) == 0) + { +#ifdef ENABLE_HR_MODE + processQuantizeSpec_fx(d_fx, d_fx_exp, gain32, gain_e, q_d_fx24, encoder->yLen, h_EncSetup->targetBitsQuant, + h_EncSetup->targetBitsAri, NULL, &nBits, encoder->fs_idx, &lastnz, codingdata, &lsbMode, + 0, encoder->hrmode); +#else + processQuantizeSpec_fx(d_fx, d_fx_exp, gain, gain_e, q_d_fx16, encoder->yLen, h_EncSetup->targetBitsQuant, + h_EncSetup->targetBitsAri, NULL, &nBits, encoder->fs_idx, &lastnz, codingdata, &lsbMode, + 0); +#endif /* ENABLE_HR_MODE */ + } +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Res. Cod."); +#endif + IF (lsbMode == 0) + { + processResidualCoding_fx(d_fx_exp, d_fx, +#ifdef ENABLE_HR_MODE + q_d_fx24, +#else + q_d_fx16, +#endif +#ifdef ENABLE_HR_MODE + gain32, +#else + gain, +#endif + gain_e, encoder->yLen, h_EncSetup->targetBitsQuant, nBits, resBits, &numResBits +#ifdef ENABLE_HR_MODE + , encoder->hrmode +#endif + ); + } + ELSE + { + numResBits = 0; + move16(); + } +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Noise fac"); +#endif + /* currentScratch Size = 2 * MAX_LEN bytes */ + IF (h_EncSetup->lfe == 0) + { + processNoiseFactor_fx(&fac_ns_idx, d_fx_exp, d_fx, +#ifdef ENABLE_HR_MODE + q_d_fx24, +#else + q_d_fx16, +#endif + gain, gain_e, BW_cutoff_idx, encoder->frame_dms, h_EncSetup->targetBytes, currentScratch +#ifdef ENABLE_HR_MODE + , encoder->hrmode +#endif + ); + } + ELSE + { + fac_ns_idx = 7; + move16(); + } +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Entropy cod"); +#endif + processEncoderEntropy(bytes, &bp_side, &mask_side, h_EncSetup->targetBitsAri, h_EncSetup->targetBytes, + encoder->yLen, encoder->BW_cutoff_bits, tns_numfilters, lsbMode, lastnz, tns_order, + fac_ns_idx, quantizedGain, BW_cutoff_idx, ltpf_idx, L_scf_idx, bfi_ext, encoder->fs_idx); +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Ari cod"); +#endif + processAriEncoder_fx(bytes, bp_side, mask_side, h_EncSetup->targetBitsAri, +#ifdef ENABLE_HR_MODE + q_d_fx24, +#else + q_d_fx16, +#endif + tns_order, tns_numfilters, indexes, lastnz, codingdata, resBits, numResBits, lsbMode, + h_EncSetup->enable_lpc_weighting, currentScratch); +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef WMOPS + push_wmops("Reorder Bitstream Enc"); +#endif + test(); + IF (encoder->combined_channel_coding == 0 && h_EncSetup->n_pc > 0) + { +#ifdef WMOPS + push_wmops("Reorder Ari dec"); +#endif + +#ifdef ENABLE_HR_MODE + Word32 *xbuf = (Word32 *) scratchAlign(scratchBuffer, 0); + + processAriDecoder_fx(bytes, &bp_side, &mask_side, h_EncSetup->total_bits, encoder->yLen, encoder->fs_idx, + h_EncSetup->enable_lpc_weighting, tns_numfilters, lsbMode, lastnz, &gain, tns_order, + fac_ns_idx, quantizedGain, encoder->frame_dms, h_EncSetup->n_pc, 0, + shr_pos(h_EncSetup->total_bits, 3), 1, &gain, &b_left, &gain, + xbuf, + &gain, resBits, indexes, &gain, + currentScratch + , encoder->hrmode + ); +#else + + processAriDecoder_fx(bytes, &bp_side, &mask_side, h_EncSetup->total_bits, encoder->yLen, encoder->fs_idx, + h_EncSetup->enable_lpc_weighting, tns_numfilters, lsbMode, lastnz, &gain, tns_order, + fac_ns_idx, quantizedGain, encoder->frame_dms, h_EncSetup->n_pc, 0, + shr_pos(h_EncSetup->total_bits, 3), 1, &gain, &b_left, &gain, + codingdata, + &gain, resBits, indexes, &gain, + currentScratch + ); +#endif + +#ifdef WMOPS + pop_wmops(); /* Ari dec */ +#endif + processReorderBitstream_fx(bytes, h_EncSetup->n_pccw, h_EncSetup->n_pc, b_left, currentScratch); + } +#ifdef WMOPS + pop_wmops(); +#endif + + /* end q_d_fx16 */ +#ifdef WMOPS + pop_wmops(); +#endif + + Dyn_Mem_Deluxe_Out(); +} + +int Enc_LC3PLUS(LC3PLUS_Enc *encoder, void **input, int bits_per_sample, UWord8 *output, void *scratch, Word16 bfi_ext) +{ + int ch = 0, output_size = 0; + int input_size = 0; + int totalBytes = (Word32)encoder->bitrate * encoder->frame_length / (8 * encoder->fs_in); + int output_size2; + + UWord8 *lc3buf = output; + + for (ch = 0; ch < encoder->channels; ch++) + { + Enc_LC3PLUS_Channel(encoder, ch, bits_per_sample, input[ch], lc3buf, scratch, bfi_ext); + if (encoder->epmode && encoder->combined_channel_coding == 0) + { + output_size2 = totalBytes / encoder->channels + (ch < (totalBytes % encoder->channels)); +#ifdef WMOPS + push_wmops("fec_enc"); +#endif + + fec_encoder(encoder->epmode, encoder->epmr, lc3buf, encoder->channel_setup[ch]->targetBytes, output_size2, + encoder->channel_setup[ch]->n_pccw, scratch); + +#ifdef WMOPS + pop_wmops(); +#endif + + lc3buf += output_size2; + output_size += output_size2; + } + else + { + lc3buf += encoder->channel_setup[ch]->targetBytes; + output_size += encoder->channel_setup[ch]->targetBytes; + } + } + + if (encoder->epmode > 0 && encoder->combined_channel_coding) + { + input_size = output_size; + output_size = (Word32)encoder->bitrate * encoder->frame_length / (8 * encoder->fs_in); +#ifdef WMOPS + push_wmops("fec_enc"); +#endif + + fec_encoder(encoder->epmode, encoder->epmr, output, input_size, output_size, encoder->channel_setup[0]->n_pccw, + scratch); + +#ifdef WMOPS + pop_wmops(); +#endif + } + + return output_size; +} + diff --git a/lib_lc3plus/estimate_global_gain_fx.c b/lib_lc3plus/estimate_global_gain_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..c6d1766b43d2fdac7e8500cddde1215766bb671c --- /dev/null +++ b/lib_lc3plus/estimate_global_gain_fx.c @@ -0,0 +1,506 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +void processEstimateGlobalGain_fx(Word32 x[], Word16 x_e, Word16 lg, Word16 nbitsSQ, +#ifdef ENABLE_HR_MODE + Word32 *gain, +#else + Word16 *gain, +#endif + Word16 *gain_e, + Word16 *quantizedGain, Word16 *quantizedGainMin, Word16 quantizedGainOff, + Word32 *targetBitsOff, Word16 *old_targetBits, Word16 old_specBits, + Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode, Word16 regBits, Word16 frame_dms +#endif +) +{ + + Word16 lg_4, tmp16, iszero, s; + Word32 ener, tmp32, x_max; + Word32 target, fac, offset; + Word32 *en; + Counter iter, i; + Word32 diff, diff2; +#ifdef ENABLE_HR_MODE + Word16 *en_exp = NULL; + Word32 M0, M1; +#endif + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processEstimateGlobalGain_fx", sizeof(struct { + Word16 lg_4, s, tmp16, iszero; + Word32 ener, tmp32, x_max; + Word32 target, fac, offset; + Word32 *en; + Counter i, iter; + Word32 diff, diff2; + })); +#endif + + en = (Word32 *)scratchAlign(scratchBuffer, + 0); /* Size = MAX_LEN bytes */ + +#ifdef ENABLE_HR_MODE + if (hrmode) + { + M0 = 1; + M1 = 1; /* Regularization factor; needs´to be 1e-5, but 1e-5 is 0 in Q15 */ + en_exp = (Word16 *) scratchAlign(en, sizeof(*en) * MAX_LEN); + } +#endif + IF (*old_targetBits < 0) + { + *targetBitsOff = 0; + move16(); + } + ELSE + { + tmp32 = L_add(*targetBitsOff, L_deposit_h(sub(*old_targetBits, old_specBits))); + tmp32 = L_min((40 << 16), L_max(-(40 << 16), tmp32)); + *targetBitsOff = L_add(Mpy_32_16_lc3plus(*targetBitsOff, 26214), Mpy_32_16_lc3plus(tmp32, 6554)); + move16(); + } + + *old_targetBits = nbitsSQ; + move16(); + nbitsSQ = add(nbitsSQ, round_fx(*targetBitsOff)); + + lg_4 = shr_pos(lg, 2); + x_max = 0; + move32(); + +/* energy of quadruples with 9dB offset */ +#ifdef ENABLE_HR_MODE + IF (hrmode) + { + FOR (i = 0; i < lg_4; i++) + { + Word32 absval; + Word16 idx; + /* normalization */ + s = 31; + move16(); + + /* M1 requires a 32x16 mult with Q0 i, resulting in Q15. Keeping both M0 and M1 in same Q */ + /* Use Q15 for M0 and M1 calculation */ + idx = shl(i, 2); + + tmp32 = L_abs(x[0]); + absval = L_shr(tmp32, 16); + M0 = L_add(M0, absval); /* M0 += fabs(x[idx])*/ + M1 = L_add(M1, L_mult(absval, idx)); /* M1 += i*fabs(x[idx])*/ + idx = add(idx, 1); + + absval = L_abs(x[1]); + tmp32 = L_max(tmp32, absval); + absval = L_shr(tmp32, 16); + M0 = L_add(M0, absval); /* M0 += fabs(x[idx])*/ + M1 = L_add(M1, L_mult(absval, idx)); /* M1 += idx*fabs(x[idx])*/ + idx = add(idx, 1); + + absval = L_abs(x[2]); + tmp32 = L_max(tmp32, absval); + absval = L_shr(tmp32, 16); + M0 = L_add(M0, absval); /* M0 += fabs(x[idx])*/ + M1 = L_add(M1, L_mult(absval, idx)); /* M1 += idx*fabs(x[idx])*/ + idx = add(idx, 1); + + absval = L_abs(x[3]); + tmp32 = L_max(tmp32, absval); + absval = L_shr(tmp32, 16); + M0 = L_add(M0, absval); /* M0 += fabs(x[idx])*/ + M1 = L_add(M1, L_mult(absval, idx)); /* M1 += idx*fabs(x[idx])*/ + + x_max = L_max(x_max, tmp32); + + if (tmp32 != 0) + s = norm_l(tmp32); + + s = sub(s, 2); /* 2 bits headroom */ + + /* calc quadruple energy */ + ener = L_deposit_l(1); + + tmp16 = round_fx(L_shl(x[0], s)); + ener = L_mac(ener, tmp16, tmp16); + + tmp16 = round_fx(L_shl(x[1], s)); + ener = L_mac(ener, tmp16, tmp16); + + tmp16 = round_fx(L_shl(x[2], s)); + ener = L_mac(ener, tmp16, tmp16); + + tmp16 = round_fx(L_shl(x[3], s)); + ener = L_mac(ener, tmp16, tmp16); + + s = shl_pos(sub(x_e, s), 1); + if (ener == 1 && s < 0) + s = 0; + IF (regBits > 0) + { + en[i] = ener; + en_exp[i] = s; + move32(); + } + ELSE + { + /* log */ + tmp32 = L_add(BASOP_Util_Log2_lc3plus(ener), L_shl_pos(L_deposit_l(s), 25)); /* log2, 6Q25 */ + tmp32 = L_add(L_shr_pos(Mpy_32_16_lc3plus(tmp32, 0x436E), 7), + 0x4E666); /* -> (28/20)*(7+10*tmp32/log2(10)), 16Q15 */ + en[i] = tmp32; + move32(); + } + + x += 4; + } + } + ELSE +#endif + { + FOR (i = 0; i < lg_4; i++) + { + /* normalization */ + s = 31; + move16(); + + tmp32 = L_abs(x[0]); + tmp32 = L_max(tmp32, L_abs(x[1])); + tmp32 = L_max(tmp32, L_abs(x[2])); + tmp32 = L_max(tmp32, L_abs(x[3])); + x_max = L_max(x_max, tmp32); + + if (tmp32 != 0) + s = norm_l(tmp32); + + s = sub(s, 2); /* 2 bits headroom */ + + /* calc quadruple energy */ + ener = L_deposit_l(1); + + tmp16 = round_fx(L_shl(x[0], s)); + ener = L_mac(ener, tmp16, tmp16); + + tmp16 = round_fx(L_shl(x[1], s)); + ener = L_mac(ener, tmp16, tmp16); + + tmp16 = round_fx(L_shl(x[2], s)); + ener = L_mac(ener, tmp16, tmp16); + + tmp16 = round_fx(L_shl(x[3], s)); + ener = L_mac(ener, tmp16, tmp16); + + s = shl_pos(sub(x_e, s), 1); + if (ener == 1 && s < 0) + s = 0; + + /* log */ + tmp32 = L_add_sat(BASOP_Util_Log2_lc3plus(ener), L_shl_sat(L_deposit_l(s), 25)); /* log2, 6Q25 */ + tmp32 = + L_add(L_shr_pos(Mpy_32_16_lc3plus(tmp32, 0x436E), 6), 0x9CCCD); /* -> (28/20)*(7+10*tmp32/log2(10)), 15Q16 */ + en[i] = tmp32; + move32(); + x += 4; + } + } + + IF (x_max == 0) + { + *quantizedGainMin = quantizedGainOff; + move16(); + *quantizedGain = 0; + move16(); + *old_targetBits = -1; + move16(); + } + ELSE + { + Word32 sub_val = 0xFCDD38F; + /*28 * log10(32767 - 0.375) * (1 - 1e-7) in Q21 */ + +#ifdef ENABLE_HR_MODE + if (hrmode) + { + /* + Original float code : + rB_offset = 8 * (1 - MIN(M1/M0, 2*frame_ms)/(2*frame_ms) + */ + Word16 ratio; + Word16 ratio_exp = 0; + Word32 regterm = MAX_32; /* 1 in Q31 */ + Word32 rB_offset, reg_val; + Word32 ratio_prod; + Word16 n_reg_val; + + if (M0 <= 0x7fff) + { + Word16 inv_M0 = Inv16_lc3plus(M0, &ratio_exp); /* Inverse in Q(15 - ratio_exp) */ + ratio = L_shr(Mpy_32_16_lc3plus(M1, inv_M0), 15 - ratio_exp); /* Integer ratio */ + } + else + { + Word16 M0_h = L_shr(M0, 15); + Word32 M1_h = L_shr(M1, 15); + + Word16 inv_M0 = Inv16_lc3plus(M0_h, &ratio_exp); /* Inverse in Q(15 - ratio_exp) */ + ratio = extract_l(L_shr(Mpy_32_16_lc3plus(M1_h, inv_M0), 15 - ratio_exp)); /* Integer ratio */ + } + + /* + regterm = MIN (M1 / M0, 2 *frame_ms) / (2 * frame_ms) + regterm = MIN (M1 * (10 / 2) / M0, frame_dms) / frame_dms + regterm = MIN ( ratio * 5, frame_dms) / frame_dms + */ + + ratio_prod = L_mult(ratio, 5); + + if (ratio_prod < frame_dms) + { + Word16 mult_factor = 0; + + SWITCH (frame_dms) /* 1 / frame_dms in Q15 */ + { + case 25: mult_factor = 1311; break; + case 50: mult_factor = 655; break; +#ifdef CR8_G_ADD_75MS + case 75: mult_factor = 437; break; +#endif + case 100: mult_factor = 328; break; + } + + /* ratio_prod < frame_dms. Hence Word16 can be used */ + + regterm = L_shl(L_mult(extract_l(ratio_prod), mult_factor), 15); /* result in Q31 */ + } + + rB_offset = L_sub(MAX_32, regterm); + /* Calculation in Q28 to prevent overflow. Subtraction result in Q31, downshift by 3 results in Q28. + Multiplication by 8 is implemented as upshift by 3. + */ + + /* + FLOAT code : reg_val = x_max * LC3_POW(2,-regBits - rB_offset); + */ + Word16 reg_val_e = x_e; + + IF(rB_offset > 0) + { + Word32 reg_exp = L_negate(L_add(L_shl(regBits, 25), L_shr(rB_offset, 3))); + reg_val = Mpy_32_32_lc3plus(x_max, BASOP_Util_InvLog2_lc3plus(reg_exp)); /* Product is in Q31 */ + /* reg_val is in Q(31-x_e) */ + } + ELSE + { + reg_val = x_max; + reg_val_e = sub(x_e, regBits); + } + + sub_val = 0x183BA045; + move16(); + /*28 * log10(32768*256 - 2) in Q21 */ + + /* + Adding LC3_POW(2, -31) to reg_val.2^-31 * 2^(31-x_e) = 2^-x_e. + If x_e is positive, this is below precision requirements to be used. + */ + + if (reg_val_e < 0) + { + reg_val = L_add_sat(reg_val, L_shl_sat(1, negate(reg_val_e))); + } + n_reg_val = norm_l(reg_val); + + FOR (i = 0; i < lg_4; i++) + { + ener = en[i]; + move16(); + s = en_exp[i]; + move16(); + + Word16 shift_val = sub(reg_val_e, s); + + IF (sub(n_reg_val, shift_val) > 0) + { + IF(shift_val > -32) + { + ener = L_add(ener, L_shl(reg_val, shift_val)); /* Match q formats */ + } + } + ELSE + { + IF (sub(shift_val, 32) >= 0 ) + { + ener = reg_val; + } + ELSE + { + ener = L_add_sat(reg_val, L_shr(ener, shift_val)); + } + s = reg_val_e; + } + + tmp32 = L_add(BASOP_Util_Log2_lc3plus(ener), L_shl_pos(L_deposit_l(s), 25)); /* log2, 6Q25 */ + tmp32 = L_add(L_shr_pos(Mpy_32_32_lc3plus(tmp32, 0x436E439A), 7), 0x4E666); /* -> (28/20)*(7+10*tmp32/log2(10)), 15Q16 */ + en[i] = tmp32; + move32(); + } + } +#endif + x_max = BASOP_Util_Log2_lc3plus(x_max); + /* Minimum gain */ + x_max = L_add(x_max, L_shl_pos(L_deposit_l(x_e), 25)); /* log2(x_max) in 6Q25 */ + x_max = L_sub( + Mpy_32_32_lc3plus(x_max, 0x436E439A), + sub_val); /* 28*log10(x_max/(32768-0.375)) = log2(x_max)*(28/log2(10))-28*log10(32768-0.375) in 10Q21 */ + /* 28/log1(10) is in Q27 + Mpy_32_32_lc3plus : Q25(x_max) + Q27 + Q1(Mpy_32_32_ss) - Q32 = Q21 */ + *quantizedGainMin = extract_l(L_shr_pos(L_add(x_max, (1 << 21) + (1 << 11)), 21)); + move16(); + ASSERT(*quantizedGainMin <= 255 + quantizedGainOff); + *quantizedGainMin = s_max(quantizedGainOff, s_min(add(255, quantizedGainOff), *quantizedGainMin)); + + offset = L_deposit_h(add(255, quantizedGainOff)); /* -> 127 */ + +#ifdef ENABLE_HR_MODE + IF(hrmode) + { + offset = L_shr_pos(offset, 2); + /* SQ scale: 4 bits / 6 dB per quadruple */ + target = L_mult(0x3EB8, nbitsSQ); /* -> (28/20) * (1.4) * nbitsSQ */ + + fac = L_add(0x400000, 0); /* -> 256 */ + /* find offset (0 to 127) */ + FOR (iter = 0; iter < 8; iter++) + { + fac = L_shr_pos(fac, 1); + offset = L_sub(offset, fac); + + ener = L_deposit_l(0); + iszero = 1; + move16(); + + FOR (i = lg_4 - 1; i >= 0; i--) + { + tmp32 = L_sub(L_shr_pos(en[i], 1), offset); + diff = L_sub(tmp32, 0x27333); /* 0x4E666 -> (28/20)*(7) in Q15 */ + if (diff < 0) + { + if (iszero == 0) + { + ener = L_add(ener, 0xF1EC); /* 0x1E3D7 -> (28/20)*(2.7) in Q15 */ + } + } + else + { + ener = L_add(ener, tmp32); + iszero = 0; + move16(); + + diff2 = L_sub(tmp32, 0x118000); /* 0x230000 -> (28/20)*(50) */ + if (diff2 >= 0) + { + ener = L_add(ener, diff2); + } + } + } + + /* if ener is above target -> increase offset */ + test(); + if (L_sub(ener, target) > 0 && iszero == 0) + { + offset = L_add(offset, fac); + } + } + tmp16 = extract_h(L_shl(offset, 2)); + } + ELSE +#endif + { + /* SQ scale: 4 bits / 6 dB per quadruple */ + target = L_shl_pos(L_mult(0x7D71, nbitsSQ), 1); /* -> (28/20) * (1.4) * nbitsSQ */ + fac = L_add(0x1000000, 0); /* -> 256 */ + + /* find offset (0 to 127) */ + FOR (iter = 0; iter < 8; iter++) + { + fac = L_shr_pos(fac, 1); + offset = L_sub(offset, fac); + + ener = L_deposit_l(0); + iszero = 1; + move16(); + FOR (i = lg_4 - 1; i >= 0; i--) + { + tmp32 = L_sub(en[i], offset); + diff = L_sub(tmp32, 0x9CCCD); /* 0x9CCCD -> (28/20)*(7) in Q16 */ + if (diff < 0) + { + if (iszero == 0) + { + ener = L_add_sat(ener, 0x3C7AE); /* 0x3C7AE -> (28/20)*(2.7) in Q16 */ + } + } + else + { + ener = L_add_sat(ener, tmp32); + iszero = 0; + move16(); + + diff2 = L_sub(tmp32, 0x460000); /* 0x460000 -> (28/20)*(50) in Q16 */ + if (diff2 >= 0) + { + ener = L_add_sat(ener, diff2); + } + } + + } + + /* if ener is above target -> increase offset */ + test(); + if (L_sub(ener, target) > 0 && iszero == 0) + { + offset = L_add(offset, fac); + } + } + tmp16 = extract_h(offset); + + } + + if (sub(tmp16, *quantizedGainMin) < 0) + { + *old_targetBits = -1; + move16(); + } + *quantizedGain = sub(s_max(*quantizedGainMin, tmp16), quantizedGainOff); + move16(); + } + +#ifdef ENABLE_HR_MODE + tmp32 = + Mpy_32_16_lc3plus(0x797CD707, L_shl_pos(add(*quantizedGain, quantizedGainOff), 6)); +#else + tmp32 = + L_shl_pos(L_mult0(add(*quantizedGain, quantizedGainOff), 0x797D), 7); /* 6Q25; 0x797D -> log2(10)/28 (Q18) */ +#endif + *gain_e = add(extract_l(L_shr_pos(tmp32, 25)), 1); /* get exponent */ +#ifdef ENABLE_HR_MODE + *gain = BASOP_Util_InvLog2_lc3plus(L_or(tmp32, (Word32)0xFE000000)); +#else + *gain = round_fx(BASOP_Util_InvLog2_lc3plus(L_or(tmp32,(Word32) 0xFE000000))); +#endif + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + diff --git a/lib_lc3plus/fft_lc3plus.c b/lib_lc3plus/fft_lc3plus.c new file mode 100644 index 0000000000000000000000000000000000000000..6db6de7bb6e7b5a74b6c91d6d44d178a7cc270b7 --- /dev/null +++ b/lib_lc3plus/fft_lc3plus.c @@ -0,0 +1,4537 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" +#include "rom_basop_util_lc3plus.h" + +#ifdef ENABLE_FFT_RESCALE +#ifndef FFT_RESCALE_HR +#define FFT_RESCALE_HR 3 +#endif +#endif + +#define SCALEFACTORN2 3 +#define SCALEFACTOR4 3 +#define SCALEFACTOR5 4 +#define SCALEFACTOR8 4 +#define SCALEFACTOR15 5 +#define SCALEFACTOR30_1 5 +#define SCALEFACTOR30_2 1 +#define SCALEFACTOR32_1 5 +#define SCALEFACTOR32_2 1 + +#ifdef ENABLE_HR_MODE +#define Mpy_32_xx Mpy_32_32_lc3plus +#else +#define Mpy_32_xx Mpy_32_16_lc3plus +#endif + +#ifdef CR8_G_ADD_75MS +#define SCALEFACTOR6 4 +#define C61_32 (0x6ed9eba1) +#endif + +#define SCALEFACTOR10 5 +#define SCALEFACTOR16 5 +#define SCALEFACTOR20 5 +#define SCALEFACTOR30 6 +#define SCALEFACTOR32 6 +#define SCALEFACTOR40 7 +#define SCALEFACTOR48 8 +#define SCALEFACTOR60 7 +#define SCALEFACTOR64 7 +#define SCALEFACTOR80 8 +#define SCALEFACTOR90 9 +#define SCALEFACTOR96 9 +#define SCALEFACTOR120 8 +#define SCALEFACTOR128 8 +#define SCALEFACTOR160 8 +#define SCALEFACTOR180 10 +#define SCALEFACTOR192 10 +#define SCALEFACTOR240 9 +#define SCALEFACTOR256 9 +#define SCALEFACTOR384 11 + +#ifdef ENABLE_HR_MODE +#ifdef CR8_G_ADD_75MS +#define SCALEFACTOR360 11 +#endif +#ifndef ENABLE_FFT_30X16 +#define SCALEFACTOR480 10 +#else +#define SCALEFACTOR480 11 +#endif +#endif + +#ifdef ENABLE_HR_MODE +#undef L_shr_pos +#define L_shr_pos(x, y) (L_shr(L_add(L_shr((x), ((y)-1)),1),1)) +#endif + +#ifdef ENABLE_HR_MODE +#define FFTC(x) ((Word32)x) +#else +#define FFTC(x) WORD322WORD16((Word32)x) +#endif + +#define C31 (FFTC(0x91261468)) /* FL2WORD32( -0.86602540) -sqrt(3)/2 */ + +#define C51 (FFTC(0x79bc3854)) /* FL2WORD32( 0.95105652) */ +#define C52 (FFTC(0x9d839db0)) /* FL2WORD32(-1.53884180/2) */ +#define C53 (FFTC(0xd18053ce)) /* FL2WORD32(-0.36327126) */ +#define C54 (FFTC(0x478dde64)) /* FL2WORD32( 0.55901699) */ +#define C55 (FFTC(0xb0000001)) /* FL2WORD32(-1.25/2) */ + +#define C81 (FFTC(0x5a82799a)) /* FL2WORD32( 7.071067811865475e-1) */ +#define C82 (FFTC(0xa57d8666)) /* FL2WORD32(-7.071067811865475e-1) */ + +#define C161 (FFTC(0x5a82799a)) /* FL2WORD32( 7.071067811865475e-1) INV_SQRT2 */ +#define C162 (FFTC(0xa57d8666)) /* FL2WORD32(-7.071067811865475e-1) -INV_SQRT2 */ + +#define C163 (FFTC(0x7641af3d)) /* FL2WORD32( 9.238795325112867e-1) COS_PI_DIV8 */ +#define C164 (FFTC(0x89be50c3)) /* FL2WORD32(-9.238795325112867e-1) -COS_PI_DIV8 */ + +#define C165 (FFTC(0x30fbc54d)) /* FL2WORD32( 3.826834323650898e-1) COS_3PI_DIV8 */ +#define C166 (FFTC(0xcf043ab3)) /* FL2WORD32(-3.826834323650898e-1) -COS_3PI_DIV8 */ + +#define C51_32 (0x79bc3854) /* FL2WORD32( 0.95105652) */ +#define C52_32 (0x9d839db0) /* FL2WORD32(-1.53884180/2) */ +#define C53_32 (0xd18053ce) /* FL2WORD32(-0.36327126) */ +#define C54_32 (0x478dde64) /* FL2WORD32( 0.55901699) */ +#define C55_32 (0xb0000001) /* FL2WORD32(-1.25/2) */ + + +#define C81_32 (0x5a82799a) /* FL2WORD32( 7.071067811865475e-1) */ +#define C82_32 (0xa57d8666) /* FL2WORD32(-7.071067811865475e-1) */ + +#if defined(ENABLE_HR_MODE) + +# define cplxMpy4_16_0(re, im, a, b, c, d) \ + do \ + { \ + re = L_sub(Mpy_32_xx(a, c), Mpy_32_xx(b, d)); \ + move32(); \ + im = L_add(Mpy_32_xx(a, d), Mpy_32_xx(b, c)); \ + move32(); \ + } while (0) + +# define cplxMpy4_16_1(re, im, a, b) \ + do \ + { \ + re = a; \ + move32(); \ + im = b; \ + move32(); \ + } while (0) + +# endif + +#define Mpy3_0(s12, s13, s14, s15, t0, t1, t2, t3) \ + do \ + { \ + s12 = Mpy_32_32_lc3plus(L_add(t0, t2), C81_32); \ + s14 = Mpy_32_32_lc3plus(L_sub(t0, t2), C81_32); \ + s13 = Mpy_32_32_lc3plus(L_sub(t3, t1), C81_32); \ + s15 = Mpy_32_32_lc3plus(L_add(t1, t3), C82_32); \ + } while (0) + +#define cplxMpy3_0(a, b, c, d) \ + do \ + { \ + as = L_shr_pos(a, 1); \ + bs = L_shr_pos(b, 1); \ + a = L_sub(Mpy_32_32_lc3plus(as, c), Mpy_32_32_lc3plus(bs, d)); \ + b = L_add(Mpy_32_32_lc3plus(as, d), Mpy_32_32_lc3plus(bs, c)); \ + } while (0) + +#ifdef ENABLE_HR_MODE +#define cplxMpy4_4_0(re, im, a, b, c, d) \ + re = L_shr_pos(L_sub(Mpy_32_xx(a, c), Mpy_32_xx(b, d)), SCALEFACTOR60 - SCALEFACTOR15); \ + im = L_shr_pos(L_add(Mpy_32_xx(a, d), Mpy_32_xx(b, c)), SCALEFACTOR60 - SCALEFACTOR15); + +# define cplxMpy4_4_1(re, im, a, b) \ + re = L_shr_pos(a, SCALEFACTOR60 - SCALEFACTOR15); \ + im = L_shr_pos(b, SCALEFACTOR60 - SCALEFACTOR15); +#else +#define cplxMpy4_4_0(re, im, a, b, c, d) \ + re = L_shr(L_sub(Mpy_32_xx(a, c), Mpy_32_xx(b, d)), SCALEFACTOR60 - SCALEFACTOR15); \ + im = L_shr(L_add(Mpy_32_xx(a, d), Mpy_32_xx(b, c)), SCALEFACTOR60 - SCALEFACTOR15); + +#define cplxMpy4_4_1(re, im, a, b) \ + re = L_shr(a, SCALEFACTOR60 - SCALEFACTOR15); \ + im = L_shr(b, SCALEFACTOR60 - SCALEFACTOR15); +#endif + +#define cplxMpy4_8_0(re, im, a, b, c, d) \ + do \ + { \ + re = L_shr_pos(L_sub(Mpy_32_xx(a, c), Mpy_32_xx(b, d)), 1); \ + im = L_shr_pos(L_add(Mpy_32_xx(a, d), Mpy_32_xx(b, c)), 1); \ + } while (0) + + +#define cplxMpy4_8_1(re, im, a, b) \ + do \ + { \ + re = L_shr_pos(a, 1); \ + im = L_shr_pos(b, 1); \ + } while (0) + + +#define cplxMpy4_8_2(re, im, a, b, c, d) \ + do \ + { \ + re = L_shr_pos(L_add(Mpy_32_32_lc3plus(a, c), Mpy_32_32_lc3plus(b, d)), 1); \ + im = L_shr_pos(L_sub(Mpy_32_32_lc3plus(b, c), Mpy_32_32_lc3plus(a, d)), 1); \ + } while (0) + + +#define cplxMpy4_12_0(re, im, a, b, c, d) \ + do \ + { \ + re = L_sub(Mpy_32_xx(a, c), Mpy_32_xx(b, d)); \ + move32(); \ + im = L_add(Mpy_32_xx(a, d), Mpy_32_xx(b, c)); \ + move32(); \ + } while (0) + +#define cplxMpy4_12_1(re, im, a, b) \ + do \ + { \ + re = a; \ + move32(); \ + im = b; \ + move32(); \ + } while (0) + + +static void fft4(Word32 *x) +{ + Dyn_Mem_Deluxe_In(Word32 x0, x1, x2, x3, x4, x5, x6, x7; Word32 t0, t1, t2, t3, t4, t5, t6, t7;); + + x0 = L_shr_pos(x[0], SCALEFACTOR4); + x1 = L_shr_pos(x[1], SCALEFACTOR4); + x2 = L_shr_pos(x[2], SCALEFACTOR4); + x3 = L_shr_pos(x[3], SCALEFACTOR4); + x4 = L_shr_pos(x[4], SCALEFACTOR4); + x5 = L_shr_pos(x[5], SCALEFACTOR4); + x6 = L_shr_pos(x[6], SCALEFACTOR4); + x7 = L_shr_pos(x[7], SCALEFACTOR4); + + /* Pre-additions */ + t0 = L_add(x0, x4); + t2 = L_sub(x0, x4); + t1 = L_add(x1, x5); + t3 = L_sub(x1, x5); + t4 = L_add(x2, x6); + t7 = L_sub(x2, x6); + t5 = L_add(x7, x3); + t6 = L_sub(x7, x3); + + /* Post-additions */ + x[0] = L_add(t0, t4); + x[1] = L_add(t1, t5); + x[2] = L_sub(t2, t6); + x[3] = L_sub(t3, t7); + x[4] = L_sub(t0, t4); + x[5] = L_sub(t1, t5); + x[6] = L_add(t2, t6); + x[7] = L_add(t3, t7); + + Dyn_Mem_Deluxe_Out(); +} + +/** + * \brief Function performs a complex 5-point FFT + * The FFT is performed inplace. The result of the FFT + * is scaled by SCALEFACTOR5 bits. + * + * + * \param [i/o] re real input / output + * \param [i/o] im imag input / output + * \param [i ] s stride real and imag input / output + * + * \return void + */ + + + +static void fft5(Word32 *re, Word32 *im, Word16 s) +{ + Dyn_Mem_Deluxe_In(Word32 x0, x1, x2, x3, x4; Word32 r1, r2, r3, r4; Word32 s1, s2, s3, s4; Word32 t;); + + /* real part */ + x0 = L_shr_pos(re[s * 0], SCALEFACTOR5); + x1 = L_shr_pos(re[s * 1], SCALEFACTOR5); + x2 = L_shr_pos(re[s * 2], SCALEFACTOR5); + x3 = L_shr_pos(re[s * 3], SCALEFACTOR5); + x4 = L_shr_pos(re[s * 4], SCALEFACTOR5); + + r1 = L_add(x1, x4); + r4 = L_sub(x1, x4); + r3 = L_add(x2, x3); + r2 = L_sub(x2, x3); + t = Mpy_32_32_lc3plus(L_sub(r1, r3), C54_32); + r1 = L_add(r1, r3); + re[0] = L_add(x0, r1); + move32(); + /* Bit shift left because of the constant C55 which was scaled with the factor 0.5 because of the representation of + the values as fracts */ + r1 = L_add(re[0], (L_shl_pos(Mpy_32_32_lc3plus(r1, C55_32), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_32_lc3plus(L_add(r4, r2), C51_32); + /* Bit shift left because of the constant C55 which was scaled with the factor 0.5 because of the representation of + the values as fracts */ + r4 = L_add(t, L_shl_pos(Mpy_32_32_lc3plus(r4, C52_32), 1)); + r2 = L_add(t, Mpy_32_32_lc3plus(r2, C53_32)); + + /* imaginary part */ + x0 = L_shr_pos(im[s * 0], SCALEFACTOR5); + x1 = L_shr_pos(im[s * 1], SCALEFACTOR5); + x2 = L_shr_pos(im[s * 2], SCALEFACTOR5); + x3 = L_shr_pos(im[s * 3], SCALEFACTOR5); + x4 = L_shr_pos(im[s * 4], SCALEFACTOR5); + + s1 = L_add(x1, x4); + s4 = L_sub(x1, x4); + s3 = L_add(x2, x3); + s2 = L_sub(x2, x3); + t = Mpy_32_32_lc3plus(L_sub(s1, s3), C54_32); + s1 = L_add(s1, s3); + im[0] = L_add(x0, s1); + move32(); + /* Bit shift left because of the constant C55 which was scaled with the factor 0.5 because of the representation of + the values as fracts */ + s1 = L_add(im[0], L_shl_pos(Mpy_32_32_lc3plus(s1, C55_32), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_32_lc3plus(L_add(s4, s2), C51_32); + /* Bit shift left because of the constant C55 which was scaled with the factor 0.5 because of the representation of + the values as fracts */ + s4 = L_add(t, L_shl_pos(Mpy_32_32_lc3plus(s4, C52_32), 1)); + s2 = L_add(t, Mpy_32_32_lc3plus(s2, C53_32)); + + /* combination */ + re[s * 1] = L_add(r1, s2); + move32(); + re[s * 4] = L_sub(r1, s2); + move32(); + re[s * 2] = L_sub(r3, s4); + move32(); + re[s * 3] = L_add(r3, s4); + move32(); + + im[s * 1] = L_sub(s1, r2); + move32(); + im[s * 4] = L_add(s1, r2); + move32(); + im[s * 2] = L_add(s3, r4); + move32(); + im[s * 3] = L_sub(s3, r4); + move32(); + + Dyn_Mem_Deluxe_Out(); +} + +/** + * \brief Function performs a complex 6-point FFT + * The FFT is performed inplace. The result of the FFT + * is scaled by SCALEFACTOR6 bits. + * + * + * \param [i/o] re real input / output + * \param [i/o] im imag input / output + * \param [i ] st stride real and imag input / output + * + * \return void + */ + +#ifdef CR8_G_ADD_75MS +static void fft6(Word32 *re, Word32 *im, Word16 st) +{ + Dyn_Mem_Deluxe_In(Word32 x0, x1, x2, x3, x4, x5; Word32 r1o, r2o, i1e, i2e, i1o, i2o; Word32 t, s;); + + /* process real parts */ + + x0 = L_shr_pos(re[0 * st], SCALEFACTOR6); + x1 = L_shr_pos(re[1 * st], SCALEFACTOR6); + x2 = L_shr_pos(re[2 * st], SCALEFACTOR6); + x3 = L_shr_pos(re[3 * st], SCALEFACTOR6); + x4 = L_shr_pos(re[4 * st], SCALEFACTOR6); + x5 = L_shr_pos(re[5 * st], SCALEFACTOR6); + + t = L_add(x0, L_add(x2, x4)); + s = L_add(x1, L_add(x3, x5)); + re[0 * st] = L_add(t, s); + move32(); + re[3 * st] = L_sub(t, s); + move32(); + t = L_sub(x0, L_shr_pos(L_add(x2, x4), 1)); + + re[1 * st] = t; + move32(); + re[2 * st] = t; + move32(); + re[4 * st] = t; + move32(); + re[5 * st] = t; + move32(); + + s = Mpy_32_32_lc3plus(L_sub(x4, x2), C61_32); + + i1e = s; + i2e = -s; + + t = L_sub(x1, L_shr_pos(L_add(x3, x5), 1)); + s = Mpy_32_32_lc3plus(L_sub(x5, x3), C61_32); + + r1o = r2o = t; + i1o = s; + i2o = -s; + + x0 = L_shr_pos(im[0 * st], SCALEFACTOR6); + x1 = L_shr_pos(im[1 * st], SCALEFACTOR6); + x2 = L_shr_pos(im[2 * st], SCALEFACTOR6); + x3 = L_shr_pos(im[3 * st], SCALEFACTOR6); + x4 = L_shr_pos(im[4 * st], SCALEFACTOR6); + x5 = L_shr_pos(im[5 * st], SCALEFACTOR6); + + t = L_add(x0, L_add(x2, x4)); + s = L_add(x1, L_add(x3, x5)); + + im[0 * st] = L_add(t, s); + move32(); + im[3 * st] = L_sub(t, s); + move32(); + + t = Mpy_32_32_lc3plus(L_sub(x2, x4), C61_32); + s = L_sub(x0, L_shr_pos(L_add(x2, x4), 1)); + + re[1 * st] = L_add(re[1 * st], t); + move32(); + re[2 * st] = L_sub(re[2 * st], t); + move32(); + re[4 * st] = L_add(re[4 * st], t); + move32(); + re[5 * st] = L_sub(re[5 * st], t); + move32(); + + i1e = L_add(i1e, s); + i2e = L_add(i2e, s); + + t = Mpy_32_32_lc3plus(L_sub(x3, x5), C61_32); + s = L_sub(x1, L_shr_pos(L_add(x5, x3), 1)); + + r1o = L_add(r1o, t); + r2o = L_sub(r2o, t); + + i1o = L_add(i1o, s); + i2o = L_add(i2o, s); + + t = L_add(L_shr_pos(r1o, 1), Mpy_32_32_lc3plus(i1o, C61_32)); + s = L_sub(L_shr_pos(i1o, 1), Mpy_32_32_lc3plus(r1o, C61_32)); + + re[1 * st] = L_add(re[1 * st], t); + move32(); + im[1 * st] = L_add(i1e, s); + move32(); + + re[4 * st] = L_sub(re[4 * st], t); + move32(); + im[4 * st] = L_sub(i1e, s); + move32(); + + t = L_sub(Mpy_32_32_lc3plus(i2o, C61_32), L_shr_pos(r2o, 1)); + s = L_negate(L_add(Mpy_32_32_lc3plus(r2o, C61_32), L_shr_pos(i2o, 1))); + + re[2 * st] = L_add(re[2 * st], t); + move32(); + im[2 * st] = L_add(i2e, s); + move32(); + + re[5 * st] = L_sub(re[5 * st], t); + move32(); + im[5 * st] = L_sub(i2e, s); + move32(); + + Dyn_Mem_Deluxe_Out(); +} +#endif + +/** + * \brief 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 + * + * \param [i/o] re real input / output + * \param [i/o] im imag input / output + * \param [i ] s stride real and imag input / output + * + * \return void + */ + + +static void fft8(Word32 *re, Word32 *im, Word16 s) +{ + Dyn_Mem_Deluxe_In(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_pos(re[s * 0], SCALEFACTOR8); + x01 = L_shr_pos(im[s * 0], SCALEFACTOR8); + x02 = L_shr_pos(re[s * 1], SCALEFACTOR8); + x03 = L_shr_pos(im[s * 1], SCALEFACTOR8); + x04 = L_shr_pos(re[s * 2], SCALEFACTOR8); + x05 = L_shr_pos(im[s * 2], SCALEFACTOR8); + x06 = L_shr_pos(re[s * 3], SCALEFACTOR8); + x07 = L_shr_pos(im[s * 3], SCALEFACTOR8); + x08 = L_shr_pos(re[s * 4], SCALEFACTOR8); + x09 = L_shr_pos(im[s * 4], SCALEFACTOR8); + x10 = L_shr_pos(re[s * 5], SCALEFACTOR8); + x11 = L_shr_pos(im[s * 5], SCALEFACTOR8); + x12 = L_shr_pos(re[s * 6], SCALEFACTOR8); + x13 = L_shr_pos(im[s * 6], SCALEFACTOR8); + x14 = L_shr_pos(re[s * 7], SCALEFACTOR8); + x15 = L_shr_pos(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_xx(L_add(t00, t02), C81); + s14 = Mpy_32_xx(L_sub(t00, t02), C81); + s13 = Mpy_32_xx(L_sub(t03, t01), C81); + s15 = Mpy_32_xx(L_add(t01, t03), C82); + + /* 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[s * 3] = L_add(s08, s14); + move32(); + re[s * 7] = L_sub(s08, s14); + move32(); + im[s * 3] = L_add(s09, s15); + move32(); + im[s * 7] = L_sub(s09, s15); + move32(); + re[s * 1] = L_add(s10, s12); + move32(); + re[s * 5] = L_sub(s10, s12); + move32(); + im[s * 1] = L_add(s11, s13); + move32(); + im[s * 5] = L_sub(s11, s13); + move32(); + + Dyn_Mem_Deluxe_Out(); +} + +/** + * \brief Function performs a complex 10-point FFT + * The FFT is performed inplace. The result of the FFT + * is scaled by SCALEFACTOR10 bits. + * + * WOPS with 32x16 bit multiplications: 196 cycles + * + * \param [i/o] re real input / output + * \param [i/o] im imag input / output + * \param [i ] s stride real and imag input / output + * + * \return void + */ + + + +static void fft10(Word32 *re, Word32 *im, Word16 s) +{ + Dyn_Mem_Deluxe_In(Word32 t; Word32 x0, x1, x2, x3, x4; Word32 r1, r2, r3, r4; Word32 s1, s2, s3, s4; + Word32 y00, y01, y02, y03, y04, y05, y06, y07, y08, y09; + Word32 y10, y11, y12, y13, y14, y15, y16, y17, y18, y19;); + + /* 2 fft5 stages */ + + /* real part */ + x0 = L_shr_pos(re[s * 0], SCALEFACTOR10); + x1 = L_shr_pos(re[s * 2], SCALEFACTOR10); + x2 = L_shr_pos(re[s * 4], SCALEFACTOR10); + x3 = L_shr_pos(re[s * 6], SCALEFACTOR10); + x4 = L_shr_pos(re[s * 8], SCALEFACTOR10); + + r1 = L_add(x3, x2); + r4 = L_sub(x3, x2); + r3 = L_add(x1, x4); + r2 = L_sub(x1, x4); + t = Mpy_32_xx(L_sub(r1, r3), C54); + r1 = L_add(r1, r3); + y00 = L_add(x0, r1); + r1 = L_add(y00, (L_shl_pos(Mpy_32_xx(r1, C55), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_xx((L_add(r4, r2)), C51); + r4 = L_add(t, L_shl_pos(Mpy_32_xx(r4, C52), 1)); + r2 = L_add(t, Mpy_32_xx(r2, C53)); + + /* imaginary part */ + x0 = L_shr_pos(im[s * 0], SCALEFACTOR10); + x1 = L_shr_pos(im[s * 2], SCALEFACTOR10); + x2 = L_shr_pos(im[s * 4], SCALEFACTOR10); + x3 = L_shr_pos(im[s * 6], SCALEFACTOR10); + x4 = L_shr_pos(im[s * 8], SCALEFACTOR10); + + s1 = L_add(x3, x2); + s4 = L_sub(x3, x2); + s3 = L_add(x1, x4); + s2 = L_sub(x1, x4); + t = Mpy_32_xx(L_sub(s1, s3), C54); + s1 = L_add(s1, s3); + y01 = L_add(x0, s1); + s1 = L_add(y01, L_shl_pos(Mpy_32_xx(s1, C55), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_xx(L_add(s4, s2), C51); + s4 = L_add(t, L_shl_pos(Mpy_32_xx(s4, C52), 1)); + s2 = L_add(t, Mpy_32_xx(s2, C53)); + + /* combination */ + y04 = L_add(r1, s2); + y16 = L_sub(r1, s2); + y08 = L_sub(r3, s4); + y12 = L_add(r3, s4); + + y05 = L_sub(s1, r2); + y17 = L_add(s1, r2); + y09 = L_add(s3, r4); + y13 = L_sub(s3, r4); + + /* real part */ + x0 = L_shr_pos(re[s * 5], SCALEFACTOR10); + x1 = L_shr_pos(re[s * 1], SCALEFACTOR10); + x2 = L_shr_pos(re[s * 3], SCALEFACTOR10); + x3 = L_shr_pos(re[s * 7], SCALEFACTOR10); + x4 = L_shr_pos(re[s * 9], SCALEFACTOR10); + + r1 = L_add(x1, x4); + r4 = L_sub(x1, x4); + r3 = L_add(x3, x2); + r2 = L_sub(x3, x2); + t = Mpy_32_xx(L_sub(r1, r3), C54); + r1 = L_add(r1, r3); + y02 = L_add(x0, r1); + r1 = L_add(y02, (L_shl_pos(Mpy_32_xx(r1, C55), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_xx((L_add(r4, r2)), C51); + r4 = L_add(t, L_shl_pos(Mpy_32_xx(r4, C52), 1)); + r2 = L_add(t, Mpy_32_xx(r2, C53)); + + /* imaginary part */ + x0 = L_shr_pos(im[s * 5], SCALEFACTOR10); + x1 = L_shr_pos(im[s * 1], SCALEFACTOR10); + x2 = L_shr_pos(im[s * 3], SCALEFACTOR10); + x3 = L_shr_pos(im[s * 7], SCALEFACTOR10); + x4 = L_shr_pos(im[s * 9], SCALEFACTOR10); + + s1 = L_add(x1, x4); + s4 = L_sub(x1, x4); + s3 = L_add(x3, x2); + s2 = L_sub(x3, x2); + t = Mpy_32_xx(L_sub(s1, s3), C54); + s1 = L_add(s1, s3); + y03 = L_add(x0, s1); + s1 = L_add(y03, L_shl_pos(Mpy_32_xx(s1, C55), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_xx(L_add(s4, s2), C51); + s4 = L_add(t, L_shl_pos(Mpy_32_xx(s4, C52), 1)); + s2 = L_add(t, Mpy_32_xx(s2, C53)); + + /* combination */ + y06 = L_add(r1, s2); + y18 = L_sub(r1, s2); + y10 = L_sub(r3, s4); + y14 = L_add(r3, s4); + + y07 = L_sub(s1, r2); + y19 = L_add(s1, r2); + y11 = L_add(s3, r4); + y15 = L_sub(s3, r4); + + /* 5 fft2 stages */ + re[s * 0] = L_add(y00, y02); + move32(); + im[s * 0] = L_add(y01, y03); + move32(); + re[s * 5] = L_sub(y00, y02); + move32(); + im[s * 5] = L_sub(y01, y03); + move32(); + + re[s * 2] = L_add(y04, y06); + move32(); + im[s * 2] = L_add(y05, y07); + move32(); + re[s * 7] = L_sub(y04, y06); + move32(); + im[s * 7] = L_sub(y05, y07); + move32(); + + re[s * 4] = L_add(y08, y10); + move32(); + im[s * 4] = L_add(y09, y11); + move32(); + re[s * 9] = L_sub(y08, y10); + move32(); + im[s * 9] = L_sub(y09, y11); + move32(); + + re[s * 6] = L_add(y12, y14); + move32(); + im[s * 6] = L_add(y13, y15); + move32(); + re[s * 1] = L_sub(y12, y14); + move32(); + im[s * 1] = L_sub(y13, y15); + move32(); + + re[s * 8] = L_add(y16, y18); + move32(); + im[s * 8] = L_add(y17, y19); + move32(); + re[s * 3] = L_sub(y16, y18); + move32(); + im[s * 3] = L_sub(y17, y19); + move32(); + + Dyn_Mem_Deluxe_Out(); +} + +/** + * \brief Function performs a complex 15-point FFT + * The FFT is performed inplace. The result of the FFT + * is scaled by SCALEFACTOR15 bits. + * + * WOPS with 32x16 bit multiplications: 354 cycles + * + * \param [i/o] re real input / output + * \param [i/o] im imag input / output + * \param [i ] s stride real and imag input / output + * + * \return void + */ + + +static void fft15(Word32 *re, Word32 *im, Word16 s) +{ + Dyn_Mem_Deluxe_In(Word32 t; Word32 r1, r2, r3, r4; Word32 s1, s2, s3, s4; + Word32 x00, x01, x02, x03, x04, x05, x06, x07, x08, x09; + Word32 x10, x11, x12, x13, x14, x15, x16, x17, x18, x19; + Word32 x20, x21, x22, x23, x24, x25, x26, x27, x28, x29; + Word32 y00, y01, y02, y03, y04, y05, y06, y07, y08, y09; + Word32 y10, y11, y12, y13, y14, y15, y16, y17, y18, y19; + Word32 y20, y21, y22, y23, y24, y25, y26, y27, y28, y29;); + + x00 = L_shr_pos(re[s * 0], SCALEFACTOR15); + x01 = L_shr_pos(im[s * 0], SCALEFACTOR15); + x02 = L_shr_pos(re[s * 3], SCALEFACTOR15); + x03 = L_shr_pos(im[s * 3], SCALEFACTOR15); + x04 = L_shr_pos(re[s * 6], SCALEFACTOR15); + x05 = L_shr_pos(im[s * 6], SCALEFACTOR15); + x06 = L_shr_pos(re[s * 9], SCALEFACTOR15); + x07 = L_shr_pos(im[s * 9], SCALEFACTOR15); + x08 = L_shr_pos(re[s * 12], SCALEFACTOR15); + x09 = L_shr_pos(im[s * 12], SCALEFACTOR15); + + x10 = L_shr_pos(re[s * 5], SCALEFACTOR15); + x11 = L_shr_pos(im[s * 5], SCALEFACTOR15); + x12 = L_shr_pos(re[s * 8], SCALEFACTOR15); + x13 = L_shr_pos(im[s * 8], SCALEFACTOR15); + x14 = L_shr_pos(re[s * 11], SCALEFACTOR15); + x15 = L_shr_pos(im[s * 11], SCALEFACTOR15); + x16 = L_shr_pos(re[s * 14], SCALEFACTOR15); + x17 = L_shr_pos(im[s * 14], SCALEFACTOR15); + x18 = L_shr_pos(re[s * 2], SCALEFACTOR15); + x19 = L_shr_pos(im[s * 2], SCALEFACTOR15); + + x20 = L_shr_pos(re[s * 10], SCALEFACTOR15); + x21 = L_shr_pos(im[s * 10], SCALEFACTOR15); + x22 = L_shr_pos(re[s * 13], SCALEFACTOR15); + x23 = L_shr_pos(im[s * 13], SCALEFACTOR15); + x24 = L_shr_pos(re[s * 1], SCALEFACTOR15); + x25 = L_shr_pos(im[s * 1], SCALEFACTOR15); + x26 = L_shr_pos(re[s * 4], SCALEFACTOR15); + x27 = L_shr_pos(im[s * 4], SCALEFACTOR15); + x28 = L_shr_pos(re[s * 7], SCALEFACTOR15); + x29 = L_shr_pos(im[s * 7], SCALEFACTOR15); + + /* 1. FFT5 stage */ + + /* real part */ + r1 = L_add(x02, x08); + r4 = L_sub(x02, x08); + r3 = L_add(x04, x06); + r2 = L_sub(x04, x06); + t = Mpy_32_xx(L_sub(r1, r3), C54); + r1 = L_add(r1, r3); + y00 = L_add(x00, r1); + r1 = L_add(y00, (L_shl_pos(Mpy_32_xx(r1, C55), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_xx((L_add(r4, r2)), C51); + r4 = L_add(t, L_shl_pos(Mpy_32_xx(r4, C52), 1)); + r2 = L_add(t, Mpy_32_xx(r2, C53)); + + /* imaginary part */ + s1 = L_add(x03, x09); + s4 = L_sub(x03, x09); + s3 = L_add(x05, x07); + s2 = L_sub(x05, x07); + t = Mpy_32_xx(L_sub(s1, s3), C54); + s1 = L_add(s1, s3); + y01 = L_add(x01, s1); + s1 = L_add(y01, L_shl_pos(Mpy_32_xx(s1, C55), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_xx(L_add(s4, s2), C51); + s4 = L_add(t, L_shl_pos(Mpy_32_xx(s4, C52), 1)); + s2 = L_add(t, Mpy_32_xx(s2, C53)); + + /* combination */ + y02 = L_add(r1, s2); + y08 = L_sub(r1, s2); + y04 = L_sub(r3, s4); + y06 = L_add(r3, s4); + + y03 = L_sub(s1, r2); + y09 = L_add(s1, r2); + y05 = L_add(s3, r4); + y07 = L_sub(s3, r4); + + /* 2. FFT5 stage */ + + /* real part */ + r1 = L_add(x12, x18); + r4 = L_sub(x12, x18); + r3 = L_add(x14, x16); + r2 = L_sub(x14, x16); + t = Mpy_32_xx(L_sub(r1, r3), C54); + r1 = L_add(r1, r3); + y10 = L_add(x10, r1); + r1 = L_add(y10, (L_shl_pos(Mpy_32_xx(r1, C55), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_xx((L_add(r4, r2)), C51); + r4 = L_add(t, L_shl_pos(Mpy_32_xx(r4, C52), 1)); + r2 = L_add(t, Mpy_32_xx(r2, C53)); + + /* imaginary part */ + s1 = L_add(x13, x19); + s4 = L_sub(x13, x19); + s3 = L_add(x15, x17); + s2 = L_sub(x15, x17); + t = Mpy_32_xx(L_sub(s1, s3), C54); + s1 = L_add(s1, s3); + y11 = L_add(x11, s1); + s1 = L_add(y11, L_shl_pos(Mpy_32_xx(s1, C55), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_xx(L_add(s4, s2), C51); + s4 = L_add(t, L_shl_pos(Mpy_32_xx(s4, C52), 1)); + s2 = L_add(t, Mpy_32_xx(s2, C53)); + + /* combination */ + y12 = L_add(r1, s2); + y18 = L_sub(r1, s2); + y14 = L_sub(r3, s4); + y16 = L_add(r3, s4); + + y13 = L_sub(s1, r2); + y19 = L_add(s1, r2); + y15 = L_add(s3, r4); + y17 = L_sub(s3, r4); + + /* 3. FFT5 stage */ + + /* real part */ + r1 = L_add(x22, x28); + r4 = L_sub(x22, x28); + r3 = L_add(x24, x26); + r2 = L_sub(x24, x26); + t = Mpy_32_xx(L_sub(r1, r3), C54); + r1 = L_add(r1, r3); + y20 = L_add(x20, r1); + r1 = L_add(y20, (L_shl_pos(Mpy_32_xx(r1, C55), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_xx((L_add(r4, r2)), C51); + r4 = L_add(t, L_shl_pos(Mpy_32_xx(r4, C52), 1)); + r2 = L_add(t, Mpy_32_xx(r2, C53)); + + /* imaginary part */ + s1 = L_add(x23, x29); + s4 = L_sub(x23, x29); + s3 = L_add(x25, x27); + s2 = L_sub(x25, x27); + t = Mpy_32_xx(L_sub(s1, s3), C54); + s1 = L_add(s1, s3); + y21 = L_add(x21, s1); + s1 = L_add(y21, L_shl_pos(Mpy_32_xx(s1, C55), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_xx(L_add(s4, s2), C51); + s4 = L_add(t, L_shl_pos(Mpy_32_xx(s4, C52), 1)); + s2 = L_add(t, Mpy_32_xx(s2, C53)); + + /* combination */ + y22 = L_add(r1, s2); + y28 = L_sub(r1, s2); + y24 = L_sub(r3, s4); + y26 = L_add(r3, s4); + + y23 = L_sub(s1, r2); + y29 = L_add(s1, r2); + y25 = L_add(s3, r4); + y27 = L_sub(s3, r4); + + /* 1. FFT3 stage */ + + /* real part */ + r1 = L_add(y10, y20); + r2 = Mpy_32_xx(L_sub(y10, y20), C31); + re[s * 0] = L_add(y00, r1); + move32(); + r1 = L_sub(y00, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(y11, y21); + s2 = Mpy_32_xx(L_sub(y11, y21), C31); + im[s * 0] = L_add(y01, s1); + move32(); + s1 = L_sub(y01, L_shr_pos(s1, 1)); + + /* combination */ + re[s * 10] = L_sub(r1, s2); + move32(); + re[s * 5] = L_add(r1, s2); + move32(); + im[s * 10] = L_add(s1, r2); + move32(); + im[s * 5] = L_sub(s1, r2); + move32(); + + /* 2. FFT3 stage */ + + /* real part */ + r1 = L_add(y12, y22); + r2 = Mpy_32_xx(L_sub(y12, y22), C31); + re[s * 6] = L_add(y02, r1); + move32(); + r1 = L_sub(y02, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(y13, y23); + s2 = Mpy_32_xx(L_sub(y13, y23), C31); + im[s * 6] = L_add(y03, s1); + move32(); + s1 = L_sub(y03, L_shr_pos(s1, 1)); + + /* combination */ + re[s * 1] = L_sub(r1, s2); + move32(); + re[s * 11] = L_add(r1, s2); + move32(); + im[s * 1] = L_add(s1, r2); + move32(); + im[s * 11] = L_sub(s1, r2); + move32(); + + /* 3. FFT3 stage */ + + /* real part */ + r1 = L_add(y14, y24); + r2 = Mpy_32_xx(L_sub(y14, y24), C31); + re[s * 12] = L_add(y04, r1); + move32(); + r1 = L_sub(y04, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(y15, y25); + s2 = Mpy_32_xx(L_sub(y15, y25), C31); + im[s * 12] = L_add(y05, s1); + move32(); + s1 = L_sub(y05, L_shr_pos(s1, 1)); + + /* combination */ + re[s * 7] = L_sub(r1, s2); + move32(); + re[s * 2] = L_add(r1, s2); + move32(); + im[s * 7] = L_add(s1, r2); + move32(); + im[s * 2] = L_sub(s1, r2); + move32(); + + /* 4. FFT3 stage */ + + /* real part */ + r1 = L_add(y16, y26); + r2 = Mpy_32_xx(L_sub(y16, y26), C31); + re[s * 3] = L_add(y06, r1); + move32(); + r1 = L_sub(y06, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(y17, y27); + s2 = Mpy_32_xx(L_sub(y17, y27), C31); + im[s * 3] = L_add(y07, s1); + move32(); + s1 = L_sub(y07, L_shr_pos(s1, 1)); + + /* combination */ + re[s * 13] = L_sub(r1, s2); + move32(); + re[s * 8] = L_add(r1, s2); + move32(); + im[s * 13] = L_add(s1, r2); + move32(); + im[s * 8] = L_sub(s1, r2); + move32(); + + /* 5. FFT3 stage */ + + /* real part */ + r1 = L_add(y18, y28); + r2 = Mpy_32_xx(L_sub(y18, y28), C31); + re[s * 9] = L_add(y08, r1); + move32(); + r1 = L_sub(y08, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(y19, y29); + s2 = Mpy_32_xx(L_sub(y19, y29), C31); + im[s * 9] = L_add(y09, s1); + move32(); + s1 = L_sub(y09, L_shr_pos(s1, 1)); + + /* combination */ + re[s * 4] = L_sub(r1, s2); + move32(); + re[s * 14] = L_add(r1, s2); + move32(); + im[s * 4] = L_add(s1, r2); + move32(); + im[s * 14] = L_sub(s1, r2); + move32(); + + Dyn_Mem_Deluxe_Out(); +} + +#ifdef CR8_G_ADD_75MS + +#define STC(x) (x) +const Word32 RotVectorReal12[] = +{ + STC(0x6ed9eba1), STC(0x40000000), + STC(0x40000000), STC(0xc0000000), +#ifndef FFT12_UNROLLED_ENABLE + STC(0x00000000), STC(0x80000000), +#endif +}; + +const Word32 RotVectorImag12[] = +{ + STC(0x40000000), STC(0x6ed9eba1), + STC(0x6ed9eba1), STC(0x6ed9eba1), +#ifndef FFT12_UNROLLED_ENABLE + STC(0x7fffffff), STC(0x00000000), +#endif +}; + +static void fft12(Word32 *pInput) +{ + Dyn_Mem_Deluxe_In(Word32 aDst[24]; Word32 * pSrc, *pDst; Counter i; Word32 r1, r2, s1, s2, pD; Word32 re, im; + Word32 vre, vim;); + + pSrc = pInput; + move16(); + pDst = aDst; + move16(); + + /* First 3*2 samples are shifted right by 2 before output */ + r1 = L_add(L_shr_pos(pSrc[8], 2), L_shr_pos(pSrc[16], 2)); + r2 = Mpy_32_xx(L_sub(L_shr_pos(pSrc[8], 2), L_shr_pos(pSrc[16], 2)), C31); + pD = L_shr_pos(pSrc[0], 2); + pDst[0] = L_shr_pos(L_add(pD, r1), 1); + r1 = L_sub(pD, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(L_shr_pos(pSrc[9], 2), L_shr_pos(pSrc[17], 2)); + s2 = Mpy_32_xx(L_sub(L_shr_pos(pSrc[9], 2), L_shr_pos(pSrc[17], 2)), C31); + pD = L_shr_pos(pSrc[1], 2); + pDst[1] = L_shr_pos(L_add(pD, s1), 1); + s1 = L_sub(pD, L_shr_pos(s1, 1)); + + r1 = L_shr_pos(r1, 1); + r2 = L_shr_pos(r2, 1); + s1 = L_shr_pos(s1, 1); + s2 = L_shr_pos(s2, 1); + + /* combination */ + pDst[2] = L_sub(r1, s2); + pDst[3] = L_add(s1, r2); + pDst[4] = L_add(r1, s2); + pDst[5] = L_sub(s1, r2); + pSrc += 2; + pDst += 6; + + const Word32 *pVecRe = RotVectorReal12; + const Word32 *pVecIm = RotVectorImag12; + + + + FOR (i = 0; i < 2; i++) + { + /* sample 0,1 are shifted right by 2 before output */ + /* sample 2,3 4,5 are shifted right by 1 and complex multiplied before output */ + + r1 = L_add(L_shr_pos(pSrc[8], 2), L_shr_pos(pSrc[16], 2)); + r2 = Mpy_32_xx(L_sub(L_shr_pos(pSrc[8], 2), L_shr_pos(pSrc[16], 2)), C31); + pD = L_shr_pos(pSrc[0], 2); + pDst[0] = L_shr_pos(L_add(pD, r1), 1); + r1 = L_sub(pD, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(L_shr_pos(pSrc[9], 2), L_shr_pos(pSrc[17], 2)); + s2 = Mpy_32_xx(L_sub(L_shr_pos(pSrc[9], 2), L_shr_pos(pSrc[17], 2)), C31); + pD = L_shr_pos(pSrc[1], 2); + pDst[1] = L_shr_pos(L_add(pD, s1), 1); + s1 = L_sub(pD, L_shr_pos(s1, 1)); + + r1 = L_shr_pos(r1, 1); + r2 = L_shr_pos(r2, 1); + s1 = L_shr_pos(s1, 1); + s2 = L_shr_pos(s2, 1); + + /* combination */ + re = L_sub(r1, s2); + im = L_add(s1, r2); + vre = *pVecRe++; + vim = *pVecIm++; + cplxMpy_32_32(&pDst[3], &pDst[2], im, re, vre, vim); + + re = L_add(r1, s2); + im = L_sub(s1, r2); + + vre = *pVecRe++; + vim = *pVecIm++; + cplxMpy_32_32(&pDst[5], &pDst[4], im, re, vre, vim); + + pDst += 6; + pSrc += 2; + } + /* sample 0,1 are shifted right by 2 before output */ + /* sample 2,3 is shifted right by 1 and complex multiplied with (0.0,+1.0) */ + /* sample 4,5 is shifted right by 1 and complex multiplied with (-1.0,0.0) */ + r1 = L_add(L_shr_pos(pSrc[8], 2), L_shr_pos(pSrc[16], 2)); + r2 = Mpy_32_xx(L_sub(L_shr_pos(pSrc[8], 2), L_shr_pos(pSrc[16], 2)), C31); + pD = L_shr_pos(pSrc[0], 2); + pDst[0] = L_shr_pos(L_add(pD, r1), 1); + r1 = L_sub(pD, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(L_shr_pos(pSrc[9], 2), L_shr_pos(pSrc[17], 2)); + s2 = Mpy_32_xx(L_sub(L_shr_pos(pSrc[9], 2), L_shr_pos(pSrc[17], 2)), C31); + pD = L_shr_pos(pSrc[1], 2); + pDst[1] = L_shr_pos(L_add(pD, s1), 1); + s1 = L_sub(pD, L_shr_pos(s1, 1)); + + r1 = L_shr_pos(r1, 1); + r2 = L_shr_pos(r2, 1); + s1 = L_shr_pos(s1, 1); + s2 = L_shr_pos(s2, 1); + + /* combination */ + + pDst[2] = L_add(s1, r2); + move32(); + pDst[3] = L_sub(s2, r1); + move32(); + pDst[4] = L_negate(L_add(r1, s2)); + move32(); + pDst[5] = L_sub(r2, s1); + move32(); + /* Perform 3 times the fft of length 4. The input samples are at the address of aDst and the + output samples are at the address of pInput. The input vector for the fft of length 4 is built + of the interleaved samples in aDst, the output samples are stored consecutively at the address + of pInput. + */ + move16(); + move16(); + pSrc = aDst; + pDst = pInput; + FOR (i = 0; i < 3; i++) + { + /* inline FFT4 merged with incoming resorting loop */ + r1 = L_add(L_shr_pos(pSrc[0], 2), L_shr_pos(pSrc[12], 2)); /* Re A + Re B */ + r2 = L_add(L_shr_pos(pSrc[6], 2), L_shr_pos(pSrc[18], 2)); /* Re C + Re D */ + s1 = L_add(L_shr_pos(pSrc[1], 2), L_shr_pos(pSrc[13], 2)); /* Im A + Im B */ + s2 = L_add(L_shr_pos(pSrc[7], 2), L_shr_pos(pSrc[19], 2)); /* Im C + Im D */ + + pDst[0] = L_add(r1, r2); /* Re A' = Re A + Re B + Re C + Re D */ + pDst[1] = L_add(s1, s2); /* Im A' = Im A + Im B + Im C + Im D */ + + re = L_sub(r1, L_shr_pos(pSrc[12], 1)); /* Re A - Re B */ + im = L_sub(s1, L_shr_pos(pSrc[13], 1)); /* Im A - Im B */ + + pDst[12] = L_sub(r1, r2); /* Re C' = Re A + Re B - Re C - Re D */ + pDst[13] = L_sub(s1, s2); /* Im C' = Im A + Im B - Im C - Im D */ + + r2 = L_sub(r2, L_shr_pos(pSrc[18], 1)); /* Re C - Re D */ + s2 = L_sub(s2, L_shr_pos(pSrc[19], 1)); /* Im C - Im D */ + + pDst[6] = L_add(re, s2); /* Re B' = Re A - Re B + Im C - Im D */ + pDst[18] = L_sub(re, s2); /* Re D' = Re A - Re B - Im C + Im D */ + pDst[7] = L_sub(im, r2); /* Im B' = Im A - Im B - Re C + Re D */ + pDst[19] = L_add(im, r2); /* Im D' = Im A - Im B + Re C - Re D */ + + pSrc += 2; + pDst += 2; + } + + Dyn_Mem_Deluxe_Out(); +} + +#else /* CR8_G_ADD_75MS */ + +static void fft12(Word32 *pInput) +{ + Dyn_Mem_Deluxe_In(Word32 aDst[24]; Word32 * pSrc, *pDst; Counter i; Word32 r1, r2, s1, s2, pD; Word32 re, im; + Word16 vre, vim;); + + pSrc = pInput; + move16(); + pDst = aDst; + move16(); + + /* First 3*2 samples are shifted right by 2 before output */ + r1 = L_add(L_shr_pos(pSrc[8], 2), L_shr_pos(pSrc[16], 2)); + r2 = Mpy_32_xx(L_sub(L_shr_pos(pSrc[8], 2), L_shr_pos(pSrc[16], 2)), C31); + pD = L_shr_pos(pSrc[0], 2); + pDst[0] = L_shr_pos(L_add(pD, r1), 1); + r1 = L_sub(pD, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(L_shr_pos(pSrc[9], 2), L_shr_pos(pSrc[17], 2)); + s2 = Mpy_32_xx(L_sub(L_shr_pos(pSrc[9], 2), L_shr_pos(pSrc[17], 2)), C31); + pD = L_shr_pos(pSrc[1], 2); + pDst[1] = L_shr_pos(L_add(pD, s1), 1); + s1 = L_sub(pD, L_shr_pos(s1, 1)); + + r1 = L_shr_pos(r1, 1); + r2 = L_shr_pos(r2, 1); + s1 = L_shr_pos(s1, 1); + s2 = L_shr_pos(s2, 1); + + /* combination */ + pDst[2] = L_sub(r1, s2); + pDst[3] = L_add(s1, r2); + pDst[4] = L_add(r1, s2); + pDst[5] = L_sub(s1, r2); + pSrc += 2; + pDst += 6; + + vre = add(0x6eda, 0); + vim = add(0x4000, 0); + + FOR (i = 0; i < 2; i++) + { + /* sample 0,1 are shifted right by 2 before output */ + /* sample 2,3 4,5 are shifted right by 1 and complex multiplied before output */ + + r1 = L_add(L_shr_pos(pSrc[8], 2), L_shr_pos(pSrc[16], 2)); + r2 = Mpy_32_xx(L_sub(L_shr_pos(pSrc[8], 2), L_shr_pos(pSrc[16], 2)), C31); + pD = L_shr_pos(pSrc[0], 2); + pDst[0] = L_shr_pos(L_add(pD, r1), 1); + r1 = L_sub(pD, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(L_shr_pos(pSrc[9], 2), L_shr_pos(pSrc[17], 2)); + s2 = Mpy_32_xx(L_sub(L_shr_pos(pSrc[9], 2), L_shr_pos(pSrc[17], 2)), C31); + pD = L_shr_pos(pSrc[1], 2); + pDst[1] = L_shr_pos(L_add(pD, s1), 1); + s1 = L_sub(pD, L_shr_pos(s1, 1)); + + r1 = L_shr_pos(r1, 1); + r2 = L_shr_pos(r2, 1); + s1 = L_shr_pos(s1, 1); + s2 = L_shr_pos(s2, 1); + + /* combination */ + re = L_sub(r1, s2); + im = L_add(s1, r2); + cplxMpy_32_16(&pDst[3], &pDst[2], im, re, vre, vim); + re = L_add(r1, s2); + im = L_sub(s1, r2); + vre = add(0x4000, 0); + if (i == 1) + vre = negate(vre); /* 0xC000 */ + if (i == 0) + vim = add(0x6eda, 0); + cplxMpy_32_16(&pDst[5], &pDst[4], im, re, vre, vim); + + pDst += 6; + pSrc += 2; + } + /* sample 0,1 are shifted right by 2 before output */ + /* sample 2,3 is shifted right by 1 and complex multiplied with (0.0,+1.0) */ + /* sample 4,5 is shifted right by 1 and complex multiplied with (-1.0,0.0) */ + r1 = L_add(L_shr_pos(pSrc[8], 2), L_shr_pos(pSrc[16], 2)); + r2 = Mpy_32_xx(L_sub(L_shr_pos(pSrc[8], 2), L_shr_pos(pSrc[16], 2)), C31); + pD = L_shr_pos(pSrc[0], 2); + pDst[0] = L_shr_pos(L_add(pD, r1), 1); + r1 = L_sub(pD, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(L_shr_pos(pSrc[9], 2), L_shr_pos(pSrc[17], 2)); + s2 = Mpy_32_xx(L_sub(L_shr_pos(pSrc[9], 2), L_shr_pos(pSrc[17], 2)), C31); + pD = L_shr_pos(pSrc[1], 2); + pDst[1] = L_shr_pos(L_add(pD, s1), 1); + s1 = L_sub(pD, L_shr_pos(s1, 1)); + + r1 = L_shr_pos(r1, 1); + r2 = L_shr_pos(r2, 1); + s1 = L_shr_pos(s1, 1); + s2 = L_shr_pos(s2, 1); + + /* combination */ + + pDst[2] = L_add(s1, r2); + move32(); + pDst[3] = L_sub(s2, r1); + move32(); + pDst[4] = L_negate(L_add(r1, s2)); + move32(); + pDst[5] = L_sub(r2, s1); + move32(); + /* Perform 3 times the fft of length 4. The input samples are at the address of aDst and the + output samples are at the address of pInput. The input vector for the fft of length 4 is built + of the interleaved samples in aDst, the output samples are stored consecutively at the address + of pInput. + */ + move16(); + move16(); + pSrc = aDst; + pDst = pInput; + FOR (i = 0; i < 3; i++) + { + /* inline FFT4 merged with incoming resorting loop */ + r1 = L_add(L_shr_pos(pSrc[0], 2), L_shr_pos(pSrc[12], 2)); /* Re A + Re B */ + r2 = L_add(L_shr_pos(pSrc[6], 2), L_shr_pos(pSrc[18], 2)); /* Re C + Re D */ + s1 = L_add(L_shr_pos(pSrc[1], 2), L_shr_pos(pSrc[13], 2)); /* Im A + Im B */ + s2 = L_add(L_shr_pos(pSrc[7], 2), L_shr_pos(pSrc[19], 2)); /* Im C + Im D */ + + pDst[0] = L_add(r1, r2); /* Re A' = Re A + Re B + Re C + Re D */ + pDst[1] = L_add(s1, s2); /* Im A' = Im A + Im B + Im C + Im D */ + + re = L_sub(r1, L_shr_pos(pSrc[12], 1)); /* Re A - Re B */ + im = L_sub(s1, L_shr_pos(pSrc[13], 1)); /* Im A - Im B */ + + pDst[12] = L_sub(r1, r2); /* Re C' = Re A + Re B - Re C - Re D */ + pDst[13] = L_sub(s1, s2); /* Im C' = Im A + Im B - Im C - Im D */ + + r2 = L_sub(r2, L_shr_pos(pSrc[18], 1)); /* Re C - Re D */ + s2 = L_sub(s2, L_shr_pos(pSrc[19], 1)); /* Im C - Im D */ + + pDst[6] = L_add(re, s2); /* Re B' = Re A - Re B + Im C - Im D */ + pDst[18] = L_sub(re, s2); /* Re D' = Re A - Re B - Im C + Im D */ + pDst[7] = L_sub(im, r2); /* Im B' = Im A - Im B - Re C + Re D */ + pDst[19] = L_add(im, r2); /* Im D' = Im A - Im B + Re C - Re D */ + + pSrc += 2; + pDst += 2; + } + + Dyn_Mem_Deluxe_Out(); +} + +#endif + +/** + * \brief Function performs a complex 16-point FFT + * The FFT is performed inplace. The result of the FFT + * is scaled by SCALEFACTOR16 bits. + * + * WOPS with 32x16 bit multiplications (scale on ): 288 cycles + * WOPS with 32x16 bit multiplications (scale off): 256 cycles + * + * \param [i/o] re real input / output + * \param [i/o] im imag input / output + * \param [i ] s stride real and imag input / output + * + * \return void + */ + + + +static void fft16(Word32 *re, Word32 *im, Word16 s) +{ + Dyn_Mem_Deluxe_In(Word32 x0, x1, x2, x3, x4, x5, x6, x7; Word32 t0, t1, t2, t3, t4, t5, t6, t7; + Word32 y00, y01, y02, y03, y04, y05, y06, y07; Word32 y08, y09, y10, y11, y12, y13, y14, y15; + Word32 y16, y17, y18, y19, y20, y21, y22, y23; Word32 y24, y25, y26, y27, y28, y29, y30, y31;); + + x0 = L_shr_pos(re[s * 0], SCALEFACTOR16); + x1 = L_shr_pos(im[s * 0], SCALEFACTOR16); + x2 = L_shr_pos(re[s * 4], SCALEFACTOR16); + x3 = L_shr_pos(im[s * 4], SCALEFACTOR16); + x4 = L_shr_pos(re[s * 8], SCALEFACTOR16); + x5 = L_shr_pos(im[s * 8], SCALEFACTOR16); + x6 = L_shr_pos(re[s * 12], SCALEFACTOR16); + x7 = L_shr_pos(im[s * 12], SCALEFACTOR16); + + /* Pre-additions */ + t0 = L_add(x0, x4); + t2 = L_sub(x0, x4); + t1 = L_add(x1, x5); + t3 = L_sub(x1, x5); + t4 = L_add(x2, x6); + t7 = L_sub(x2, x6); + t5 = L_add(x7, x3); + t6 = L_sub(x7, x3); + + /* Post-additions */ + y00 = L_add(t0, t4); + y01 = L_add(t1, t5); + y02 = L_sub(t2, t6); + y03 = L_sub(t3, t7); + y04 = L_sub(t0, t4); + y05 = L_sub(t1, t5); + y06 = L_add(t2, t6); + y07 = L_add(t3, t7); + + x0 = L_shr_pos(re[s * 1], SCALEFACTOR16); + x1 = L_shr_pos(im[s * 1], SCALEFACTOR16); + x2 = L_shr_pos(re[s * 5], SCALEFACTOR16); + x3 = L_shr_pos(im[s * 5], SCALEFACTOR16); + x4 = L_shr_pos(re[s * 9], SCALEFACTOR16); + x5 = L_shr_pos(im[s * 9], SCALEFACTOR16); + x6 = L_shr_pos(re[s * 13], SCALEFACTOR16); + x7 = L_shr_pos(im[s * 13], SCALEFACTOR16); + + /* Pre-additions */ + t0 = L_add(x0, x4); + t2 = L_sub(x0, x4); + t1 = L_add(x1, x5); + t3 = L_sub(x1, x5); + t4 = L_add(x2, x6); + t7 = L_sub(x2, x6); + t5 = L_add(x7, x3); + t6 = L_sub(x7, x3); + + /* Post-additions */ + y08 = L_add(t0, t4); + y09 = L_add(t1, t5); + y10 = L_sub(t2, t6); + y11 = L_sub(t3, t7); + y12 = L_sub(t0, t4); + y13 = L_sub(t1, t5); + y14 = L_add(t2, t6); + y15 = L_add(t3, t7); + + x0 = L_shr_pos(re[s * 2], SCALEFACTOR16); + x1 = L_shr_pos(im[s * 2], SCALEFACTOR16); + x2 = L_shr_pos(re[s * 6], SCALEFACTOR16); + x3 = L_shr_pos(im[s * 6], SCALEFACTOR16); + x4 = L_shr_pos(re[s * 10], SCALEFACTOR16); + x5 = L_shr_pos(im[s * 10], SCALEFACTOR16); + x6 = L_shr_pos(re[s * 14], SCALEFACTOR16); + x7 = L_shr_pos(im[s * 14], SCALEFACTOR16); + + /* Pre-additions */ + t0 = L_add(x0, x4); + t2 = L_sub(x0, x4); + t1 = L_add(x1, x5); + t3 = L_sub(x1, x5); + t4 = L_add(x2, x6); + t7 = L_sub(x2, x6); + t5 = L_add(x7, x3); + t6 = L_sub(x7, x3); + + /* Post-additions */ + y16 = L_add(t0, t4); + y17 = L_add(t1, t5); + y18 = L_sub(t2, t6); + y19 = L_sub(t3, t7); + y20 = L_sub(t1, t5); + y21 = L_sub(t4, t0); + y22 = L_add(t2, t6); + y23 = L_add(t3, t7); + + x0 = L_shr_pos(re[s * 3], SCALEFACTOR16); + x1 = L_shr_pos(im[s * 3], SCALEFACTOR16); + x2 = L_shr_pos(re[s * 7], SCALEFACTOR16); + x3 = L_shr_pos(im[s * 7], SCALEFACTOR16); + x4 = L_shr_pos(re[s * 11], SCALEFACTOR16); + x5 = L_shr_pos(im[s * 11], SCALEFACTOR16); + x6 = L_shr_pos(re[s * 15], SCALEFACTOR16); + x7 = L_shr_pos(im[s * 15], SCALEFACTOR16); + + /* Pre-additions */ + t0 = L_add(x0, x4); + t2 = L_sub(x0, x4); + t1 = L_add(x1, x5); + t3 = L_sub(x1, x5); + t4 = L_add(x2, x6); + t7 = L_sub(x2, x6); + t5 = L_add(x7, x3); + t6 = L_sub(x7, x3); + + /* Post-additions */ + y24 = L_add(t0, t4); + y25 = L_add(t1, t5); + y26 = L_sub(t2, t6); + y27 = L_sub(t3, t7); + y28 = L_sub(t0, t4); + y29 = L_sub(t1, t5); + y30 = L_add(t2, t6); + y31 = L_add(t3, t7); + + /* rotation */ + + x0 = Mpy_32_xx(y22, C162); + x1 = Mpy_32_xx(y23, C162); + y22 = L_sub(x0, x1); + y23 = L_add(x0, x1); + + x0 = Mpy_32_xx(y28, C162); + x1 = Mpy_32_xx(y29, C162); + y28 = L_sub(x0, x1); + y29 = L_add(x0, x1); + + x0 = Mpy_32_xx(y12, C161); + x1 = Mpy_32_xx(y13, C161); + y12 = L_add(x0, x1); + y13 = L_sub(x1, x0); + + x0 = Mpy_32_xx(y18, C161); + x1 = Mpy_32_xx(y19, C161); + y18 = L_add(x0, x1); + y19 = L_sub(x1, x0); + + x0 = Mpy_32_xx(y10, C163); + x1 = Mpy_32_xx(y11, C166); + x2 = Mpy_32_xx(y10, C166); + x3 = Mpy_32_xx(y11, C163); + y10 = L_sub(x0, x1); + y11 = L_add(x2, x3); + + x0 = Mpy_32_xx(y14, C165); + x1 = Mpy_32_xx(y15, C164); + x2 = Mpy_32_xx(y14, C164); + x3 = Mpy_32_xx(y15, C165); + y14 = L_sub(x0, x1); + y15 = L_add(x2, x3); + + x0 = Mpy_32_xx(y26, C165); + x1 = Mpy_32_xx(y27, C164); + x2 = Mpy_32_xx(y26, C164); + x3 = Mpy_32_xx(y27, C165); + y26 = L_sub(x0, x1); + y27 = L_add(x2, x3); + + x0 = Mpy_32_xx(y30, C164); + x1 = Mpy_32_xx(y31, C165); + x2 = Mpy_32_xx(y30, C165); + x3 = Mpy_32_xx(y31, C164); + y30 = L_sub(x0, x1); + y31 = L_add(x2, x3); + + /* Pre-additions */ + + t0 = L_add(y00, y16); + t2 = L_sub(y00, y16); + t1 = L_add(y01, y17); + t3 = L_sub(y01, y17); + t4 = L_add(y08, y24); + t7 = L_sub(y08, y24); + t5 = L_add(y25, y09); + t6 = L_sub(y25, y09); + + /* Post-additions */ + + re[s * 0] = L_add(t0, t4); + move32(); + im[s * 0] = L_add(t1, t5); + move32(); + re[s * 4] = L_sub(t2, t6); + move32(); + im[s * 4] = L_sub(t3, t7); + move32(); + re[s * 8] = L_sub(t0, t4); + move32(); + im[s * 8] = L_sub(t1, t5); + move32(); + re[s * 12] = L_add(t2, t6); + move32(); + im[s * 12] = L_add(t3, t7); + move32(); + + /* Pre-additions */ + + t0 = L_add(y02, y18); + t2 = L_sub(y02, y18); + t1 = L_add(y03, y19); + t3 = L_sub(y03, y19); + t4 = L_add(y10, y26); + t7 = L_sub(y10, y26); + t5 = L_add(y27, y11); + t6 = L_sub(y27, y11); + + /* Post-additions */ + + re[s * 1] = L_add(t0, t4); + move32(); + im[s * 1] = L_add(t1, t5); + move32(); + re[s * 5] = L_sub(t2, t6); + move32(); + im[s * 5] = L_sub(t3, t7); + move32(); + re[s * 9] = L_sub(t0, t4); + move32(); + im[s * 9] = L_sub(t1, t5); + move32(); + re[s * 13] = L_add(t2, t6); + move32(); + im[s * 13] = L_add(t3, t7); + move32(); + + /* Pre-additions */ + + t0 = L_add(y04, y20); + t2 = L_sub(y04, y20); + t1 = L_add(y05, y21); + t3 = L_sub(y05, y21); + t4 = L_add(y12, y28); + t7 = L_sub(y12, y28); + t5 = L_add(y29, y13); + t6 = L_sub(y29, y13); + + /* Post-additions */ + + re[s * 2] = L_add(t0, t4); + move32(); + im[s * 2] = L_add(t1, t5); + move32(); + re[s * 6] = L_sub(t2, t6); + move32(); + im[s * 6] = L_sub(t3, t7); + move32(); + re[s * 10] = L_sub(t0, t4); + move32(); + im[s * 10] = L_sub(t1, t5); + move32(); + re[s * 14] = L_add(t2, t6); + move32(); + im[s * 14] = L_add(t3, t7); + move32(); + + /* Pre-additions */ + + t0 = L_add(y06, y22); + t2 = L_sub(y06, y22); + t1 = L_add(y07, y23); + t3 = L_sub(y07, y23); + t4 = L_add(y14, y30); + t7 = L_sub(y14, y30); + t5 = L_add(y31, y15); + t6 = L_sub(y31, y15); + + /* Post-additions */ + + re[s * 3] = L_add(t0, t4); + move32(); + im[s * 3] = L_add(t1, t5); + move32(); + re[s * 7] = L_sub(t2, t6); + move32(); + im[s * 7] = L_sub(t3, t7); + move32(); + re[s * 11] = L_sub(t0, t4); + move32(); + im[s * 11] = L_sub(t1, t5); + move32(); + re[s * 15] = L_add(t2, t6); + move32(); + im[s * 15] = L_add(t3, t7); + move32(); + + Dyn_Mem_Deluxe_Out(); +} + +/** + * \brief Function performs a complex 20-point FFT + * The FFT is performed inplace. The result of the FFT + * is scaled by SCALEFACTOR20 bits. + * + * WOPS with 32x16 bit multiplications: 432 cycles + * + * \param [i/o] re real input / output + * \param [i/o] im imag input / output + * \param [i ] s stride real and imag input / output + * + * \return void + */ + + +static void fft20(Word32 *re, Word32 *im, Word16 s) +{ + Dyn_Mem_Deluxe_In(Word32 r1, r2, r3, r4; Word32 s1, s2, s3, s4; Word32 x0, x1, x2, x3, x4; + Word32 t, t0, t1, t2, t3, t4, t5, t6, t7; Word32 y00, y01, y02, y03, y04, y05, y06, y07, y08, y09; + Word32 y10, y11, y12, y13, y14, y15, y16, y17, y18, y19; + Word32 y20, y21, y22, y23, y24, y25, y26, y27, y28, y29; + Word32 y30, y31, y32, y33, y34, y35, y36, y37, y38, y39;); + + /* 1. FFT5 stage */ + + /* real part */ + x0 = L_shr_pos(re[s * 0], SCALEFACTOR20); + x1 = L_shr_pos(re[s * 16], SCALEFACTOR20); + x2 = L_shr_pos(re[s * 12], SCALEFACTOR20); + x3 = L_shr_pos(re[s * 8], SCALEFACTOR20); + x4 = L_shr_pos(re[s * 4], SCALEFACTOR20); + + r1 = L_add(x1, x4); + r4 = L_sub(x1, x4); + r3 = L_add(x2, x3); + r2 = L_sub(x2, x3); + t = Mpy_32_xx(L_sub(r1, r3), C54); + r1 = L_add(r1, r3); + y00 = L_add(x0, r1); + r1 = L_add(y00, (L_shl_pos(Mpy_32_xx(r1, C55), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_xx((L_add(r4, r2)), C51); + r4 = L_add(t, L_shl_pos(Mpy_32_xx(r4, C52), 1)); + r2 = L_add(t, Mpy_32_xx(r2, C53)); + + /* imaginary part */ + x0 = L_shr_pos(im[s * 0], SCALEFACTOR20); + x1 = L_shr_pos(im[s * 16], SCALEFACTOR20); + x2 = L_shr_pos(im[s * 12], SCALEFACTOR20); + x3 = L_shr_pos(im[s * 8], SCALEFACTOR20); + x4 = L_shr_pos(im[s * 4], SCALEFACTOR20); + + s1 = L_add(x1, x4); + s4 = L_sub(x1, x4); + s3 = L_add(x2, x3); + s2 = L_sub(x2, x3); + t = Mpy_32_xx(L_sub(s1, s3), C54); + s1 = L_add(s1, s3); + y01 = L_add(x0, s1); + s1 = L_add(y01, L_shl_pos(Mpy_32_xx(s1, C55), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_xx(L_add(s4, s2), C51); + s4 = L_add(t, L_shl_pos(Mpy_32_xx(s4, C52), 1)); + s2 = L_add(t, Mpy_32_xx(s2, C53)); + + /* combination */ + y08 = L_add(r1, s2); + y32 = L_sub(r1, s2); + y16 = L_sub(r3, s4); + y24 = L_add(r3, s4); + + y09 = L_sub(s1, r2); + y33 = L_add(s1, r2); + y17 = L_add(s3, r4); + y25 = L_sub(s3, r4); + + /* 2. FFT5 stage */ + + /* real part */ + x0 = L_shr_pos(re[s * 5], SCALEFACTOR20); + x1 = L_shr_pos(re[s * 1], SCALEFACTOR20); + x2 = L_shr_pos(re[s * 17], SCALEFACTOR20); + x3 = L_shr_pos(re[s * 13], SCALEFACTOR20); + x4 = L_shr_pos(re[s * 9], SCALEFACTOR20); + + r1 = L_add(x1, x4); + r4 = L_sub(x1, x4); + r3 = L_add(x2, x3); + r2 = L_sub(x2, x3); + t = Mpy_32_xx(L_sub(r1, r3), C54); + r1 = L_add(r1, r3); + y02 = L_add(x0, r1); + r1 = L_add(y02, (L_shl_pos(Mpy_32_xx(r1, C55), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_xx((L_add(r4, r2)), C51); + r4 = L_add(t, L_shl_pos(Mpy_32_xx(r4, C52), 1)); + r2 = L_add(t, Mpy_32_xx(r2, C53)); + + /* imaginary part */ + x0 = L_shr_pos(im[s * 5], SCALEFACTOR20); + x1 = L_shr_pos(im[s * 1], SCALEFACTOR20); + x2 = L_shr_pos(im[s * 17], SCALEFACTOR20); + x3 = L_shr_pos(im[s * 13], SCALEFACTOR20); + x4 = L_shr_pos(im[s * 9], SCALEFACTOR20); + + s1 = L_add(x1, x4); + s4 = L_sub(x1, x4); + s3 = L_add(x2, x3); + s2 = L_sub(x2, x3); + t = Mpy_32_xx(L_sub(s1, s3), C54); + s1 = L_add(s1, s3); + y03 = L_add(x0, s1); + s1 = L_add(y03, L_shl_pos(Mpy_32_xx(s1, C55), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_xx(L_add(s4, s2), C51); + s4 = L_add(t, L_shl_pos(Mpy_32_xx(s4, C52), 1)); + s2 = L_add(t, Mpy_32_xx(s2, C53)); + + /* combination */ + y10 = L_add(r1, s2); + y34 = L_sub(r1, s2); + y18 = L_sub(r3, s4); + y26 = L_add(r3, s4); + + y11 = L_sub(s1, r2); + y35 = L_add(s1, r2); + y19 = L_add(s3, r4); + y27 = L_sub(s3, r4); + + /* 3. FFT5 stage */ + + /* real part */ + x0 = L_shr_pos(re[s * 10], SCALEFACTOR20); + x1 = L_shr_pos(re[s * 6], SCALEFACTOR20); + x2 = L_shr_pos(re[s * 2], SCALEFACTOR20); + x3 = L_shr_pos(re[s * 18], SCALEFACTOR20); + x4 = L_shr_pos(re[s * 14], SCALEFACTOR20); + + r1 = L_add(x1, x4); + r4 = L_sub(x1, x4); + r3 = L_add(x2, x3); + r2 = L_sub(x2, x3); + t = Mpy_32_xx(L_sub(r1, r3), C54); + r1 = L_add(r1, r3); + y04 = L_add(x0, r1); + r1 = L_add(y04, (L_shl_pos(Mpy_32_xx(r1, C55), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_xx((L_add(r4, r2)), C51); + r4 = L_add(t, L_shl_pos(Mpy_32_xx(r4, C52), 1)); + r2 = L_add(t, Mpy_32_xx(r2, C53)); + + /* imaginary part */ + x0 = L_shr_pos(im[s * 10], SCALEFACTOR20); + x1 = L_shr_pos(im[s * 6], SCALEFACTOR20); + x2 = L_shr_pos(im[s * 2], SCALEFACTOR20); + x3 = L_shr_pos(im[s * 18], SCALEFACTOR20); + x4 = L_shr_pos(im[s * 14], SCALEFACTOR20); + + s1 = L_add(x1, x4); + s4 = L_sub(x1, x4); + s3 = L_add(x2, x3); + s2 = L_sub(x2, x3); + t = Mpy_32_xx(L_sub(s1, s3), C54); + s1 = L_add(s1, s3); + y05 = L_add(x0, s1); + s1 = L_add(y05, L_shl_pos(Mpy_32_xx(s1, C55), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_xx(L_add(s4, s2), C51); + s4 = L_add(t, L_shl_pos(Mpy_32_xx(s4, C52), 1)); + s2 = L_add(t, Mpy_32_xx(s2, C53)); + + /* combination */ + y12 = L_add(r1, s2); + y36 = L_sub(r1, s2); + y20 = L_sub(r3, s4); + y28 = L_add(r3, s4); + + y13 = L_sub(s1, r2); + y37 = L_add(s1, r2); + y21 = L_add(s3, r4); + y29 = L_sub(s3, r4); + + /* 4. FFT5 stage */ + + /* real part */ + x0 = L_shr_pos(re[s * 15], SCALEFACTOR20); + x1 = L_shr_pos(re[s * 11], SCALEFACTOR20); + x2 = L_shr_pos(re[s * 7], SCALEFACTOR20); + x3 = L_shr_pos(re[s * 3], SCALEFACTOR20); + x4 = L_shr_pos(re[s * 19], SCALEFACTOR20); + + r1 = L_add(x1, x4); + r4 = L_sub(x1, x4); + r3 = L_add(x2, x3); + r2 = L_sub(x2, x3); + t = Mpy_32_xx(L_sub(r1, r3), C54); + r1 = L_add(r1, r3); + y06 = L_add(x0, r1); + r1 = L_add(y06, (L_shl_pos(Mpy_32_xx(r1, C55), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_xx((L_add(r4, r2)), C51); + r4 = L_add(t, L_shl_pos(Mpy_32_xx(r4, C52), 1)); + r2 = L_add(t, Mpy_32_xx(r2, C53)); + + /* imaginary part */ + x0 = L_shr_pos(im[s * 15], SCALEFACTOR20); + x1 = L_shr_pos(im[s * 11], SCALEFACTOR20); + x2 = L_shr_pos(im[s * 7], SCALEFACTOR20); + x3 = L_shr_pos(im[s * 3], SCALEFACTOR20); + x4 = L_shr_pos(im[s * 19], SCALEFACTOR20); + + s1 = L_add(x1, x4); + s4 = L_sub(x1, x4); + s3 = L_add(x2, x3); + s2 = L_sub(x2, x3); + t = Mpy_32_xx(L_sub(s1, s3), C54); + s1 = L_add(s1, s3); + y07 = L_add(x0, s1); + s1 = L_add(y07, L_shl_pos(Mpy_32_xx(s1, C55), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_xx(L_add(s4, s2), C51); + s4 = L_add(t, L_shl_pos(Mpy_32_xx(s4, C52), 1)); + s2 = L_add(t, Mpy_32_xx(s2, C53)); + + /* combination */ + y14 = L_add(r1, s2); + y38 = L_sub(r1, s2); + y22 = L_sub(r3, s4); + y30 = L_add(r3, s4); + + y15 = L_sub(s1, r2); + y39 = L_add(s1, r2); + y23 = L_add(s3, r4); + y31 = L_sub(s3, r4); + + /* 1. FFT4 stage */ + + /* Pre-additions */ + t0 = L_add(y00, y04); + t2 = L_sub(y00, y04); + t1 = L_add(y01, y05); + t3 = L_sub(y01, y05); + t4 = L_add(y02, y06); + t7 = L_sub(y02, y06); + t5 = L_add(y07, y03); + t6 = L_sub(y07, y03); + + /* Post-additions */ + re[s * 0] = L_add(t0, t4); + move32(); + im[s * 0] = L_add(t1, t5); + move32(); + re[s * 5] = L_sub(t2, t6); + move32(); + im[s * 5] = L_sub(t3, t7); + move32(); + re[s * 10] = L_sub(t0, t4); + move32(); + im[s * 10] = L_sub(t1, t5); + move32(); + re[s * 15] = L_add(t2, t6); + move32(); + im[s * 15] = L_add(t3, t7); + move32(); + + /* 2. FFT4 stage */ + + /* Pre-additions */ + t0 = L_add(y08, y12); + t2 = L_sub(y08, y12); + t1 = L_add(y09, y13); + t3 = L_sub(y09, y13); + t4 = L_add(y10, y14); + t7 = L_sub(y10, y14); + t5 = L_add(y15, y11); + t6 = L_sub(y15, y11); + + /* Post-additions */ + re[s * 4] = L_add(t0, t4); + move32(); + im[s * 4] = L_add(t1, t5); + move32(); + re[s * 9] = L_sub(t2, t6); + move32(); + im[s * 9] = L_sub(t3, t7); + move32(); + re[s * 14] = L_sub(t0, t4); + move32(); + im[s * 14] = L_sub(t1, t5); + move32(); + re[s * 19] = L_add(t2, t6); + move32(); + im[s * 19] = L_add(t3, t7); + move32(); + + /* 3. FFT4 stage */ + + /* Pre-additions */ + t0 = L_add(y16, y20); + t2 = L_sub(y16, y20); + t1 = L_add(y17, y21); + t3 = L_sub(y17, y21); + t4 = L_add(y18, y22); + t7 = L_sub(y18, y22); + t5 = L_add(y23, y19); + t6 = L_sub(y23, y19); + + /* Post-additions */ + re[s * 8] = L_add(t0, t4); + move32(); + im[s * 8] = L_add(t1, t5); + move32(); + re[s * 13] = L_sub(t2, t6); + move32(); + im[s * 13] = L_sub(t3, t7); + move32(); + re[s * 18] = L_sub(t0, t4); + move32(); + im[s * 18] = L_sub(t1, t5); + move32(); + re[s * 3] = L_add(t2, t6); + move32(); + im[s * 3] = L_add(t3, t7); + move32(); + + /* 4. FFT4 stage */ + + /* Pre-additions */ + t0 = L_add(y24, y28); + t2 = L_sub(y24, y28); + t1 = L_add(y25, y29); + t3 = L_sub(y25, y29); + t4 = L_add(y26, y30); + t7 = L_sub(y26, y30); + t5 = L_add(y31, y27); + t6 = L_sub(y31, y27); + + /* Post-additions */ + re[s * 12] = L_add(t0, t4); + move32(); + im[s * 12] = L_add(t1, t5); + move32(); + re[s * 17] = L_sub(t2, t6); + move32(); + im[s * 17] = L_sub(t3, t7); + move32(); + re[s * 2] = L_sub(t0, t4); + move32(); + im[s * 2] = L_sub(t1, t5); + move32(); + re[s * 7] = L_add(t2, t6); + move32(); + im[s * 7] = L_add(t3, t7); + move32(); + + /* 5. FFT4 stage */ + + /* Pre-additions */ + t0 = L_add(y32, y36); + t2 = L_sub(y32, y36); + t1 = L_add(y33, y37); + t3 = L_sub(y33, y37); + t4 = L_add(y34, y38); + t7 = L_sub(y34, y38); + t5 = L_add(y39, y35); + t6 = L_sub(y39, y35); + + /* Post-additions */ + re[s * 16] = L_add(t0, t4); + move32(); + im[s * 16] = L_add(t1, t5); + move32(); + re[s * 1] = L_sub(t2, t6); + move32(); + im[s * 1] = L_sub(t3, t7); + move32(); + re[s * 6] = L_sub(t0, t4); + move32(); + im[s * 6] = L_sub(t1, t5); + move32(); + re[s * 11] = L_add(t2, t6); + move32(); + im[s * 11] = L_add(t3, t7); + move32(); + + Dyn_Mem_Deluxe_Out(); +} + +/** + * \brief Function performs a complex 30-point FFT + * The FFT is performed inplace. The result of the FFT + * is scaled by SCALEFACTOR30 bits. + * + * WOPS with 32x16 bit multiplications: 828 cycles + * + * \param [i/o] re real input / output + * \param [i/o] im imag input / output + * \param [i ] s stride real and imag input / output + * + * \return void + */ + + +static void fft30(Word32 *re, Word32 *im, Word16 s) +{ + Dyn_Mem_Deluxe_In(Word32 t; Word32 r1, r2, r3, r4; Word32 s1, s2, s3, s4; + Word32 x00, x01, x02, x03, x04, x05, x06, x07, x08, x09; + Word32 x10, x11, x12, x13, x14, x15, x16, x17, x18, x19; + Word32 x20, x21, x22, x23, x24, x25, x26, x27, x28, x29; + + Word32 y00, y01, y02, y03, y04, y05, y06, y07, y08, y09; + Word32 y10, y11, y12, y13, y14, y15, y16, y17, y18, y19; + Word32 y20, y21, y22, y23, y24, y25, y26, y27, y28, y29; + + Word32 z00, z01, z02, z03, z04, z05, z06, z07, z08, z09; + Word32 z10, z11, z12, z13, z14, z15, z16, z17, z18, z19; + Word32 z20, z21, z22, z23, z24, z25, z26, z27, z28, z29; + Word32 z30, z31, z32, z33, z34, z35, z36, z37, z38, z39; + Word32 z40, z41, z42, z43, z44, z45, z46, z47, z48, z49; + Word32 z50, z51, z52, z53, z54, z55, z56, z57, z58, z59; + + Word32 * rel, *reh, *iml, *imh;); + + rel = &re[s * 0]; + reh = &re[s * 15]; + iml = &im[s * 0]; + imh = &im[s * 15]; + + /* 1. FFT15 stage */ + x00 = L_shr_pos(re[s * 0], SCALEFACTOR30_1); + x01 = L_shr_pos(im[s * 0], SCALEFACTOR30_1); + x02 = L_shr_pos(re[s * 18], SCALEFACTOR30_1); + x03 = L_shr_pos(im[s * 18], SCALEFACTOR30_1); + x04 = L_shr_pos(re[s * 6], SCALEFACTOR30_1); + x05 = L_shr_pos(im[s * 6], SCALEFACTOR30_1); + x06 = L_shr_pos(re[s * 24], SCALEFACTOR30_1); + x07 = L_shr_pos(im[s * 24], SCALEFACTOR30_1); + x08 = L_shr_pos(re[s * 12], SCALEFACTOR30_1); + x09 = L_shr_pos(im[s * 12], SCALEFACTOR30_1); + + x10 = L_shr_pos(re[s * 20], SCALEFACTOR30_1); + x11 = L_shr_pos(im[s * 20], SCALEFACTOR30_1); + x12 = L_shr_pos(re[s * 8], SCALEFACTOR30_1); + x13 = L_shr_pos(im[s * 8], SCALEFACTOR30_1); + x14 = L_shr_pos(re[s * 26], SCALEFACTOR30_1); + x15 = L_shr_pos(im[s * 26], SCALEFACTOR30_1); + x16 = L_shr_pos(re[s * 14], SCALEFACTOR30_1); + x17 = L_shr_pos(im[s * 14], SCALEFACTOR30_1); + x18 = L_shr_pos(re[s * 2], SCALEFACTOR30_1); + x19 = L_shr_pos(im[s * 2], SCALEFACTOR30_1); + + x20 = L_shr_pos(re[s * 10], SCALEFACTOR30_1); + x21 = L_shr_pos(im[s * 10], SCALEFACTOR30_1); + x22 = L_shr_pos(re[s * 28], SCALEFACTOR30_1); + x23 = L_shr_pos(im[s * 28], SCALEFACTOR30_1); + x24 = L_shr_pos(re[s * 16], SCALEFACTOR30_1); + x25 = L_shr_pos(im[s * 16], SCALEFACTOR30_1); + x26 = L_shr_pos(re[s * 4], SCALEFACTOR30_1); + x27 = L_shr_pos(im[s * 4], SCALEFACTOR30_1); + x28 = L_shr_pos(re[s * 22], SCALEFACTOR30_1); + x29 = L_shr_pos(im[s * 22], SCALEFACTOR30_1); + + /* 1. FFT5 stage */ + + /* real part */ + r1 = L_add(x02, x08); + r4 = L_sub(x02, x08); + r3 = L_add(x04, x06); + r2 = L_sub(x04, x06); + t = Mpy_32_xx(L_sub(r1, r3), C54); + r1 = L_add(r1, r3); + y00 = L_add(x00, r1); + r1 = L_add(y00, (L_shl_pos(Mpy_32_xx(r1, C55), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_xx((L_add(r4, r2)), C51); + r4 = L_add(t, L_shl_pos(Mpy_32_xx(r4, C52), 1)); + r2 = L_add(t, Mpy_32_xx(r2, C53)); + + /* imaginary part */ + s1 = L_add(x03, x09); + s4 = L_sub(x03, x09); + s3 = L_add(x05, x07); + s2 = L_sub(x05, x07); + t = Mpy_32_xx(L_sub(s1, s3), C54); + s1 = L_add(s1, s3); + y01 = L_add(x01, s1); + s1 = L_add(y01, L_shl_pos(Mpy_32_xx(s1, C55), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_xx(L_add(s4, s2), C51); + s4 = L_add(t, L_shl_pos(Mpy_32_xx(s4, C52), 1)); + s2 = L_add(t, Mpy_32_xx(s2, C53)); + + /* combination */ + y02 = L_add(r1, s2); + y08 = L_sub(r1, s2); + y04 = L_sub(r3, s4); + y06 = L_add(r3, s4); + + y03 = L_sub(s1, r2); + y09 = L_add(s1, r2); + y05 = L_add(s3, r4); + y07 = L_sub(s3, r4); + + /* 2. FFT5 stage */ + + /* real part */ + r1 = L_add(x12, x18); + r4 = L_sub(x12, x18); + r3 = L_add(x14, x16); + r2 = L_sub(x14, x16); + t = Mpy_32_xx(L_sub(r1, r3), C54); + r1 = L_add(r1, r3); + y10 = L_add(x10, r1); + r1 = L_add(y10, (L_shl_pos(Mpy_32_xx(r1, C55), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_xx((L_add(r4, r2)), C51); + r4 = L_add(t, L_shl_pos(Mpy_32_xx(r4, C52), 1)); + r2 = L_add(t, Mpy_32_xx(r2, C53)); + + /* imaginary part */ + s1 = L_add(x13, x19); + s4 = L_sub(x13, x19); + s3 = L_add(x15, x17); + s2 = L_sub(x15, x17); + t = Mpy_32_xx(L_sub(s1, s3), C54); + s1 = L_add(s1, s3); + y11 = L_add(x11, s1); + s1 = L_add(y11, L_shl_pos(Mpy_32_xx(s1, C55), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_xx(L_add(s4, s2), C51); + s4 = L_add(t, L_shl_pos(Mpy_32_xx(s4, C52), 1)); + s2 = L_add(t, Mpy_32_xx(s2, C53)); + + /* combination */ + y12 = L_add(r1, s2); + y18 = L_sub(r1, s2); + y14 = L_sub(r3, s4); + y16 = L_add(r3, s4); + + y13 = L_sub(s1, r2); + y19 = L_add(s1, r2); + y15 = L_add(s3, r4); + y17 = L_sub(s3, r4); + + /* 3. FFT5 stage */ + + /* real part */ + r1 = L_add(x22, x28); + r4 = L_sub(x22, x28); + r3 = L_add(x24, x26); + r2 = L_sub(x24, x26); + t = Mpy_32_xx(L_sub(r1, r3), C54); + r1 = L_add(r1, r3); + y20 = L_add(x20, r1); + r1 = L_add(y20, (L_shl_pos(Mpy_32_xx(r1, C55), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_xx((L_add(r4, r2)), C51); + r4 = L_add(t, L_shl_pos(Mpy_32_xx(r4, C52), 1)); + r2 = L_add(t, Mpy_32_xx(r2, C53)); + + /* imaginary part */ + s1 = L_add(x23, x29); + s4 = L_sub(x23, x29); + s3 = L_add(x25, x27); + s2 = L_sub(x25, x27); + t = Mpy_32_xx(L_sub(s1, s3), C54); + s1 = L_add(s1, s3); + y21 = L_add(x21, s1); + s1 = L_add(y21, L_shl_pos(Mpy_32_xx(s1, C55), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_xx(L_add(s4, s2), C51); + s4 = L_add(t, L_shl_pos(Mpy_32_xx(s4, C52), 1)); + s2 = L_add(t, Mpy_32_xx(s2, C53)); + + /* combination */ + y22 = L_add(r1, s2); + y28 = L_sub(r1, s2); + y24 = L_sub(r3, s4); + y26 = L_add(r3, s4); + + y23 = L_sub(s1, r2); + y29 = L_add(s1, r2); + y25 = L_add(s3, r4); + y27 = L_sub(s3, r4); + + /* 1. FFT3 stage */ + + /* real part */ + r1 = L_add(y10, y20); + r2 = Mpy_32_xx(L_sub(y10, y20), C31); + z00 = L_add(y00, r1); + r1 = L_sub(y00, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(y11, y21); + s2 = Mpy_32_xx(L_sub(y11, y21), C31); + z01 = L_add(y01, s1); + s1 = L_sub(y01, L_shr_pos(s1, 1)); + + /* combination */ + z20 = L_sub(r1, s2); + z10 = L_add(r1, s2); + z21 = L_add(s1, r2); + z11 = L_sub(s1, r2); + + /* 2. FFT3 stage */ + + /* real part */ + r1 = L_add(y12, y22); + r2 = Mpy_32_xx(L_sub(y12, y22), C31); + z12 = L_add(y02, r1); + r1 = L_sub(y02, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(y13, y23); + s2 = Mpy_32_xx(L_sub(y13, y23), C31); + z13 = L_add(y03, s1); + s1 = L_sub(y03, L_shr_pos(s1, 1)); + + /* combination */ + z02 = L_sub(r1, s2); + z22 = L_add(r1, s2); + z03 = L_add(s1, r2); + z23 = L_sub(s1, r2); + + /* 3. FFT3 stage */ + + /* real part */ + r1 = L_add(y14, y24); + r2 = Mpy_32_xx(L_sub(y14, y24), C31); + z24 = L_add(y04, r1); + r1 = L_sub(y04, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(y15, y25); + s2 = Mpy_32_xx(L_sub(y15, y25), C31); + z25 = L_add(y05, s1); + s1 = L_sub(y05, L_shr_pos(s1, 1)); + + /* combination */ + z14 = L_sub(r1, s2); + z04 = L_add(r1, s2); + z15 = L_add(s1, r2); + z05 = L_sub(s1, r2); + + /* 4. FFT3 stage */ + + /* real part */ + r1 = L_add(y16, y26); + r2 = Mpy_32_xx(L_sub(y16, y26), C31); + z06 = L_add(y06, r1); + r1 = L_sub(y06, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(y17, y27); + s2 = Mpy_32_xx(L_sub(y17, y27), C31); + z07 = L_add(y07, s1); + s1 = L_sub(y07, L_shr_pos(s1, 1)); + + /* combination */ + z26 = L_sub(r1, s2); + z16 = L_add(r1, s2); + z27 = L_add(s1, r2); + z17 = L_sub(s1, r2); + + /* 5. FFT3 stage */ + + /* real part */ + r1 = L_add(y18, y28); + r2 = Mpy_32_xx(L_sub(y18, y28), C31); + z18 = L_add(y08, r1); + r1 = L_sub(y08, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(y19, y29); + s2 = Mpy_32_xx(L_sub(y19, y29), C31); + z19 = L_add(y09, s1); + s1 = L_sub(y09, L_shr_pos(s1, 1)); + + /* combination */ + z08 = L_sub(r1, s2); + z28 = L_add(r1, s2); + z09 = L_add(s1, r2); + z29 = L_sub(s1, r2); + + /* 2. FFT15 stage */ + x00 = L_shr_pos(re[s * 15], SCALEFACTOR30_1); + x01 = L_shr_pos(im[s * 15], SCALEFACTOR30_1); + x02 = L_shr_pos(re[s * 3], SCALEFACTOR30_1); + x03 = L_shr_pos(im[s * 3], SCALEFACTOR30_1); + x04 = L_shr_pos(re[s * 21], SCALEFACTOR30_1); + x05 = L_shr_pos(im[s * 21], SCALEFACTOR30_1); + x06 = L_shr_pos(re[s * 9], SCALEFACTOR30_1); + x07 = L_shr_pos(im[s * 9], SCALEFACTOR30_1); + x08 = L_shr_pos(re[s * 27], SCALEFACTOR30_1); + x09 = L_shr_pos(im[s * 27], SCALEFACTOR30_1); + + x10 = L_shr_pos(re[s * 5], SCALEFACTOR30_1); + x11 = L_shr_pos(im[s * 5], SCALEFACTOR30_1); + x12 = L_shr_pos(re[s * 23], SCALEFACTOR30_1); + x13 = L_shr_pos(im[s * 23], SCALEFACTOR30_1); + x14 = L_shr_pos(re[s * 11], SCALEFACTOR30_1); + x15 = L_shr_pos(im[s * 11], SCALEFACTOR30_1); + x16 = L_shr_pos(re[s * 29], SCALEFACTOR30_1); + x17 = L_shr_pos(im[s * 29], SCALEFACTOR30_1); + x18 = L_shr_pos(re[s * 17], SCALEFACTOR30_1); + x19 = L_shr_pos(im[s * 17], SCALEFACTOR30_1); + + x20 = L_shr_pos(re[s * 25], SCALEFACTOR30_1); + x21 = L_shr_pos(im[s * 25], SCALEFACTOR30_1); + x22 = L_shr_pos(re[s * 13], SCALEFACTOR30_1); + x23 = L_shr_pos(im[s * 13], SCALEFACTOR30_1); + x24 = L_shr_pos(re[s * 1], SCALEFACTOR30_1); + x25 = L_shr_pos(im[s * 1], SCALEFACTOR30_1); + x26 = L_shr_pos(re[s * 19], SCALEFACTOR30_1); + x27 = L_shr_pos(im[s * 19], SCALEFACTOR30_1); + x28 = L_shr_pos(re[s * 7], SCALEFACTOR30_1); + x29 = L_shr_pos(im[s * 7], SCALEFACTOR30_1); + + /* 1. FFT5 stage */ + + /* real part */ + r1 = L_add(x02, x08); + r4 = L_sub(x02, x08); + r3 = L_add(x04, x06); + r2 = L_sub(x04, x06); + t = Mpy_32_xx(L_sub(r1, r3), C54); + r1 = L_add(r1, r3); + y00 = L_add(x00, r1); + r1 = L_add(y00, (L_shl_pos(Mpy_32_xx(r1, C55), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_xx((L_add(r4, r2)), C51); + r4 = L_add(t, L_shl_pos(Mpy_32_xx(r4, C52), 1)); + r2 = L_add(t, Mpy_32_xx(r2, C53)); + + /* imaginary part */ + s1 = L_add(x03, x09); + s4 = L_sub(x03, x09); + s3 = L_add(x05, x07); + s2 = L_sub(x05, x07); + t = Mpy_32_xx(L_sub(s1, s3), C54); + s1 = L_add(s1, s3); + y01 = L_add(x01, s1); + s1 = L_add(y01, L_shl_pos(Mpy_32_xx(s1, C55), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_xx(L_add(s4, s2), C51); + s4 = L_add(t, L_shl_pos(Mpy_32_xx(s4, C52), 1)); + s2 = L_add(t, Mpy_32_xx(s2, C53)); + + /* combination */ + y02 = L_add(r1, s2); + y08 = L_sub(r1, s2); + y04 = L_sub(r3, s4); + y06 = L_add(r3, s4); + + y03 = L_sub(s1, r2); + y09 = L_add(s1, r2); + y05 = L_add(s3, r4); + y07 = L_sub(s3, r4); + + /* 2. FFT5 stage */ + + /* real part */ + r1 = L_add(x12, x18); + r4 = L_sub(x12, x18); + r3 = L_add(x14, x16); + r2 = L_sub(x14, x16); + t = Mpy_32_xx(L_sub(r1, r3), C54); + r1 = L_add(r1, r3); + y10 = L_add(x10, r1); + r1 = L_add(y10, (L_shl_pos(Mpy_32_xx(r1, C55), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_xx((L_add(r4, r2)), C51); + r4 = L_add(t, L_shl_pos(Mpy_32_xx(r4, C52), 1)); + r2 = L_add(t, Mpy_32_xx(r2, C53)); + + /* imaginary part */ + s1 = L_add(x13, x19); + s4 = L_sub(x13, x19); + s3 = L_add(x15, x17); + s2 = L_sub(x15, x17); + t = Mpy_32_xx(L_sub(s1, s3), C54); + s1 = L_add(s1, s3); + y11 = L_add(x11, s1); + s1 = L_add(y11, L_shl_pos(Mpy_32_xx(s1, C55), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_xx(L_add(s4, s2), C51); + s4 = L_add(t, L_shl_pos(Mpy_32_xx(s4, C52), 1)); + s2 = L_add(t, Mpy_32_xx(s2, C53)); + + /* combination */ + y12 = L_add(r1, s2); + y18 = L_sub(r1, s2); + y14 = L_sub(r3, s4); + y16 = L_add(r3, s4); + + y13 = L_sub(s1, r2); + y19 = L_add(s1, r2); + y15 = L_add(s3, r4); + y17 = L_sub(s3, r4); + + /* 3. FFT5 stage */ + + /* real part */ + r1 = L_add(x22, x28); + r4 = L_sub(x22, x28); + r3 = L_add(x24, x26); + r2 = L_sub(x24, x26); + t = Mpy_32_xx(L_sub(r1, r3), C54); + r1 = L_add(r1, r3); + y20 = L_add(x20, r1); + r1 = L_add(y20, (L_shl_pos(Mpy_32_xx(r1, C55), 1))); + r3 = L_sub(r1, t); + r1 = L_add(r1, t); + t = Mpy_32_xx((L_add(r4, r2)), C51); + r4 = L_add(t, L_shl_pos(Mpy_32_xx(r4, C52), 1)); + r2 = L_add(t, Mpy_32_xx(r2, C53)); + + /* imaginary part */ + s1 = L_add(x23, x29); + s4 = L_sub(x23, x29); + s3 = L_add(x25, x27); + s2 = L_sub(x25, x27); + t = Mpy_32_xx(L_sub(s1, s3), C54); + s1 = L_add(s1, s3); + y21 = L_add(x21, s1); + s1 = L_add(y21, L_shl_pos(Mpy_32_xx(s1, C55), 1)); + s3 = L_sub(s1, t); + s1 = L_add(s1, t); + t = Mpy_32_xx(L_add(s4, s2), C51); + s4 = L_add(t, L_shl_pos(Mpy_32_xx(s4, C52), 1)); + s2 = L_add(t, Mpy_32_xx(s2, C53)); + + /* combination */ + y22 = L_add(r1, s2); + y28 = L_sub(r1, s2); + y24 = L_sub(r3, s4); + y26 = L_add(r3, s4); + + y23 = L_sub(s1, r2); + y29 = L_add(s1, r2); + y25 = L_add(s3, r4); + y27 = L_sub(s3, r4); + + /* 1. FFT3 stage */ + + /* real part */ + r1 = L_add(y10, y20); + r2 = Mpy_32_xx(L_sub(y10, y20), C31); + z30 = L_add(y00, r1); + r1 = L_sub(y00, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(y11, y21); + s2 = Mpy_32_xx(L_sub(y11, y21), C31); + z31 = L_add(y01, s1); + s1 = L_sub(y01, L_shr_pos(s1, 1)); + + /* combination */ + z50 = L_sub(r1, s2); + z40 = L_add(r1, s2); + z51 = L_add(s1, r2); + z41 = L_sub(s1, r2); + + /* 2. FFT3 stage */ + + /* real part */ + r1 = L_add(y12, y22); + r2 = Mpy_32_xx(L_sub(y12, y22), C31); + z42 = L_add(y02, r1); + r1 = L_sub(y02, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(y13, y23); + s2 = Mpy_32_xx(L_sub(y13, y23), C31); + z43 = L_add(y03, s1); + s1 = L_sub(y03, L_shr_pos(s1, 1)); + + /* combination */ + z32 = L_sub(r1, s2); + z52 = L_add(r1, s2); + z33 = L_add(s1, r2); + z53 = L_sub(s1, r2); + + /* 3. FFT3 stage */ + + /* real part */ + r1 = L_add(y14, y24); + r2 = Mpy_32_xx(L_sub(y14, y24), C31); + z54 = L_add(y04, r1); + r1 = L_sub(y04, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(y15, y25); + s2 = Mpy_32_xx(L_sub(y15, y25), C31); + z55 = L_add(y05, s1); + s1 = L_sub(y05, L_shr_pos(s1, 1)); + + /* combination */ + z44 = L_sub(r1, s2); + z34 = L_add(r1, s2); + z45 = L_add(s1, r2); + z35 = L_sub(s1, r2); + + /* 4. FFT3 stage */ + + /* real part */ + r1 = L_add(y16, y26); + r2 = Mpy_32_xx(L_sub(y16, y26), C31); + z36 = L_add(y06, r1); + r1 = L_sub(y06, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(y17, y27); + s2 = Mpy_32_xx(L_sub(y17, y27), C31); + z37 = L_add(y07, s1); + s1 = L_sub(y07, L_shr_pos(s1, 1)); + + /* combination */ + z56 = L_sub(r1, s2); + z46 = L_add(r1, s2); + z57 = L_add(s1, r2); + z47 = L_sub(s1, r2); + + /* 5. FFT3 stage */ + + /* real part */ + r1 = L_add(y18, y28); + r2 = Mpy_32_xx(L_sub(y18, y28), C31); + z48 = L_add(y08, r1); + r1 = L_sub(y08, L_shr_pos(r1, 1)); + + /* imaginary part */ + s1 = L_add(y19, y29); + s2 = Mpy_32_xx(L_sub(y19, y29), C31); + z49 = L_add(y09, s1); + s1 = L_sub(y09, L_shr_pos(s1, 1)); + + /* combination */ + z38 = L_sub(r1, s2); + z58 = L_add(r1, s2); + z39 = L_add(s1, r2); + z59 = L_sub(s1, r2); + + /* 1. FFT2 stage */ + r1 = L_shr_pos(z00, SCALEFACTOR30_2); + r2 = L_shr_pos(z30, SCALEFACTOR30_2); + r3 = L_shr_pos(z01, SCALEFACTOR30_2); + r4 = L_shr_pos(z31, SCALEFACTOR30_2); + *rel = L_add(r1, r2); + move32(); + *reh = L_sub(r1, r2); + move32(); + *iml = L_add(r3, r4); + move32(); + *imh = L_sub(r3, r4); + move32(); + rel += s, reh += s, iml += s; + imh += s; + + /* 2. FFT2 stage */ + r1 = L_shr_pos(z16, SCALEFACTOR30_2); + r2 = L_shr_pos(z46, SCALEFACTOR30_2); + r3 = L_shr_pos(z17, SCALEFACTOR30_2); + r4 = L_shr_pos(z47, SCALEFACTOR30_2); + *reh = L_add(r1, r2); + move32(); + *rel = L_sub(r1, r2); + move32(); + *imh = L_add(r3, r4); + move32(); + *iml = L_sub(r3, r4); + move32(); + rel += s, reh += s, iml += s; + imh += s; + + /* 3. FFT2 stage */ + r1 = L_shr_pos(z02, SCALEFACTOR30_2); + r2 = L_shr_pos(z32, SCALEFACTOR30_2); + r3 = L_shr_pos(z03, SCALEFACTOR30_2); + r4 = L_shr_pos(z33, SCALEFACTOR30_2); + *rel = L_add(r1, r2); + move32(); + *reh = L_sub(r1, r2); + move32(); + *iml = L_add(r3, r4); + move32(); + *imh = L_sub(r3, r4); + move32(); + rel += s, reh += s, iml += s; + imh += s; + + /* 4. FFT2 stage */ + r1 = L_shr_pos(z18, SCALEFACTOR30_2); + r2 = L_shr_pos(z48, SCALEFACTOR30_2); + r3 = L_shr_pos(z19, SCALEFACTOR30_2); + r4 = L_shr_pos(z49, SCALEFACTOR30_2); + *reh = L_add(r1, r2); + move32(); + *rel = L_sub(r1, r2); + move32(); + *imh = L_add(r3, r4); + move32(); + *iml = L_sub(r3, r4); + move32(); + rel += s, reh += s, iml += s; + imh += s; + + /* 5. FFT2 stage */ + r1 = L_shr_pos(z04, SCALEFACTOR30_2); + r2 = L_shr_pos(z34, SCALEFACTOR30_2); + r3 = L_shr_pos(z05, SCALEFACTOR30_2); + r4 = L_shr_pos(z35, SCALEFACTOR30_2); + *rel = L_add(r1, r2); + move32(); + *reh = L_sub(r1, r2); + move32(); + *iml = L_add(r3, r4); + move32(); + *imh = L_sub(r3, r4); + move32(); + rel += s, reh += s, iml += s; + imh += s; + + /* 6. FFT2 stage */ + r1 = L_shr_pos(z20, SCALEFACTOR30_2); + r2 = L_shr_pos(z50, SCALEFACTOR30_2); + r3 = L_shr_pos(z21, SCALEFACTOR30_2); + r4 = L_shr_pos(z51, SCALEFACTOR30_2); + *reh = L_add(r1, r2); + move32(); + *rel = L_sub(r1, r2); + move32(); + *imh = L_add(r3, r4); + move32(); + *iml = L_sub(r3, r4); + move32(); + rel += s, reh += s, iml += s; + imh += s; + + /* 7. FFT2 stage */ + r1 = L_shr_pos(z06, SCALEFACTOR30_2); + r2 = L_shr_pos(z36, SCALEFACTOR30_2); + r3 = L_shr_pos(z07, SCALEFACTOR30_2); + r4 = L_shr_pos(z37, SCALEFACTOR30_2); + *rel = L_add(r1, r2); + move32(); + *reh = L_sub(r1, r2); + move32(); + *iml = L_add(r3, r4); + move32(); + *imh = L_sub(r3, r4); + move32(); + rel += s, reh += s, iml += s; + imh += s; + + /* 8. FFT2 stage */ + r1 = L_shr_pos(z22, SCALEFACTOR30_2); + r2 = L_shr_pos(z52, SCALEFACTOR30_2); + r3 = L_shr_pos(z23, SCALEFACTOR30_2); + r4 = L_shr_pos(z53, SCALEFACTOR30_2); + *reh = L_add(r1, r2); + move32(); + *rel = L_sub(r1, r2); + move32(); + *imh = L_add(r3, r4); + move32(); + *iml = L_sub(r3, r4); + move32(); + rel += s, reh += s, iml += s; + imh += s; + + /* 9. FFT2 stage */ + r1 = L_shr_pos(z08, SCALEFACTOR30_2); + r2 = L_shr_pos(z38, SCALEFACTOR30_2); + r3 = L_shr_pos(z09, SCALEFACTOR30_2); + r4 = L_shr_pos(z39, SCALEFACTOR30_2); + *rel = L_add(r1, r2); + move32(); + *reh = L_sub(r1, r2); + move32(); + *iml = L_add(r3, r4); + move32(); + *imh = L_sub(r3, r4); + move32(); + rel += s, reh += s, iml += s; + imh += s; + + /* 10. FFT2 stage */ + r1 = L_shr_pos(z24, SCALEFACTOR30_2); + r2 = L_shr_pos(z54, SCALEFACTOR30_2); + r3 = L_shr_pos(z25, SCALEFACTOR30_2); + r4 = L_shr_pos(z55, SCALEFACTOR30_2); + *reh = L_add(r1, r2); + move32(); + *rel = L_sub(r1, r2); + move32(); + *imh = L_add(r3, r4); + move32(); + *iml = L_sub(r3, r4); + move32(); + rel += s, reh += s, iml += s; + imh += s; + + /* 11. FFT2 stage */ + r1 = L_shr_pos(z10, SCALEFACTOR30_2); + r2 = L_shr_pos(z40, SCALEFACTOR30_2); + r3 = L_shr_pos(z11, SCALEFACTOR30_2); + r4 = L_shr_pos(z41, SCALEFACTOR30_2); + *rel = L_add(r1, r2); + move32(); + *reh = L_sub(r1, r2); + move32(); + *iml = L_add(r3, r4); + move32(); + *imh = L_sub(r3, r4); + move32(); + rel += s, reh += s, iml += s; + imh += s; + + /* 12. FFT2 stage */ + r1 = L_shr_pos(z26, SCALEFACTOR30_2); + r2 = L_shr_pos(z56, SCALEFACTOR30_2); + r3 = L_shr_pos(z27, SCALEFACTOR30_2); + r4 = L_shr_pos(z57, SCALEFACTOR30_2); + *reh = L_add(r1, r2); + move32(); + *rel = L_sub(r1, r2); + move32(); + *imh = L_add(r3, r4); + move32(); + *iml = L_sub(r3, r4); + move32(); + rel += s, reh += s, iml += s; + imh += s; + + /* 13. FFT2 stage */ + r1 = L_shr_pos(z12, SCALEFACTOR30_2); + r2 = L_shr_pos(z42, SCALEFACTOR30_2); + r3 = L_shr_pos(z13, SCALEFACTOR30_2); + r4 = L_shr_pos(z43, SCALEFACTOR30_2); + *rel = L_add(r1, r2); + move32(); + *reh = L_sub(r1, r2); + move32(); + *iml = L_add(r3, r4); + move32(); + *imh = L_sub(r3, r4); + move32(); + rel += s, reh += s, iml += s; + imh += s; + + /* 14. FFT2 stage */ + r1 = L_shr_pos(z28, SCALEFACTOR30_2); + r2 = L_shr_pos(z58, SCALEFACTOR30_2); + r3 = L_shr_pos(z29, SCALEFACTOR30_2); + r4 = L_shr_pos(z59, SCALEFACTOR30_2); + *reh = L_add(r1, r2); + move32(); + *rel = L_sub(r1, r2); + move32(); + *imh = L_add(r3, r4); + move32(); + *iml = L_sub(r3, r4); + move32(); + rel += s, reh += s, iml += s; + imh += s; + + /* 15. FFT2 stage */ + r1 = L_shr_pos(z14, SCALEFACTOR30_2); + r2 = L_shr_pos(z44, SCALEFACTOR30_2); + r3 = L_shr_pos(z15, SCALEFACTOR30_2); + r4 = L_shr_pos(z45, SCALEFACTOR30_2); + *rel = L_add(r1, r2); + move32(); + *reh = L_sub(r1, r2); + move32(); + *iml = L_add(r3, r4); + move32(); + *imh = L_sub(r3, r4); + move32(); + rel += s, reh += s, iml += s; + imh += s; + + Dyn_Mem_Deluxe_Out(); +} + +/** + * \brief Function performs a complex 32-point FFT + * The FFT is performed inplace. The result of the FFT + * is scaled by SCALEFACTOR32 bits. + * + * WOPS with 32x16 bit multiplications: 752 cycles + * + * \param [i/o] re real input / output + * \param [i/o] im imag input / output + * \param [i ] s stride real and imag input / output + * + * \return void + */ + + +static void fft32(Word32 *re, Word32 *im, Word16 s) +{ + Dyn_Mem_Deluxe_In(Word32 as, bs; 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; + + Word32 y00, y01, y02, y03, y04, y05, y06, y07; Word32 y08, y09, y10, y11, y12, y13, y14, y15; + Word32 y16, y17, y18, y19, y20, y21, y22, y23; Word32 y24, y25, y26, y27, y28, y29, y30, y31; + Word32 y32, y33, y34, y35, y36, y37, y38, y39; Word32 y40, y41, y42, y43, y44, y45, y46, y47; + Word32 y48, y49, y50, y51, y52, y53, y54, y55; Word32 y56, y57, y58, y59, y60, y61, y62, y63;); + + /* 1. FFT8 stage */ + x00 = L_shr_pos(re[s * 0], SCALEFACTOR32_1); + x01 = L_shr_pos(im[s * 0], SCALEFACTOR32_1); + x02 = L_shr_pos(re[s * 4], SCALEFACTOR32_1); + x03 = L_shr_pos(im[s * 4], SCALEFACTOR32_1); + x04 = L_shr_pos(re[s * 8], SCALEFACTOR32_1); + x05 = L_shr_pos(im[s * 8], SCALEFACTOR32_1); + x06 = L_shr_pos(re[s * 12], SCALEFACTOR32_1); + x07 = L_shr_pos(im[s * 12], SCALEFACTOR32_1); + x08 = L_shr_pos(re[s * 16], SCALEFACTOR32_1); + x09 = L_shr_pos(im[s * 16], SCALEFACTOR32_1); + x10 = L_shr_pos(re[s * 20], SCALEFACTOR32_1); + x11 = L_shr_pos(im[s * 20], SCALEFACTOR32_1); + x12 = L_shr_pos(re[s * 24], SCALEFACTOR32_1); + x13 = L_shr_pos(im[s * 24], SCALEFACTOR32_1); + x14 = L_shr_pos(re[s * 28], SCALEFACTOR32_1); + x15 = L_shr_pos(im[s * 28], SCALEFACTOR32_1); + + 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); + + Mpy3_0(s12, s13, s14, s15, t00, t01, t02, t03); + + /* Post-additions */ + y00 = L_add(s00, s02); + y08 = L_sub(s00, s02); + y01 = L_add(s01, s03); + y09 = L_sub(s01, s03); + y04 = L_sub(s04, s06); + y12 = L_add(s04, s06); + y05 = L_sub(s05, s07); + y13 = L_add(s05, s07); + y06 = L_add(s08, s14); + y14 = L_sub(s08, s14); + y07 = L_add(s09, s15); + y15 = L_sub(s09, s15); + y02 = L_add(s10, s12); + y10 = L_sub(s10, s12); + y03 = L_add(s11, s13); + y11 = L_sub(s11, s13); + + /* 2. FFT8 stage */ + x00 = L_shr_pos(re[s * 1], SCALEFACTOR32_1); + x01 = L_shr_pos(im[s * 1], SCALEFACTOR32_1); + x02 = L_shr_pos(re[s * 5], SCALEFACTOR32_1); + x03 = L_shr_pos(im[s * 5], SCALEFACTOR32_1); + x04 = L_shr_pos(re[s * 9], SCALEFACTOR32_1); + x05 = L_shr_pos(im[s * 9], SCALEFACTOR32_1); + x06 = L_shr_pos(re[s * 13], SCALEFACTOR32_1); + x07 = L_shr_pos(im[s * 13], SCALEFACTOR32_1); + x08 = L_shr_pos(re[s * 17], SCALEFACTOR32_1); + x09 = L_shr_pos(im[s * 17], SCALEFACTOR32_1); + x10 = L_shr_pos(re[s * 21], SCALEFACTOR32_1); + x11 = L_shr_pos(im[s * 21], SCALEFACTOR32_1); + x12 = L_shr_pos(re[s * 25], SCALEFACTOR32_1); + x13 = L_shr_pos(im[s * 25], SCALEFACTOR32_1); + x14 = L_shr_pos(re[s * 29], SCALEFACTOR32_1); + x15 = L_shr_pos(im[s * 29], SCALEFACTOR32_1); + + 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); + + Mpy3_0(s12, s13, s14, s15, t00, t01, t02, t03); + + /* Post-additions */ + y16 = L_add(s00, s02); + y24 = L_sub(s00, s02); + y17 = L_add(s01, s03); + y25 = L_sub(s01, s03); + y20 = L_sub(s04, s06); + y28 = L_add(s04, s06); + y21 = L_sub(s05, s07); + y29 = L_add(s05, s07); + y22 = L_add(s08, s14); + y30 = L_sub(s08, s14); + y23 = L_add(s09, s15); + y31 = L_sub(s09, s15); + y18 = L_add(s10, s12); + y26 = L_sub(s10, s12); + y19 = L_add(s11, s13); + y27 = L_sub(s11, s13); + + /* 3. FFT8 stage */ + x00 = L_shr_pos(re[s * 2], SCALEFACTOR32_1); + x01 = L_shr_pos(im[s * 2], SCALEFACTOR32_1); + x02 = L_shr_pos(re[s * 6], SCALEFACTOR32_1); + x03 = L_shr_pos(im[s * 6], SCALEFACTOR32_1); + x04 = L_shr_pos(re[s * 10], SCALEFACTOR32_1); + x05 = L_shr_pos(im[s * 10], SCALEFACTOR32_1); + x06 = L_shr_pos(re[s * 14], SCALEFACTOR32_1); + x07 = L_shr_pos(im[s * 14], SCALEFACTOR32_1); + x08 = L_shr_pos(re[s * 18], SCALEFACTOR32_1); + x09 = L_shr_pos(im[s * 18], SCALEFACTOR32_1); + x10 = L_shr_pos(re[s * 22], SCALEFACTOR32_1); + x11 = L_shr_pos(im[s * 22], SCALEFACTOR32_1); + x12 = L_shr_pos(re[s * 26], SCALEFACTOR32_1); + x13 = L_shr_pos(im[s * 26], SCALEFACTOR32_1); + x14 = L_shr_pos(re[s * 30], SCALEFACTOR32_1); + x15 = L_shr_pos(im[s * 30], SCALEFACTOR32_1); + + 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); + + Mpy3_0(s12, s13, s14, s15, t00, t01, t02, t03); + + /* Post-additions */ + y32 = L_add(s00, s02); + y40 = L_sub(s00, s02); + y33 = L_add(s01, s03); + y41 = L_sub(s01, s03); + y36 = L_sub(s04, s06); + y44 = L_add(s04, s06); + y37 = L_sub(s05, s07); + y45 = L_add(s05, s07); + y38 = L_add(s08, s14); + y46 = L_sub(s08, s14); + y39 = L_add(s09, s15); + y47 = L_sub(s09, s15); + y34 = L_add(s10, s12); + y42 = L_sub(s10, s12); + y35 = L_add(s11, s13); + y43 = L_sub(s11, s13); + + /* 4. FFT8 stage */ + x00 = L_shr_pos(re[s * 3], SCALEFACTOR32_1); + x01 = L_shr_pos(im[s * 3], SCALEFACTOR32_1); + x02 = L_shr_pos(re[s * 7], SCALEFACTOR32_1); + x03 = L_shr_pos(im[s * 7], SCALEFACTOR32_1); + x04 = L_shr_pos(re[s * 11], SCALEFACTOR32_1); + x05 = L_shr_pos(im[s * 11], SCALEFACTOR32_1); + x06 = L_shr_pos(re[s * 15], SCALEFACTOR32_1); + x07 = L_shr_pos(im[s * 15], SCALEFACTOR32_1); + x08 = L_shr_pos(re[s * 19], SCALEFACTOR32_1); + x09 = L_shr_pos(im[s * 19], SCALEFACTOR32_1); + x10 = L_shr_pos(re[s * 23], SCALEFACTOR32_1); + x11 = L_shr_pos(im[s * 23], SCALEFACTOR32_1); + x12 = L_shr_pos(re[s * 27], SCALEFACTOR32_1); + x13 = L_shr_pos(im[s * 27], SCALEFACTOR32_1); + x14 = L_shr_pos(re[s * 31], SCALEFACTOR32_1); + x15 = L_shr_pos(im[s * 31], SCALEFACTOR32_1); + + 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); + + Mpy3_0(s12, s13, s14, s15, t00, t01, t02, t03); + + /* Post-additions */ + y48 = L_add(s00, s02); + y56 = L_sub(s00, s02); + y49 = L_add(s01, s03); + y57 = L_sub(s01, s03); + y52 = L_sub(s04, s06); + y60 = L_add(s04, s06); + y53 = L_sub(s05, s07); + y61 = L_add(s05, s07); + y54 = L_add(s08, s14); + y62 = L_sub(s08, s14); + y55 = L_add(s09, s15); + y63 = L_sub(s09, s15); + y50 = L_add(s10, s12); + y58 = L_sub(s10, s12); + y51 = L_add(s11, s13); + y59 = L_sub(s11, s13); + + /* apply twiddle factors */ + y00 = L_shr_pos(y00, SCALEFACTOR32_2); + y01 = L_shr_pos(y01, SCALEFACTOR32_2); + y02 = L_shr_pos(y02, SCALEFACTOR32_2); + y03 = L_shr_pos(y03, SCALEFACTOR32_2); + y04 = L_shr_pos(y04, SCALEFACTOR32_2); + y05 = L_shr_pos(y05, SCALEFACTOR32_2); + y06 = L_shr_pos(y06, SCALEFACTOR32_2); + y07 = L_shr_pos(y07, SCALEFACTOR32_2); + y08 = L_shr_pos(y08, SCALEFACTOR32_2); + y09 = L_shr_pos(y09, SCALEFACTOR32_2); + y10 = L_shr_pos(y10, SCALEFACTOR32_2); + y11 = L_shr_pos(y11, SCALEFACTOR32_2); + y12 = L_shr_pos(y12, SCALEFACTOR32_2); + y13 = L_shr_pos(y13, SCALEFACTOR32_2); + y14 = L_shr_pos(y14, SCALEFACTOR32_2); + y15 = L_shr_pos(y15, SCALEFACTOR32_2); + y16 = L_shr_pos(y16, SCALEFACTOR32_2); + y17 = L_shr_pos(y17, SCALEFACTOR32_2); + y32 = L_shr_pos(y32, SCALEFACTOR32_2); + y33 = L_shr_pos(y33, SCALEFACTOR32_2); + y48 = L_shr_pos(y48, SCALEFACTOR32_2); + y49 = L_shr_pos(y49, SCALEFACTOR32_2); + y40 = L_shr_pos(y40, SCALEFACTOR32_2); + y41 = L_shr_pos(y41, SCALEFACTOR32_2); + + cplxMpy3_0(y18, y19, RotVector_32_32[2 * 0 + 0], RotVector_32_32[2 * 0 + 1]); + cplxMpy3_0(y20, y21, RotVector_32_32[2 * 1 + 0], RotVector_32_32[2 * 1 + 1]); + cplxMpy3_0(y22, y23, RotVector_32_32[2 * 2 + 0], RotVector_32_32[2 * 2 + 1]); + cplxMpy3_0(y24, y25, RotVector_32_32[2 * 3 + 0], RotVector_32_32[2 * 3 + 1]); + cplxMpy3_0(y26, y27, RotVector_32_32[2 * 4 + 0], RotVector_32_32[2 * 4 + 1]); + cplxMpy3_0(y28, y29, RotVector_32_32[2 * 5 + 0], RotVector_32_32[2 * 5 + 1]); + cplxMpy3_0(y30, y31, RotVector_32_32[2 * 6 + 0], RotVector_32_32[2 * 6 + 1]); + cplxMpy3_0(y34, y35, RotVector_32_32[2 * 7 + 0], RotVector_32_32[2 * 7 + 1]); + cplxMpy3_0(y36, y37, RotVector_32_32[2 * 8 + 0], RotVector_32_32[2 * 8 + 1]); + cplxMpy3_0(y38, y39, RotVector_32_32[2 * 9 + 0], RotVector_32_32[2 * 9 + 1]); + cplxMpy3_0(y42, y43, RotVector_32_32[2 * 10 + 0], RotVector_32_32[2 * 10 + 1]); + cplxMpy3_0(y44, y45, RotVector_32_32[2 * 11 + 0], RotVector_32_32[2 * 11 + 1]); + cplxMpy3_0(y46, y47, RotVector_32_32[2 * 12 + 0], RotVector_32_32[2 * 12 + 1]); + cplxMpy3_0(y50, y51, RotVector_32_32[2 * 13 + 0], RotVector_32_32[2 * 13 + 1]); + cplxMpy3_0(y52, y53, RotVector_32_32[2 * 14 + 0], RotVector_32_32[2 * 14 + 1]); + cplxMpy3_0(y54, y55, RotVector_32_32[2 * 15 + 0], RotVector_32_32[2 * 15 + 1]); + cplxMpy3_0(y56, y57, RotVector_32_32[2 * 16 + 0], RotVector_32_32[2 * 16 + 1]); + cplxMpy3_0(y58, y59, RotVector_32_32[2 * 17 + 0], RotVector_32_32[2 * 17 + 1]); + cplxMpy3_0(y60, y61, RotVector_32_32[2 * 18 + 0], RotVector_32_32[2 * 18 + 1]); + cplxMpy3_0(y62, y63, RotVector_32_32[2 * 19 + 0], RotVector_32_32[2 * 19 + 1]); + + /* 1. FFT4 stage */ + + /* Pre-additions */ + t00 = L_add(y00, y32); + t02 = L_sub(y00, y32); + t01 = L_add(y01, y33); + t03 = L_sub(y01, y33); + t04 = L_add(y16, y48); + t07 = L_sub(y16, y48); + t05 = L_add(y49, y17); + t06 = L_sub(y49, y17); + + /* Post-additions */ + re[s * 0] = L_add(t00, t04); + move32(); + im[s * 0] = L_add(t01, t05); + move32(); + re[s * 8] = L_sub(t02, t06); + move32(); + im[s * 8] = L_sub(t03, t07); + move32(); + re[s * 16] = L_sub(t00, t04); + move32(); + im[s * 16] = L_sub(t01, t05); + move32(); + re[s * 24] = L_add(t02, t06); + move32(); + im[s * 24] = L_add(t03, t07); + move32(); + + /* 2. FFT4 stage */ + + /* Pre-additions */ + t00 = L_add(y02, y34); + t02 = L_sub(y02, y34); + t01 = L_add(y03, y35); + t03 = L_sub(y03, y35); + t04 = L_add(y18, y50); + t07 = L_sub(y18, y50); + t05 = L_add(y51, y19); + t06 = L_sub(y51, y19); + + /* Post-additions */ + re[s * 1] = L_add(t00, t04); + move32(); + im[s * 1] = L_add(t01, t05); + move32(); + re[s * 9] = L_sub(t02, t06); + move32(); + im[s * 9] = L_sub(t03, t07); + move32(); + re[s * 17] = L_sub(t00, t04); + move32(); + im[s * 17] = L_sub(t01, t05); + move32(); + re[s * 25] = L_add(t02, t06); + move32(); + im[s * 25] = L_add(t03, t07); + move32(); + + /* 3. FFT4 stage */ + + /* Pre-additions */ + t00 = L_add(y04, y36); + t02 = L_sub(y04, y36); + t01 = L_add(y05, y37); + t03 = L_sub(y05, y37); + t04 = L_add(y20, y52); + t07 = L_sub(y20, y52); + t05 = L_add(y53, y21); + t06 = L_sub(y53, y21); + + /* Post-additions */ + re[s * 2] = L_add(t00, t04); + move32(); + im[s * 2] = L_add(t01, t05); + move32(); + re[s * 10] = L_sub(t02, t06); + move32(); + im[s * 10] = L_sub(t03, t07); + move32(); + re[s * 18] = L_sub(t00, t04); + move32(); + im[s * 18] = L_sub(t01, t05); + move32(); + re[s * 26] = L_add(t02, t06); + move32(); + im[s * 26] = L_add(t03, t07); + move32(); + + /* 4. FFT4 stage */ + + /* Pre-additions */ + t00 = L_add(y06, y38); + t02 = L_sub(y06, y38); + t01 = L_add(y07, y39); + t03 = L_sub(y07, y39); + t04 = L_add(y22, y54); + t07 = L_sub(y22, y54); + t05 = L_add(y55, y23); + t06 = L_sub(y55, y23); + + /* Post-additions */ + re[s * 3] = L_add(t00, t04); + move32(); + im[s * 3] = L_add(t01, t05); + move32(); + re[s * 11] = L_sub(t02, t06); + move32(); + im[s * 11] = L_sub(t03, t07); + move32(); + re[s * 19] = L_sub(t00, t04); + move32(); + im[s * 19] = L_sub(t01, t05); + move32(); + re[s * 27] = L_add(t02, t06); + move32(); + im[s * 27] = L_add(t03, t07); + move32(); + + /* 5. FFT4 stage */ + + /* Pre-additions */ + t00 = L_add(y08, y41); + t02 = L_sub(y08, y41); + t01 = L_sub(y09, y40); + t03 = L_add(y09, y40); + t04 = L_add(y24, y56); + t07 = L_sub(y24, y56); + t05 = L_add(y57, y25); + t06 = L_sub(y57, y25); + + /* Post-additions */ + re[s * 4] = L_add(t00, t04); + move32(); + im[s * 4] = L_add(t01, t05); + move32(); + re[s * 12] = L_sub(t02, t06); + move32(); + im[s * 12] = L_sub(t03, t07); + move32(); + re[s * 20] = L_sub(t00, t04); + move32(); + im[s * 20] = L_sub(t01, t05); + move32(); + re[s * 28] = L_add(t02, t06); + move32(); + im[s * 28] = L_add(t03, t07); + move32(); + + /* 6. FFT4 stage */ + + /* Pre-additions */ + t00 = L_add(y10, y42); + t02 = L_sub(y10, y42); + t01 = L_add(y11, y43); + t03 = L_sub(y11, y43); + t04 = L_add(y26, y58); + t07 = L_sub(y26, y58); + t05 = L_add(y59, y27); + t06 = L_sub(y59, y27); + + /* Post-additions */ + re[s * 5] = L_add(t00, t04); + move32(); + im[s * 5] = L_add(t01, t05); + move32(); + re[s * 13] = L_sub(t02, t06); + move32(); + im[s * 13] = L_sub(t03, t07); + move32(); + re[s * 21] = L_sub(t00, t04); + move32(); + im[s * 21] = L_sub(t01, t05); + move32(); + re[s * 29] = L_add(t02, t06); + move32(); + im[s * 29] = L_add(t03, t07); + move32(); + + /* 7. FFT4 stage */ + + /* Pre-additions */ + t00 = L_add(y12, y44); + t02 = L_sub(y12, y44); + t01 = L_add(y13, y45); + t03 = L_sub(y13, y45); + t04 = L_add(y28, y60); + t07 = L_sub(y28, y60); + t05 = L_add(y61, y29); + t06 = L_sub(y61, y29); + + /* Post-additions */ + re[s * 6] = L_add(t00, t04); + move32(); + im[s * 6] = L_add(t01, t05); + move32(); + re[s * 14] = L_sub(t02, t06); + move32(); + im[s * 14] = L_sub(t03, t07); + move32(); + re[s * 22] = L_sub(t00, t04); + move32(); + im[s * 22] = L_sub(t01, t05); + move32(); + re[s * 30] = L_add(t02, t06); + move32(); + im[s * 30] = L_add(t03, t07); + move32(); + + /* 8. FFT4 stage */ + + /* Pre-additions */ + t00 = L_add(y14, y46); + t02 = L_sub(y14, y46); + t01 = L_add(y15, y47); + t03 = L_sub(y15, y47); + t04 = L_add(y30, y62); + t07 = L_sub(y30, y62); + t05 = L_add(y63, y31); + t06 = L_sub(y63, y31); + + /* Post-additions */ + re[s * 7] = L_add(t00, t04); + move32(); + im[s * 7] = L_add(t01, t05); + move32(); + re[s * 15] = L_sub(t02, t06); + move32(); + im[s * 15] = L_sub(t03, t07); + move32(); + re[s * 23] = L_sub(t00, t04); + move32(); + im[s * 23] = L_sub(t01, t05); + move32(); + re[s * 31] = L_add(t02, t06); + move32(); + im[s * 31] = L_add(t03, t07); + move32(); + + Dyn_Mem_Deluxe_Out(); +} + +/** + * \brief Function performs a complex 40-point FFT + * The FFT is performed inplace. The result of the FFT + * is scaled by SCALEFACTOR40 bits. + * + * \param [i/o] re real part + * \param [i/o] im imag part + * \param [i ] sx stride real and imag part + * + * \return void + */ + + + +static void fft40(Word32 *re, Word32 *im, Word16 sx, Word32 *x) +{ + Dyn_Mem_Deluxe_In(const Word32 *W; Word16 dim1, dim2; Counter 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;); + + dim1 = 5; + move16(); + dim2 = 8; + move16(); + + W = RotVector_40_32; + + 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(); + } + } + + FOR (i = 0; i < dim2; i++) + { + fft5(&x[i * 2 * dim1], &x[i * 2 * dim1 + 1], 2); + } + + 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[2 * i + 2 * 1 * dim1], x[2 * i + 2 * 1 * dim1 + 1]); + cplxMpy4_8_1(x04, x05, x[2 * i + 2 * 2 * dim1], x[2 * i + 2 * 2 * dim1 + 1]); + cplxMpy4_8_1(x06, x07, x[2 * i + 2 * 3 * dim1], x[2 * i + 2 * 3 * dim1 + 1]); + cplxMpy4_8_1(x08, x09, x[2 * i + 2 * 4 * dim1], x[2 * i + 2 * 4 * dim1 + 1]); + cplxMpy4_8_1(x10, x11, x[2 * i + 2 * 5 * dim1], x[2 * i + 2 * 5 * dim1 + 1]); + cplxMpy4_8_1(x12, x13, x[2 * i + 2 * 6 * dim1], x[2 * i + 2 * 6 * dim1 + 1]); + cplxMpy4_8_1(x14, x15, x[2 * i + 2 * 7 * dim1], x[2 * i + 2 * 7 * dim1 + 1]); + } + ELSE + { + cplxMpy4_8_2(x02, x03, x[2 * i + 2 * 1 * dim1], x[2 * i + 2 * 1 * dim1 + 1], W[2 * (i - 1) + 0 * 2 * 4], + W[2 * (i - 1) + 0 * 2 * 4 + 1]); + cplxMpy4_8_2(x04, x05, x[2 * i + 2 * 2 * dim1], x[2 * i + 2 * 2 * dim1 + 1], W[2 * (i - 1) + 1 * 2 * 4], + W[2 * (i - 1) + 1 * 2 * 4 + 1]); + cplxMpy4_8_2(x06, x07, x[2 * i + 2 * 3 * dim1], x[2 * i + 2 * 3 * dim1 + 1], W[2 * (i - 1) + 2 * 2 * 4], + W[2 * (i - 1) + 2 * 2 * 4 + 1]); + cplxMpy4_8_2(x08, x09, x[2 * i + 2 * 4 * dim1], x[2 * i + 2 * 4 * dim1 + 1], W[2 * (i - 1) + 3 * 2 * 4], + W[2 * (i - 1) + 3 * 2 * 4 + 1]); + cplxMpy4_8_2(x10, x11, x[2 * i + 2 * 5 * dim1], x[2 * i + 2 * 5 * dim1 + 1], W[2 * (i - 1) + 4 * 2 * 4], + W[2 * (i - 1) + 4 * 2 * 4 + 1]); + cplxMpy4_8_2(x12, x13, x[2 * i + 2 * 6 * dim1], x[2 * i + 2 * 6 * dim1 + 1], W[2 * (i - 1) + 5 * 2 * 4], + W[2 * (i - 1) + 5 * 2 * 4 + 1]); + cplxMpy4_8_2(x14, x15, x[2 * i + 2 * 7 * dim1], x[2 * i + 2 * 7 * dim1 + 1], W[2 * (i - 1) + 6 * 2 * 4], + W[2 * (i - 1) + 6 * 2 * 4 + 1]); + } + + t00 = L_shr_pos(L_add(x00, x08), SCALEFACTORN2 - 1); + t02 = L_shr_pos(L_sub(x00, x08), SCALEFACTORN2 - 1); + t01 = L_shr_pos(L_add(x01, x09), SCALEFACTORN2 - 1); + t03 = L_shr_pos(L_sub(x01, x09), SCALEFACTORN2 - 1); + t04 = L_shr_pos(L_add(x02, x10), SCALEFACTORN2 - 1); + t06 = L_sub(x02, x10); + t05 = L_shr_pos(L_add(x03, x11), SCALEFACTORN2 - 1); + t07 = L_sub(x03, x11); + t08 = L_shr_pos(L_add(x04, x12), SCALEFACTORN2 - 1); + t10 = L_shr_pos(L_sub(x04, x12), SCALEFACTORN2 - 1); + t09 = L_shr_pos(L_add(x05, x13), SCALEFACTORN2 - 1); + t11 = L_shr_pos(L_sub(x05, x13), SCALEFACTORN2 - 1); + t12 = L_shr_pos(L_add(x06, x14), SCALEFACTORN2 - 1); + t14 = L_sub(x06, x14); + t13 = L_shr_pos(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_pos(L_add(t06, t14), SCALEFACTORN2 - 1); + t02 = L_shr_pos(L_sub(t06, t14), SCALEFACTORN2 - 1); + t00 = L_shr_pos(L_add(t07, t15), SCALEFACTORN2 - 1); + t03 = L_shr_pos(L_sub(t07, t15), SCALEFACTORN2 - 1); + + s12 = Mpy_32_32_lc3plus(L_add(t00, t02), C81_32); + s14 = Mpy_32_32_lc3plus(L_sub(t00, t02), C81_32); + s13 = Mpy_32_32_lc3plus(L_sub(t03, t01), C81_32); + s15 = Mpy_32_32_lc3plus(L_add(t01, t03), C82_32); + + re[sx * i + sx * 0 * dim1] = L_add(s00, s02); + move32(); + im[sx * i + sx * 0 * dim1] = L_add(s01, s03); + move32(); + re[sx * i + sx * 1 * dim1] = L_add(s10, s12); + move32(); + im[sx * i + sx * 1 * dim1] = L_add(s11, s13); + move32(); + re[sx * i + sx * 2 * dim1] = L_sub(s04, s06); + move32(); + im[sx * i + sx * 2 * dim1] = L_sub(s05, s07); + move32(); + re[sx * i + sx * 3 * dim1] = L_add(s08, s14); + move32(); + im[sx * i + sx * 3 * dim1] = L_add(s09, s15); + move32(); + re[sx * i + sx * 4 * dim1] = L_sub(s00, s02); + move32(); + im[sx * i + sx * 4 * dim1] = L_sub(s01, s03); + move32(); + re[sx * i + sx * 5 * dim1] = L_sub(s10, s12); + move32(); + im[sx * i + sx * 5 * dim1] = L_sub(s11, s13); + move32(); + re[sx * i + sx * 6 * dim1] = L_add(s04, s06); + move32(); + im[sx * i + sx * 6 * dim1] = L_add(s05, s07); + move32(); + re[sx * i + sx * 7 * dim1] = L_sub(s08, s14); + move32(); + im[sx * i + sx * 7 * dim1] = L_sub(s09, s15); + move32(); + } + + Dyn_Mem_Deluxe_Out(); +} + +/** + * \brief Combined FFT + * + * \param [i/o] re real part + * \param [i/o] im imag part + * \param [i ] W rotation factor + * \param [i ] dim1 length of fft1 + * \param [i ] dim2 length of fft2 + * \param [i ] sx stride real and imag part + * \param [i ] sc stride phase rotation coefficients + * \param [tmp] x 32-bit workbuffer of length=2*len + * \param [i ] Woff offset for addressing the rotation vector table + * + * \return void + */ + + +static void fftN2(Word32 *re, Word32 *im, +#ifdef ENABLE_HR_MODE + const Word32 *W, +#else + const Word16 *W, +#endif + Word16 dim1, Word16 dim2, Word16 sx, Word16 sc, + Word16 Woff + , Word8 *scratchBuffer +#ifdef ENABLE_FFT_RESCALE + , Word16 *scale +#endif + ) +{ + Dyn_Mem_Deluxe_In(Counter i, j;); + + Word32 *x = scratchAlign(scratchBuffer, 0); + + 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(); + } + } + + SWITCH (dim1) + { + + case 4: + FOR (i = 0; i < dim2; i++) + { + fft4(&x[i * 2 * dim1]); + } + BREAK; + case 8: + FOR (i = 0; i < dim2; i++) + { + fft8(&x[i * 2 * dim1], &x[i * 2 * dim1 + 1], 2); + } + BREAK; + + case 10: + FOR (i = 0; i < dim2; i++) + { + fft10(&x[i * 2 * dim1], &x[i * 2 * dim1 + 1], 2); + } + BREAK; + case 15: + FOR (i = 0; i < dim2; i++) + { + fft15(&x[i * 2 * dim1], &x[i * 2 * dim1 + 1], 2); + } + + BREAK; + case 16: + FOR (i = 0; i < dim2; i++) + { + fft16(&x[i * 2 * dim1], &x[i * 2 * dim1 + 1], 2); + } + BREAK; + case 20: + FOR (i = 0; i < dim2; i++) + { + fft20(&x[i * 2 * dim1], &x[i * 2 * dim1 + 1], 2); + } + BREAK; + case 30: + FOR (i = 0; i < dim2; i++) + { + fft30(&x[i * 2 * dim1], &x[i * 2 * dim1 + 1], 2); + } + BREAK; + case 32: + FOR (i = 0; i < dim2; i++) + { + fft32(&x[i * 2 * dim1], &x[i * 2 * dim1 + 1], 2); + } + BREAK; +#ifdef ENABLE_HR_MODE +#if (defined LC3_FFT15) + case 60: + FOR (i = 0; i < dim2; i++) + { +#ifndef ENABLE_FFT_RESCALE + fftN2(&x[i * 2 * dim1], &x[i * 2 * dim1 + 1], RotVector_480, 15, 4, sx, 4, 60, scratch); +#else + fftN2(&x[i * 2 * dim1], &x[i * 2 * dim1 + 1], RotVector_480, 15, 4, sx, 4, 60, scratch, NULL); +#endif + } + BREAK; +#endif +#endif + default: ASSERT(0); + } + +#ifdef ENABLE_FFT_RESCALE + IF (scale) + { + *scale = s_max(sub(getScaleFactor32_lc3plus(x, dim1 * dim2 * 2), FFT_RESCALE_HR), 0); move16(); + +#if defined(FUNCTION_scaleValues_32) + scaleValues_32(x, dim1 * dim2, *scale); +#else + FOR (i = 0; i < dim1 * dim2 * 2; i++) + { + x[i] = L_shl_pos(x[i], *scale); move32(); + } + } +#endif +#endif + + SWITCH (dim2) + { + case 4: + { + Word32 x00, x01, x02, x03, x04, x05, x06, x07; + Word32 t00, t01, t02, t03, t04, t05, t06, t07; + + j = add(8, 0); + FOR (i = 0; i < dim1; i++) + { + cplxMpy4_4_1(x00, x01, x[2 * i + 2 * 0 * dim1], x[2 * i + 2 * 0 * dim1 + 1]); + IF (i == 0) + { + cplxMpy4_4_1(x02, x03, x[2 * i + 2 * 1 * dim1], x[2 * i + 2 * 1 * dim1 + 1]); + cplxMpy4_4_1(x04, x05, x[2 * i + 2 * 2 * dim1], x[2 * i + 2 * 2 * dim1 + 1]); + cplxMpy4_4_1(x06, x07, x[2 * i + 2 * 3 * dim1], x[2 * i + 2 * 3 * dim1 + 1]); + } + ELSE + { + cplxMpy4_4_0(x02, x03, x[2 * i + 2 * 1 * dim1], x[2 * i + 2 * 1 * dim1 + 1], + W[sc * i + j * 1 * dim1 - Woff], W[sc * i + j * 1 * dim1 + 1 - Woff]); + cplxMpy4_4_0(x04, x05, x[2 * i + 2 * 2 * dim1], x[2 * i + 2 * 2 * dim1 + 1], + W[sc * i + j * 2 * dim1 - Woff], W[sc * i + j * 2 * dim1 + 1 - Woff]); + cplxMpy4_4_0(x06, x07, x[2 * i + 2 * 3 * dim1], x[2 * i + 2 * 3 * dim1 + 1], + W[sc * i + j * 3 * dim1 - Woff], W[sc * i + j * 3 * dim1 + 1 - Woff]); + } + + t00 = L_add(x00, x04); + t02 = L_sub(x00, x04); + t01 = L_add(x01, x05); + t03 = L_sub(x01, x05); + t04 = L_add(x02, x06); + t07 = L_sub(x02, x06); + t05 = L_add(x07, x03); + t06 = L_sub(x07, x03); + + re[sx * i + sx * 0 * dim1] = L_add(t00, t04); + move32(); + im[sx * i + sx * 0 * dim1] = L_add(t01, t05); + move32(); + re[sx * i + sx * 1 * dim1] = L_sub(t02, t06); + move32(); + im[sx * i + sx * 1 * dim1] = L_sub(t03, t07); + move32(); + re[sx * i + sx * 2 * dim1] = L_sub(t00, t04); + move32(); + im[sx * i + sx * 2 * dim1] = L_sub(t01, t05); + move32(); + re[sx * i + sx * 3 * dim1] = L_add(t02, t06); + move32(); + im[sx * i + sx * 3 * dim1] = L_add(t03, t07); + move32(); + } + + BREAK; + } + +#ifdef CR8_G_ADD_75MS + case 6: + { + Word32 y[2 * 10]; + FOR (j = 0; j < dim2; j++) + { + cplxMpy4_12_1(y[2 * j], y[2 * j + 1], x[2 * 0 + 2 * j * dim1], x[2 * 0 + 2 * j * dim1 + 1]); + } + fft6(&y[0], &y[1], 2); + FOR (j = 0; j < dim2; j++) + { + re[sx * 0 + sx * j * dim1] = y[2 * j]; + move32(); + im[sx * 0 + sx * j * dim1] = y[2 * j + 1]; + move32(); + } + + FOR (i = 1; i < dim1; i++) + { + cplxMpy4_12_1(y[2 * (0 + 0)], y[2 * (0 + 0) + 1], x[2 * i + 2 * (0 + 0) * dim1], + x[2 * i + 2 * (0 + 0) * dim1 + 1]); + cplxMpy4_12_0(y[2 * (0 + 1)], y[2 * (0 + 1) + 1], x[2 * i + 2 * (0 + 1) * dim1], + x[2 * i + 2 * (0 + 1) * dim1 + 1], W[sc * i + sc * (0 + 1) * dim1 - Woff], + W[sc * i + sc * (0 + 1) * dim1 + 1 - Woff]); + FOR (j = 2; j < dim2; j = j + 2) + { + cplxMpy4_12_0(y[2 * (j + 0)], y[2 * (j + 0) + 1], x[2 * i + 2 * (j + 0) * dim1], + x[2 * i + 2 * (j + 0) * dim1 + 1], W[sc * i + sc * (j + 0) * dim1 - Woff], + W[sc * i + sc * (j + 0) * dim1 + 1 - Woff]); + cplxMpy4_12_0(y[2 * (j + 1)], y[2 * (j + 1) + 1], x[2 * i + 2 * (j + 1) * dim1], + x[2 * i + 2 * (j + 1) * dim1 + 1], W[sc * i + sc * (j + 1) * dim1 - Woff], + W[sc * i + sc * (j + 1) * dim1 + 1 - Woff]); + } + fft6(&y[0], &y[1], 2); + FOR (j = 0; j < dim2; j++) + { + re[sx * i + sx * j * dim1] = y[2 * j]; + move32(); + im[sx * i + sx * j * dim1] = y[2 * j + 1]; + move32(); + } + } + BREAK; + } +#endif + + case 8: + { + 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 < 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[2 * i + 2 * 1 * dim1], x[2 * i + 2 * 1 * dim1 + 1]); + cplxMpy4_8_1(x04, x05, x[2 * i + 2 * 2 * dim1], x[2 * i + 2 * 2 * dim1 + 1]); + cplxMpy4_8_1(x06, x07, x[2 * i + 2 * 3 * dim1], x[2 * i + 2 * 3 * dim1 + 1]); + cplxMpy4_8_1(x08, x09, x[2 * i + 2 * 4 * dim1], x[2 * i + 2 * 4 * dim1 + 1]); + cplxMpy4_8_1(x10, x11, x[2 * i + 2 * 5 * dim1], x[2 * i + 2 * 5 * dim1 + 1]); + cplxMpy4_8_1(x12, x13, x[2 * i + 2 * 6 * dim1], x[2 * i + 2 * 6 * dim1 + 1]); + cplxMpy4_8_1(x14, x15, x[2 * i + 2 * 7 * dim1], x[2 * i + 2 * 7 * dim1 + 1]); + } + ELSE + { + cplxMpy4_8_0(x02, x03, x[2 * i + 2 * 1 * dim1], x[2 * i + 2 * 1 * dim1 + 1], + W[sc * i + sc * 1 * dim1 - Woff], W[sc * i + sc * 1 * dim1 + 1 - Woff]); + cplxMpy4_8_0(x04, x05, x[2 * i + 2 * 2 * dim1], x[2 * i + 2 * 2 * dim1 + 1], + W[sc * i + sc * 2 * dim1 - Woff], W[sc * i + sc * 2 * dim1 + 1 - Woff]); + cplxMpy4_8_0(x06, x07, x[2 * i + 2 * 3 * dim1], x[2 * i + 2 * 3 * dim1 + 1], + W[sc * i + sc * 3 * dim1 - Woff], W[sc * i + sc * 3 * dim1 + 1 - Woff]); + cplxMpy4_8_0(x08, x09, x[2 * i + 2 * 4 * dim1], x[2 * i + 2 * 4 * dim1 + 1], + W[sc * i + sc * 4 * dim1 - Woff], W[sc * i + sc * 4 * dim1 + 1 - Woff]); + cplxMpy4_8_0(x10, x11, x[2 * i + 2 * 5 * dim1], x[2 * i + 2 * 5 * dim1 + 1], + W[sc * i + sc * 5 * dim1 - Woff], W[sc * i + sc * 5 * dim1 + 1 - Woff]); + cplxMpy4_8_0(x12, x13, x[2 * i + 2 * 6 * dim1], x[2 * i + 2 * 6 * dim1 + 1], + W[sc * i + sc * 6 * dim1 - Woff], W[sc * i + sc * 6 * dim1 + 1 - Woff]); + cplxMpy4_8_0(x14, x15, x[2 * i + 2 * 7 * dim1], x[2 * i + 2 * 7 * dim1 + 1], + W[sc * i + sc * 7 * dim1 - Woff], W[sc * i + sc * 7 * dim1 + 1 - Woff]); + } + + t00 = L_shr_pos(L_add(x00, x08), SCALEFACTORN2 - 1); + t02 = L_shr_pos(L_sub(x00, x08), SCALEFACTORN2 - 1); + t01 = L_shr_pos(L_add(x01, x09), SCALEFACTORN2 - 1); + t03 = L_shr_pos(L_sub(x01, x09), SCALEFACTORN2 - 1); + t04 = L_shr_pos(L_add(x02, x10), SCALEFACTORN2 - 1); + t06 = L_sub(x02, x10); + t05 = L_shr_pos(L_add(x03, x11), SCALEFACTORN2 - 1); + t07 = L_sub(x03, x11); + t08 = L_shr_pos(L_add(x04, x12), SCALEFACTORN2 - 1); + t10 = L_shr_pos(L_sub(x04, x12), SCALEFACTORN2 - 1); + t09 = L_shr_pos(L_add(x05, x13), SCALEFACTORN2 - 1); + t11 = L_shr_pos(L_sub(x05, x13), SCALEFACTORN2 - 1); + t12 = L_shr_pos(L_add(x06, x14), SCALEFACTORN2 - 1); + t14 = L_sub(x06, x14); + t13 = L_shr_pos(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_pos(L_add(t06, t14), SCALEFACTORN2 - 1); + t02 = L_shr_pos(L_sub(t06, t14), SCALEFACTORN2 - 1); + t00 = L_shr_pos(L_add(t07, t15), SCALEFACTORN2 - 1); + t03 = L_shr_pos(L_sub(t07, t15), SCALEFACTORN2 - 1); + + s12 = Mpy_32_xx(L_add(t00, t02), C81); + s14 = Mpy_32_xx(L_sub(t00, t02), C81); + s13 = Mpy_32_xx(L_sub(t03, t01), C81); + s15 = Mpy_32_xx(L_add(t01, t03), C82); + + re[sx * i + sx * 0 * dim1] = L_add(s00, s02); + move32(); + im[sx * i + sx * 0 * dim1] = L_add(s01, s03); + move32(); + re[sx * i + sx * 1 * dim1] = L_add(s10, s12); + move32(); + im[sx * i + sx * 1 * dim1] = L_add(s11, s13); + move32(); + re[sx * i + sx * 2 * dim1] = L_sub(s04, s06); + move32(); + im[sx * i + sx * 2 * dim1] = L_sub(s05, s07); + move32(); + re[sx * i + sx * 3 * dim1] = L_add(s08, s14); + move32(); + im[sx * i + sx * 3 * dim1] = L_add(s09, s15); + move32(); + re[sx * i + sx * 4 * dim1] = L_sub(s00, s02); + move32(); + im[sx * i + sx * 4 * dim1] = L_sub(s01, s03); + move32(); + re[sx * i + sx * 5 * dim1] = L_sub(s10, s12); + move32(); + im[sx * i + sx * 5 * dim1] = L_sub(s11, s13); + move32(); + re[sx * i + sx * 6 * dim1] = L_add(s04, s06); + move32(); + im[sx * i + sx * 6 * dim1] = L_add(s05, s07); + move32(); + re[sx * i + sx * 7 * dim1] = L_sub(s08, s14); + move32(); + im[sx * i + sx * 7 * dim1] = L_sub(s09, s15); + move32(); + } + BREAK; + } + + case 12: + { + Word32 y[2 * 20]; + FOR (j = 0; j < dim2; j++) + { + cplxMpy4_12_1(y[2 * j], y[2 * j + 1], x[2 * 0 + 2 * j * dim1], x[2 * 0 + 2 * j * dim1 + 1]); + } + fft12(y); + FOR (j = 0; j < dim2; j++) + { + re[sx * 0 + sx * j * dim1] = y[2 * j]; + move32(); + im[sx * 0 + sx * j * dim1] = y[2 * j + 1]; + move32(); + } + + FOR (i = 1; i < dim1; i++) + { + cplxMpy4_12_1(y[2 * (0 + 0)], y[2 * (0 + 0) + 1], x[2 * i + 2 * (0 + 0) * dim1], + x[2 * i + 2 * (0 + 0) * dim1 + 1]); + cplxMpy4_12_0(y[2 * (0 + 1)], y[2 * (0 + 1) + 1], x[2 * i + 2 * (0 + 1) * dim1], + x[2 * i + 2 * (0 + 1) * dim1 + 1], W[sc * i + sc * (0 + 1) * dim1 - Woff], + W[sc * i + sc * (0 + 1) * dim1 + 1 - Woff]); + FOR (j = 2; j < dim2; j = j + 2) + { + cplxMpy4_12_0(y[2 * (j + 0)], y[2 * (j + 0) + 1], x[2 * i + 2 * (j + 0) * dim1], + x[2 * i + 2 * (j + 0) * dim1 + 1], W[sc * i + sc * (j + 0) * dim1 - Woff], + W[sc * i + sc * (j + 0) * dim1 + 1 - Woff]); + cplxMpy4_12_0(y[2 * (j + 1)], y[2 * (j + 1) + 1], x[2 * i + 2 * (j + 1) * dim1], + x[2 * i + 2 * (j + 1) * dim1 + 1], W[sc * i + sc * (j + 1) * dim1 - Woff], + W[sc * i + sc * (j + 1) * dim1 + 1 - Woff]); + } + fft12(y); + FOR (j = 0; j < dim2; j++) + { + re[sx * i + sx * j * dim1] = y[2 * j]; + move32(); + im[sx * i + sx * j * dim1] = y[2 * j + 1]; + move32(); + } + } + BREAK; + } + +#if defined(ENABLE_HR_MODE) + case 16: + { + Word32 y[2 * 20]; + FOR (j = 0; j < dim2; j++) + { + cplxMpy4_16_1(y[2 * j], y[2 * j + 1], x[2 * 0 + 2 * j * dim1], x[2 * 0 + 2 * j * dim1 + 1]); + } + + fft16(&y[0], &y[1], 2); + FOR (j = 0; j < dim2; j++) + { + re[sx * 0 + sx * j * dim1] = y[2 * j]; + move32(); + im[sx * 0 + sx * j * dim1] = y[2 * j + 1]; + move32(); + } + + FOR (i = 1; i < dim1; i++) + { + cplxMpy4_16_1(y[2 * (0 + 0)], y[2 * (0 + 0) + 1], x[2 * i + 2 * (0 + 0) * dim1], + x[2 * i + 2 * (0 + 0) * dim1 + 1]); + cplxMpy4_16_0(y[2 * (0 + 1)], y[2 * (0 + 1) + 1], x[2 * i + 2 * (0 + 1) * dim1], + x[2 * i + 2 * (0 + 1) * dim1 + 1], W[sc * i + sc * (0 + 1) * dim1 - Woff], + W[sc * i + sc * (0 + 1) * dim1 + 1 - Woff]); + FOR (j = 2; j < dim2; j = j + 2) + { + cplxMpy4_16_0(y[2 * (j + 0)], y[2 * (j + 0) + 1], x[2 * i + 2 * (j + 0) * dim1], + x[2 * i + 2 * (j + 0) * dim1 + 1], W[sc * i + sc * (j + 0) * dim1 - Woff], + W[sc * i + sc * (j + 0) * dim1 + 1 - Woff]); + cplxMpy4_16_0(y[2 * (j + 1)], y[2 * (j + 1) + 1], x[2 * i + 2 * (j + 1) * dim1], + x[2 * i + 2 * (j + 1) * dim1 + 1], W[sc * i + sc * (j + 1) * dim1 - Woff], + W[sc * i + sc * (j + 1) * dim1 + 1 - Woff]); + } + fft16(&y[0], &y[1], 2); + FOR (j = 0; j < dim2; j++) + { + re[sx * i + sx * j * dim1] = y[2 * j]; + move32(); + im[sx * i + sx * j * dim1] = y[2 * j + 1]; + move32(); + } + } + BREAK; + } +# endif + default: ASSERT(0); + } + + Dyn_Mem_Deluxe_Out(); +} + +/** + * \brief Complex valued FFT + * + * \param [i/o] re real part + * \param [i/o] im imag part + * \param [i ] sizeOfFft length of fft + * \param [i ] s stride real and imag part + * \param [i ] scale scalefactor + * + * \return void + */ + + + +/* x is the scratch buffer */ +void BASOP_cfft_lc3plus(Word32 *re, Word32 *im, Word16 length, Word16 s, Word16 *scale, Word32 *x) +{ +#if (defined ENABLE_FFT_RESCALE) && ((defined LC3_FFT30) || (defined ENABLE_HR_MODE)) + Word16 fftN2scale = 0; +#endif + +#ifdef ENABLE_HR_MODE + Word8 scratch[6128] = {0}; +#else + Word8 scratch[4068] = {0}; +#endif + + SWITCH (length) + { + + case 10: + fft10(re, im, s); + *scale = add(*scale, SCALEFACTOR10); + move16(); + BREAK; + case 16: + fft16(re, im, s); + *scale = add(*scale, SCALEFACTOR16); + move16(); + BREAK; + case 20: + fft20(re, im, s); + *scale = add(*scale, SCALEFACTOR20); + move16(); + BREAK; + case 30: + fft30(re, im, s); + *scale = add(*scale, SCALEFACTOR30); + move16(); + BREAK; + case 32: + fft32(re, im, s); + *scale = add(*scale, SCALEFACTOR32); + move16(); + BREAK; + case 40: + fft40(re, im, s, x); + *scale = add(*scale, SCALEFACTOR40); + move16(); + BREAK; + case 48: +#ifndef ENABLE_FFT_RESCALE + fftN2(re, im, RotVector_32_12, 4, 12, s, 16, 64, scratch); +#else + fftN2(re, im, RotVector_32_12, 4, 12, s, 16, 64, scratch, NULL); +#endif + *scale = add(*scale, SCALEFACTOR48); + move16(); + BREAK; + case 60: +#ifndef ENABLE_FFT_RESCALE + fftN2(re, im, RotVector_480, 15, 4, s, 4, 60, scratch); +#else + fftN2(re, im, RotVector_480, 15, 4, s, 4, 60, scratch, NULL); +#endif + *scale = add(*scale, SCALEFACTOR60); + move16(); + BREAK; + case 64: +#ifndef ENABLE_FFT_RESCALE + fftN2(re, im, RotVector_32_8, 8, 8, s, 8, 64, scratch); +#else + fftN2(re, im, RotVector_32_8, 8, 8, s, 8, 64, scratch, NULL); +#endif + *scale = add(*scale, SCALEFACTOR64); + move16(); + BREAK; + case 80: +#ifndef ENABLE_FFT_RESCALE + fftN2(re, im, RotVector_320, 10, 8, s, 4, 40, scratch); +#else + fftN2(re, im, RotVector_320, 10, 8, s, 4, 40, scratch, NULL); +#endif + *scale = add(*scale, SCALEFACTOR80); + move16(); + BREAK; + case 90: +#ifndef ENABLE_FFT_RESCALE + fftN2(re, im, RotVector_15_6, 15, 6, s, 2, 30, scratch); +#else + fftN2(re, im, RotVector_15_6, 15, 6, s, 2, 30, scratch, NULL); +#endif + *scale = add(*scale, SCALEFACTOR90); + move16(); + BREAK; + + case 120: +#ifndef ENABLE_FFT_RESCALE + fftN2(re, im, RotVector_480, 15, 8, s, 4, 60, scratch); +#else + fftN2(re, im, RotVector_480, 15, 8, s, 4, 60, scratch, NULL); +#endif + *scale = add(*scale, SCALEFACTOR120); + move16(); + BREAK; + case 128: +#ifndef ENABLE_FFT_RESCALE + fftN2(re, im, RotVector_32_8, 16, 8, s, 4, 64, scratch); +#else + fftN2(re, im, RotVector_32_8, 16, 8, s, 4, 64, scratch, NULL); +#endif + *scale = add(*scale, SCALEFACTOR128); + move16(); + BREAK; + case 160: +#ifndef ENABLE_FFT_RESCALE + fftN2(re, im, RotVector_320, 20, 8, s, 2, 40, scratch); +#else + fftN2(re, im, RotVector_320, 20, 8, s, 2, 40, scratch, NULL); +#endif + *scale = add(*scale, SCALEFACTOR160); + move16(); + BREAK; + case 180: +#ifndef ENABLE_FFT_RESCALE + fftN2(re, im, RotVector_360, 15, 12, s, 4, 60, scratch); + *scale = add(*scale, SCALEFACTOR180); +#else + fftN2(re, im, RotVector_360, 15, 12, s, 4, 60, scratch, &fftN2scale); + *scale = add(*scale, SCALEFACTOR180); + *scale = sub(*scale, fftN2scale); move16(); +#endif + + move16(); + BREAK; + case 192: +#ifndef ENABLE_FFT_RESCALE + fftN2(re, im, RotVector_32_12, 16, 12, s, 4, 64, scratch); +#else + fftN2(re, im, RotVector_32_12, 16, 12, s, 4, 64, scratch, NULL); +#endif + *scale = add(*scale, SCALEFACTOR192); + move16(); + BREAK; + case 240: +#ifndef ENABLE_FFT_RESCALE + fftN2(re, im, RotVector_480, 30, 8, s, 2, 60, scratch); + *scale = add(*scale, SCALEFACTOR240); +#else + fftN2(re, im, RotVector_480, 30, 8, s, 2, 60, scratch, &fftN2scale); + *scale = add(*scale, SCALEFACTOR240); + *scale = sub(*scale, fftN2scale); move16(); +#endif + move16(); + BREAK; + case 256: +#ifndef ENABLE_FFT_RESCALE + fftN2(re, im, RotVector_32_8, 32, 8, s, 2, 64, scratch); +#else + fftN2(re, im, RotVector_32_8, 32, 8, s, 2, 64, scratch, NULL); +#endif + *scale = add(*scale, SCALEFACTOR256); + move16(); + BREAK; + case 384: +#ifndef ENABLE_FFT_RESCALE + fftN2(re, im, RotVector_32_12, 32, 12, s, 2, 64, scratch); +#else + fftN2(re, im, RotVector_32_12, 32, 12, s, 2, 64, scratch, NULL); +#endif + *scale = add(*scale, SCALEFACTOR384); + move16(); + BREAK; +#ifdef ENABLE_HR_MODE +#ifdef CR8_G_ADD_75MS + case 360: + fftN2(re, im, RotVector_720, 30, 12, s, 2, 60, scratch, &fftN2scale); + *scale = add(*scale, SCALEFACTOR360); move16(); + *scale = sub(*scale, fftN2scale); move16(); + BREAK; +#endif + case 480: +#ifndef ENABLE_FFT_RESCALE +#ifndef ENABLE_FFT_30X16 + fftN2(re, im, RotVector_960, 60, 8, s, 2, 120, scratch); +#else + fftN2(re, im, RotVector_30_16, 30, 16, s, 2, 60, scratch); +#endif + *scale = add(*scale, SCALEFACTOR480); move16(); +#else +#ifndef ENABLE_FFT_30X16 + fftN2(re, im, RotVector_960, 60, 8, s, 2, 120, scratch, &fftN2scale); +#else + fftN2(re, im, RotVector_30_16, 30, 16, s, 2, 60, scratch, &fftN2scale); +#endif + *scale = add(*scale, SCALEFACTOR480); move16(); + *scale = sub(*scale, fftN2scale); move16(); +#endif + BREAK; +#endif + default: ASSERT(0); + } +} + + +#define RFFT_TWIDDLE1(x, t1, t2, t3, t4, w1, w2, xb0, xb1, xt0, xt1) \ + do \ + { \ + xb0 = L_shr_pos(x[2 * i + 0], 2); \ + xb1 = L_shr_pos(x[2 * i + 1], 2); \ + xt0 = L_shr_pos(x[sizeOfFft - 2 * i + 0], 2); \ + xt1 = L_shr_pos(x[sizeOfFft - 2 * i + 1], 2); \ + t1 = L_sub(xb0, xt0); \ + t2 = L_add(xb1, xt1); \ + t3 = L_sub(Mpy_32_32_lc3plus(t1, w1), Mpy_32_32_lc3plus(t2, w2)); \ + t4 = L_add(Mpy_32_32_lc3plus(t1, w2), Mpy_32_32_lc3plus(t2, w1)); \ + t1 = L_add(xb0, xt0); \ + t2 = L_sub(xb1, xt1); \ + } while (0) + +#define RFFT_TWIDDLE2(x, t1, t2, t3, t4, w1, w2, xb0, xb1, xt0, xt1) \ + do \ + { \ + xb0 = L_shr_pos(x[2 * i + 0], 2); \ + xb1 = L_shr_pos(x[2 * i + 1], 2); \ + xt0 = L_shr_pos(x[sizeOfFft - 2 * i + 0], 2); \ + xt1 = L_shr_pos(x[sizeOfFft - 2 * i + 1], 2); \ + t1 = L_sub(xb0, xt0); \ + t2 = L_add(xb1, xt1); \ + t3 = L_add(Mpy_32_32_lc3plus(t1, w1), Mpy_32_32_lc3plus(t2, w2)); \ + t4 = L_sub(Mpy_32_32_lc3plus(t2, w1), Mpy_32_32_lc3plus(t1, w2)); \ + t1 = L_add(xb0, xt0); \ + t2 = L_sub(xb1, xt1); \ + } while (0) + + + +static const Word32 *rfft_twid(int size) +{ + SWITCH (size) + { + case 32: return RealFFT32_twid; + case 40: return RealFFT40_twid; + case 64: return RealFFT64_twid; + case 80: return RealFFT80_twid; + case 96: return RealFFT96_twid; + case 128: return RealFFT128_twid; + case 192: return RealFFT192_twid; + case 256: return RealFFT256_twid; + case 384: return RealFFT384_twid; + case 512: return RealFFT512_twid; + case 768: return RealFFT768_twid; + default: ASSERT(0); + } + return NULL; +} + + +void BASOP_rfftN(Word32 *x, Word16 sizeOfFft, Word16 *scale, Word8 *scratchBuffer) +{ + Dyn_Mem_Deluxe_In(Counter i; Word16 sizeOfFft2, sizeOfFft4, sizeOfFft8; Word32 t1, t2, t3, t4, xb0, xb1, xt0, xt1; + Word32 * workBuffer; const Word32 *w32;); + + workBuffer = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 4 * sizeOfFft */ + w32 = rfft_twid(sizeOfFft); + + sizeOfFft2 = shr_pos(sizeOfFft, 1); + sizeOfFft4 = shr_pos(sizeOfFft, 2); + sizeOfFft8 = shr_pos(sizeOfFft, 3); + + BASOP_cfft_lc3plus(&x[0], &x[1], sizeOfFft2, 2, scale, workBuffer); + + xb0 = L_shr_pos(x[0], 1); + xb1 = L_shr_pos(x[1], 1); + x[0] = L_add(xb0, xb1); + move32(); + x[1] = L_sub(xb0, xb1); + move32(); + + FOR (i = 1; i < sizeOfFft8; i++) + { + RFFT_TWIDDLE1(x, t1, t2, t3, t4, w32[2 * i + 1], w32[2 * i], xb0, xb1, xt0, xt1); + x[2 * i] = L_sub(t1, t3); + move32(); + x[2 * i + 1] = L_sub(t2, t4); + move32(); + x[sizeOfFft - 2 * i] = L_add(t1, t3); + move32(); + x[sizeOfFft - 2 * i + 1] = L_negate(L_add(t2, t4)); + move32(); + } + + FOR (i = sizeOfFft8; i < sizeOfFft4; i++) + { + RFFT_TWIDDLE1(x, t1, t2, t3, t4, w32[(2 * sizeOfFft4 - 2 * i)], w32[(2 * sizeOfFft4 - 2 * i + 1)], xb0, xb1, + xt0, xt1); + x[2 * i] = L_sub(t1, t3); + move32(); + x[2 * i + 1] = L_sub(t2, t4); + move32(); + x[sizeOfFft - 2 * i] = L_add(t1, t3); + move32(); + x[sizeOfFft - 2 * i + 1] = L_negate(L_add(t2, t4)); + move32(); + } + + x[sizeOfFft - 2 * i] = L_shr_pos(x[2 * i + 0], 1); + move32(); + x[sizeOfFft - 2 * i + 1] = L_negate(L_shr_pos(x[2 * i + 1], 1)); + move32(); + + *scale = add(*scale, 1); + move16(); + + Dyn_Mem_Deluxe_Out(); +} + + + +void BASOP_irfftN(Word32 *x, Word16 sizeOfFft, Word16 *scale, Word8 *scratchBuffer) +{ + Dyn_Mem_Deluxe_In(Word16 sizeOfFft2, sizeOfFft4, sizeOfFft8; Word32 t1, t2, t3, t4, xb0, xb1, xt0, xt1; + Word32 * workBuffer; const Word32 *w32; Counter i;); + + workBuffer = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * BASOP_CFFT_MAX_LENGTH */ + + w32 = rfft_twid(sizeOfFft); + + sizeOfFft2 = shr_pos(sizeOfFft, 1); + sizeOfFft4 = shr_pos(sizeOfFft, 2); + sizeOfFft8 = shr_pos(sizeOfFft, 3); + + xb0 = L_shr_pos(x[0], 2); + xb1 = L_shr_pos(x[1], 2); + x[0] = L_add(xb0, xb1); + move32(); + x[1] = L_sub(xb1, xb0); + move32(); + + FOR (i = 1; i < sizeOfFft8; i++) + { + RFFT_TWIDDLE2(x, t1, t2, t3, t4, w32[2 * i + 1], w32[2 * i], xb0, xb1, xt0, xt1); + x[2 * i] = L_sub(t1, t3); + move32(); + x[2 * i + 1] = L_sub(t4, t2); + move32(); + x[sizeOfFft - 2 * i] = L_add(t1, t3); + move32(); + x[sizeOfFft - 2 * i + 1] = L_add(t2, t4); + move32(); + } + + FOR (i = sizeOfFft8; i < sizeOfFft4; i++) + { + RFFT_TWIDDLE2(x, t1, t2, t3, t4, w32[(2 * sizeOfFft4 - 2 * i)], w32[(2 * sizeOfFft4 - 2 * i + 1)], xb0, xb1, + xt0, xt1); + x[2 * i] = L_sub(t1, t3); + move32(); + x[2 * i + 1] = L_sub(t4, t2); + move32(); + x[sizeOfFft - 2 * i] = L_add(t1, t3); + move32(); + x[sizeOfFft - 2 * i + 1] = L_add(t2, t4); + move32(); + } + + x[sizeOfFft - 2 * i] = L_shr_pos(x[2 * i + 0], 1); + move32(); + x[sizeOfFft - 2 * i + 1] = L_shr_pos(x[2 * i + 1], 1); + move32(); + + BASOP_cfft_lc3plus(&x[0], &x[1], sizeOfFft2, 2, scale, workBuffer); + + /* If you want BASOP_irfft to be inverse to BASOP_rfft then the result needs + * to be normalised by sizeOfFft */ + FOR (i = 0; i < sizeOfFft2; i++) + { + x[2 * i + 1] = L_negate(x[2 * i + 1]); + move32(); + } + + *scale = add(*scale, 2); + move16(); + + Dyn_Mem_Deluxe_Out(); +} + + diff --git a/lib_lc3plus/functions.h b/lib_lc3plus/functions.h new file mode 100644 index 0000000000000000000000000000000000000000..940c58da7973af05a50bc3dd88ba0461ae2b5c90 --- /dev/null +++ b/lib_lc3plus/functions.h @@ -0,0 +1,837 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#ifndef FUNCTIONS_H +#define FUNCTIONS_H + +#include "defines.h" + +#include "stl.h" +#ifdef DYNMEM_COUNT +#include "dynmem.h" +#endif + +#include "basop_util_lc3plus.h" +#include "basop32.h" +#include "constants.h" +#include "lc3.h" +#include "setup_dec_lc3.h" /* for decoder state handle ptr */ +#include "setup_enc_lc3.h" /* for encoder state handle ptr */ +#include "basop_mpy_lc3plus.h" + +#include +#include +#include +#include +#include + +#define PRINTF printf /* C console debug, */ +#define ASSERT(test) assert(test) + +typedef struct +{ + Word16 lead_sign_ind; /* this MPVQ index is the first part of the total PVQ index */ + UWord32 index, size; /* this MPVQ index is the second part of the total PVQ index */ + Word16 dim, k_val; + Word16 vec[PVQ_MAX_VEC_SIZE]; /* integer vector */ +} PvqEntry_fx; + +typedef enum { + LC3_CON_TEC_NS_STD, /* 0 */ + LC3_CON_TEC_PHASE_ECU, /* 2 */ + LC3_CON_TEC_TDPLC, /* 3 */ + LC3_CON_TEC_NS_ADV, /* 4 */ + LC3_CON_TEC_FREQ_MUTING, /* 5 */ +} LC3_ConcealTechnique; + +void WarnMsg(char *msg); +void ExitMsg(char *msg); +void AssertMsg(int true_flag, char *msg); + +void processTnsDecoder_fx(Word16 rc_idx[], Word32 x[], Word16 xLen, Word16 order[], Word16 *x_e, Word16 BW_stopband_idx, + Word16 frame_dms, Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +); + +void processTnsCoder_fx(Word16 *bits, Word16 indexes[], Word32 x[], Word16 BW_cutoff_idx, Word16 order[], + Word16 *numfilters, Word16 enable_lpc_weighting, Word16 nSubdivisions, Word16 frame_dms, + Word16 max_len, Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif + , Word16 near_nyquist_flag +); + +void TnsUpdate_fx(Word16 *tns_numfilters, Word16 *long_startfreq, const Word16 **subdiv_startfreq, + const Word16 **subdiv_stopfreq, Word16 frame_length, Word16 tab_idx); + +void processResidualDecoding_fx(Word32 spectrum[], Word16 spectrum_e, Word16 L_spec, UWord8 prm[], Word16 resQBits +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +); + +void processPreemph_fx(Word16 *x, Word16 len, Word16 mem[], Word16 memLen, Word16 out[], Word16 *outLen, Word16 mu); + +void processNoiseFilling_fx(Word32 xq[], Word16 nfseed, Word16 xq_e, Word16 fac_ns_idx, Word16 BW_cutoff_idx, + Word16 frame_dms, Word16 fac_ns_pc, Word16 spec_inv_idx, Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +); + +void processNoiseFactor_fx(Word16 *fac_ns_idx, Word16 x_e, Word32 x[], +#ifdef ENABLE_HR_MODE + Word32 xq[], +#else + Word16 xq[], +#endif + Word16 gg, Word16 gg_e, Word16 BW_cutoff_idx, Word16 frame_dms, Word16 target_bytes, + Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +); + +void processMdctShaping_fx(Word32 x[], +#ifdef ENABLE_HR_MODE + Word32 scf[], +#else + Word16 scf[], +#endif + Word16 scf_exp[], const Word16 bands_offset[], Word16 fdns_npts); + +void processScfScaling(Word16 scf_exp[], Word16 fdns_npts, Word16 *x_e); + +void processMdct_fx( +#ifdef ENABLE_HR_MODE + Word32 x[], +#else + Word16 x[], +#endif + Word16 x_exp, Word16 N, +#ifdef CR8_F_ADAPT_MDCT_DCT_PRECISION +# ifdef ENABLE_HR_MODE + Word16 hrmode, /* i: indicate high precision */ +# endif +#endif +#ifdef ENABLE_HR_MODE + const Word32 w[], /* i: window coefficients including normalization of sqrt(2/N) and scaled by 2^4 */ +#else + const Word16 w[], /* i: window coefficients including normalization of sqrt(2/N) and scaled by 2^4 */ +#endif + Word16 wLen, +#ifdef ENABLE_HR_MODE + Word32 mem[], /* i/o: last block of input samples */ +#else + Word16 mem[], /* i/o: last block of input samples */ +#endif + Word16 memLen, + Word32 y[], Word16 *y_e, Word8 *scratchBuffer); + +void processLevinson_fx(Word32 *lpc, Word32 *ac, Word16 N, Word16 *rc, Word32 *pred_err, Word8 *scratchBuffer); + +void lpc2rc(Word32 *lpc, Word16 *rc, Word16 N); + +void ProcessingIMDCT(Word32 y[], Word16 *y_e, +#ifdef ENABLE_HR_MODE + const Word32 w[], /* i: window coefficients including normalization of sqrt(2/N) and scaled by 2^4 */ + Word32 mem[], /* i/o: overlap add memory */ +#else + const Word16 w[], /* i: window coefficients including normalization of sqrt(2/N) and scaled by 2^4 */ + Word16 mem[], /* i/o: overlap add memory */ +#endif + Word16 *mem_e, +#ifdef ENABLE_HR_MODE + Word32 x[], /* o: time signal out */ +#else + Word16 x[], /* o: time signal out */ +#endif + Word16 wLen, + Word16 N, Word16 memLen, Word16 frame_dms, + Word16 concealMethod, Word16 bfi, Word16 prev_bfi, Word16 nbLostFramesInRow, AplcSetup *plcAd, + Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +); + +#ifdef ENABLE_HR_MODE +# ifdef CR8_F_ADAPT_MDCT_DCT_PRECISION +void dct_IV(Word32 *pDat, Word16 *pDat_e, Word16 L, Word16 hrmode, Word32 *workBuffer); +# else /* CR8_F_ADAPT_MDCT_DCT_PRECISION */ +void dct_IV(Word32 *pDat, Word16 *pDat_e, Word16 L, Word32 *workBuffer); +# endif /* CR8_F_ADAPT_MDCT_DCT_PRECISION */ +#else +void dct_IV(Word32 *pDat, Word16 *pDat_e, Word16 L, Word32 *workBuffer); +#endif + +#ifdef ENABLE_HR_MODE +Word16 find_last_nz_pair(const Word32 x[], Word16 length); +#else +Word16 find_last_nz_pair(const Word16 x[], Word16 length); +#endif + +PvqEntry_fx mpvq_index_fx(const Word16 *vec_in, Word16 dim_in, Word16 k_val_local); +void mpvq_deindex_fx(const PvqEntry_fx *entry, UWord32 *h_mem, Word16 *vec_out); + +void pvq_enc_search_fx(const Word16 *x, /* i: target vector to quantize Qin */ + Word16 * rt_far, /* o: outl_far o, raw pulses (non-scaled short) Q0 */ + Word16 * rt_near, /* o: outl_near o, raw pulses (non-scaled short) Q0 */ + Word16 * rtA, /* o: A section raw pulses (non-scaled short) Q0 */ + Word16 * rtB, /* o: B section raw pulses (non-scaled short) Q0 */ + Word32 *L_corr, /* o: 4 un-normalized correlation sums for outl_far, near, outl, A, AB */ + Word32 *L_search_en, /* o: 4 energy sums for out_far, outl_near, A, AB */ + Word16 *pulses_fin, /* i: number of allocated pulses to outl A, AB section */ + Word16 *pulses_proj, /* i: number of proj pulses pulses to outl, A , AB section */ + + const Word16 dim, /* i: Length of vector */ + const Word16 dimA /* i: Length of vector A section */ +); + +PvqEntry_fx get_size_mpvq_calc_offset_fx(Word16 dim_in, Word16 k_val_in, UWord32 *h_mem); + +Word16 pvq_dec_deidx_fx( /* out BER detected 1 , ok==0 */ + Word16 * y, /* o: decoded vector (non-scaled int) */ + const Word16 k_val, /* i: number of allocated pulses */ + const Word16 dim, /* i: Length of vector */ + const Word16 LS_ind, /* i; lS index 1 bit */ + const UWord32 UL_MPVQ_ind /* i; MPVQ index */ +); + +void pvq_dec_en1_norm_fx( /* */ +#ifdef ENABLE_HR_MODE + Word32 * xq, /* o: en1 normalized decoded vector (Q14) */ +#else + Word16 * xq, /* o: en1 normalized decoded vector (Q14) */ +#endif + const Word16 *y, /* i: decoded vector (non-scaled int) */ + const Word16 kval_max, /* i: max possible K in Q0 kO or kA */ + const Word16 dim, /* i: Length of vector */ + const Word16 neg_glob_gain /* i: a Global Gain (negated to fit 1.0 in Q15 as -1.0) */ +); + +#ifdef ENABLE_HR_MODE +#ifdef WIN32 +#define mexPrintf(x, y) printf(x, y) +#endif +#endif + +void pvq_dec_en1_normQ14_fx( /* Have to be used by both encoder and decoder */ +#ifdef ENABLE_HR_MODE + Word32 * xq, /* o: en1 normalized decoded vector (Q14) */ +#else + Word16 * xq, /* o: en1 normalized decoded vector (Q14) */ +#endif + const Word16 *y, /* i: decoded vector (non-scaled int) */ + const Word16 k_val_max, /* i: max possible K in Q0 kO or kA */ + const Word16 dim /* i: Length of vector */ +); + + +#ifdef ENABLE_HR_MODE +void pvq_dec_scale_vec_fx(const Word32 *inQ29, Word16 adjGainQ13, Word32 *outQ); +#else +void pvq_dec_scale_vec_fx(const Word16 *inQ14, Word16 adjGainQ13, Word16 *outQ14); +#endif + +Word16 processAriEncoder_fx(UWord8 *bytes, Word16 bp_side, Word16 mask_side, Word16 nbbits, +#ifdef ENABLE_HR_MODE + Word32 xq[], +#else + Word16 xq[], +#endif + Word16 *tns_order, Word16 tns_numfilters, Word16 *tns_idx, Word16 lastnz, + Word16 *codingdata, UWord8 *resBits, Word16 numResBits, Word16 lsbMode, + Word16 enable_lpc_weighting, Word8 *scratchBuffer); + +void processAriDecoder_fx(UWord8 *bytes, Word16 *bp_side, Word16 *mask_side, Word16 nbbits, Word16 L_spec, + Word16 fs_idx, Word16 enable_lpc_weighting, Word16 tns_numfilters, Word16 lsbMode, + Word16 lastnz, Word16 *bfi, Word16 *tns_order, Word16 fac_ns_idx, Word16 gg_idx, + Word16 frame_dms, + Word16 n_pc, Word16 be_bp_left, Word16 be_bp_right, Word16 mode, Word16 *spec_inv_idx, + Word16 *b_left, + Word16 *resBits, +#ifdef ENABLE_HR_MODE + Word32 *x, +#else + Word16 *x, +#endif + Word16 *nf_seed, UWord8 *resQdata, Word16 *tns_idx, Word16 *zero_frame, Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +); + +void processAriDecoderScaling_fx( +#ifdef ENABLE_HR_MODE + Word32 *datain, +#else + Word16 *data16, +#endif + Word16 dataLen, Word32 *data32, Word16 *data_e); + +void processApplyGlobalGain_fx(Word32 x[], Word16 *x_e, Word16 xLen, Word16 global_gain_idx, Word16 global_gain_off); + +void processPerBandEnergy_fx(Word32 *d2_fx, Word16 *d2_fx_exp, Word32 *d_fx, Word16 d_fx_exp, + const Word16 *band_offsets, Word16 fs_idx, Word16 n_bands, Word16 linear, Word16 frame_dms, + Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +); + +void processNearNyquistdetector_fx(Word16 *near_nyquist_flag, const Word16 fs_idx, const Word16 near_nyquist_index, + const Word16 bands_number, const Word32 *ener_fx, const Word16 ener_fx_exp +#ifdef CR8_E_TONE_DETECTOR +#ifdef ENABLE_HR_MODE + , Word16 frame_dms , Word16 hrmode); +#else + ); +#endif +#else + ); +#endif +void processDetectCutoffWarped_fx(Word16 *bw_idx, Word32 *d2_fx, Word16 d2_fx_exp, Word16 fs_idx, Word16 frame_dms); + +void process_resamp12k8_fx(Word16 x[], Word16 x_len, Word16 mem_in[], Word16 mem_in_len, Word32 mem_50[], + Word16 mem_out[], Word16 mem_out_len, Word16 y[], Word16 *y_len, Word16 fs_idx, + Word16 frame_dms, Word8 *scratchBuffer + , Word16 bps + ); + +void process_olpa_fx(Word16 *mem_s6k4_exp, Word16 mem_s12k8[], Word16 mem_s6k4[], Word16 *pitch, Word16 *s12k8, + Word16 len, Word16 *normcorr, Word16 *mem_pitch, +#ifdef CR9_F_PITCH_WIN_LEN_FIX + Word16 *pitch_flag, +#endif + Word16 s12k8_exp, Word16 frame_dms, Word8 *scratchBuffer); + +void process_ltpf_coder_fx(Word16 *bits, Word16 ol_pitch, Word16 ltpf_enable, Word16 *old_wsp_exp, Word16 *old_wsp, + Word16 old_wsplen, Word16 *param, Word16 *wsp, Word16 len, Word16 *mem_normcorr, + Word16 *mem_mem_normcorr, Word16 ol_normcorr, Word16 *mem_ltpf_on, Word16 *mem_ltpf_pitch, + Word16 wsp_exp, Word16 frame_dms, Word8 *scratchBuffer +#ifdef CR9_K_REDUCE_NORM_CORR_TH + ,Word16 hrmode +#endif +); + +void process_ltpf_decoder_fx(Word16 *x_e, Word16 L_frame, Word16 old_x_len, Word16 fs_idx, Word16 old_y_len, + Word16 *old_e, Word16 *x, Word16 *old_x, Word16 *y, Word16 *old_y, Word16 ltpf, + Word16 ltpf_active, Word16 pitch_index, Word16 *old_pitch_int, Word16 *old_pitch_fr, + Word16 *old_gain, Word16 *mem_ltpf_active, Word16 scale_fac_idx, Word16 bfi, + Word16 concealMethod, + Word16 damping, Word16 *old_scale_fac_idx, +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + Word32 *rel_pitch_change, Word16 hrmode, Word16 frame_dms, +#endif + Word8 *scratchBuffer); + +void attack_detector_fx(LC3PLUS_Enc *enc, EncSetup *setup, Word16 *input, Word16 input_scaling, void *scratch); + +void processSnsComputeScf_fx(Word32 *d2_fx, Word16 d2_fx_exp, Word16 fs_idx, Word16 n_bands, Word16 *scf, + Word16 scf_smoothing_enabled, Word16 attdec_damping_factor, Word8 *scratchBuffer, Word16 sns_damping + ); + +void processSnsQuantizeScfEncoder_fx(Word16 scf[], /* i: input scf M */ + Word32 *L_prm_idx, /* o: indeces . negative == unused */ +#ifdef ENABLE_HR_MODE + Word32 *scf_q, /* o: quantized scf M */ +#else + Word16 *scf_q, /* o: quantized scf M */ +#endif + Word8 * scratchBuffer); + +Word16 processSnsQuantizeScfDecoder_fx( /* o: BER flag */ + Word32 *L_prm_idx, /* i: indeces */ +#ifdef ENABLE_HR_MODE + Word32 scf_q[], +#else + Word16 scf_q[], +#endif + Word8 *scratchBuffer); /* o: M */ + +void processSnsInterpolateScf_fx( +#ifdef ENABLE_HR_MODE + Word32 *scf_q, Word32 mdct_scf[], +#else + Word16 *scf_q, Word16 mdct_scf[], +#endif + Word16 mdct_scf_exp[], Word16 inv_scf, + Word16 n_bands, Word8 *scratchBuffer); + +void downshift_w32_arr(Word32 *w32_arr, Word16 *w16_arr, Word16 shft_val, Word32 len); +void round_w32tow16_arr(Word32 *w32_arr, Word16 *w16_arr, Word32 len); + +void processPLCmain_fx(Word16 plcMeth, Word16 *concealMethod, Word16 *nbLostFramesInRow, Word16 bfi, Word16 prev_bfi, + Word16 frame_length, Word16 la_zeroes, +#ifdef ENABLE_HR_MODE + const Word32 w[], +#else + const Word16 w[], +#endif + Word16 x_fx[], Word16 ola_mem[], + Word16 *ola_mem_exp, Word16 q_old_d_fx[], Word16 *q_old_fx_exp, Word32 q_d_fx[], + Word16 *q_fx_exp, Word16 yLen, Word16 fs_idx, const Word16 *band_offsets, Word16 bands_number, Word16 *damping, + Word16 old_pitch_int, Word16 old_pitch_fr, Word16 *ns_cum_alpha, Word16 *ns_seed, + AplcSetup *plcAd, Word16 frame_dms, Word8 *scratchBuffer, Word16 *pc_nbLostFramesInRow +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + , Word32 rel_pitch_change +#endif +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR + , Word16 *alpha_type_2_table +#endif + ); + +void processPLCupdate_fx(AplcSetup *plcAd, Word16 x_fx[], Word16 q_fx_exp, Word16 concealMethod, Word16 frame_length, + Word16 fs_idx, Word16 *nbLostFramesInRow, Word16 *prev_prev_bfi, Word16 *prev_bfi, Word16 bfi, + Word16 scf_q[], Word16 *ns_cum_alpha +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif + ); + +void processPLCupdateSpec_fx(Word16 q_old_d_fx[], Word16 *q_old_fx_exp, Word32 q_d_fx[], Word16 *q_fx_exp, Word16 yLen); + + +void processPLCspec2shape_fx(Word16 prev_bfi, Word16 bfi, Word16 q_old_d_fx[], Word16 yLen, + Word16 *PhECU_oold_grp_shape_fx, Word16 *PhECU_old_grp_shape_fx); + +Word32 winEnCalc(const Word16 *, const Word16, const Word16 *, const Word16, const Word16, Word16 *); + +void processPLCUpdateAfterIMDCT_fx(Word16 x_fx[], Word16 q_fx_exp, Word16 concealMethod, Word16 xLen, Word16 fs_idx, + Word16 *nbLostFramesInRow, Word16 *prev_prev_bfi, Word16 *prev_bfi, Word16 bfi, + Word16 scf_q[], Word16 *ns_cum_alpha, AplcSetup *plcAd); + +void processPLCclassify_fx(Word16 plcMeth, Word16 *concealMethod, Word16 *nbLostFramesInRow, Word16 bfi, + Word16 ltpf_mem_pitch_int, Word16 frame_length, Word16 frame_dms, Word16 fs_idx, Word16 yLen, + Word16 q_old_d_fx[], const Word16 *band_offsets, Word16 bands_number, AplcSetup *plcAd, Word8 *scratchBuffer +# ifdef ENABLE_HR_MODE + , Word16 hrmode +# endif + ); + +void processPLCapply_fx( +#ifdef CR8_A_PLC_FADEOUT_TUNING + Word16 *concealMethod, +#else + Word16 concealMethod, +#endif + Word16 nbLostFramesInRow, Word16 bfi, Word16 prev_bfi, + Word16 frame_length, Word16 la_zeroes, +#ifdef ENABLE_HR_MODE + const Word32 w[], +#else + const Word16 w[], +#endif + Word16 x_fx[], Word16 ola_mem[], + Word16 *ola_mem_exp, Word16 q_old_d_fx[], Word16 *q_old_fx_exp, Word32 q_d_fx[], + Word16 *q_fx_exp, Word16 yLen, Word16 fs_idx, Word16 *damping, Word16 old_pitch_int, + Word16 old_pitch_fr, Word16 *ns_cum_alpha, Word16 *ns_seed, Word16 frame_dms, AplcSetup *plcAd, + Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + , Word32 rel_pitch_change + +#endif +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR + , Word16 *alpha_type_2_table +#endif + ); + +void processPLCNoiseSubstitution_fx(Word32 spec[], Word16 spec_prev[], Word16 L_spec); +void processPLCDampingScrambling_main_fx(Word16 bfi, Word16 concealMethod, Word16 ns_nbLostFramesInRow, Word16 *cum_fflcAtten, + Word16 pc_nbLostFramesInRow, Word16 *ns_seed, Word16 *pc_seed, Word16 pitch_present_bfi1, + Word16 pitch_present_bfi2, Word32 spec[], Word16 *q_fx_exp, Word16 *q_old_d_fx, + Word16 *q_old_fx_exp, Word16 L_spec, Word16 stabFac, Word16 frame_dms, + Word16 *cum_fading_slow, Word16 *cum_fading_fast, Word16 spec_inv_idx +#ifdef CR8_A_PLC_FADEOUT_TUNING + , UWord8 plc_fadeout_type +#endif + ); + +void processPLCDampingScrambling_fx(Word32 spec[], Word16 L_spec, Word16 nbLostFramesInRow, Word16 stabFac, Word16 processDampScramb, + Word16 *cum_fflcAtten, Word16 pitch_present, Word16 frame_dms, Word16 *cum_fading_slow, + Word16 *cum_fading_fast, Word16 *seed, Word16 spec_inv_idx +#ifdef CR8_A_PLC_FADEOUT_TUNING + , UWord8 plc_fadeout_type +#endif + ); + +void processLagwin_fx(Word32 r[], const Word32 w[], Word16 m); + +void processInverseODFT_fx(Word32 *r_fx, Word16 *r_fx_exp, Word32 *d2_fx, Word16 d2_fx_exp, Word16 n_bands, + Word16 lpc_order, Word8 *scratchBuffer); + +void processPreEmphasis_fx(Word32 *d2_fx, Word16 *d2_fx_exp, Word16 fs_idx, Word16 n_bands, Word16 frame_dms, + Word8 *scratchBuffer); + +void processPLCLpcScaling_fx(Word32 tdc_A_32[], Word16 tdc_A_16[], Word16 m); + +void processPLCcomputeStabFac_main(Word16 scf_q[], Word16 old_scf_q[], Word16 old_old_scf_q[], Word16 bfi, + Word16 prev_bfi, Word16 prev_prev_bfi, Word16 *stab_fac); + +void processPLCUpdateXFP_w_E_hist_fx(Word16 prev_bfi, Word16 bfi, + Word16 *xfp_fx, Word16 xfp_exp_fx,Word16 margin_xfp, + Word16 fs_idx, + Word32 *L_oold_xfp_w_E_fx, Word16 *oold_xfp_w_E_exp_fx, + Word32 *L_old_xfp_w_E_fx, Word16 *old_xfp_w_E_exp_fx, + Word16 *oold_Ltot_exp_fx, Word16 *old_Ltot_exp_fx); + +void processTimeDomainConcealment_Apply_fx(const Word16 pitch_int, const Word16 preemphFac_fx, const Word16 *A_fx, + const Word16 lpc_order, const Word16 *pcmbufHist_fx, + const Word16 frame_length, const Word16 frame_dms, const Word16 fs_idx, + const Word16 nbLostFramesInRow, const Word16 overlap, + const Word16 stabFac_fx, Word16 *fract, Word16 *seed_fx, + Word32 *gain_c_fx, Word16 *synth_fx, Word16 *Q_syn, + Word16 *alpha, Word16 max_len_pcm_plc, + Word16 harmonicBuf_fx[MAX_PITCH], Word16 synthHist_fx[M], Word16 *const harmonicBuf_Q, + Word8 *scratchBuffer +#ifdef CR9_I_INC_TDC_FADEOUT_LEN + ,UWord8 plc_fadeout_type +#endif +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR + ,Word16 *alpha_type_2_table +#endif +); + +void processTdac_fx(Word16 *ola_mem, Word16 *ola_mem_exp, const Word16 *synth, const Word16 synth_exp, +#ifdef ENABLE_HR_MODE + const Word32 *win, +#else + const Word16 *win, +#endif + const Word16 la_zeroes, const Word16 frame_len, Word8 *scratchBuffer); + +void plc_phEcu_F0_refine_first_fx(Word16 *plocs, const Word16 n_plocs_in, Word32 *L_f0est, + const Word16 stPhECU_f0hzLtpBinQ7, const Word16 stPhECU_f0gainLtpQ15, + const Word16 nSubm); +void plc_phEcu_LF_peak_analysis_fx(Word16 *plocs, Word16 *n_plocs, Word32 *L_f0estQ16, const Word16 *mag, + const Word16 stPhECU_f0hzLtpBinQ7, const Word16 stPhECU_f0gainLtpQ15, + const Word16 nSubm, Word16 maxPlocs, Word8 *scratchBuffer); + +Word16 plc_phEcuSetF0Hz_fx(Word16 fs_idx, Word16 old_pitch_int, Word16 old_pitch_fr); + +void create_sin2_taper_fx(Word16 *, Word16, Word16); + +void plc_phEcu_initWord16(Word16 * vec, /*i/o : vector pointer */ + const Word16 value, /*i : short initialization value */ + const Word16 len); /*i : number of elements */ + +Word16 plc_phEcu_ratio_fx(const Word32, const Word32, Word16 *); + +void plc_phEcu_minval_fx(const Word16 *inp, /* i : vector */ + const Word16 len, /* i : length */ + Word16 * minvalPtr); /* o : min value Ptr */ + +void plc_phEcu_maxval_fx(const Word16 *inp, /* i : vector */ + const Word16 len, /* i : length */ + Word16 * maxvalPtr); /* o : *maxvalPtr */ + +void Scale_sig_sat(Word16 x[], /* i/o: signal to scale, possibly saturated Qx */ + const Word16 lg, /* i : size of x[] Q0 */ + const Word16 exp0); /* i : exponent: x = round(x << exp) Qx ?exp */ + +void Processing_ITDA_WIN_OLA(Word32 L_x_tda[], Word16 *y_e, +#ifdef ENABLE_HR_MODE + const Word32 w[], +#else + const Word16 w[], +#endif + Word16 mem[], Word16 *mem_e, Word16 x[], + Word16 wLen, Word16 N, Word16 memLen); + +void trans_burst_ana_fx(const Word16 *xfp, /* i : Input signal Qspec */ + Word16 * mag_chg, /* o : Magnitude modification Q15 */ + Word16 *ph_dith, /* o : Phase dither, 2*PI is not included (Q15, i.e., between 0.0 and 1.0) */ + Word16 *mag_chg_1st, /* i/o: per band magnitude modifier for transients Q15 */ + const Word16 output_frame, /* i : Frame length */ + const Word16 time_offs, /* i : Time offset (integral multiple of output_frame) */ + const Word16 est_stab_content, /* i : 0.0=dynamic ... 1.0=stable (==st->env_stab ) */ + Word16 * alpha, /* o : Magnitude modification factors for fade to average */ + Word16 * beta, /* : Magnitude modification factors for fade to average */ + Word16 * beta_mute, /* i/o : Factor for long-term mute */ + Word16 * Xavg, /* o : Frequency group average gain to fade to */ + Word16 Q_spec, Word32 L_oold_xfp_w_E_fx, Word16 oold_xfp_w_E_exp_fx, Word16 oold_Ltot_exp_fx, + Word16 *oold_grp_shape_fx, Word32 L_old_xfp_w_E_fx, Word16 old_xfp_w_E_exp_fx, + Word16 old_Ltot_exp_fx, Word16 *old_grp_shape_fx, +#ifdef CR8_A_PLC_FADEOUT_TUNING + Word16 fadeout, + Word32 *L_Xavg, /* full scale average band amplitudes */ +#endif + Word8 *scratchBuffer); + +void spec_ana_fx(Word16 *xfp, Word16 *, Word32 *, Word16 *, Word16 *, const Word16, const Word16, + const Word16 *, const Word16, const Word16, Word16 maxLprot, Word16 maxPlocs, Word8 *scratchBuffer); + +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 *, const Word16 *, const Word16 +#ifdef CR8_A_PLC_FADEOUT_TUNING + ,const Word16, + Word16*, + const Word32 * +#endif +); + +void rec_frame_fx(Word16 * X, /* i : FFT spectrum */ + Word32 * L_ecu_rec, /* o : Reconstructed frame in tda domain */ + const Word16 output_frame, /* i : Frame length */ + const Word16 Q, const Word16 *const win2ms_init, /* i: 2 ms initial part of pre_tda window */ + const Word16 *const win16ms_center, /* i: 16 ms combined part of pre_tda IWHR+MDCT-ana */ + + Word16 maxLprot, const Word16 *prevsynth, const Word16 Q_prevsynth, + Word8 * scratchBuffer); + +Word16 rand_phase_fx(const Word16 seed, Word16 *sin_F, Word16 *cos_F); + +void hq_phase_ecu_fx(const Word16 *prevsynth, /* i : buffer of previously synthesized signal */ + Word32 *L_ecu_rec, /* o : reconstructed frame in tda domain , also tmp w32_fft buffer */ + Word16 *time_offs, /* i/o: Sample offset for consecutive frame losses*/ + Word16 *X_sav, /* i/o: Stored spectrum of prototype frame */ + Word16 *Q_spec, /* o: Q value of stored spectrum */ + Word16 *num_p, /* i/o: Number of identified peaks */ + Word16 *plocs, /* i/o: Peak locations */ + Word32 *L_plocsi, /* i/o: Interpolated peak locations Q16 */ + const Word16 env_stab, /* i : Envelope stability parameter */ + const Word16 f0hzLtpBinQ7, /* i: LTP bin frequency in normalized Hz Q7 */ + const Word16 norm_corrQ15_fx, /*i : correlation for lag at f0hzLtpBinQ7 */ + const Word16 prev_bfi, /* i : indicating burst frame error */ + Word16 old_is_transient[2], /* i/o : flags indicating noise generation */ + Word16 * mag_chg_1st, /* i/o: per band magnitude modifier for transients */ + Word16 * mag_chg_gr, /* o: per band magnitude modifier incl burst attenuation */ + Word16 * Xavg, /* i/o: Frequency group average gain to fade to */ + Word16 * beta_mute, /* o : Factor for long-term mute */ + const Word16 bwidth_fx, /* i : Encoded bandwidth */ + const Word16 output_frame, /* i : frame length */ + Word16 * seed_out_fxPtr, /* o: seed synch analysis */ + Word16 * X_out, /* o: utput evolved spectrum */ + const Word16 t_adv, /* i : time adjustment including time_offs */ + const Word16 *const win2ms_init, /* i: 2 ms initial part of pre_tda window */ + const Word16 *const win16ms_center, /* i: 16 ms combined part of pre_tda IWHR+MDCT-ana */ + const Word16 * sp_ana_win, /* i : whr hamming window */ + Word16 q_fx_old_exp, Word16 maxLprot, Word16 maxPlocs, + Word32 L_oold_xfp_w_E_fx, Word16 oold_xfp_w_E_exp_fx, /* exp of time signal */ + Word16 oold_Ltot_exp_fx, /*true exp of energy */ + Word16 *oold_grp_shape_fx, Word32 L_old_xfp_w_E_fx, + Word16 old_xfp_w_E_exp_fx, /* exp of time signal */ + Word16 old_Ltot_exp_fx, /*true exp of energy */ + Word16 *old_grp_shape_fx, + Word16 margin_prev_synth, /* i: margin in prev_synth(16ms for first bfi , 3.75 ms for other bfi + frames ) , from plcAd.PhECU_margin_xfp */ +#ifdef CR8_A_PLC_FADEOUT_TUNING + const Word16 fadeout, /*i: fadeout length indicator */ + Word16 *nonpure_tone_flag_ptr, /* i/o : non-pure single tone indicator state */ +#endif + Word8 *scratchBuffer /* Size = 2 * MAX_LGW + 8 * MAX_LPROT + 12 * MAX_L_FRAME */ +); + +Word16 +plc_xcorr_lc_fx(/* o: quantized output xcorr in Q15 [ 0 ..32767 ] = [0. 1.0[ */ + Word16 * + pcmbuf_fx, /* NB should be an already dynamically upscaled buffer with about 0...1 bits margin */ + Word16 max_len_pcm_plc, /* Q0 size of pcmbuf_fx */ + Word16 pitch_int, /* Q0 in Fs, lag value to evaluate, corresponding to the current f0 fr pcm_buf */ + Word16 fs_idx); + +void plc_phEcu_peak_locator_fx(const Word16 *, const Word16, Word16 *, Word16 *, const Word16, const Word16, + const Word16, Word16, Word8 *); + +Word16 plc_phEcu_find_ind_fx(const Word16 *, const Word16, const Word16); + + +Word16 initQV(Word16 SR_idx, Word32 BR); + +void processEstimateGlobalGain_fx(Word32 x[], Word16 x_e, Word16 lg, Word16 sqTargetBits, +#ifdef ENABLE_HR_MODE + Word32 *gain, +#else + Word16 *gain, +#endif + Word16 *gain_e, + Word16 *quantizedGain, Word16 *quantizedGainMin, Word16 quantizedGainOff, + Word32 *targetBitsOff, Word16 *old_targetBits, Word16 old_specBits, + Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode, Word16 regBits, Word16 frame_dms +#endif +); + +void processAdjustGlobalGain_fx(Word16 *gg_idx, Word16 gg_idx_min, Word16 gg_idx_off, +#ifdef ENABLE_HR_MODE + Word32 *gain, +#else + Word16 *gain, +#endif + Word16 *gain_e, + Word16 target, Word16 nBits, Word16 *gainChange, Word16 fs_idx +#ifdef ENABLE_HR_MODE + , Word16 hrmode, Word16 frame_dms +#endif + ); + +void processScalarQuant_fx(Word32 x[], Word16 x_e, Word16 xq[], Word16 L_frame, Word16 gain, Word16 gain_e); + +#ifdef ENABLE_HR_MODE +void processQuantizeSpec_fx(Word32 x[], Word16 x_e, Word32 gain, Word16 gain_e, Word32 xq[], Word16 nt, Word16 target, + Word16 totalBits, Word16 *nBits, Word16 *nBits2, Word16 fs_idx, Word16 *lastnz, + Word16 *codingdata, Word16 *lsbMode, Word16 mode, Word16 hrmode); +#else +void processQuantizeSpec_fx(Word32 x[], Word16 x_e, Word16 gain, Word16 gain_e, Word16 xq[], Word16 nt, + Word16 target, + Word16 totalBits, Word16 *nBits, Word16 *nBits2, Word16 fs_idx, Word16 *lastnz, + Word16 *codingdata, Word16 *lsbMode, Word16 mode); + +#endif /* ENABLE_HR_MODE */ + +void processResidualCoding_fx(Word16 x_e, Word32 x[], +#ifdef ENABLE_HR_MODE + Word32 xq[], Word32 gain, +#else + Word16 xq[], Word16 gain, +#endif + Word16 gain_e, Word16 L_spec, Word16 targetBits, Word16 nBits, + UWord8 *resBits, Word16 *numResBits +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +); + +void scale_signal24_fx(Word32 x[], /* i: time input signal */ +#ifdef ENABLE_HR_MODE + Word32 x_scaled[], +#else + Word16 x_scaled[], +#endif + Word16 *x_exp, +#ifdef ENABLE_HR_MODE + Word32 mdct_mem[], +#else + Word16 mdct_mem[], +#endif + Word16 mdct_mem_len, + Word16 resample_mem_in[], Word16 resample_mem_in_len, Word32 resample_mem_in50[], + Word16 resample_mem_out[], Word16 resample_mem_out_len, Word32 mdct_mem32[], Word16 N, + Word32 resamp_mem32[], Word16 mem_s12k8[], Word16 *resamp_scale); + +void processReorderBitstream_fx(UWord8 *bytes, Word16 n_pccw, Word16 n_pc, Word16 b_left, Word8 *scratchBuffer); + +/* al_fec.c */ +Word16 fec_get_n_pccw(Word16 slot_bytes, Word16 fec_mode, Word16 ccc_flag); +Word16 fec_get_data_size(Word16 fec_mode, Word16 ccc_flag, Word16 slot_bytes); +Word16 fec_get_n_pc(Word16 fec_mode, Word16 n_pccw, Word16 slot_bytes); + +void fec_encoder(Word16 mode, Word16 epmr, UWord8 *iobuf, Word16 data_bytes, Word16 slot_bytes, Word16 n_pccw, + void *scratch); + +int fec_decoder(UWord8 *iobuf, Word16 slot_bytes, int *data_bytes, Word16 *epmr, Word16 ccc_flag, Word16 *n_pccw, + int *bfi, Word16 *be_bp_left, Word16 *be_bp_right, Word16 *n_pc, Word16 *m_fec, void *scratch); + +void processPCmain_fx(Word16 rframe, Word16 *bfi, Word16 yLen, Word16 frame_dms, Word16 q_old_res_fx[], + Word16 *q_old_res_fx_exp, +#ifdef ENABLE_HR_MODE + Word32 q_res_fx[], +#else + Word16 q_res_fx[], +#endif + Word16 q_old_d_fx[], Word16 spec_inv_idx, + Word16 pitch_present, Word16 stab_fac, Word32 q_d_fx[], Word16 *q_fx_exp, + Word16 gg_idx, Word16 gg_idx_off, Word16 *prev_gg, Word16 *prev_gg_e, Word16 *BW_cutoff_idx_nf, + Word16 *prev_BW_cutoff_idx_nf, Word16 fac_ns_idx, Word16 *prev_fac_ns_fx, Word16 *pc_nbLostFramesInRow); +void processPCclassify_fx(Word16 pitch_present, Word16 frame_dms, Word16 q_old_d_fx[], Word16 q_old_res_fx[], + Word16 yLen, Word16 spec_inv_idx, Word16 stab_fac, Word16 *bfi); +void processPCapply_fx(Word16 yLen, Word16 q_old_res_fx[], Word16 *q_old_res_fx_exp, +#ifdef ENABLE_HR_MODE + Word32 q_res_fx[], +#else + Word16 q_res_fx[], +#endif + Word16 q_old_d_fx[], Word16 spec_inv_idx, Word16 *fac, Word16 *fac_e, Word32 q_d_fx[], + Word16 *q_fx_exp, Word16 gg_idx, Word16 gg_idx_off, Word16 prev_gg, Word16 prev_gg_e, + Word16 *pc_nbLostFramesInRow); +void processPCupdate_fx(Word16 bfi, Word16 yLen, Word16 q_old_res_fx[], Word16 *q_old_res_fx_exp, +#ifdef ENABLE_HR_MODE + Word32 q_res_fx[], +#else + Word16 q_res_fx[], +#endif + Word16 spec_inv_idx, Word16 gg_idx, Word16 gg_idx_off, Word16 *prev_gg, Word16 *prev_gg_e, + Word16 rframe, Word16 *BW_cutoff_idx_nf, Word16 *prev_BW_cutoff_idx_nf, Word16 fac_ns_idx, + Word16 *prev_fac_ns_fx, Word16 fac, Word16 fac_e); +void processPcApplyDamping_fx(Word32 x[], Word16 xLen, Word16 fac, Word16 spec_inv_idx); + +void process_cutoff_bandwidth(Word32 d_fx[], Word16 len, Word16 bw_bin); + +void idct16_fx(const Word16 *in, Word16 *out); + +void dct32_fx(const Word32 *in, Word32 *out); +void idct32_fx(const Word32 *in, Word32 *out); +void idct32_32_fx(const Word32 *in, Word32 *out); + +/* Functions used in arithmetic coder */ + +void write_bit_backward(UWord8 *ptr, Word16 *bp, Word16 *mask, Word16 bit); +void write_indice_backward(UWord8 *ptr, Word16 *bp, Word16 *mask, Word16 indice, Word16 numbits); + +void processEncoderEntropy(UWord8 *bytes, Word16 *bp_side, Word16 *mask_side, Word16 nbbits, Word16 targetBytes, + Word16 L_spec, Word16 BW_cutoff_bits, Word16 tns_numfilters, Word16 lsbMode, Word16 lastnz, + Word16 *tns_order, Word16 fac_ns_idx, Word16 gg_idx, Word16 BW_cutoff_idx, Word16 *ltpf_idx, + Word32 *L_scf_idx, Word16 bfi_ext, Word16 fs_idx); + +void processDecoderEntropy_fx(UWord8 *bytes, Word16 *bp_side, Word16 *mask_side, Word16 nbbits, Word16 L_spec, + Word16 fs_idx, Word16 BW_cutoff_bits, Word16 *tns_numfilters, Word16 *lsbMode, + Word16 *lastnz, Word16 *bfi, Word16 *tns_order, Word16 *fac_ns_idx, Word16 *gg_idx, + Word16 *BW_cutoff_idx, Word16 *ltpf_idx, Word32 *L_scf_idx, Word16 frame_dms); + +#ifdef ENABLE_PADDING +int paddingDec_fx(UWord8 *bytes, Word16 nbbits, Word16 L_spec, Word16 BW_cutoff_bits, Word16 ep_enabled, + Word16 *total_padding, Word16 *np_zero); +#endif + +Word16 read_bit(UWord8 *ptr, Word16 *bp, Word16 *mask); + +/* setup_enc_lc3.c */ +int alloc_encoder(LC3PLUS_Enc *encoder, int samplerate, int channels); +void set_enc_frame_params(LC3PLUS_Enc *encoder); +LC3PLUS_Error update_enc_bitrate(LC3PLUS_Enc *encoder, int bitrate); +LC3PLUS_Error FillEncSetup(LC3PLUS_Enc *encoder, int samplerate, int channels +#ifdef ENABLE_HR_MODE + , int hrmode +#endif + , int32_t lfe_channel_array[] + ); + +/* setup_dec_lc3.c */ +int alloc_decoder(LC3PLUS_Dec *decoder, int samplerate, int channels); +void set_dec_frame_params(LC3PLUS_Dec *decoder); +LC3PLUS_Error update_dec_bitrate(LC3PLUS_Dec *decoder, int ch, Word16 nBytes); +LC3PLUS_Error FillDecSetup(LC3PLUS_Dec *decoder, int samplerate, int channels, LC3PLUS_PlcMode plc_mode +#ifdef ENABLE_HR_MODE + , int hrmode +#endif + ); + +int Enc_LC3PLUS(LC3PLUS_Enc *encoder, void **input, int bits_per_sample, UWord8 *output, void *scratch, Word16 bfi_ext); +LC3PLUS_Error Dec_LC3PLUS(LC3PLUS_Dec *decoder, UWord8 *input, int input_bytes, void **output, int bits_per_sample, void *scratch, + int bfi_ext); + +void *balloc(void *base, size_t *base_size, size_t size); + +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR +Word16 type_2_fadeout_fx(Word16 nbLostFramesInRow, Word16 frame_dms); +#endif + + +#endif diff --git a/lib_lc3plus/imdct_fx.c b/lib_lc3plus/imdct_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..50ad2b257c6f2b9a9b3b4272c3c4e1929490b27b --- /dev/null +++ b/lib_lc3plus/imdct_fx.c @@ -0,0 +1,387 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +void ProcessingIMDCT( + Word32 y[], /* i: spectra data */ + Word16 * y_e, /* i: spectral data exponent */ +#ifdef ENABLE_HR_MODE + const Word32 w[], /* i: window coefficients including normalization of sqrt(2/N) and scaled by 2^4 */ + Word32 mem[], /* i/o: overlap add memory */ +#else + const Word16 w[], /* i: window coefficients including normalization of sqrt(2/N) and scaled by 2^4 */ + Word16 mem[], /* i/o: overlap add memory */ +#endif + Word16 * mem_e, /* i/o: overlap add exponent */ +#ifdef ENABLE_HR_MODE + Word32 x[], /* o: time signal out */ +#else + Word16 x[], /* o: time signal out */ +#endif + Word16 wLen, /* i: window length */ + Word16 N, /* i: block size */ + Word16 memLen, /* i: overlap add buffer size */ + Word16 frame_dms, /* i: frame size in ms */ + Word16 concealMethod, /* i: concealment method */ + Word16 bfi, /* i: bad frame indicator */ + Word16 prev_bfi, /* i: previous bad frame indicator */ + Word16 nbLostFramesInRow, /* i: number of consecutive lost frames */ + AplcSetup *plcAd, /* i: advanced plc struct */ + Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +) +{ + Counter i; + Word16 o, z, m, s; + Word16 y_s, mem_s, max_bw; + Word32 L_tmp; + Word32 *workBuffer; + +#ifdef DYNMEM_COUNT + struct _dynmem + { + Word16 o, z, m, s; + Word16 y_s, mem_s, max_bw; + Word32 L_tmp; + Counter i; + Word32 *workBuffer; + Word16 mem_i_win; + Word16 w_taper_win; + }; + Dyn_Mem_In("ProcessingIMDCT", sizeof(struct _dynmem)); +#endif + + + test(); test(); test(); + IF (sub(bfi, 1) != 0 || sub(concealMethod, LC3_CON_TEC_NS_STD) == 0 || sub(concealMethod, LC3_CON_TEC_NS_ADV) == 0 || sub(concealMethod, LC3_CON_TEC_FREQ_MUTING) == 0) + { + workBuffer = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 4 * MAX_LEN bytes */ + + /* Init (constant per sample rate) */ + z = 2 * N - wLen; /* number of leading zeros in window */ + m = N >> 1; /* half block size */ + o = m - z; + max_bw = 0; + +#ifdef ENABLE_HR_MODE + if (hrmode) + { + max_bw = N; + } + else +#endif + { + SWITCH (frame_dms) + { + case 25: + max_bw = MAX_BW >> 2; move16(); + BREAK; + case 50: + max_bw = MAX_BW >> 1; move16(); + BREAK; +#ifdef CR8_G_ADD_75MS + case 75: + max_bw = (MAX_BW >> 2) * 3; move16(); + BREAK; +#endif + case 100: + max_bw = MAX_BW; move16(); + BREAK; + } + } + + if (N > max_bw) + basop_memset(&y[max_bw], 0, (N - max_bw) * sizeof(*y)); + + /* Start Processing */ + y_s = getScaleFactor32_0(y, N); + IF (sub(y_s, 32) < 0) + { + FOR (i = 0; i < N; i++) + { + y[i] = L_shl(y[i], y_s); + } + *y_e = sub(*y_e, y_s); +#ifdef ENABLE_HR_MODE + dct_IV(y, y_e, N, +# ifdef CR8_F_ADAPT_MDCT_DCT_PRECISION + hrmode, +# endif + workBuffer); +#else + dct_IV(y, y_e, N, workBuffer); +#endif + y_s = getScaleFactor32_lc3plus(y, N); + y_s = sub(y_s, 1); + *y_e = sub(*y_e, y_s + 3); /* mdct window is scaled by pow(2,x) */ + /* N<=20 only happens for 2.5ms frames in NB */ + if (sub(N, 20) <= 0) + { + *y_e = add(*y_e, 2); + } + else if (sub(N, 120) <= 0) + { + *y_e = add(*y_e, 1); + } + } + ELSE + { + *y_e = 0; move16(); + } + +#ifdef ENABLE_HR_MODE + mem_s = getScaleFactor32_0(mem, memLen); +#else + mem_s = getScaleFactor16_0(mem, memLen); +#endif + +#ifdef ENABLE_HR_MODE + IF (sub(mem_s, 32) < 0) +#else + IF (sub(mem_s, 16) < 0) +#endif + { + mem_s = sub(mem_s, 1); + *mem_e = sub(*mem_e, mem_s); + } + ELSE + { + *mem_e = *y_e; move16(); + } + + s = sub(*mem_e, *y_e); + + IF (s > 0) + { + y_s = sub(y_s, s); + *y_e = add(*y_e, s); + } + ELSE + { + mem_s = add(mem_s, s); + *mem_e = sub(*mem_e, s); + } + + mem_s = s_max(mem_s, -31); + y_s = s_max(y_s, -31); + + if (sub(y_s, 32) >= 0) + { + y_s = 0; move16(); + } +#ifdef ENABLE_HR_MODE + if (sub(mem_s, 32) >= 0) + { + mem_s = 0; move16(); + } +#else + if (sub(mem_s, 16) >= 0) + { + mem_s = 0; move16(); + } +#endif + + UNUSED(prev_bfi); + UNUSED(nbLostFramesInRow); + UNUSED(plcAd); + + { /* regular operation */ + FOR (i = 0; i < o; i++) + { +#ifdef ENABLE_HR_MODE + L_tmp = L_sub(L_shl(mem[i], mem_s), Mpy_32_32_lc3plus(L_shl(y[m + i + z], y_s), w[4 * m - 1 - i - z])); + x[i] = L_tmp; + move32(); +#else + L_tmp = L_sub(L_shl(L_deposit_h(mem[i]), mem_s), Mpy_32_16_lc3plus(L_shl(y[m + i + z], y_s), w[4 * m - 1 - i - z])); + x[i] = round_fx(L_tmp); + move16(); +#endif + } + FOR (i = 0; i < m; i++) + { +#ifdef ENABLE_HR_MODE + L_tmp = L_add(L_shl(mem[i + o], mem_s), Mpy_32_32_lc3plus(L_shl(y[2 * m - 1 - i], y_s), w[3 * m - 1 - i])); + x[i + o] = L_tmp; + move32(); +#else + L_tmp = L_add(L_shl(L_deposit_h(mem[i + o]), mem_s), Mpy_32_16_lc3plus(L_shl(y[2 * m - 1 - i], y_s), w[3 * m - 1 - i])); + x[i + o] = round_fx(L_tmp); + move16(); +#endif + } + } + + FOR (i = 0; i < m; i++) + { +#ifdef ENABLE_HR_MODE + L_tmp = L_negate(Mpy_32_32_lc3plus(L_shl(y[i], y_s), w[m - 1 - i])); + x[3 * m - z + i] = L_tmp; + move32(); +#else + L_tmp = L_negate(Mpy_32_16_lc3plus(L_shl(y[i], y_s), w[m - 1 - i])); + x[3 * m - z + i] = round_fx(L_tmp); + move16(); +#endif + } + + FOR (i = 0; i < m; i++) + { +#ifdef ENABLE_HR_MODE + L_tmp = L_negate(Mpy_32_32_lc3plus(L_shl(y[i], y_s), w[m + i])); + x[3 * m - z - 1 - i] = L_tmp; + move32(); +#else + L_tmp = L_negate(Mpy_32_16_lc3plus(L_shl(y[i], y_s), w[m + i])); + x[3 * m - z - 1 - i] = round_fx(L_tmp); + move16(); +#endif + } + +#ifdef ENABLE_HR_MODE + basop_memmove(mem, &x[N], memLen * sizeof(Word32)); +#else + basop_memmove(mem, &x[N], memLen * sizeof(Word16)); +#endif + + *mem_e = *y_e; move16(); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} +/* End Processing */ + +void Processing_ITDA_WIN_OLA( + Word32 L_x_tda[], /* i: X_TDA buffer data = "y" DCT-IV output */ + Word16 * y_e, /* i/o: x_tda input exponent "y_e" , x output exponent */ +#ifdef ENABLE_HR_MODE + const Word32 w[], /* i: window coefficients including normalization of sqrt(2/N) and scaled by 2^4 */ +#else + const Word16 w[], /* i: window coefficients including normalization of sqrt(2/N) and scaled by 2^4 */ +#endif + Word16 mem[], /* i/o: overlap add memory */ + Word16 * mem_e, /* i/o: overlap add exponent */ + Word16 x[], /* o: time signal out */ + Word16 wLen, /* i: window length */ + Word16 N, /* i: block size */ + Word16 memLen /* i: overlap add buffer size */ + ) +{ + /* Declarations */ + Word16 i, o, z, m, s; + Word16 y_s, mem_s; + Word32 L_tmp; + Word32 *L_y; + Word16 fs_idx, tmp_w, w_factor; + Word16 factorITDA[5]= { 25905 , 18318 , 22435 , 25905 , 31727}; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("Processing_ITDA_WIN_OLA", sizeof(struct { + Word16 i, o, z, m, s; + Word16 y_s, mem_s; + Word32 L_tmp; + Word32 *L_y; + })); +#endif + + + /* Init (constants per sample rate) */ + z = 2 * N - wLen; /* number of leading zeros in window */ + m = N >> 1; /* half block size */ + o = m - z; + + + L_y = L_x_tda; /* use same variables naming as in IMDCT for DCT-IV output signal y */ + + y_s = getScaleFactor32_lc3plus(L_y, N); + + y_s = sub(y_s, 1); /* add 1 bit margin , y_s is now initial tda upscaling factor */ + + + *y_e = sub(add(*y_e,1),y_s); /* handle W scale down by 2^(3) , as mdct synthesis window was upscaled by pow(2,x) x=2 for NB otherwise 3 */ + + + + mem_s = getScaleFactor16_0(mem, memLen); + + IF (sub(mem_s, 16) < 0) + { + mem_s = sub(mem_s, 1); /* one bit margin */ + *mem_e = sub(*mem_e, mem_s); /*adjusted mem exponent due to new scale */ + } + ELSE + { + *mem_e = 0; move16(); + } + + s = sub(*mem_e, *y_e); /* */ + + IF (s > 0) + { + y_s = sub(y_s, s); /* new , reduced upshift of TDA in window application loop */ + *y_e = add(*y_e, s); /* resulting new exp y_e for output signal */ + } + ELSE + { + mem_s = add(mem_s, s); /* s negative or zero, new , decreased upshift of OLAmem in loop */ + *mem_e = sub(*mem_e, s); /* resulting new exp mem_e for OLA_mem output signal */ + } + + fs_idx = mult(N,(Word16)(32768.0/99.0)); /* truncation needed , i.e no rounding can be applied here */ + w_factor = factorITDA[fs_idx]; move16(); + y_s = s_max(s_min(y_s, 31), -31); + + FOR (i = 0; i < o; i++) + { + tmp_w = mult_r(extractW16(w[4 * m - 1 - i - z]), w_factor); + L_tmp = L_sub(L_shl_sat(L_deposit_h(mem[i]), mem_s), Mpy_32_16_lc3plus(L_shl(L_y[m + i + z], y_s), tmp_w)); + x[i] = round_fx_sat(L_tmp); + move16(); + } + + FOR (i = 0; i < m; i++) + { + tmp_w = mult_r(extractW16(w[3 * m - 1 - i]), w_factor); + L_tmp = L_add(L_shl_sat(L_deposit_h(mem[i + o]), mem_s), Mpy_32_16_lc3plus(L_shl(L_y[2 * m - 1 - i], y_s), tmp_w)); + x[i + o] = round_fx_sat(L_tmp); + move16(); + } + + FOR (i = 0; i < m; i++) + { + tmp_w = mult_r(extractW16(w[m - 1 - i]), w_factor); + L_tmp = L_negate(Mpy_32_16_lc3plus(L_shl(L_y[i], y_s), tmp_w)); + x[3 * m - z + i] = round_fx(L_tmp); move16(); + } + + FOR (i = 0; i < m; i++) + { + tmp_w = mult_r(extractW16(w[m + i]), w_factor); + L_tmp = L_negate(Mpy_32_16_lc3plus(L_shl(L_y[i], y_s), tmp_w )); + x[3 * m - z - 1 - i] = round_fx(L_tmp); move16(); + } + + FOR (i = 0; i < memLen; i++) + { + mem[i] = x[N + i]; move16(); + } + *mem_e = *y_e; move16(); /* set OLA mem exp to x_Fx exponent*/ + + + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + diff --git a/lib_lc3plus/lc3.c b/lib_lc3plus/lc3.c new file mode 100644 index 0000000000000000000000000000000000000000..88ccc186e52eb2268cce564c2366a7ee85ef6bad --- /dev/null +++ b/lib_lc3plus/lc3.c @@ -0,0 +1,434 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" +#include "lc3.h" +#include "setup_dec_lc3.h" +#include "setup_enc_lc3.h" + +#define RETURN_IF(cond, error) \ + if (cond) \ + return (error) + +#ifndef FIX_IVAS_LC3PLUS_WARNINGS +#ifdef SUBSET_NB +#pragma message("- SUBSET_NB") +#endif +#ifdef SUBSET_WB +#pragma message("- SUBSET_WB") +#endif +#ifdef SUBSET_SSWB +#pragma message("- SUBSET_SSWB") +#endif +#ifdef SUBSET_SWB +#pragma message("- SUBSET_SWB") +#endif +#ifdef SUBSET_FB +#pragma message("- SUBSET_FB") +#endif +#ifdef SUBSET_UB +#pragma message("- SUBSET_UB") +#endif +#endif + +/* ensure api header constants are up to date */ +STATIC_ASSERT(LC3PLUS_MAX_SAMPLES >= MAX_LEN); +STATIC_ASSERT(LC3PLUS_MAX_CHANNELS >= MAX_CHANNELS); +STATIC_ASSERT(LC3PLUS_MAX_BYTES >= BYTESBUFSIZE); +STATIC_ASSERT(LC3PLUS_ENC_MAX_SIZE >= ENC_MAX_SIZE); +STATIC_ASSERT(LC3PLUS_DEC_MAX_SIZE >= DEC_MAX_SIZE); +STATIC_ASSERT(LC3PLUS_ENC_MAX_SCRATCH_SIZE >= SCRATCH_BUF_LEN_ENC_TOT); +STATIC_ASSERT(LC3PLUS_DEC_MAX_SCRATCH_SIZE >= SCRATCH_BUF_LEN_DEC_TOT); +STATIC_ASSERT(PLC_FADEOUT_IN_MS >= 20); + + +/* misc functions ************************************************************/ + +int lc3plus_version(void) +{ + return LC3PLUS_VERSION; +} + +int lc3plus_channels_supported(int channels) +{ + return channels >= 1 && channels <= MAX_CHANNELS; +} + +int lc3plus_samplerate_supported(int samplerate) +{ + switch (samplerate) + { +#ifdef SUBSET_NB + case 8000: return 1; +#endif +#ifdef SUBSET_WB + case 16000: return 1; +#endif +#ifdef SUBSET_SSWB + case 24000: return 1; +#endif +#ifdef SUBSET_SWB + case 32000: return 1; +#endif +#ifdef SUBSET_FB + case 44100: return 1; + case 48000: return 1; +#endif +#ifdef ENABLE_HR_MODE + case 96000: return 1; +#endif + default: return 0; + } + assert("should not be reached, added to avoid issues with WMC tool instrumentation"); + return 0; /* should not be reached, added to avoid issues with WMC tool instrumentation */ +} + +static int lc3plus_plc_mode_supported(LC3PLUS_PlcMode plc_mode) +{ + switch ((int)plc_mode) + { + case LC3PLUS_PLC_ADVANCED: /* fallthru */ + return 1; + default: return 0; + } + assert("should not be reached, added to avoid issues with WMC tool instrumentation"); + return 0; /* should not be reached, added to avoid issues with WMC tool instrumentation */ +} + +static int lc3plus_frame_size_supported(int frame_dms) +{ + switch (frame_dms) + { + case 25: /* fallthru */ + case 50: /* fallthru */ +#ifdef CR8_G_ADD_75MS + case 75: /* fallthru */ +#endif + case 100: + return 1; + default: return 0; + } + assert("should not be reached, added to avoid issues with WMC tool instrumentation"); + return 0; /* should not be reached, added to avoid issues with WMC tool instrumentation */ +} + +static int null_in_list(void **list, int n) +{ + while (--n >= 0) + RETURN_IF(list[n] == NULL, 1); + return 0; +} + +/* return pointer to aligned base + base_size, *base_size += size + 4 bytes align */ +void *balloc(void *base, size_t *base_size, size_t size) +{ + uintptr_t ptr = ((uintptr_t)base + *base_size + 3) & ~3; + assert((uintptr_t)base % 4 == 0); /* base must be 4-byte aligned */ + *base_size = (*base_size + size + 3) & ~3; + return (void *)ptr; +} + +int32_t lc3_enc_supported_lfe(void) +{ + return 1; +} + +/* encoder functions *********************************************************/ + +LC3PLUS_Error lc3plus_enc_init(LC3PLUS_Enc *encoder, int samplerate, int channels +#ifdef ENABLE_HR_MODE + , int hrmode +#endif + , int32_t lfe_channel_array[] + ) +{ + int ch = 0; + + RETURN_IF(encoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF((uintptr_t)encoder % 4 != 0, LC3PLUS_ALIGN_ERROR); + RETURN_IF(!lc3plus_samplerate_supported(samplerate), LC3PLUS_SAMPLERATE_ERROR); + RETURN_IF(!lc3plus_channels_supported(channels), LC3PLUS_CHANNELS_ERROR); +#ifdef ENABLE_HR_MODE + RETURN_IF(samplerate==96000 && hrmode == 0, LC3PLUS_HRMODE_ERROR); +#endif + + for (ch = 0; ch < channels; ch++) + { + RETURN_IF(!lc3_enc_supported_lfe() && lfe_channel_array[ch], LC3PLUS_LFE_MODE_NOT_SUPPORTED); + } + +#ifdef ENABLE_HR_MODE + return FillEncSetup(encoder, samplerate, channels, hrmode + , lfe_channel_array + ); /* real bitrate check happens here */ +#else + return FillEncSetup(encoder, samplerate, channels + , lfe_channel_array + ); /* real bitrate check happens here */ +#endif +} + +int lc3plus_enc_get_size(int samplerate, int channels) +{ + RETURN_IF(!lc3plus_samplerate_supported(samplerate), 0); + RETURN_IF(!lc3plus_channels_supported(channels), 0); + return alloc_encoder(NULL, samplerate, channels); +} + +int lc3plus_enc_get_scratch_size(const LC3PLUS_Enc *encoder) +{ + int size = 0; + RETURN_IF(encoder == NULL, 0); + +#ifdef ENABLE_HR_MODE + size = 47 * MAX(encoder->frame_length, 160) + 64; +#else + size = 14 * MAX(encoder->frame_length, 160) + 64; +#endif + assert(size <= LC3PLUS_ENC_MAX_SCRATCH_SIZE); + return size; +} + +int lc3plus_enc_get_input_samples(const LC3PLUS_Enc *encoder) +{ + RETURN_IF(encoder == NULL, 0); + return encoder->frame_length; +} + +int lc3plus_enc_get_num_bytes(const LC3PLUS_Enc *encoder) +{ + RETURN_IF(encoder == NULL, 0); + return (Word32)encoder->bitrate * encoder->frame_length / (8 * encoder->fs_in); +} + +int lc3plus_enc_get_real_bitrate(const LC3PLUS_Enc *encoder) +{ + int ch = 0, totalBytes = 0; + RETURN_IF(encoder == NULL, 0); + RETURN_IF(!encoder->lc3_br_set, LC3PLUS_BITRATE_UNSET_ERROR); + + for (ch = 0; ch < encoder->channels; ch++) + { + totalBytes += encoder->channel_setup[ch]->targetBytes; + } + + int bitrate = (totalBytes * 80000.0 + encoder->frame_dms - 1) / encoder->frame_dms; + + if (encoder->fs_in == 44100) + { + int rem = bitrate % 480; + bitrate = ((bitrate - rem) / 480) * 441 + (rem * 441) / 480; + } + + return bitrate; +} + +LC3PLUS_Error lc3plus_enc_set_bitrate(LC3PLUS_Enc *encoder, int bitrate) +{ + RETURN_IF(encoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF(bitrate <= 0, LC3PLUS_BITRATE_ERROR); + return update_enc_bitrate(encoder, bitrate); +} + +int lc3plus_enc_get_delay(const LC3PLUS_Enc *encoder) +{ + RETURN_IF(encoder == NULL, 0); + return encoder->frame_length - 2 * encoder->la_zeroes; +} + +LC3PLUS_Error lc3plus_enc_set_ep_mode(LC3PLUS_Enc *encoder, LC3PLUS_EpMode epmode) +{ + RETURN_IF(encoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF((unsigned)epmode > LC3PLUS_EP_HIGH, LC3PLUS_EPMODE_ERROR); + encoder->epmode = epmode; + return encoder->lc3_br_set ? update_enc_bitrate(encoder, encoder->bitrate) : LC3PLUS_OK; +} + +LC3PLUS_Error lc3plus_enc_set_ep_mode_request(LC3PLUS_Enc *encoder, LC3PLUS_EpModeRequest epmr) +{ + RETURN_IF(encoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF((unsigned)epmr > LC3PLUS_EPMR_HIGH, LC3PLUS_EPMR_ERROR); + encoder->epmr = epmr; + return LC3PLUS_OK; +} + +LC3PLUS_Error lc3plus_enc_set_frame_dms(LC3PLUS_Enc *encoder, int frame_dms) +{ + RETURN_IF(encoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF(!lc3plus_frame_size_supported(frame_dms), LC3PLUS_FRAMEMS_ERROR); + RETURN_IF(encoder->lc3_br_set, LC3PLUS_BITRATE_SET_ERROR); + encoder->frame_dms = frame_dms; + set_enc_frame_params(encoder); + return LC3PLUS_OK; +} + + +LC3PLUS_Error lc3plus_enc_set_bandwidth(LC3PLUS_Enc *encoder, int bandwidth) +{ + RETURN_IF(encoder == NULL, LC3PLUS_NULL_ERROR); + Word32 effective_fs = encoder->fs_in; + if (encoder->bandwidth != bandwidth) { + if (encoder->fs_in > 40000) { + effective_fs = 40000; + } + if ((bandwidth * 2) > effective_fs) { + return LC3PLUS_BW_WARNING; + } + else { + encoder->bandwidth = bandwidth; + encoder->bandwidth_preset = bandwidth; + encoder->bw_ctrl_active = 1; + update_enc_bitrate(encoder, encoder->bitrate); + } + } + return LC3PLUS_OK; +} + + +static LC3PLUS_Error lc3plus_enc(LC3PLUS_Enc *encoder, void **input_samples, int bitdepth, void *output_bytes, int *num_bytes, + void *scratch) +{ + RETURN_IF(!encoder || !input_samples || !output_bytes || !num_bytes || !scratch, LC3PLUS_NULL_ERROR); + RETURN_IF(null_in_list(input_samples, encoder->channels), LC3PLUS_NULL_ERROR); + RETURN_IF(bitdepth != 16 && bitdepth != 24, LC3PLUS_ERROR); + RETURN_IF(!encoder->lc3_br_set, LC3PLUS_BITRATE_UNSET_ERROR); + *num_bytes = Enc_LC3PLUS(encoder, input_samples, bitdepth, output_bytes, scratch, *num_bytes == -1); + + assert(*num_bytes == lc3plus_enc_get_num_bytes(encoder)); + return LC3PLUS_OK; +} + +LC3PLUS_Error lc3plus_enc16(LC3PLUS_Enc *encoder, int16_t **input_samples, void *output_bytes, int *num_bytes, void *scratch) +{ + return lc3plus_enc(encoder, (void **)input_samples, 16, output_bytes, num_bytes, scratch); +} + +LC3PLUS_Error lc3plus_enc24(LC3PLUS_Enc *encoder, int32_t **input_samples, void *output_bytes, int *num_bytes, void *scratch) +{ + return lc3plus_enc(encoder, (void **)input_samples, 24, output_bytes, num_bytes, scratch); +} + +/* decoder functions *********************************************************/ + +LC3PLUS_Error lc3plus_dec_init(LC3PLUS_Dec *decoder, int samplerate, int channels, LC3PLUS_PlcMode plc_mode +#ifdef ENABLE_HR_MODE + , int hrmode +#endif +) +{ + RETURN_IF(decoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF(!lc3plus_samplerate_supported(samplerate), LC3PLUS_SAMPLERATE_ERROR); + RETURN_IF(!lc3plus_channels_supported(channels), LC3PLUS_CHANNELS_ERROR); + RETURN_IF(!lc3plus_plc_mode_supported(plc_mode), LC3PLUS_PLCMODE_ERROR); +#ifdef ENABLE_HR_MODE + RETURN_IF(samplerate==96000 && hrmode == 0, LC3PLUS_HRMODE_ERROR); +#endif + + return FillDecSetup(decoder, samplerate, channels, plc_mode +#ifdef ENABLE_HR_MODE + , hrmode +#endif + ); +} + +int lc3plus_dec_get_size(int samplerate, int channels, LC3PLUS_PlcMode plc_mode) +{ + RETURN_IF(!lc3plus_samplerate_supported(samplerate), 0); + RETURN_IF(!lc3plus_channels_supported(channels), 0); + RETURN_IF(!lc3plus_plc_mode_supported(plc_mode), 0); + return alloc_decoder(NULL, samplerate, channels); +} + +int lc3plus_dec_get_scratch_size(const LC3PLUS_Dec *decoder) +{ + int size = 0; + RETURN_IF(decoder == NULL, 0); + +#ifdef ENABLE_HR_MODE + size = 30 * DYN_MAX_LEN(decoder->fs) + 2866; + size += 4 * MAX_LGW + 8 * DYN_MAX_LPROT(decoder->fs) + 16 * DYN_MAX_LEN(decoder->fs); +#else + size = 12 * DYN_MAX_LEN(decoder->fs) + 752; + size += 2 * MAX_LGW + 8 * DYN_MAX_LPROT(decoder->fs) + 8 * DYN_MAX_LEN(decoder->fs); + size += 3720; +#endif + + assert(size <= LC3PLUS_DEC_MAX_SCRATCH_SIZE); + return size; +} + +LC3PLUS_Error lc3plus_dec_set_ep_enabled(LC3PLUS_Dec *decoder, int ep_enabled) +{ + RETURN_IF(decoder == NULL, LC3PLUS_NULL_ERROR); + decoder->ep_enabled = ep_enabled != 0; + decoder->epmr = LC3PLUS_EPMR_ZERO; + return LC3PLUS_OK; +} + +int lc3plus_dec_get_error_report(const LC3PLUS_Dec *decoder) +{ + RETURN_IF(decoder == NULL, 0); + return decoder->error_report == 2047 ? -1 : decoder->error_report & 0x07FF; +} + +int lc3plus_dec_get_epok_flags(const LC3PLUS_Dec *decoder) +{ + RETURN_IF(decoder == NULL, 0); + return decoder->error_report >> 11; +} + +LC3PLUS_EpModeRequest lc3plus_dec_get_ep_mode_request(const LC3PLUS_Dec *decoder) +{ + RETURN_IF(decoder == NULL, LC3PLUS_EPMR_ZERO); + return (LC3PLUS_EpModeRequest)decoder->epmr; +} + +LC3PLUS_Error lc3plus_dec_set_frame_dms(LC3PLUS_Dec *decoder, int frame_dms) +{ + RETURN_IF(decoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF(!lc3plus_frame_size_supported(frame_dms), LC3PLUS_FRAMEMS_ERROR); + RETURN_IF(decoder->plcMeth == 2 && frame_dms != 100, LC3PLUS_FRAMEMS_ERROR); + + decoder->frame_dms = frame_dms; + set_dec_frame_params(decoder); + return LC3PLUS_OK; +} + + +int lc3plus_dec_get_output_samples(const LC3PLUS_Dec *decoder) +{ + RETURN_IF(decoder == NULL, 0); + return decoder->frame_length; +} + +int lc3plus_dec_get_delay(const LC3PLUS_Dec *decoder) +{ + RETURN_IF(decoder == NULL, 0); + return decoder->frame_length - 2 * decoder->la_zeroes; +} + +static LC3PLUS_Error lc3plus_dec(LC3PLUS_Dec *decoder, void *input_bytes, int num_bytes, void **output_samples, int bitdepth, + void *scratch, int bfi_ext) +{ + RETURN_IF(!decoder || !input_bytes || !output_samples || !scratch, LC3PLUS_NULL_ERROR); + RETURN_IF(null_in_list(output_samples, decoder->channels), LC3PLUS_NULL_ERROR); + RETURN_IF(bitdepth != 16 && bitdepth != 24, LC3PLUS_ERROR); + return Dec_LC3PLUS(decoder, input_bytes, num_bytes, output_samples, bitdepth, scratch, bfi_ext); +} + +LC3PLUS_Error lc3plus_dec16(LC3PLUS_Dec *decoder, void *input_bytes, int num_bytes, int16_t **output_samples, void *scratch, int bfi_ext) +{ + return lc3plus_dec(decoder, input_bytes, num_bytes, (void **)output_samples, 16, scratch, bfi_ext); +} + +LC3PLUS_Error lc3plus_dec24(LC3PLUS_Dec *decoder, void *input_bytes, int num_bytes, int32_t **output_samples, void *scratch, int bfi_ext) +{ + return lc3plus_dec(decoder, input_bytes, num_bytes, (void **)output_samples, 24, scratch, bfi_ext); +} diff --git a/lib_lc3plus/lc3.h b/lib_lc3plus/lc3.h new file mode 100644 index 0000000000000000000000000000000000000000..64d8cc590c5fc66c9fa711086e86ced5be081e72 --- /dev/null +++ b/lib_lc3plus/lc3.h @@ -0,0 +1,520 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +/*! \file lc3.h + * This header provides the API for LC3plus. + * + * This library is targeting devices with extreme memory limitations, so memory management + * must be handeled by the user. This includes allocating memory for the structs and scratch + * memory. The structs are persistent between function calls. The scratch memory is working + * memory that does not persist between function calls. + * + * The amount of memory needed for various configurations can be obtained from the lc3plus_*_get_size + * and lc3plus_*_get_scratch_size functions. If memory usage is not a concern the LC3PLUS_*_MAX_SIZE + * LC3PLUS_*_MAX_SCRATCH_SIZE macros can be used for all configurations. + * + * Depending on the build configuration some functions might not be available. + */ + +#ifndef LC3PLUS_H +#define LC3PLUS_H + +#define ENABLE_HR_MODE + +#ifndef _MSC_VER +#include +#else +typedef __int16 int16_t; +typedef __int32 int32_t; +#endif + +/*! Construct version number from major/minor/micro values. */ +#define LC3PLUS_VERSION_INT(major, minor, micro) (((major) << 16) | ((minor) << 8) | (micro)) + +/*! Version number to ensure header and binary are matching. */ +#define LC3PLUS_VERSION LC3PLUS_VERSION_INT(1, 7, 3) + +/*! Maximum number of supported channels. The actual binary might support + * less, use lc3plus_channels_supported() to check. */ +#define LC3PLUS_MAX_CHANNELS 2 + +/*! Maximum number of samples per channel that can be stored in one LC3plus frame. */ +#ifdef ENABLE_HR_MODE +#define LC3PLUS_MAX_SAMPLES 960 +#else +#define LC3PLUS_MAX_SAMPLES 480 +#endif + +/*! Maximum number of bytes of one LC3plus frame. */ +#ifdef ENABLE_HR_MODE +#define LC3PLUS_MAX_BYTES (625 * LC3PLUS_MAX_CHANNELS) +#else +#define LC3PLUS_MAX_BYTES 870 +#endif + +/*! Maximum size needed to store encoder state. */ +#ifdef ENABLE_HR_MODE +#define LC3PLUS_ENC_MAX_SIZE 12628 +#else +#define LC3PLUS_ENC_MAX_SIZE 7226 +#endif + +/*! Maximum size needed to store decoder state. */ +#ifdef ENABLE_HR_MODE +#define LC3PLUS_DEC_MAX_SIZE 42488 +#else +#define LC3PLUS_DEC_MAX_SIZE 28446 +#endif + +/*! Maximum scratch size needed by lc3plus_enc16() or lc3plus_enc24().*/ +#ifdef ENABLE_HR_MODE +# define LC3PLUS_ENC_MAX_SCRATCH_SIZE 45624 +#else +# define LC3PLUS_ENC_MAX_SCRATCH_SIZE 6784 +#endif + +/*! Maximum scratch size needed by lc3plus_dec16() or lc3plus_dec24(). */ +#ifdef ENABLE_HR_MODE +#define LC3PLUS_DEC_MAX_SCRATCH_SIZE 59768 +#else +#define LC3PLUS_DEC_MAX_SCRATCH_SIZE 27474 +#endif +/*! Decoder packet loss concealment mode */ +typedef enum +{ + LC3PLUS_PLC_ADVANCED = 1 /*!< Enhanced concealment method */ +} LC3PLUS_PlcMode; + +/*! Error protection mode. LC3PLUS_EP_ZERO differs to LC3PLUS_EP_OFF in that + * errors can be detected but not corrected. */ +typedef enum +{ + LC3PLUS_EP_OFF = 0, /*!< Error protection is disabled */ + LC3PLUS_EP_ZERO = 1, /*!< Error protection with 0 bit correction */ + LC3PLUS_EP_LOW = 2, /*!< Error protection correcting one symbol per codeword */ + LC3PLUS_EP_MEDIUM = 3, /*!< Error protection correcting two symbols per codeword */ + LC3PLUS_EP_HIGH = 4 /*!< Error protection correcting three symbols per codeword */ +} LC3PLUS_EpMode; + +/*! Error protection mode request. On the encoder sidem, LC3PLUS_EPMR_ZERO to LC3PLUS_EPMR_HIGH + * can be set. The decoder returns mode requests with different confidences. */ +typedef enum +{ + LC3PLUS_EPMR_ZERO = 0, /*!< Request no error correction. High confidence if returned by decoder. */ + LC3PLUS_EPMR_LOW = 1, /*!< Request low error correction. High confidence if returned by decoder. */ + LC3PLUS_EPMR_MEDIUM = 2, /*!< Request medium error correction. High confidence if returned by decoder. */ + LC3PLUS_EPMR_HIGH = 3, /*!< Request high error correction. High confidence if returned by decoder. */ + LC3PLUS_EPMR_ZERO_MC = 4, /*!< No error correction requested, medium confidence. */ + LC3PLUS_EPMR_LOW_MC = 5, /*!< Low error correction requested, medium confidence. */ + LC3PLUS_EPMR_MEDIUM_MC = 6, /*!< Medium error correction requested, medium confidence. */ + LC3PLUS_EPMR_HIGH_MC = 7, /*!< High error correction requested, medium confidence. */ + LC3PLUS_EPMR_ZERO_NC = 8, /*!< No error correction requested, unvalidated. */ + LC3PLUS_EPMR_LOW_NC = 9, /*!< Low error correction requested, unvalidated. */ + LC3PLUS_EPMR_MEDIUM_NC = 10, /*!< Medium error correction requested, unvalidated. */ + LC3PLUS_EPMR_HIGH_NC = 11 /*!< High error correction requested, unvalidated. */ +} LC3PLUS_EpModeRequest; + +/*! Error codes returned by functions. */ +typedef enum +{ + LC3PLUS_OK = 0, /*!< No error occurred */ + LC3PLUS_ERROR = 1, /*!< Function call failed */ + LC3PLUS_DECODE_ERROR = 2, /*!< Frame failed to decode and was concealed */ + LC3PLUS_NULL_ERROR = 3, /*!< Pointer argument is null */ + LC3PLUS_SAMPLERATE_ERROR = 4, /*!< Invalid samplerate value */ + LC3PLUS_CHANNELS_ERROR = 5, /*!< Invalid channels value */ + LC3PLUS_BITRATE_ERROR = 6, /*!< Invalid bitrate value */ + LC3PLUS_NUMBYTES_ERROR = 7, /*!< Invalid num_bytes value */ + LC3PLUS_EPMODE_ERROR = 8, /*!< Invalid plc_method value */ + LC3PLUS_FRAMEMS_ERROR = 9, /*!< Invalid epmode value */ + LC3PLUS_ALIGN_ERROR = 10, /*!< Invalid frame_ms value */ + LC3PLUS_HRMODE_ERROR = 11, /*!< Unaligned pointer */ + LC3PLUS_BITRATE_UNSET_ERROR = 12, /*!< Invalid epmr value */ + LC3PLUS_BITRATE_SET_ERROR = 13, /*!< Invalid usage of hrmode, sampling rate and frame size */ + LC3PLUS_HRMODE_BW_ERROR = 14, /*!< Function called before bitrate has been set */ + LC3PLUS_PLCMODE_ERROR = 15, /*!< Function called after bitrate has been set */ + LC3PLUS_EPMR_ERROR = 16, /*!< Invalid external bad frame index */ + LC3PLUS_PADDING_ERROR = 17, /*!< Incorrect padding value */ + FRAMESIZE_ERROR = 18, /*!< Incorrect frame size during decoding */ + LC3PLUS_LFE_MODE_NOT_SUPPORTED = 19, /*!< LFE support not available */ + + /* START WARNING */ + LC3PLUS_WARNING = 20, + LC3PLUS_BW_WARNING = 21 /*!< Invalid bandwidth cutoff frequency */ + +} LC3PLUS_Error; + +typedef struct LC3PLUS_Enc LC3PLUS_Enc; /*!< Opaque encoder struct. */ +typedef struct LC3PLUS_Dec LC3PLUS_Dec; /*!< Opaque decoder struct. */ + +/*! \addtogroup Misc + * \{ */ + +/*! Test LFE mode support. + * + * Tests the support of the LFE mode. + * + * \return 1 for true, 0 for false. + */ +int32_t lc3_enc_supported_lfe(void); + +/*! Return library version number. It should match LC3PLUS_VERSION. */ +int lc3plus_version(void); + +/*! Tests if the library supports number of channels. + * + * \param[in] channels Number of channels. + * \return 1 for true, 0 for false. + */ +int lc3plus_channels_supported(int channels); + +/*! Tests if the library supports a sampling rate. + * + * \param[in] samplerate Sampling rate + * \return 1 for true, 0 for false + */ +int lc3plus_samplerate_supported(int samplerate); + +/*! \} + * \addtogroup Encoder + * \{ */ + +/*! + * Initialize LC3plus encoder. + * + * This function is used to fill a user-allocated encoder struct. This is typically + * called once for a samplerate / channel configuration. After init and before encoding + * the first frame you must call lc3plus_enc_set_bitrate(). + * + * \param[out] encoder Pointer to allocated encoder memory. It must have a size provided + * by lc3plus_enc_get_size() for matching samplerate / channels + * configuration or LC3PLUS_ENC_MAX_SIZE. + * \param[in] channels Number of channels. + * \param[in] samplerate Input sampling rate. Allowed sampling rates are: + * 8000, 16000, 24000, 32000, 44100, 48000 + * \param[in] hrmode High resolution mode. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc_init(LC3PLUS_Enc *encoder, int samplerate, int channels +#ifdef ENABLE_HR_MODE + , int hrmode +#endif + , int32_t lfe_channel_array[] + ); + +/*! + * Encode LC3plus frame with 16 bit input. + * + * Each call consumes a fixed number of samples. The number of input samples + * can be obtained from lc3plus_enc_get_input_samples(). + * + * \param[in] encoder Encoder handle initialized by lc3plus_enc_init(). + * \param[in] input_samples Input samples. The left channel is stored in input_samples[0], + * the right channel in input_samples[1]. The input is not changed + * by the encoder. + * \param[out] output_bytes Output buffer. It must have a at least lc3plus_enc_get_num_bytes() + * or at most LC3PLUS_MAX_BYTES. + * \param[out] num_bytes Number of bytes written to output_bytes. + * \param scratch A pointer to an allocated work buffer of at least + * lc3plus_enc_get_scratch_size() or at most LC3PLUS_ENC_SCRATCH_SIZE bytes. + * The buffer does not have to persist, so it can be used for other + * purposes in between calls. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc16(LC3PLUS_Enc *encoder, int16_t **input_samples, void *output_bytes, int *num_bytes, void *scratch); + +/*! Encode LC3plus frame with 24 bit input. + * + * The input samples are expected to be 24-bit values, sign-extended to 32-bit. + * See lc3plus_enc16() for parameter documentation. + */ +LC3PLUS_Error lc3plus_enc24(LC3PLUS_Enc *encoder, int32_t **input_samples, void *output_bytes, int *num_bytes, void *scratch); + +/*! Get the size of the LC3plus encoder struct for a samplerate / channel configuration. + * If memory is not restricted LC3PLUS_ENC_MAX_SIZE can be used for all configurations. + * + * \param[in] samplerate Sampling rate. + * \param[in] channels Number of channels. + * \return Size in bytes or 0 on error. + */ +int lc3plus_enc_get_size(int samplerate, int channels); + +/*! Get the size of the scratch buffer required by lc3plus_enc16() or lc3plus_enc24() for the current + * encoder configuration. If memory is not restricted, LC3PLUS_ENC_MAX_SCRATCH_SIZE can be used for + * all configurations. + * + * \param[in] encoder Encoder handle. + * \return Size in bytes or 0 on error. + */ +int lc3plus_enc_get_scratch_size(const LC3PLUS_Enc *encoder); + +/*! Get number of samples per channel expected by lc3plus_enc16() or lc3plus_enc24(). + * + * \param[in] encoder Encoder handle. + * \return Number of samples or 0 on error. + */ +int lc3plus_enc_get_input_samples(const LC3PLUS_Enc *encoder); + +/*! Get real internal bitrate of the encoder. It might differ from the requested bitrate due + * to error protection or 44.1 kHz input. + * + * \param[in] encoder Encoder handle. + * \return Bitrate in bits per second or 0 on error. + */ +int lc3plus_enc_get_real_bitrate(const LC3PLUS_Enc *encoder); + +/*! Get the maximum number of bytes produced by lc3plus_enc16() or lc3plus_enc24() for the current + * bitrate. It should be equal to the num_bytes output of lc3plus_enc16(). + * + * \param[in] encoder Encoder handle. + * \return Size in bytes or 0 on error. + */ +int lc3plus_enc_get_num_bytes(const LC3PLUS_Enc *encoder); + +/*! Set encoder bitrate for all channels. + * This function must be called at least once before encoding the first frame, but + * after other configuration functions such as lc3plus_enc_set_frame_dms(). + * + * Recommended bitrates for input sampling rates with 10 ms framing: + * kHz | kbps + * --------|----- + * 8 | 24 + * 16 | 32 + * 24 | 48 + * 32 | 64 + * 44.1/48 | 80(voice) 128(music) + * + * \param[in] encoder Encoder handle. + * \param[in] bitrate Bitrate in bits per second. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc_set_bitrate(LC3PLUS_Enc *encoder, int bitrate); + +/*! Set encoder Low-frequency effect moded. deactivates LTPF, TNS, NF. + * + * \param[in] encoder Encoder handle. + * \param[in] lfe LFE mode flag + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc_set_lfe(LC3PLUS_Enc* encoder, int lfe); + +/*! Get the encoder delay in number of samples. + * + * \param[in] encoder Encoder handle. + * \return Encoder in samples or 0 on error. + */ +int lc3plus_enc_get_delay(const LC3PLUS_Enc *encoder); + +/*! Set the frame length for LC3plus encoder in deci milliseconds. + * Not all lengths may be enabled, in that case LC3PLUS_FRAMEMS_ERROR is returned. + * This function must be called before lc3plus_enc_set_bitrate(). The decoder must be + * configured with lc3plus_dec_set_frame_dms() with the same value. + * + * \param[in] encoder Encoder handle. + * \param[in] frame_ms Frame length in ms. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc_set_frame_dms(LC3PLUS_Enc *encoder, int frame_ms); + +/*! Set error protection mode. The default is LC3PLUS_EP_OFF. It is possible to switch between + * different modees during encoding. Dynamic switching is only allowed between LC3PLUS_EP_ZERO, + * LC3PLUS_EP_LOW, LC3_EP_MEDIUM, and LC3PLUS_EP_HIGH. The the decoder must be notified with + * lc3plus_dec_set_ep_enabled() to expect protected data if epmode is other than LC3PLUS_EP_OFF. + * + * \param[in] encoder Encoder handle. + * \param[in] epmode Error protection mode. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc_set_ep_mode(LC3PLUS_Enc *encoder, LC3PLUS_EpMode epmode); + +/*! Sets error protection mode request transmitted in each channel encoded frame. + * The channel coder includes an error protection mode request (EPMR) in every frame. + * The EPMR takes value 0, 1, 2, and 3 which request ep modes 1, 2, 3, and 4 from the + * decoding device. The EPMR can be retrieved from the channel decoder via the interface + * routine lc3plus_dec_get_ep_mode_request(). + * + * \param[in] encoder Encoder handle. + * \param[in] epmr Error Protection Mode Request + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc_set_ep_mode_request(LC3PLUS_Enc *encoder, LC3PLUS_EpModeRequest epmr); + +/*! Set encoder bandwidth to a different value. All frequency bins above the cutoff + * frequency are cut off. Allowed frequencies are: 4 kHz, 8 kHz, 12 kHz, 16 kHz and 24 kHz. + * + * \param[in] encoder Encoder handle. + * \param[in] bandwidth Cutoff Frequency in Hz + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc_set_bandwidth(LC3PLUS_Enc *encoder, int bandwidth); + +/*! \} + * \addtogroup Decoder + * \{ */ + + +/*! + * Initialize LC3plus decoder. + * + * This function is used to fill a user-allocated decoder struct. This is typically + * called once for a samplerate / channel / plc_mode configuration. + * + * The samplerate and channel arguments must have the same values that were used for encoding. + * LC3plus does not provide a signalling scheme, transporting these values is the responsibility + * of the application. + * + * \param[out] decoder Pointer to decoder memory. It must have as size of least + * lc3plus_dec_get_size() or at most LC3PLUS_DEC_MAX_SIZE. + * \param[in] samplerate Bitstream sampling rate. + * \param[in] channels Bitstream number of channels. + * \param[in] plc_mode Packet loss concealment mode. + * \param[in] hrmode High resolution mode mode. + * + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_dec_init(LC3PLUS_Dec *decoder, int samplerate, int channels, LC3PLUS_PlcMode plc_mode +#ifdef ENABLE_HR_MODE + , int hrmode +#endif + ); + +/*! + * Decode compressed LC3plus frame to 16 bit PCM output. + * + * Each call decodes a fixed number of samples. Use lc3plus_dec_get_output_samples() to obtain this + * number. When the input is corrupted and can not be decoded, LC3PLUS_DECODE_ERROR is returned and + * packet loss concealment is applied, so the output is still usable. + * If error protection is enabled and the errors can be corrected the frame is corrected and + * normally decoded. Use lc3plus_dec_get_error_report() to check if errors were corrected. + * + * \param[in] decoder Decoder initialized by lc3plus_dec_init(). + * \param[in] input_bytes Input bytes. If error protection is enabled the input bytes can be + * altered when error correction is applied. This is why this buffer + * must be writable. + * \param[in] num_bytes Number of valid bytes in input_bytes. To signal a lost frame and + * generate concealment output this value must be set to 0. + * \param[out] output_samples Array of pointers to output channel buffers. Each channel buffer + * should provide enough space to hold at most LC3PLUS_MAX_SAMPLES. The + * left channel is stored in output_samples[0], the right channel in + * output_samples[1]. + * \param scratch A pointer to an allocated work buffer of at least + * lc3plus_dec_get_scratch_size() or at most LC3PLUS_DEC_MAX_SCRATCH_SIZE + * bytes. The scratch buffer does not have to persist, so it can be + * used for other purposes in between calls. + * \return Returns LC3PLUS_OK on success or appropriate error code. Note there is + * a special case for LC3PLUS_DECODE_ERROR where the output is still valid. + */ +LC3PLUS_Error lc3plus_dec16(LC3PLUS_Dec *decoder, void *input_bytes, int num_bytes, int16_t **output_samples, void *scratch, + int bfi_ext); + +/*! Decode compressed LC3plus frame to 24 bit PCM output. + * + * The output samples are 24-bit values, sign-extended to 32-bit. + * See lc3plus_dec16() for parameter documentation. + */ +LC3PLUS_Error lc3plus_dec24(LC3PLUS_Dec *decoder, void *input_bytes, int num_bytes, int32_t **output_samples, void *scratch, + int bfi_ext); + +/*! Get the size of the LC3plus decoder struct for a samplerate / channel / plc_mode configuration. + * If memory is not restricted LC3PLUS_DEC_MAX_SIZE can be used for all configurations. + * + * \param[in] channels Number of channels. + * \param[in] samplerate Sampling rate. + * \param[in] plc_mode Packet loss concealment mode. + * \return Size in bytes or 0 on error. + */ +int lc3plus_dec_get_size(int samplerate, int channels, LC3PLUS_PlcMode plc_mode); + +/*! Get the size of the scratch buffer required by lc3plus_dec16() or lc3plus_dec24() for the current + * decoder configuration. If memory is not restricted LC3PLUS_DEC_MAX_SCRATCH_SIZE can be used for + * all configurations. + * + * \param[in] decoder Decoder handle. + * \return Size in bytes or 0 on error. + */ +int lc3plus_dec_get_scratch_size(const LC3PLUS_Dec *decoder); + +/*! Get the number of samples per channel produced by lc3plus_dec16() or lc3plus_dec24(). + * + * \param[in] decoder Decoder handle. + * \return Number of samples or 0 on error. + */ + +int lc3plus_dec_get_output_samples(const LC3PLUS_Dec *decoder); + +/*! Get the decoder delay in number of samples. + * + * \param[in] decoder Decoder handle. + * \return Delay in samples or 0 on error. + */ +int lc3plus_dec_get_delay(const LC3PLUS_Dec *decoder); + +/*! Set the frame length for LC3plus decoder in deci milliseconds. + * Not all lengths may be enabled, in that case LC3PLUS_FRAMEMS_ERROR is returned. + * This only works correcly if the encoder was configured with the same vale. + * + * \param[in] decoder Decoder handle. + * \param[in] frame_ms Frame length in ms. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_dec_set_frame_dms(LC3PLUS_Dec *decoder, int frame_ms); + +/*! Enable or disable error protection. Default value is 0 (disabled). If error protection is + * enabled, the decoder expects that the frames were encoded with error protection mode + * LC3PLUS_EP_ZERO or higher. + * + * \param[in] decoder Decoder handle. + * \param[in] ep_enabled 1 (or any nonzero) for true, 0 for false. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_dec_set_ep_enabled(LC3PLUS_Dec *decoder, int ep_enabled); + +/*! Retrieves the error protection mode reqeust from channel decoder. + * + * The return value encodes both the error protection mode request (EPMR) + * and the confidence of the method by which it was retrieved. + * + * The requested error protection mode is (epmr % 4) + 1, where epmr is the + * function's return value. The confidence is specified as follows. + * + * Confidence | Range + * -----------|------------- + * high | 0 <= epmr < 4 + * medium | 4 <= epmr < 8 + * no | 8 <= epmr < 12 + * + * When receiving stereo content of separately channel encoded audio frames the + * return value is the minimum of two values retrieved from the individual channels. + * + * \param[in] decoder Decoder handle. + * \return Error protection mode reqeust. + */ +LC3PLUS_EpModeRequest lc3plus_dec_get_ep_mode_request(const LC3PLUS_Dec *decoder); + +/*! Get the number of corrected bit errors in the last decoded frame. This only works if + * error protection is active. If the number of errors is greater than the current error + * protection mode can correct, -1 is returned. If the last frame had no errors or the + * decoder handle is NULL, 0 is returned, + * + * \param[in] decoder Decoder handle. + * \return Number of corrected bits or -1. See description for details. + */ +int lc3plus_dec_get_error_report(const LC3PLUS_Dec *decoder); +/*! This function returns an set of flags indicating whether the last frame + * would have been channel decodable in epmode m, m ranging from 1 to 4. Note that + * this information is not available in case the last frame was not channel + * decodable in which case the return value is 0. If the last frame would have + * been decodable in epmode m, m-1th of the return value will be 1. + * Otherwise, if the frame would not have been decodable or if this information + * cannot be retrieved, the m-1th bit of the return value will be 0. + */ +int lc3plus_dec_get_epok_flags(const LC3PLUS_Dec *decoder); + +/*! \} */ +#endif /* LC3plus */ diff --git a/lib_lc3plus/levinson_fx.c b/lib_lc3plus/levinson_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..9003173d04594dfe09c4d408b100883e7ec15cfc --- /dev/null +++ b/lib_lc3plus/levinson_fx.c @@ -0,0 +1,160 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +void processLevinson_fx(Word32 *lpc, Word32 *ac, Word16 N, Word16 *rc, Word32 *pred_err, Word8 *scratchBuffer) +{ + + Word32 *lpc_tmp; + Word32 rc32, err, sum; + Word16 shift, s, inv; + Counter n, m; + + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processLevinson_fx", sizeof(struct { + Word32 *lpc_tmp; + Word32 rc32, err, sum; + Word16 shift, s, inv; + Counter n, m; + Word32 params[2]; + })); +#endif + + lpc_tmp = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 4 * (M_LTPF + 1) = 100 bytes */ + + /* Init Prediction Error */ + err = ac[0]; move32(); + shift = 0; move16(); + + /* LPC Coefficient 0 */ + lpc[0] = 0x8000000; move32(); + + /* Reflection Coefficient 0 */ + IF (ac[0] != 0) + { + inv = div_s(16383, extract_h(ac[0])); + rc32 = L_shl_pos(Mpy_32_32_lc3plus(L_abs(ac[1]), Mpy_32_16_lc3plus(L_sub(MAX_32, Mpy_32_16_lc3plus(ac[0], inv)), inv)), 2); + } + ELSE + { + rc32 = 0; move32(); + } + if (ac[1] > 0) + { + rc32 = L_negate(rc32); + } + if (rc != NULL) + { + rc[0] = round_fx(rc32); move16(); + } + + /* LPC Coefficient 1 */ + lpc[1] = L_shr_pos(rc32, 4); move32(); + + FOR (n = 2; n <= N; n++) + { + /* Update Prediction Error */ + err = Mpy_32_32_lc3plus(err, L_sub(MAX_32, Mpy_32_32_lc3plus(rc32, rc32))); + s = norm_l(err); + err = L_shl_pos(err, s); + shift = add(shift, s); + + /* Reflection Coefficient n-1 */ + sum = Mpy_32_32_lc3plus(ac[1], lpc[n - 1]); + FOR (m = 2; m < n; m++) + { + sum = L_add(sum, Mpy_32_32_lc3plus(ac[m], lpc[n - m])); + } + + sum = L_add(L_shl_pos(sum, 4), ac[n]); + IF (err != 0) + { + inv = div_s(16383, extract_h(err)); + rc32 = L_shl_pos(Mpy_32_32_lc3plus(L_abs(sum), Mpy_32_16_lc3plus(L_sub(MAX_32, Mpy_32_16_lc3plus(err, inv)), inv)), 2); + } + ELSE + { + rc32 = 0; + } + if (sum > 0) + { + rc32 = L_negate(rc32); + } + rc32 = L_shl(rc32, shift); + if (rc != NULL) + { + rc[n - 1] = round_fx(rc32); move16(); + } + +/* Recompute LPC Coefficients up to n-1 */ + FOR (m = 1; m < n; m++) + { + lpc_tmp[m] = L_add(lpc[m], Mpy_32_32_lc3plus(rc32, lpc[n - m])); move32(); + } + + basop_memmove(&lpc[1], &lpc_tmp[1], (n - 1) * sizeof(Word32)); + + /* LPC Coefficient n */ + lpc[n] = L_shr_pos(rc32, 4); move32(); + } + + /* Final Prediction Error */ + IF (pred_err != NULL) + { + err = Mpy_32_32_lc3plus(err, L_sub(MAX_32, Mpy_32_32_lc3plus(rc32, rc32))); + *pred_err = L_shr(err, shift); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + + +void lpc2rc(Word32 *lpc, Word16 *rc, Word16 N) +{ + Word32 lpc_tmp[MAXLAG + 1]; + Word32 rc32, tmp0, tmp1; + Word16 inv; + Counter n, m; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("lpc2rc", sizeof(struct { + Word32 lpc_tmp[MAXLAG + 1]; + Word32 rc32, tmp0, tmp1; + Word16 inv; + Counter n, m; + })); +#endif + + FOR (n = N; n >= 2; n--) + { + rc32 = L_shl_pos(lpc[n], 4); + rc[n - 1] = round_fx(rc32); move16(); + + tmp0 = L_sub(MAX_32, L_abs(Mpy_32_32_lc3plus(rc32, rc32))); + FOR (m = 1; m < n; m++) + { + tmp1 = L_sub(lpc[m], Mpy_32_32_lc3plus(lpc[n - m], rc32)); + inv = div_s(16383, extract_h(tmp0)); + lpc_tmp[m] = L_shl_pos(Mpy_32_32_lc3plus(tmp1, Mpy_32_16_lc3plus(L_sub(MAX_32, Mpy_32_16_lc3plus(tmp0, inv)), inv)), 2); move32(); + } + + basop_memmove(&lpc[1], &lpc_tmp[1], (n - 1) * sizeof(Word32)); + } + + rc[0] = round_fx(L_shl_pos(lpc[1], 4)); move32(); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + diff --git a/lib_lc3plus/license.h b/lib_lc3plus/license.h new file mode 100644 index 0000000000000000000000000000000000000000..22f25e9ff204310778be60d2104265f807a7d216 --- /dev/null +++ b/lib_lc3plus/license.h @@ -0,0 +1,21 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" + +static const char *const LICENSE = + "*******************************************************************************\n" + "* ETSI TS 103 634 V1.4.5 *\n" + "* Low Complexity Communication Codec Plus (LC3plus) *\n" + "* Fixed Point Software V%i.%i.%iETSI, " __DATE__ " *\n" + "* Copyright licence is solely granted through ETSI Intellectual Property *\n" + "* Rights Policy, 3rd April 2019. No patent licence is granted by implication, *\n" + "* estoppel or otherwise. *\n" + "*******************************************************************************\n" + "\n"; diff --git a/lib_lc3plus/ltpf_coder_fx.c b/lib_lc3plus/ltpf_coder_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..d17daa1b9f77cc2be61f3aae0c8fc5122e8efb8b --- /dev/null +++ b/lib_lc3plus/ltpf_coder_fx.c @@ -0,0 +1,323 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +/*************************************************************************/ + + +void process_ltpf_coder_fx(Word16 *bits, Word16 ol_pitch, Word16 ltpf_enable, Word16 *mem_in_exp, Word16 mem_in[], + Word16 mem_in_len, Word16 param[], Word16 *xin, Word16 len, Word16 *mem_normcorr, + Word16 *mem_mem_normcorr, Word16 ol_normcorr, Word16 *mem_ltpf_on, Word16 *mem_ltpf_pitch, + Word16 xin_exp, Word16 frame_dms, Word8 *scratchBuffer +#ifdef CR9_K_REDUCE_NORM_CORR_TH + ,Word16 hrmode +#endif +) +{ + Word16 pitch_index, scale0, scale1, scale2, *x, x_exp, shift, prod_exp, ltpf_pitch; + Word32 L_tmp, cor_max32, sum0, sum1, sum2, prod, inv; + Word32 *ac32; + Word16 *ac, *currFrame, *predFrame; + Word16 min_pitch, max_pitch, ac_min_pitch, ac_max_pitch, ac_max; + Word16 pitch, pitch_res, min_pitch_fr, pitch_int, pitch_fr, norm_corr, ltpf_active; + Counter n, m, fr; + Word16 tmp, acflen; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("process_ltpf_coder_fx", sizeof(struct { + Word16 pitch_index, scale0, scale1, scale2, *x, x_exp, shift, prod_exp, ltpf_pitch; + Word32 L_tmp, cor_max32, sum0, sum1, sum2, prod, inv; + Word32 *ac32; + Word16 *ac, *currFrame, *predFrame; + Word16 min_pitch, max_pitch, ac_min_pitch, ac_max_pitch, ac_max; + Word16 pitch, pitch_res, min_pitch_fr, pitch_int, pitch_fr, norm_corr, ltpf_active; + Counter n, m, fr; + Word16 tmp, acflen; + })); +#endif + + + + ac32 = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 4 * 17 = 68 bytes; */ + ac = (Word16 *)scratchAlign(ac32, sizeof(*ac32) * 17); /* Size = 2 * 17 = 34 bytes */ + currFrame = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * 128 = 256 bytes */ + predFrame = (Word16 *)scratchAlign(currFrame, sizeof(*currFrame) * LEN_12K8); /* Size = 2 * 128 = 256 bytes */ + /* Buffers 'overlap' since they are not used at the same time */ /* Total size used = 512 bytes */ + + ltpf_active = 0; move16(); + norm_corr = 0; move16(); + + /* Input buffer */ + x = mem_in + mem_in_len; + + basop_memmove(x, xin, (len + 1) * sizeof(Word16)); + + ASSERT(mem_in_len + len + 1 <= LTPF_MEMIN_LEN + LEN_12K8 + 1); + + /* Scaling */ + scale0 = sub(getScaleFactor16_0(mem_in, mem_in_len), 3); + *mem_in_exp = sub(*mem_in_exp, scale0); move16(); + scale1 = sub(getScaleFactor16_0(x, len + 1), 3); + x_exp = sub(xin_exp, scale1); + scale2 = sub(*mem_in_exp, x_exp); + IF (scale2 > 0) + { + Scale_sig(x, len + 1, sub(scale1, scale2)); + Scale_sig(mem_in, mem_in_len, scale0); + x_exp = *mem_in_exp; move16(); + } + ELSE + { + Scale_sig(x, len + 1, scale1); + Scale_sig(mem_in, mem_in_len, add(scale0, scale2)); + *mem_in_exp = x_exp; move16(); + } + +#ifdef CR9_K_REDUCE_NORM_CORR_TH + Word32 normCorrTh = 0; + if (hrmode) { + normCorrTh = 13107; + } else { + normCorrTh = 19660; + } +#endif + +#ifdef CR9_K_REDUCE_NORM_CORR_TH + IF (sub(ol_normcorr, normCorrTh) > 0) +#else + IF (sub(ol_normcorr, 19660) > 0) +#endif + { + /* Autocorrelation Bounds */ + min_pitch = sub(ol_pitch, 4); + max_pitch = add(ol_pitch, 4); + min_pitch = s_max(min_pitch, MIN_PITCH_12K8); + max_pitch = s_min(max_pitch, MAX_PITCH_12K8); + ac_min_pitch = sub(min_pitch, 4); + ac_max_pitch = add(max_pitch, 4); + acflen = len; move16(); + if (sub(frame_dms, 25) == 0) + { + acflen = shl(len, 1); + x = x - len; + } + + /* Compute norm */ + sum1 = L_mac0(1, x[0], x[0]); + sum2 = L_mac0(1, x[-ac_min_pitch], x[-ac_min_pitch]); + FOR (m = 1; m < acflen; m++) + { + sum1 = L_mac0(sum1, x[m], x[m]); + sum2 = L_mac0(sum2, x[m - ac_min_pitch], x[m - ac_min_pitch]); + } + scale1 = norm_l(sum1); + sum1 = L_shl_pos(sum1, scale1); + + /* Compute Autocorrelation */ + FOR (n = ac_min_pitch; n <= ac_max_pitch; n++) + { + sum0 = L_mac0(0L, x[0], x[0 - n]); + FOR (m = 1; m < acflen; m++) + { + sum0 = L_mac0(sum0, x[m], x[m - n]); + } + if (n > ac_min_pitch) + { + sum2 = L_msu0(sum2, x[acflen - 1 - (n - 1)], x[acflen - 1 - (n - 1)]); + sum2 = L_mac0_sat(sum2, x[-n], x[-n]); + } + scale2 = norm_l(sum2); + L_tmp = L_shl_pos(sum2, scale2); + prod = Mpy_32_32_lc3plus(sum1, L_tmp); + shift = norm_l(prod); + prod = L_shl_pos(prod, shift); + prod_exp = sub(62, add(add(scale1, scale2), shift)); + inv = Isqrt_lc3plus(prod, &prod_exp); + scale0 = norm_l(sum0); + sum0 = L_shl_pos(sum0, scale0); + prod = Mpy_32_32_lc3plus(sum0, inv); + prod_exp = add(sub(31, scale0), prod_exp); + test(); + IF (prod == 0 || sub(norm_l(prod), prod_exp) >= 0) + { + ac[n - ac_min_pitch] = s_max(0, round_fx_sat(L_shl_sat(prod, prod_exp))); move16(); + } + ELSE + { + ac[n - ac_min_pitch] = 32767; move16(); + } + } + + /* Find maximum */ + ac_max = ac[min_pitch - ac_min_pitch]; move16(); + pitch = min_pitch; move16(); + FOR (n = min_pitch + 1; n <= max_pitch; n++) + { + tmp = sub_sat(ac[n - ac_min_pitch], ac_max); + if (tmp > 0) + { + pitch = n; move16(); + } + ac_max = s_max(ac_max, ac[n - ac_min_pitch]); + } + pitch_int = pitch; move16(); + pitch_fr = 0; move16(); + pitch_index = add(pitch_int, 283); + + /* If the pitch is low -> estimate a fractional part */ + IF (sub(pitch, RES2_PITCH_12K8) < 0) + { + IF (sub(pitch, RES4_PITCH_12K8) < 0) + { + pitch_res = 1; move16(); + min_pitch_fr = -3; move16(); + } + ELSE + { + pitch_res = 2; move16(); + min_pitch_fr = -2; move16(); + } + if (sub(pitch, min_pitch) == 0) + { + min_pitch_fr = 0; + } + cor_max32 = MIN_32; + FOR (fr = min_pitch_fr; fr < 4; fr += pitch_res) + { + sum0 = L_mult0(ac[pitch_int - ac_min_pitch - 4], ltpf_ac_interp_filt[fr + 3][0]); + sum0 = L_mac0(sum0, ac[pitch_int - ac_min_pitch - 3], ltpf_ac_interp_filt[fr + 3][1]); + sum0 = L_mac0(sum0, ac[pitch_int - ac_min_pitch - 2], ltpf_ac_interp_filt[fr + 3][2]); + sum0 = L_mac0(sum0, ac[pitch_int - ac_min_pitch - 1], ltpf_ac_interp_filt[fr + 3][3]); + sum0 = L_mac0(sum0, ac[pitch_int - ac_min_pitch + 0], ltpf_ac_interp_filt[fr + 3][4]); + sum0 = L_mac0(sum0, ac[pitch_int - ac_min_pitch + 1], ltpf_ac_interp_filt[fr + 3][5]); + sum0 = L_mac0(sum0, ac[pitch_int - ac_min_pitch + 2], ltpf_ac_interp_filt[fr + 3][6]); + sum0 = L_mac0(sum0, ac[pitch_int - ac_min_pitch + 3], ltpf_ac_interp_filt[fr + 3][7]); + sum0 = L_mac0(sum0, ac[pitch_int - ac_min_pitch + 4], ltpf_ac_interp_filt[fr + 3][8]); + + L_tmp = L_sub_sat(sum0, cor_max32); + if (L_tmp > 0) + { + pitch_fr = fr; move16(); + } + cor_max32 = L_max(cor_max32, sum0); + } + IF (pitch_fr < 0) + { + pitch_int = sub(pitch_int, 1); + pitch_fr = add(pitch_fr, 4); + } + IF (sub(pitch_int, 127) >= 0) + { + pitch_index = add(add(shl_pos(pitch_int, 1), shr_pos(pitch_fr, 1)), 126); + } + ELSE + { + pitch_index = sub(add(shl_pos(pitch_int, 2), pitch_fr), 128); + } + } + ltpf_pitch = add(shl_pos(pitch_int, 2), pitch_fr); + + /* Filter current and predicted frame */ + + FOR (n = 0; n < acflen; n++) + { + sum0 = L_mult(x[n + 1], inter_filter[0][0][0]); + sum0 = L_mac(sum0, x[n], inter_filter[0][0][1]); + currFrame[n] = mac_r(sum0, x[n - 1], inter_filter[0][0][2]); + + sum0 = L_mult(x[n - pitch_int + 1], inter_filter[0][pitch_fr][0]); + sum0 = L_mac(sum0, x[n - pitch_int], inter_filter[0][pitch_fr][1]); + sum0 = L_mac(sum0, x[n - pitch_int - 1], inter_filter[0][pitch_fr][2]); + predFrame[n] = mac_r(sum0, x[n - pitch_int - 2], inter_filter[0][pitch_fr][3]); + } + + /* Normalized Correlation */ + sum0 = L_mult0(currFrame[0], predFrame[0]); + sum1 = L_mac0(1, predFrame[0], predFrame[0]); + sum2 = L_mac0(1, currFrame[0], currFrame[0]); + for (m = 1; m < acflen; m++) + { + sum0 = L_mac0(sum0, currFrame[m], predFrame[m]); + sum1 = L_mac0(sum1, predFrame[m], predFrame[m]); + sum2 = L_mac0(sum2, currFrame[m], currFrame[m]); + } + + scale1 = norm_l(sum1); + scale2 = norm_l(sum2); + sum1 = L_shl_pos(sum1, scale1); + sum2 = L_shl_pos(sum2, scale2); + prod = Mpy_32_32_lc3plus(sum1, sum2); + shift = norm_l(prod); + prod = L_shl_pos(prod, shift); + prod_exp = sub(62, add(add(scale1, scale2), shift)); + inv = Isqrt_lc3plus(prod, &prod_exp); + scale0 = norm_l(sum0); + sum0 = L_shl_pos(sum0, scale0); + prod = Mpy_32_32_lc3plus(sum0, inv); + prod_exp = add(sub(31, scale0), prod_exp); + test(); + IF (prod == 0 || sub(norm_l(prod), prod_exp) >= 0) + { + norm_corr = s_max(0, round_fx_sat(L_shl_sat(prod, prod_exp))); move16(); + } + ELSE + { + norm_corr = 32767; move16(); + } + if (norm_corr < 0) + { + norm_corr = 0; + } + + IF (sub(ltpf_enable, 1) == 0) + { + test(); test(); test(); test(); + /* Decision if lptf active */ + IF ((*mem_ltpf_on == 0 && sub(*mem_normcorr, 30802) > 0 && sub(norm_corr, 30802) > 0 && + (sub(frame_dms, 100) == 0 || sub(*mem_mem_normcorr, 30802) > 0)) || + (sub(*mem_ltpf_on, 1) == 0 && sub(norm_corr, 29491) > 0) || + (sub(*mem_ltpf_on, 1) == 0 && sub(abs_s(sub(ltpf_pitch, *mem_ltpf_pitch)), 8) < 0 && + add(sub(norm_corr, *mem_normcorr), 3277) > 0 && sub(norm_corr, 27525) > 0)) + { + ltpf_active = 1; move16(); + } + } + + param[0] = 1; move16(); + param[1] = ltpf_active; move16(); + param[2] = pitch_index; move16(); + *bits = 11; move16(); + } + ELSE + { + norm_corr = ol_normcorr; move16(); + param[0] = 0; move16(); + param[1] = 0; move16(); + param[2] = 0; move16(); + *bits = 1; move16(); + ltpf_pitch = 0; move16(); + } + +/* Update memory */ + FOR (n = 0; n < mem_in_len; n++) + { + mem_in[n] = mem_in[n + len]; move16(); + } + + *mem_mem_normcorr = *mem_normcorr; move16(); + *mem_normcorr = norm_corr; move16(); + *mem_ltpf_on = ltpf_active; move16(); + *mem_ltpf_pitch = ltpf_pitch; move16(); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + diff --git a/lib_lc3plus/ltpf_decoder_fx.c b/lib_lc3plus/ltpf_decoder_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..3bc82085ef6436548bc71bc769c8da9748ad5eb5 --- /dev/null +++ b/lib_lc3plus/ltpf_decoder_fx.c @@ -0,0 +1,394 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +static void ltpf_synth_filter(Word16 *synth_ltp, Word16 *synth, Word16 length, Word16 pitch_int, Word16 pitch_fr, + Word16 gain, Word16 scale_fac_idx, Word16 fs_idx, + Word16 fade /* 0=normal, +1=fade-in, -1=fade-out */); + +/*************************************************************************/ + + +void process_ltpf_decoder_fx(Word16 *x_e, Word16 L_frame, Word16 old_x_len, Word16 fs_idx, Word16 old_y_len, + Word16 *old_e, Word16 *x_in, Word16 *old_x, Word16 *y_out, Word16 *old_y, Word16 ltpf, + Word16 ltpf_active, Word16 pitch_index, Word16 *old_pitch_int, Word16 *old_pitch_fr, + Word16 *old_gain, Word16 *mem_ltpf_active, Word16 scale_fac_idx, Word16 bfi, + Word16 concealMethod, + Word16 damping, Word16 *old_scale_fac_idx, +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + Word32 *rel_pitch_change, Word16 hrmode, Word16 frame_dms, +#endif + Word8 *scratchBuffer) +{ + Counter i; + Word16 gain, s, s0, s1, pitch, pitch_int, pitch_fr, N4, N34; + Word16 *x, *y; + Word16 *z; +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + Word32 tmp32, pitch_delta; +#endif +#ifdef DYNMEM_COUNT + Dyn_Mem_In("process_ltpf_decoder_fx", sizeof(struct { + Counter i; + Word16 gain, s, s0, s1, pitch, pitch_int, pitch_fr, N4, N34; + Word16 *x, *y; + Word16 *z; +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + Word32 tmp32, pitch_delta; +#endif + })); +#endif + + z = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = MAX_LEN / 4 + 10 */ + + + test(); + IF ((sub(bfi, 1) == 0) && (sub(concealMethod, LC3_CON_TEC_NS_STD) == 0)) + { + ltpf = 0; move16(); + ltpf_active = 0; move16(); + pitch_int = 0; move16(); + pitch_fr = 0; move16(); + gain = 0; move16(); + } + + /* Filter parameters */ + IF (sub(bfi, 1) != 0) + { + IF (ltpf == 0) + { + pitch_int = 0; move16(); + pitch_fr = 0; move16(); + } + ELSE + { + /* Decode pitch */ + IF (sub(pitch_index, 380) < 0) + { + pitch_int = shr_pos(add(pitch_index, 64), 2); + pitch_fr = add(sub(pitch_index, shl_pos(pitch_int, 2)), 128); + } + ELSE IF (sub(pitch_index, 440) < 0) + { + pitch_int = shr_pos(sub(pitch_index, 126), 1); + pitch_fr = sub(sub(shl_pos(pitch_index, 1), shl_pos(pitch_int, 2)), 252); + } + ELSE + { + pitch_int = sub(pitch_index, 283); + pitch_fr = 0; move16(); + } + pitch = add(shl_pos(pitch_int, 2), pitch_fr); +#ifdef ENABLE_HR_MODE + IF (sub(fs_idx, 5) == 0) + { + pitch = round_fx(L_shl_pos(L_mult(shl_pos(pitch, 2), pitch_scale[4]), 1)); + } + ELSE +#endif + { + pitch = mult_r(shl_pos(pitch, 2), pitch_scale[fs_idx]); + } + pitch_int = shr_pos(pitch, 2); + pitch_fr = sub(pitch, shl_pos(pitch_int, 2)); + } + + /* Decode gain */ + if (scale_fac_idx < 0) + { + ltpf_active = 0; + ASSERT(!(*old_scale_fac_idx < 0 && *mem_ltpf_active == 1)); + } + IF (ltpf_active == 0) + { + gain = 0; move16(); + } + ELSE + { + ASSERT(scale_fac_idx >= 0); + gain = gain_scale_fac[scale_fac_idx]; move16(); + } + } + ELSE IF (sub(concealMethod, LC3_CON_TEC_NS_STD) != 0) + { + /* fix to avoid not initialized filtering for concelament + might be necessary in case of bit errors or rate switching */ + if (scale_fac_idx < 0) { + if (*mem_ltpf_active && *old_scale_fac_idx>=0) + { + scale_fac_idx = *old_scale_fac_idx; + } + } + + ltpf_active = *mem_ltpf_active; move16(); + + if ((sub(concealMethod, LC3_CON_TEC_PHASE_ECU) == 0)) + { /* always start fade off to save filtering WMOPS for the remaining 7.5 ms */ + assert(bfi == 1); + ltpf_active = 0; move16(); /*always start fade off , still maintain *mem_ltpf_active */ + } + + pitch_int = *old_pitch_int; + pitch_fr = *old_pitch_fr; + gain = mult_r(*old_gain, damping); + } + + test(); test(); + IF (ltpf_active == 0 && *mem_ltpf_active == 0) + { + /* LTPF inactive */ + + basop_memmove(y_out, x_in, L_frame * sizeof(Word16)); + + /* Update */ + s = sub(*old_e, *x_e); + IF (s > 0) + { + basop_memmove(old_y, &old_y[L_frame], (old_y_len - L_frame) * sizeof(Word16)); + + IF (sub(s, 15) > 0) + { + basop_memset(&old_y[old_y_len - L_frame], 0, (L_frame) * sizeof(Word16)); + + basop_memset(old_x, 0, (old_x_len) * sizeof(Word16)); + } + ELSE + { + FOR (i = 0; i < L_frame; i++) + { + old_y[i + old_y_len - L_frame] = shr(x_in[i], s); move16(); + } + FOR (i = 0; i < old_x_len; i++) + { + old_x[i] = shr(x_in[i + L_frame - old_x_len], s); move16(); + } + } + } + ELSE + { + IF (sub(s, -15) < 0) + { + basop_memset(old_y, 0, (old_y_len - L_frame) * sizeof(Word16)); + } + ELSE + { + FOR (i = 0; i < old_y_len - L_frame; i++) + { + old_y[i] = shl(old_y[i + L_frame], s); move16(); + } + } + + basop_memmove(&old_y[old_y_len - L_frame], x_in, (L_frame) * sizeof(Word16)); + + basop_memmove(old_x, &x_in[L_frame - old_x_len], (old_x_len) * sizeof(Word16)); + + *old_e = *x_e; move16(); + } + +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + if (bfi == 0 && sub(hrmode,1) == 0 && (sub(frame_dms,50) == 0 || sub(frame_dms,25) == 0)){ + pitch_delta = abs_s(add(sub(*old_pitch_int,pitch_int) , shr_pos(sub(*old_pitch_fr, pitch_fr),2))); //int_old -int_new + (fr_old-fr_new) / 4.0)); + tmp32 = BASOP_Util_Divide3216_Scale_lc3plus(pitch_delta, MAX(add(*old_pitch_int, shr_pos(*old_pitch_fr,2)), 1),&s0);// = pitch_delta *2^15 / MAX(pitch_fl_c_old, 1); + *rel_pitch_change = L_shl_pos(tmp32,s0+16); + } +#endif + + *old_pitch_int = pitch_int; move16(); + *old_pitch_fr = pitch_fr; move16(); + *old_gain = 0; move16(); + *mem_ltpf_active = 0; move16(); + } + ELSE + { + /* Input/Output buffers */ + x = old_x + old_x_len; + y = old_y + old_y_len; + +#ifdef ENABLE_HR_MODE + assert(fs_idx < 5 && "Ltpf not supported for 96kHz!\n"); +#endif + + N4 = ltpf_overlap_len[fs_idx]; move16(); + N34 = sub(L_frame, N4); move16(); + + /* Input */ + basop_memmove(x, x_in, (L_frame) * sizeof(Word16)); + + /* Scaling */ + s0 = sub(s_min(getScaleFactor16_0(old_x, old_x_len), getScaleFactor16_0(old_y, old_y_len)), 1); + *old_e = sub(*old_e, s0); move16(); + s1 = sub(getScaleFactor16(x, L_frame), 1); + *x_e = sub(*x_e, s1); move16(); + s = sub(*old_e, *x_e); + IF (s > 0) + { + Scale_sig(x, L_frame, sub(s1, s)); + Scale_sig(old_x, old_x_len, s0); + Scale_sig(old_y, old_y_len, s0); + *x_e = *old_e; move16(); + } + ELSE + { + Scale_sig(x, L_frame, s1); + Scale_sig(old_x, old_x_len, add(s0, s)); + Scale_sig(old_y, old_y_len, add(s0, s)); + *old_e = *x_e; move16(); + } + + /* Filtering */ + IF (ltpf_active == 0) + { + ltpf_synth_filter(y, x, N4, *old_pitch_int, *old_pitch_fr, *old_gain, *old_scale_fac_idx, fs_idx, + -1); + } + ELSE IF (*mem_ltpf_active == 0) + { + ltpf_synth_filter(y, x, N4, pitch_int, pitch_fr, gain, scale_fac_idx, fs_idx, 1); + } + ELSE IF (sub(pitch_int, *old_pitch_int) == 0 && sub(*old_pitch_fr, pitch_fr) == 0) + { + ltpf_synth_filter(y, x, N4, pitch_int, pitch_fr, gain, scale_fac_idx, fs_idx, 0); + } + ELSE + { + ltpf_synth_filter(y, x, N4, *old_pitch_int, *old_pitch_fr, *old_gain, *old_scale_fac_idx, fs_idx, + -1); + basop_memmove(z, y - tilt_filter_len[fs_idx], (N4 + tilt_filter_len[fs_idx]) * sizeof(Word16)); + ltpf_synth_filter(y, z + tilt_filter_len[fs_idx], N4, pitch_int, pitch_fr, gain, scale_fac_idx, + fs_idx, 1); + } + IF (ltpf_active > 0) + { + ltpf_synth_filter(y + N4, x + N4, N34, pitch_int, pitch_fr, gain, + scale_fac_idx, fs_idx, 0); + } + ELSE + { + basop_memmove(&y[N4], &x[N4], N34 * sizeof(Word16)); + } + + /* Output */ + basop_memmove(y_out, y, (L_frame) * sizeof(Word16)); + + /* Update */ + basop_memmove(old_x, &old_x[L_frame], (old_x_len) * sizeof(Word16)); + + basop_memmove(old_y, &old_y[L_frame], (old_y_len) * sizeof(Word16)); + + *old_pitch_int = pitch_int; move16(); + *old_pitch_fr = pitch_fr; move16(); + *old_gain = gain; move16(); + *mem_ltpf_active = ltpf_active; move16(); + } + + *old_scale_fac_idx = scale_fac_idx; move16(); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + + +static void ltpf_synth_filter(Word16 *synth_ltp, Word16 *synth, Word16 length, Word16 pitch_int, Word16 pitch_fr, + Word16 gain, Word16 scale_fac_idx, Word16 fs_idx, + Word16 fade /* 0=normal, +1=fade-in, -1=fade-out */) +{ + Word16 *x0; + Word16 *y0; + Word32 s; + Word16 alpha, step; + Word16 i, k; + Counter j, l; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("ltpf_synth_filter", sizeof(struct { + Word16 *x0; + Word16 *y0; + Word32 s; + Word16 alpha, step; + Word16 i, k; + Counter j, l; + })); +#endif + + ASSERT(scale_fac_idx >= 0); + + step = 0; /* initialize just to avoid compiler warning */ + alpha = 0; /* initialize just to avoid compiler warning */ + x0 = &synth_ltp[-pitch_int + inter_filter_shift[fs_idx]]; + y0 = synth; + + alpha = 0; move16(); + IF (fade != 0) + { + if (fade < 0) + { + alpha = 0x7FFF; move16(); + } + +/* step = 1.f/(float)(length); */ + if (sub(length, 20) == 0) + { + step = 1638 /*1.f/20.f Q15*/; move16(); + } + if (sub(length, 40) == 0) + { + step = 819 /*1.f/40.f Q15*/; move16(); + } + if (sub(length, 60) == 0) + { + step = 546 /*1.f/60.f Q15*/; move16(); + } + if (sub(length, 80) == 0) + { + step = 409 /*1.f/80.f Q15*/; move16(); + } + if (sub(length, 120) == 0) + { + step = 273 /*1.f/120.f Q15*/; move16(); + } + + if (fade < 0) + step = negate(step); + } + + FOR (j = 0; j < length; j++) + { + s = L_mult(x0[0], inter_filter[fs_idx][pitch_fr][0]); + FOR (l = 1; l < inter_filter_len[fs_idx]; l++) + { + s = L_mac(s, x0[-l], inter_filter[fs_idx][pitch_fr][l]); + } + FOR (l = 0; l < tilt_filter_len[fs_idx]; l++) + { + s = L_msu(s, y0[-l], tilt_filter[fs_idx][scale_fac_idx][l]); + } + + i = msu_r(s, y0[-l], tilt_filter[fs_idx][scale_fac_idx][l]); + + k = mult_r(gain, i); + + if (fade != 0) + k = mult_r(k, alpha); + + synth_ltp[j] = add(synth[j], k); move16(); + + if (fade != 0) + alpha = add(alpha, step); + + x0++; + y0++; + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + diff --git a/lib_lc3plus/makefile b/lib_lc3plus/makefile new file mode 100644 index 0000000000000000000000000000000000000000..d86232d67a1887e421f561810dab7e78d2436437 --- /dev/null +++ b/lib_lc3plus/makefile @@ -0,0 +1,180 @@ +#****************************************************************************** +# ETSI TS 103 634 V1.4.5 * +# Low Complexity Communication Codec Plus (LC3plus) * +# * +# Copyright licence is solely granted through ETSI Intellectual Property * +# Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +# estoppel or otherwise. * +#*****************************************************************************/ + +# Options +AFL = 0 +GCOV = 0 +NO_POST_REL_CHANGES_TEST = 0 +OPTIM = 0 +SUBSET = ALL +WMOPS = 1 +HR = 1 +CLANG = 0 +SHORT_PLC_FADEOUT = 0 + +# Paths +VPATH = . basic_op +BUILD = build +CC = gcc +LINK = $(CC) + +# Binary Name +NAME_LC3 = LC3plus +# Shared Library Name +LIB_LC3 = libLC3plus.so + +# Default tool settings +RM = rm -f + +ifndef VERBOSE +QUIET_CC = @echo ' ' Compiling $<; +QUIET_LINK= @echo ' ' Linking $@; +QUIET = @ +endif + +# C compiler flags +# Preprocessor(-I/-D) / Compiler / Linker flags +CPPFLAGS += -Ibasic_op -DSUBSET_$(SUBSET) +CFLAGS += -std=c99 -fPIC \ + -pedantic -Wcast-qual -Wall -W -Wextra -Wno-long-long \ + -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \ + -Werror-implicit-function-declaration + +ifneq "$(DEBUG)" "0" +CFLAGS += -g3 +LDFLAGS += -g3 +endif + +ifeq "$(HR)" "0" +CFLAGS += -DDISABLE_HR_MODE +endif + +ifeq "$(SHORT_PLC_FADEOUT)" "1" +CFLAGS += -DPLC_TUNING_SHORT_FADEOUT +endif + +# memory sanitizer, find use of uninitialized memory +ifeq "$(CLANG)" "1" + CC = clang + CFLAGS += -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer + LDFLAGS += -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer + OPTIM = 2 +endif + +# address sanitizer, find buffer overflows +ifeq "$(CLANG)" "2" + CC = clang + CFLAGS += -fsanitize=address -fno-omit-frame-pointer + LDFLAGS += -fsanitize=address -fno-omit-frame-pointer + OPTIM = 2 +endif + +# undefined behavior sanitizer, find bugs like integer overflows +ifeq "$(CLANG)" "3" + CC = clang + CFLAGS += -fsanitize=undefined + LDFLAGS += -fsanitize=undefined + OPTIM = 2 +endif + +LDFLAGS += -lm + +DEPFLAGS = -MT $@ -MMD -MP -MF $(BUILD)/$*.Td + +ifeq "$(GCOV)" "1" +CFLAGS += -fprofile-arcs -ftest-coverage +LDFLAGS += -fprofile-arcs -ftest-coverage +endif + +OPTIM ?= 0 +CFLAGS += -O$(OPTIM) + +CFLAGS += $(foreach DIR,$(SRC_DIRS),-I$(DIR)) + +ifeq "$(NO_POST_REL_CHANGES_TEST)" "1" +CFLAGS += -DNO_POST_REL_CHANGES +endif + +# disable wmops instrumentation +ifeq "$(WMOPS)" "0" + CPPFLAGS += -DWMOPS=0 -DDONT_COUNT_MEM +endif + +# dependency magic +CC_FLAGS = '$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)' +POSTCOMPILE = mv -f $(BUILD)/$*.Td $(BUILD)/$*.d && touch $@ + +############################################################################### + +SRCS := $(notdir $(foreach DIR, $(VPATH), $(wildcard $(DIR)/*.c))) + +EXCL := ccConvert.c +SRCS := $(notdir $(foreach DIR, $(VPATH), $(wildcard $(DIR)/*.c))) +SRCS := $(filter-out $(EXCL), $(SRCS)) + +EXCL_CCC := $(BUILD)/codec_exe.o +OBJS_CCC_UNF := $(addprefix $(BUILD)/, $(SRCS:.c=.o)) +OBJS_CCC := $(filter-out $(EXCL_CCC), $(OBJS_CCC_UNF)) + +OBJS := $(addprefix $(BUILD)/, $(SRCS:.c=.o)) + +LIBSRCS := $(filter-out $(DIR)/ccConvert.c $(DIR)/codec_exe.c, $(SRCS)) +LIBOBJS := $(addprefix $(BUILD)/, $(LIBSRCS:.c=.o)) + +############################################################################### + +.PHONY: all clean help force + +all: $(NAME_LC3) + +help: + @echo 'Targets:' + @echo ' $(NAME_LC3) (default)' + @echo ' $(LIB_LC3)' + @echo ' ccConvert' + @echo 'Syntax: make [OPTION=VALUE ...]' + @echo 'Build options:' + @echo ' NO_POST_REL_CHANGES_TEST $(NO_POST_REL_CHANGES_TEST) [0,1]' + @echo ' OPTIM $(OPTIM) [0-3]' + @echo ' SUBSET $(SUBSET) [NB,WB,SSWB,SWB,FB,UB,ALL]' + @echo ' WMOPS $(WMOPS) [0,1]' + @echo ' SHORT_PLC_FADEOUT $(SHORT_PLC_FADEOUT) [0,1]' + @echo 'Debug options:' + @echo ' AFL $(AFL) [0,1]' + @echo ' CLANG $(CLANG) [0-3]' + @echo ' GCOV $(GCOV) [0,1]' + +$(NAME_LC3): $(OBJS) + @echo 'Linking' $@ + $(QUIET) $(LINK) $(OBJS) -o $@ $(LDFLAGS) + +$(LIB_LC3): $(LIBOBJS) + @echo 'Linking' $@ + $(QUIET) $(LINK) --shared $(OBJS) -o $@ $(LDFLAGS) + +ccConvert: $(BUILD)/ccConvert.o $(OBJS_CCC) + @echo 'Linking' $@ + $(QUIET) $(LINK) $? -o $@ $(LDFLAGS) + +clean: + $(QUIET) rm -rf $(NAME_LC3) $(LIB_LC3) $(BUILD) ccConvert + +$(BUILD)/%.o : %.c $(BUILD)/cc_flags + @echo 'Compiling' $< + $(QUIET) $(CC) $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + $(QUIET) $(POSTCOMPILE) + +# force rebuild if compilation flags changed +$(BUILD)/cc_flags: force + $(QUIET) mkdir -p $(BUILD) + $(QUIET) echo $(CC_FLAGS) | cmp -s - $@ || echo $(CC_FLAGS) > $@ + +# force rebuild if include dependency changed +$(BUILD)/%.d: ; +include $(wildcard $(patsubst %, $(BUILD)/%.d, $(basename $(SRCS)))) diff --git a/lib_lc3plus/mdct_fx.c b/lib_lc3plus/mdct_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..9e9157204f6addd73df699cc858668a778ef8e0f --- /dev/null +++ b/lib_lc3plus/mdct_fx.c @@ -0,0 +1,223 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +/* Union holding buffers to conserve stack memory. */ + +void processMdct_fx( +#ifdef ENABLE_HR_MODE + Word32 x[], /* i: time input signal */ +#else + Word16 x[], /* i: time input signal */ +#endif + Word16 x_exp, Word16 N, /* i: block size N */ +#ifdef CR8_F_ADAPT_MDCT_DCT_PRECISION +# ifdef ENABLE_HR_MODE + Word16 hrmode, /* i: indicate high precision */ +# endif +#endif +#ifdef ENABLE_HR_MODE + const Word32 w[], /* i: window coefficients including normalization of sqrt(2/N) and scaled by 2^4 */ +#else + const Word16 w[], /* i: window coefficients including normalization of sqrt(2/N) and scaled by 2^4 */ +#endif + Word16 wLen, /* i: window length */ +#ifdef ENABLE_HR_MODE + Word32 mem[], /* i/o: last block of input samples */ +#else + Word16 mem[], /* i/o: last block of input samples */ +#endif + Word16 memLen, /* i: length of last sample block */ + Word32 y[], /* o: spectral data */ + Word16 * y_e, /* o: spectal data exponent */ + Word8 * scratchBuffer) +{ + Counter i; + Word16 z, s, m; +#ifdef ENABLE_HR_MODE + Word32 *buf; +#else + Word16 *buf; +#endif + Word32 *workBuffer; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processMdct_fx", sizeof(struct { + Counter i; + Word16 z, s, m; + Word16 *buf; + Word32 *workBuffer; + })); +#endif + + /* Buffers overlap since they are not used at the same time */ +#ifdef ENABLE_HR_MODE + buf = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * MAX_LEN */ +#else + buf = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * MAX_LEN */ +#endif + workBuffer = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 4 * MAX_LEN */ + + /* Init (constant per sample rate) */ + z = (N << 1) - wLen; /* number of leading zeros in window */ + m = N >> 1; /* half block size */ + +#ifdef ENABLE_HR_MODE + basop_memmove(buf, mem, memLen * sizeof(Word32)); + + basop_memmove(&buf[memLen], x, (N - memLen) * sizeof(Word32)); + + basop_memmove(mem, &x[N - memLen], memLen * sizeof(Word32)); +#else + basop_memmove(buf, mem, memLen * sizeof(Word16)); + + basop_memmove(&buf[memLen], x, (N - memLen) * sizeof(Word16)); + + basop_memmove(mem, &x[N - memLen], memLen * sizeof(Word16)); +#endif + +#ifdef CR8_F_ADAPT_MDCT_DCT_PRECISION + +# ifdef ENABLE_HR_MODE + if (hrmode) + { + FOR (i = 0; i < m; i++) + { + y[m + i] = Msu_32_32_0(Mpy_32_32_0(w[i], buf[i]), w[2 * m - 1 - i], buf[2 * m - 1 - i]); move32(); + } + + FOR (i = 0; i < z; i++) + { + y[m - 1 - i] = Mpy_32_32_0(w[2 * m + i], x[2 * m - memLen + i]); move32(); + } + + FOR (i = i; i < m; i++) + { + y[m - 1 - i] = Mac_32_32_0(Mpy_32_32_0(w[2 * m + i], x[2 * m - memLen + i]), w[4 * m - 1 - i], x[4 * m - memLen - 1 - i]); move32(); + } + } else { +# ifdef CR9_B_FIX_MDCT_OVERFLOW + FOR (i = 0; i < m; i++) + { + y[m + i] = L_msu0(L_mult0(round_fx_sat(buf[i]), round_fx(w[i])), round_fx_sat(buf[2 * m - 1 - i]), round_fx(w[2 * m - 1 - i])); move32(); + } + + FOR (i = 0; i < z; i++) + { + y[m - 1 - i] = L_mult0(round_fx_sat(x[2 * m - memLen + i]), round_fx(w[2 * m + i])); move32(); + } + + FOR (i = i; i < m; i++) + { + y[m - 1 - i] = L_mac0(L_mult0(round_fx_sat(x[2 * m - memLen + i]), round_fx(w[2 * m + i])), round_fx_sat(x[4 * m - memLen - 1 - i]), + round_fx(w[4 * m - 1 - i])); move32(); + } +# else /* CR9_B_FIX_MDCT_OVERFLOW */ + FOR (i = 0; i < m; i++) + { + y[m + i] = L_msu0(L_mult0(round_fx(buf[i]), round_fx(w[i])), round_fx(buf[2 * m - 1 - i]), round_fx(w[2 * m - 1 - i])); move32(); + } + + FOR (i = 0; i < z; i++) + { + y[m - 1 - i] = L_mult0(round_fx(x[2 * m - memLen + i]), round_fx(w[2 * m + i])); move32(); + } + + FOR (i = i; i < m; i++) + { + y[m - 1 - i] = L_mac0(L_mult0(round_fx(x[2 * m - memLen + i]), round_fx(w[2 * m + i])), round_fx(x[4 * m - memLen - 1 - i]), + round_fx(w[4 * m - 1 - i])); move32(); + } +# endif /* CR9_B_FIX_MDCT_OVERFLOW */ + } +# else + /* regular resolution only */ + FOR (i = 0; i < m; i++) + { + y[m + i] = L_msu0(L_mult0(buf[i], w[i]), buf[2 * m - 1 - i], w[2 * m - 1 - i]); move32(); + } + + FOR (i = 0; i < z; i++) + { + y[m - 1 - i] = L_mult0(x[2 * m - memLen + i], w[2 * m + i]); move32(); + } + + FOR (i = i; i < m; i++) + { + y[m - 1 - i] = L_mac0(L_mult0(x[2 * m - memLen + i], w[2 * m + i]), x[4 * m - memLen - 1 - i], + w[4 * m - 1 - i]); move32(); + } +# endif + +#else /* CR8_F_ADAPT_MDCT_DCT_PRECISION */ + + FOR (i = 0; i < m; i++) + { +# ifdef ENABLE_HR_MODE + y[m + i] = Msu_32_32_0(Mpy_32_32_0(w[i], buf[i]), w[2 * m - 1 - i], buf[2 * m - 1 - i]); move32(); +# else + y[m + i] = L_msu0(L_mult0(buf[i], w[i]), buf[2 * m - 1 - i], w[2 * m - 1 - i]); move32(); +# endif + } + + FOR (i = 0; i < z; i++) + { +# ifdef ENABLE_HR_MODE + y[m - 1 - i] = Mpy_32_32_0(w[2 * m + i], x[2 * m - memLen + i]); move32(); +# else + y[m - 1 - i] = L_mult0(x[2 * m - memLen + i], w[2 * m + i]); move32(); +# endif + } + + FOR (i = i; i < m; i++) + { +# ifdef ENABLE_HR_MODE + y[m - 1 - i] = Mac_32_32_0(Mpy_32_32_0(w[2 * m + i], x[2 * m - memLen + i]), w[4 * m - 1 - i], x[4 * m - memLen - 1 - i]); move32(); +# else + y[m - 1 - i] = L_mac0(L_mult0(x[2 * m - memLen + i], w[2 * m + i]), x[4 * m - memLen - 1 - i], + w[4 * m - 1 - i]); move32(); +# endif + } + +#endif /* CR8_F_ADAPT_MDCT_DCT_PRECISION */ + + s = s_max(0, getScaleFactor32_lc3plus(y, N)); + FOR (i = 0; i < N; i++) + { + y[i] = L_shl(y[i], s); move32(); + } + + *y_e = sub(sub(x_exp, 2), s); + + /* N=20 only for 2.5ms possible */ + /* maybe implement this a pre init of shift */ + if (sub(N, 20) <= 0) + { + *y_e = add(*y_e, 2); + } + else if (sub(N, 120) <= 0) + { + *y_e = add(*y_e, 1); + } +#ifdef ENABLE_HR_MODE + dct_IV(y, y_e, N, +# ifdef CR8_F_ADAPT_MDCT_DCT_PRECISION + hrmode, +# endif + workBuffer); +#else + dct_IV(y, y_e, N, workBuffer); +#endif + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + diff --git a/lib_lc3plus/mdct_shaping_fx.c b/lib_lc3plus/mdct_shaping_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..3b36265fd4132cf28c7967e31b63e30b188408dc --- /dev/null +++ b/lib_lc3plus/mdct_shaping_fx.c @@ -0,0 +1,74 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +void processMdctShaping_fx(Word32 x[], +#ifdef ENABLE_HR_MODE + Word32 scf[], +#else + Word16 scf[], +#endif + Word16 scf_exp[], const Word16 bands_offset[], Word16 fdns_npts) +{ + Counter i, j; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processMdctShaping_fx", sizeof(struct { Counter i, j; })); +#endif + + j = 0; move16(); + FOR (i = 0; i < fdns_npts; i++) + { + FOR (; j < bands_offset[i + 1]; j++) + { +#ifdef ENABLE_HR_MODE + x[j] = L_shl(Mpy_32_32_lc3plus(x[j], scf[i]), scf_exp[i]); move32(); +#else + x[j] = L_shl(Mpy_32_16_lc3plus(x[j], scf[i]), scf_exp[i]); move32(); +#endif + } + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + + +void processScfScaling(Word16 scf_exp[], Word16 fdns_npts, Word16 *x_e) +{ + Counter i; + Word16 scf_exp_max; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processLpcGainScaling", sizeof(struct { + Counter i; + Word16 scf_exp_max; + })); +#endif + + scf_exp_max = scf_exp[0]; move16(); + + FOR (i = 1; i < fdns_npts; i++) + { + scf_exp_max = s_max(scf_exp_max, scf_exp[i]); + } + + FOR (i = 0; i < fdns_npts; i++) + { + scf_exp[i] = sub(scf_exp[i], scf_exp_max); move16(); + } + + *x_e = add(*x_e, scf_exp_max); move16(); +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + diff --git a/lib_lc3plus/near_nyquist_detector_fx.c b/lib_lc3plus/near_nyquist_detector_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..8ae29cbb84a72388e35216449857c0f300bea57b --- /dev/null +++ b/lib_lc3plus/near_nyquist_detector_fx.c @@ -0,0 +1,141 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +void processNearNyquistdetector_fx(Word16 *near_nyquist_flag, const Word16 fs_idx, const Word16 near_nyquist_index, + const Word16 bands_number, const Word32 *ener_fx, const Word16 ener_fx_exp +#ifdef CR8_E_TONE_DETECTOR +#ifdef ENABLE_HR_MODE + ,Word16 frame_dms, Word16 hrmode) +#else + ) +#endif +#else + ) +#endif +{ + *near_nyquist_flag = 0; +#ifdef CR8_E_TONE_DETECTOR +#ifdef ENABLE_HR_MODE + IF (hrmode == 0){ +#endif +#endif + IF (sub(fs_idx, 4) < 0) + { + Dyn_Mem_Deluxe_In( + Word16 i; + Word16 nrg_above_thresh; + Word16 ener_low_exp; + Word16 ener_high_exp; + Word16 comp_energy_exp; + Word32 comp_energy; + Word32 ener_low; + Word32 ener_high; + ); + + ener_low = 0; move32(); + ener_low_exp = 0; move16(); + FOR (i = 0; i < near_nyquist_index; i++) + { + ener_low = BASOP_Util_Add_Mant32Exp_lc3plus(ener_fx[i], ener_fx_exp, ener_low, ener_low_exp, &ener_low_exp); + } + + ener_high = 0; move32(); + ener_high_exp = 0; move16(); + FOR (i = near_nyquist_index; i < bands_number; i++) + { + ener_high = BASOP_Util_Add_Mant32Exp_lc3plus(ener_fx[i], ener_fx_exp, ener_high, ener_high_exp, &ener_high_exp); + } + + comp_energy = Mpy_32_16_lc3plus(ener_low, NN_thresh); /* Mpy_32_16_lc3plus -> 32Q15 */ + comp_energy_exp = add(add(ener_low_exp, NN_thresh_exp),15); + + nrg_above_thresh = BASOP_Util_Cmp_Mant32Exp_lc3plus(ener_high, ener_high_exp, comp_energy, comp_energy_exp); /* 1 if firstNumber > secondNumber */ + + if (sub(nrg_above_thresh, 1) == 0) + { + *near_nyquist_flag = 1; + } + + Dyn_Mem_Deluxe_Out(); + } +#ifdef CR8_E_TONE_DETECTOR +#ifdef ENABLE_HR_MODE + } + ELSE // hrmode == 1 + { + // inverse spectral flatness = mean(energy) ./ 2^(mean(log2(energy))); + Word32 td_thresh; + + SWITCH (frame_dms) + { + case 25: + td_thresh = TD_HR_thresh_2_5ms; + BREAK; + case 50: + td_thresh = TD_HR_thresh_5ms; + BREAK; + #ifdef ENABLE_075_DMS_MODE + case 75: + td_thresh = TD_HR_thresh_7_5ms; + BREAK; + #endif + default: /* 100 */ + td_thresh = TD_HR_thresh_10ms; + BREAK; + } + + Word16 mean_ener_exp = 0; + + Word32 sum_ener = 0; move32(); + Word16 sum_ener_exp = 0; move16(); + FOR (Word16 i = 0; i < bands_number; i++) + { + sum_ener = BASOP_Util_Add_Mant32Exp_lc3plus(ener_fx[i], ener_fx_exp, sum_ener, sum_ener_exp, &sum_ener_exp); + } + + Word16 denom = sub(14,norm_s(bands_number)); + IF (sub(frame_dms, 50) == 0){ + denom = sub(15,norm_s(bands_number)); move16(); + } + + Word32 mean_ener = L_shr(sum_ener, denom); move32(); // = sum_ener / bands_number + mean_ener_exp = sum_ener_exp; move16(); + + Word32 sum_ener_log2 = 0;move32(); + Word16 sum_ener_log2_exp = 0;move16(); + Word32 mean_ener_log2 = 0;move32(); + + FOR (Word16 i = 0; i < bands_number; i++) + { + IF (ener_fx[i] != 0) { + Word32 log2Value = L_add(BASOP_Util_Log2_lc3plus(ener_fx[i]), L_shl_pos(L_deposit_l(ener_fx_exp), 25)); + /* input argument is in Q7.25 , returns pow(2,(x/64) + floatingpoint value log2_fl = log2Value/pow(2,31-6) */ + sum_ener_log2 = BASOP_Util_Add_Mant32Exp_lc3plus(log2Value, 6, sum_ener_log2, sum_ener_log2_exp, &sum_ener_log2_exp); move32(); + } + } + mean_ener_log2 = L_shr(sum_ener_log2, denom); move32(); //mean_ener_log2 = sum_ener_log2 / bands_number + Word16 mean_ener_log2_exp = sum_ener_log2_exp; + Word32 mean_ener_log2_fl = L_shr_pos(mean_ener_log2 ,s_min(31, sub(31,mean_ener_log2_exp))); //mean_ener_log2_fl = mean_ener_log2 / 2^(31-mean_ener_log2_exp) + Word32 inv_flatness = 0; + if (L_sub(norm_l(mean_ener),sub(sub(mean_ener_exp,31),mean_ener_log2_fl)) < 0 ) { + inv_flatness = maxWord32; + } + else { + inv_flatness = L_shl(mean_ener, s_max(-31,sub(sub(mean_ener_exp,31),mean_ener_log2_fl))); + } + IF (L_sub(inv_flatness, td_thresh) > 0) { + *near_nyquist_flag = 1; move16(); + } + } + #endif // ENABLE_HR_MODE +#endif // CR8_E_TONE_DETECTOR +} diff --git a/lib_lc3plus/noise_factor_fx.c b/lib_lc3plus/noise_factor_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..75ffb5fac3294e2c1dfa5be1a19588f1ddf88c3b --- /dev/null +++ b/lib_lc3plus/noise_factor_fx.c @@ -0,0 +1,252 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + + +void processNoiseFactor_fx(Word16 *fac_ns_idx, Word16 x_e, Word32 x[], +# ifdef ENABLE_HR_MODE + Word32 xq[], +# else + Word16 xq[], +# endif + Word16 gg, Word16 gg_e, Word16 BW_cutoff_idx, Word16 frame_dms, Word16 target_bytes, + Word8 *scratchBuffer +# ifdef ENABLE_HR_MODE + ,Word16 hrmode +# endif +) +{ + Dyn_Mem_Deluxe_In(Counter k; Word16 nzeros, s1, s2, s3, c, idx, fac_unq, *ind; + Word16 noisefillwidth, noisefillstart, N; Word32 Lsum;); + + + + ind = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * MAX_LEN bytes */ + + noisefillwidth = 0; + noisefillstart = 0; + c = 0; + move16(); + +#ifdef ENABLE_HR_MODE + if (hrmode) + { + N = BW_cutoff_bin_all_HR[BW_cutoff_idx]; + move16(); + } + else +#endif + { + N = BW_cutoff_bin_all[BW_cutoff_idx]; + move16(); + } + + SWITCH (frame_dms) + { + case 25: + N = shr_pos(N, 2); + noisefillwidth = NOISEFILLWIDTH_2_5MS; + noisefillstart = NOISEFILLSTART_2_5MS; + BREAK; + case 50: + N = shr_pos(N, 1); + noisefillwidth = NOISEFILLWIDTH_5MS; + noisefillstart = NOISEFILLSTART_5MS; + BREAK; +#ifdef CR8_G_ADD_75MS + case 75: + N = add(shr_pos(N, 2), add(shr_pos(N, 2), shr_pos(N, 2))); + noisefillwidth = NOISEFILLWIDTH_7_5MS; + noisefillstart = NOISEFILLSTART_7_5MS; + BREAK; +# endif + case 100: + noisefillwidth = NOISEFILLWIDTH; + noisefillstart = NOISEFILLSTART; + BREAK; + } + + nzeros = -2 * noisefillwidth - 1; + move16(); + + FOR (k = noisefillstart - noisefillwidth; k < noisefillstart + noisefillwidth; k++) + { + if (xq[k] != 0) + { + nzeros = -2 * noisefillwidth - 1; + move16(); + } + if (xq[k] == 0) + { + nzeros = add(nzeros, 1); + } + } + + FOR (k = noisefillstart; k < N - noisefillwidth; k++) + { + if (xq[k + noisefillwidth] != 0) + { + nzeros = -2 * noisefillwidth - 1; + move16(); + } + if (xq[k + noisefillwidth] == 0) + { + nzeros = add(nzeros, 1); + } + if (nzeros >= 0) + { + ind[c++] = k; + move16(); + } + } + + FOR (k = N - noisefillwidth; k < N; k++) + { + nzeros = add(nzeros, 1); + if (nzeros >= 0) + { + ind[c++] = k; + move16(); + } + } + + IF (c == 0) + { + fac_unq = 0; + move16(); + } + ELSE + { + + IF (target_bytes <= 20 && frame_dms == 100) + { + Word32 ind_sum; + Word16 mean_ind; + + Word16 fac_unq1, fac_unq2; + + /* calculate mean index */ + ind_sum = ind[0]; + move32(); + FOR (k = 1; k < c; k++) + { + ind_sum = L_add(ind_sum, ind[k]); + } + + mean_ind = BASOP_Util_Divide3216_Scale_lc3plus(ind_sum, c, &s2); + mean_ind = shl(mean_ind, s2 + 1); + + assert(0 <= mean_ind && mean_ind <= ind[c - 1]); + + /* calculate noise filling gain for low frequencies */ + s2 = 0; move16(); + if (sub(mean_ind, ind[0]) > 0) + { + /* calculate scale to ensure that Lsum does not overflow */ + s2 = s_max(sub(sub(14, norm_s(c)), getScaleFactor32_lc3plus(&x[ind[0]], sub(mean_ind, ind[0]))), 0); + } + Lsum = L_shr_pos_pos(L_abs(x[ind[0]]), s2); + + FOR (k = 1; k < c && ind[k] <= mean_ind; k++) + { + /* scale before adding to Lsum */ + Lsum = L_add(Lsum, L_shr_pos_pos(L_abs(x[ind[k]]), s2)); + } + fac_unq1 = BASOP_Util_Divide3216_Scale_lc3plus(Lsum, k, &s1); + /* add scale applied during summing */ + s1 = add(s1, s2); + fac_unq1 = BASOP_Util_Divide1616_Scale_lc3plus(fac_unq1, gg, &s2); + s3 = sub(15, add(x_e, add(s1, sub(s2, gg_e)))); + s2 = norm_s(fac_unq1); + test(); + IF (fac_unq1 != 0 && add(s3, s2) < 0) + { + fac_unq1 = MAX_16; + move16(); + } + ELSE + { + s3 = s_min(s_max(s3, -15), 15); + fac_unq1 = shr_r(fac_unq1, s3); + } + + /* calculate noise filling gain for high frequencies */ + Lsum = 0; + move16(); + idx = sub(c, k); + FOR (; k < c; k++) + { + Lsum = L_add(Lsum, L_abs(x[ind[k]])); + } + fac_unq2 = BASOP_Util_Divide3216_Scale_lc3plus(Lsum, idx, &s1); + fac_unq2 = BASOP_Util_Divide1616_Scale_lc3plus(fac_unq2, gg, &s2); + s3 = sub(15, add(x_e, add(s1, sub(s2, gg_e)))); + s2 = norm_s(fac_unq1); + test(); + IF (fac_unq2 != 0 && add(s3, s2) < 0) + { + fac_unq2 = MAX_16; + move16(); + } + ELSE + { + s3 = s_min(s_max(s3, -15), 15); + fac_unq2 = shr_r(fac_unq2, s3); + } + + /* calculate noise filling gain as minimum over high and low frequencies */ + fac_unq = s_min(fac_unq1, fac_unq2); + } + ELSE + { + /* calculate scale to ensure that Lsum does not overflow */ + s2 = s_max(sub(sub(14, norm_s(c)), getScaleFactor32_lc3plus(&x[ind[0]], sub(N,ind[0]))), 0); + Lsum = L_abs(x[ind[0]]); + FOR (k = 1; k < c; k++) + { + /* scale before adding to Lsum */ + Lsum = L_add(Lsum, L_shr_pos_pos(L_abs(x[ind[k]]), s2)); + } + fac_unq = BASOP_Util_Divide3216_Scale_lc3plus(Lsum, c, &s1); + /* add scale applied during summing */ + s1 = add(s1, s2); + fac_unq = BASOP_Util_Divide1616_Scale_lc3plus(fac_unq, gg, &s2); + s3 = sub(15, add(x_e, add(s1, sub(s2, gg_e)))); + s2 = norm_s(fac_unq); + test(); + IF (fac_unq != 0 && add(s3, s2) < 0) + { + fac_unq = MAX_16; + move16(); + } + ELSE + { + fac_unq = shr_r(fac_unq, s_max(s_min(s3, 15), -15)); + } + } + } + + idx = round_fx(L_sub(0x80000, L_mult(fac_unq, 16))); + if (sub(idx, 7) > 0) + { + idx = 7; + move16(); + } + if (idx < 0) + { + idx = 0; + move16(); + } + *fac_ns_idx = idx; + move16(); + + Dyn_Mem_Deluxe_Out(); +} + diff --git a/lib_lc3plus/noise_filling_fx.c b/lib_lc3plus/noise_filling_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..9da870553279a9ce8ce82c47a53780270b7d3313 --- /dev/null +++ b/lib_lc3plus/noise_filling_fx.c @@ -0,0 +1,149 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +/*************************************************************************/ + + + +void processNoiseFilling_fx(Word32 xq[], Word16 nfseed, Word16 xq_e, Word16 fac_ns_idx, Word16 BW_cutoff_idx, + Word16 frame_dms, Word16 fac_ns_pc, Word16 spec_inv_idx, Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +) +{ + Dyn_Mem_Deluxe_In( + Counter k; + Word16 nzeros, fac_ns, *ind, c; + Word16 noisefillwidth, noisefillstart, N; + Word32 L_tmp, L_tmp_neg, L_tmp_pc, L_tmp_neg_pc; + ); + + ind = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * MAX_LEN bytes */ + + c = 0; move16(); + +#ifdef ENABLE_HR_MODE + if (hrmode == 1) + { + N = BW_cutoff_bin_all_HR[BW_cutoff_idx]; + move16(); + } + else +#endif + { + N = BW_cutoff_bin_all[BW_cutoff_idx]; + move16(); + } + + SWITCH (frame_dms) + { + case 25: + N = shr_pos(N, 2); + noisefillwidth = NOISEFILLWIDTH_2_5MS; + noisefillstart = NOISEFILLSTART_2_5MS; + BREAK; + case 50: + N = shr_pos(N, 1); + noisefillwidth = NOISEFILLWIDTH_5MS; + noisefillstart = NOISEFILLSTART_5MS; + BREAK; +#ifdef CR8_G_ADD_75MS + case 75: + N = add(shr_pos(N, 2), add(shr_pos(N, 2), shr_pos(N, 2))); + noisefillwidth = NOISEFILLWIDTH_7_5MS; + noisefillstart = NOISEFILLSTART_7_5MS; + BREAK; +#endif + default: /* 100 */ + noisefillwidth = NOISEFILLWIDTH; + noisefillstart = NOISEFILLSTART; + BREAK; + } + + nzeros = -2 * noisefillwidth - 1; move16(); + + FOR (k = noisefillstart - noisefillwidth; k < noisefillstart + noisefillwidth; k++) + { + if (xq[k] != 0) + { + nzeros = -2 * noisefillwidth - 1; move16(); + } + if (xq[k] == 0) + { + nzeros = add(nzeros, 1); + } + } + + FOR (k = noisefillstart; k < N - noisefillwidth; k++) + { + if (xq[k + noisefillwidth] != 0) + { + nzeros = -2 * noisefillwidth - 1; move16(); + } + if (xq[k + noisefillwidth] == 0) + { + nzeros = add(nzeros, 1); + } + if (nzeros >= 0) + { + ind[c++] = k; move16(); + } + } + + FOR (k = N - noisefillwidth; k < N; k++) + { + nzeros = add(nzeros, 1); + if (nzeros >= 0) + { + ind[c++] = k; move16(); + } + } + + IF (c > 0) + { + fac_ns = shl_pos(sub(8, fac_ns_idx), 11); + L_tmp = L_shr_sat(L_deposit_l(fac_ns), sub(xq_e, 16)); + L_tmp_neg = L_negate(L_tmp); + L_tmp_pc = L_shr_sat(L_deposit_l(fac_ns_pc), sub(xq_e, 16)); + L_tmp_neg_pc = L_negate(L_tmp_pc); + + FOR (k = 0; k < c; k++) + { + nfseed = extract_l(L_mac0(13849, nfseed, 31821)); + IF (nfseed >= 0) + { + IF (ind[k] < spec_inv_idx) + { + xq[ind[k]] = L_tmp; move32(); + } + ELSE + { + xq[ind[k]] = L_tmp_pc; move32(); + } + } + IF (nfseed < 0) + { + IF (ind[k] < spec_inv_idx) + { + xq[ind[k]] = L_tmp_neg; move32(); + } + ELSE + { + xq[ind[k]] = L_tmp_neg_pc; move32(); + } + } + } + } + + Dyn_Mem_Deluxe_Out(); +} + diff --git a/lib_lc3plus/olpa_fx.c b/lib_lc3plus/olpa_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..a93a0ba250b8efc478e047c0384e3045c0f2594b --- /dev/null +++ b/lib_lc3plus/olpa_fx.c @@ -0,0 +1,289 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +/*************************************************************************/ + + +void process_olpa_fx(Word16 *mem_s6k4_exp, Word16 mem_s12k8[], Word16 mem_s6k4[], Word16 *pitch, Word16 *s12k8, + Word16 len, Word16 *normcorr, Word16 *mem_pitch, +#ifdef CR9_F_PITCH_WIN_LEN_FIX + Word16 *pitch_flag, +#endif + Word16 s12k8_exp, Word16 frame_dms, Word8 *scratchBuffer) +{ + Word32 sum, sum0, sum1, sum2, prod, inv; + Word16 shift, s6k4_exp, prod_exp, min_pitch, max_pitch; + Word16 scale0, scale1, scale2, pitch2, normcorr2, len2, acflen, mem_in_len; + Word32 max32; + Word32 *ac; + Word16 *s6k4; + Counter n; + + Counter m; + Word32 L_tmp, L_tmp2; + + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("process_olpa_fx", sizeof(struct { + Word32 sum, sum0, sum1, sum2, prod, inv; + Word16 shift, s6k4_exp, prod_exp, min_pitch, max_pitch; + Word16 scale0, scale1, scale2, pitch2, normcorr2, len2, acflen, mem_in_len; + Word32 max32; + Word32 *ac; + Word16 *s6k4; + Counter n; + Word32 sums[3]; + Counter m; + Word32 L_tmp, L_tmp2; + })); +#endif + + /* Buffer alignment */ + ac = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 4 * RANGE_PITCH_6K4 = 392 bytes */ + + /* Downsample input signal by a factor of 2 (12.8kHz -> 6.4kHz) */ + mem_in_len = MAX_PITCH_6K4; move16(); + len2 = shr(len, 1); + acflen = len2; move16(); + +#ifdef CR9_F_PITCH_WIN_LEN_FIX + SWITCH(frame_dms) + { + case 50: + mem_in_len = add(mem_in_len, 32); + acflen = add(acflen, 32); + break; + + case 25: + mem_in_len = add(mem_in_len, 48); + acflen = add(acflen, 48); + break; + } +#endif + +#ifndef CR9_F_PITCH_WIN_LEN_FIX + IF (sub(frame_dms, 25) == 0) + { + mem_in_len = add(mem_in_len, 16); + acflen = add(acflen, 16); + } +#endif + + s6k4 = mem_s6k4 + mem_in_len; + sum = L_mac(L_mac(L_mult(mem_s12k8[0], 4053), mem_s12k8[1], 7712), mem_s12k8[2], 9239); + *s6k4++ = round_fx(L_mac_sat(L_mac(sum, s12k8[0], 7712), s12k8[1], 4053)); move16(); + sum = L_mac(L_mac(L_mult(mem_s12k8[2], 4053), s12k8[0], 7712), s12k8[1], 9239); + *s6k4++ = round_fx(L_mac_sat(L_mac(sum, s12k8[2], 7712), s12k8[3], 4053)); move16(); + + FOR (n = 5; n < len; n += 2) + { + sum = L_mac(L_mac(L_mult(s12k8[n - 4], 4053), s12k8[n - 3], 7712), s12k8[n - 2], 9239); + *s6k4++ = round_fx_sat(L_mac_sat(L_mac(sum, s12k8[n - 1], 7712), s12k8[n], 4053)); move16(); + } + + mem_s12k8[0] = s12k8[len - 3]; move16(); + mem_s12k8[1] = s12k8[len - 2]; move16(); + mem_s12k8[2] = s12k8[len - 1]; move16(); + + /* Scale downsampled signal */ + s6k4 = mem_s6k4 + mem_in_len; + scale0 = sub(getScaleFactor16_0(mem_s6k4, mem_in_len), 3); + *mem_s6k4_exp = sub(*mem_s6k4_exp, scale0); move16(); + scale1 = sub(getScaleFactor16_0(s6k4, len2), 3); + s6k4_exp = sub(s12k8_exp, scale1); + scale2 = sub(*mem_s6k4_exp, s6k4_exp); + IF (scale2 > 0) + { + Scale_sig(s6k4, len2, sub(scale1, scale2)); + shift = scale0; move16(); + s6k4_exp = *mem_s6k4_exp; move16(); + } + ELSE + { + Scale_sig(s6k4, len2, scale1); + shift = add(scale0, scale2); + *mem_s6k4_exp = s6k4_exp; move16(); + } +#ifdef CR9_F_PITCH_WIN_LEN_FIX + SWITCH(frame_dms) + { + case 50: + s6k4 = s6k4 - 32; + break; + + case 25: + s6k4 = s6k4 - 48; + break; + } +#endif + +#ifndef CR9_F_PITCH_WIN_LEN_FIX + if (sub(frame_dms, 25) == 0) + { + s6k4 = s6k4 - 16; + } +#endif + Scale_sig(mem_s6k4, mem_in_len, shift); + + /* Compute autocorrelation */ + FOR (n = MIN_PITCH_6K4; n <= MAX_PITCH_6K4; n++) + { + sum = L_mult0(s6k4[0], s6k4[0 - n]); + FOR (m = 1; m < acflen; m++) + { + sum = L_mac0(sum, s6k4[m], s6k4[m - n]); + } + ac[n - MIN_PITCH_6K4] = sum; move32(); + } + + /* Weight autocorrelation and find maximum */ + max32 = Mpy_32_16_lc3plus(ac[0], olpa_ac_weighting[0]); move32(); + *pitch = MIN_PITCH_6K4; move16(); + FOR (n = MIN_PITCH_6K4 + 1; n <= MAX_PITCH_6K4; n++) + { + L_tmp = Mpy_32_16_lc3plus(ac[n - MIN_PITCH_6K4], olpa_ac_weighting[n - MIN_PITCH_6K4]); + L_tmp2 = L_sub_sat(L_tmp, max32); + if (L_tmp2 > 0) + { + *pitch = n; move16(); + } + max32 = L_max(L_tmp, max32); + } + + /* Compute normalized correlation */ + sum0 = L_mult0(s6k4[0], s6k4[0 - *pitch]); + sum1 = L_mac0(1, s6k4[0 - *pitch], s6k4[0 - *pitch]); + sum2 = L_mac0(1, s6k4[0], s6k4[0]); + for (m = 1; m < acflen; m++) + { + sum0 = L_mac0(sum0, s6k4[m], s6k4[m - *pitch]); + sum1 = L_mac0(sum1, s6k4[m - *pitch], s6k4[m - *pitch]); + sum2 = L_mac0(sum2, s6k4[m], s6k4[m]); + } + scale1 = norm_l(sum1); + scale2 = norm_l(sum2); + sum1 = L_shl_pos(sum1, scale1); + sum2 = L_shl_pos(sum2, scale2); + prod = Mpy_32_32_lc3plus(sum1, sum2); + shift = norm_l(prod); + prod = L_shl_pos(prod, shift); + prod_exp = sub(62, add(add(scale1, scale2), shift)); + inv = Isqrt_lc3plus(prod, &prod_exp); + scale0 = norm_l(sum0); + sum0 = L_shl_pos(sum0, scale0); + prod = Mpy_32_32_lc3plus(sum0, inv); + prod_exp = add(sub(31, scale0), prod_exp); + test(); + IF (prod == 0 || sub(norm_l(prod), prod_exp) >= 0) + { + *normcorr = s_max(0, round_fx_sat(L_shl_sat(prod, prod_exp))); move16(); + } + ELSE + { + *normcorr = 32767; move16(); + } + + /* Second try in the neighborhood of the previous pitch */ + min_pitch = s_max(MIN_PITCH_6K4, sub(*mem_pitch, 4)); + max_pitch = s_min(MAX_PITCH_6K4, add(*mem_pitch, 4)); + + max32 = ac[min_pitch - MIN_PITCH_6K4]; move32(); + pitch2 = min_pitch; move16(); + FOR (n = min_pitch + 1; n <= max_pitch; n++) + { + L_tmp = L_sub_sat(ac[n - MIN_PITCH_6K4], max32); + if (L_tmp > 0) + { + pitch2 = n; move16(); + } + max32 = L_max(ac[n - MIN_PITCH_6K4], max32); + } + IF (sub(*pitch, pitch2) != 0) + { + sum0 = L_mult0(s6k4[0], s6k4[0 - pitch2]); + sum1 = L_mac0(1, s6k4[0 - pitch2], s6k4[0 - pitch2]); + sum2 = L_mac0(1, s6k4[0], s6k4[0]); + for (m = 1; m < acflen; m++) + { + sum0 = L_mac0(sum0, s6k4[m], s6k4[m - pitch2]); + sum1 = L_mac0(sum1, s6k4[m - pitch2], s6k4[m - pitch2]); + sum2 = L_mac0(sum2, s6k4[m], s6k4[m]); + } + scale1 = norm_l(sum1); + scale2 = norm_l(sum2); + sum1 = L_shl_pos(sum1, scale1); + sum2 = L_shl_pos(sum2, scale2); + prod = Mpy_32_32_lc3plus(sum1, sum2); + shift = norm_l(prod); + prod = L_shl_pos(prod, shift); + prod_exp = sub(62, add(add(scale1, scale2), shift)); + inv = Isqrt_lc3plus(prod, &prod_exp); + scale0 = norm_l(sum0); + sum0 = L_shl_pos(sum0, scale0); + prod = Mpy_32_32_lc3plus(sum0, inv); + prod_exp = add(sub(31, scale0), prod_exp); + test(); + IF (prod == 0 || sub(norm_l(prod), prod_exp) >= 0) + { + normcorr2 = s_max(0, round_fx_sat(L_shl_sat(prod, prod_exp))); move16(); + } + ELSE + { + normcorr2 = 32767; move16(); + } + IF (sub(normcorr2, mult_r(*normcorr, 27853)) > 0) + { + *pitch = pitch2; move16(); + *normcorr = normcorr2; move16(); + } + } + +#ifdef CR9_F_PITCH_WIN_LEN_FIX + SWITCH(frame_dms) + { + case 50: + if(*pitch_flag == 1) { + *mem_pitch = *pitch; move16(); + *pitch_flag = 0; + } + else { + *pitch_flag += 1; + } + break; + + case 25: + if (*pitch_flag == 3) { + *mem_pitch = *pitch; move16(); + *pitch_flag = 0; + } + else { + *pitch_flag += 1; + } + break; + + default: +#endif + *mem_pitch = *pitch; move16(); +#ifdef CR9_F_PITCH_WIN_LEN_FIX + } +#endif + + /* Update memory */ + basop_memmove(mem_s6k4, &mem_s6k4[len2], mem_in_len * sizeof(Word16)); + + /* Upsample pitch by a factor of 2 (6.4kHz -> 12.8kHz) */ + *pitch = shl_pos(*pitch, 1); move16(); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + diff --git a/lib_lc3plus/pc_apply_fx.c b/lib_lc3plus/pc_apply_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..42ddfb243fb0daf5b2c77abe83915e92ae220af4 --- /dev/null +++ b/lib_lc3plus/pc_apply_fx.c @@ -0,0 +1,315 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "constants.h" +#include "functions.h" + +#ifdef ENABLE_HR_MODE +static Word16 getScaleFactor32_withNegativeScaling(Word32 *data32, Word16 dataLen); +#else +static Word16 getScaleFactor16_withNegativeScaling(Word16 *data16, Word16 dataLen); +#endif + + +void processPCapply_fx(Word16 yLen, Word16 q_old_res_fx[], Word16 *q_old_res_fx_exp, +#ifdef ENABLE_HR_MODE + Word32 q_res_fx[], +#else + Word16 q_res_fx[], +#endif + Word16 q_old_d_fx[], Word16 spec_inv_idx, Word16 *fac, Word16 *fac_e, Word32 q_d_fx[], + Word16 *q_fx_exp, Word16 gg_idx, Word16 gg_idx_off, Word16 prev_gg, Word16 prev_gg_e, + Word16 *pc_nbLostFramesInRow) +{ + Counter i; + Word16 s, s2, s3, c, tmp16, tmp16_2, inv_gain, thr; + Word32 ener_curr, ener_prev, mean_nrg_high, mean_nrg_low; + Word16 global_gain, global_gain_e, gg2, gg2_e, prev_gg2, prev_gg2_e; + Word32 tmp32, ener_curr_gg2, ener_prev_gg2; + Word16 fac_local, fac_local_e; + +#ifdef DYNMEM_COUNT + struct _dynmem + { + Counter i; + Word16 s, s2, s3, c, tmp16, tmp16_2, inv_gain, thr; + Word32 ener_curr, ener_prev, mean_nrg_high, mean_nrg_low; + Word16 global_gain, global_gain_e, gg2, gg2_e, prev_gg2, prev_gg2_e; + Word32 tmp32, ener_curr_gg2, ener_prev_gg2; + Word16 fac_local, fac_local_e; + }; + Dyn_Mem_In("processPCapply_fx", sizeof(struct _dynmem)); +#endif + + assert(spec_inv_idx >= 0); + + *pc_nbLostFramesInRow = add(*pc_nbLostFramesInRow, 1); + + tmp32 = L_shl_pos(L_mult0(add(gg_idx, gg_idx_off), 0x797D), 7); + global_gain_e = add(extract_l(L_shr_pos(tmp32, 25)), 1); + global_gain = round_fx(BASOP_Util_InvLog2_lc3plus(L_or(tmp32, 0xFE000000))); + + /** Calculate rescaling factor **/ + + /* mean_nrg_low = mean(q_d_prev(1:spec_inv_idx-1).^2); + mean_nrg_high = mean(q_d_prev(spec_inv_idx:end).^2); */ + s = getScaleFactor16(q_old_d_fx, yLen); + + mean_nrg_low = 0; + move32(); + FOR (i = 0; i < spec_inv_idx; i++) + { + tmp16 = shl_sat(q_old_d_fx[i], sub(s, 4)); + mean_nrg_low = L_mac0(mean_nrg_low, tmp16, tmp16); /* exp = 2s - 8 */ + } + + mean_nrg_high = 0; + move32(); + FOR (i = spec_inv_idx; i < yLen; i++) + { + tmp16 = shl_sat(q_old_d_fx[i], sub(s, 4)); + mean_nrg_high = L_mac0(mean_nrg_high, tmp16, tmp16); /* exp = 2s - 8 */ + } + + IF (sub(spec_inv_idx, sub(yLen, spec_inv_idx)) < 0) + { + c = div_s(spec_inv_idx, sub(yLen, spec_inv_idx)); + mean_nrg_high = Mpy_32_16_lc3plus(mean_nrg_high, c); /* exp = 2s - 8 */ + } + ELSE + { + c = div_s(sub(yLen, spec_inv_idx), spec_inv_idx); + mean_nrg_low = Mpy_32_16_lc3plus(mean_nrg_low, c); /* exp = 2s - 8 */ + } + + /* ener_prev = sum(q_old_res(1:spec_inv_idx-1).^2); + ener_curr = sum( q_res(1:spec_inv_idx-1).^2); */ + s = getScaleFactor16(q_old_res_fx, spec_inv_idx); + ener_prev = 0; move32(); + FOR (i = 0; i < spec_inv_idx; i++) + { + tmp16 = shl_sat(q_old_res_fx[i], sub(s, 4)); + ener_prev = L_mac0(ener_prev, tmp16, tmp16); /* exp = - (2s - 8 - 2**q_old_res_fx_exp) */ + } + + ener_curr = 0; + move32(); + +#ifdef ENABLE_HR_MODE + s2 = getScaleFactor32_lc3plus(q_res_fx, spec_inv_idx); + FOR (i = 0; i < spec_inv_idx; i++) + { + tmp16 = extract_h(L_shl_sat(q_res_fx[i], sub(s2, 4))); + ener_curr = L_mac0(ener_curr, tmp16, tmp16); /* exp = - (2s2 - 8) */ + } + s2 = s2 - 16; +#else + s2 = getScaleFactor16(q_res_fx, spec_inv_idx); + FOR (i = 0; i < spec_inv_idx; i++) + { + tmp16 = shl_sat(q_res_fx[i], sub(s2, 4)); + ener_curr = L_mac0(ener_curr, tmp16, tmp16); /* exp = - (2s2 - 8) */ + } +#endif + + + s = shl(sub(s, *q_old_res_fx_exp), 1); + s2 = shl(s2, 1); + s3 = s_max(s, s2); + ener_prev = L_shr_sat(ener_prev, sub(s3, s2)); + ener_curr = L_shr_sat(ener_curr, sub(s3, s)); + + /* fac = 1; */ + *fac = 1; + /* if ener_prev > 0 */ + IF ( ener_prev > 0 ) + { + /* fac = sqrt(ener_curr/ener_prev); */ + s = getScaleFactor32_lc3plus(&ener_prev, 1); + s2 = getScaleFactor32_lc3plus(&ener_curr, 1); + s3 = s_min(s, s2); + tmp16 = extract_h(L_shl_sat(ener_curr, s3)); + tmp16_2 = extract_h(L_shl_sat(ener_prev, s3)); + + *fac_e = 0; move16(); + if ( tmp16_2 == 0) { + tmp16_2 = 32767; move16(); + *fac_e = 15; move16(); + } else { + tmp16_2 = Inv16_lc3plus(tmp16_2, fac_e); + } + + *fac = mult(tmp16, tmp16_2); + + IF (sub(*fac, 32767) < 0) + { + *fac = Sqrt16_lc3plus(*fac, fac_e); move16(); + } + } + + /* fac_local = fac; */ + fac_local = *fac; + fac_local_e = *fac_e; + + /* if (mean_nrg_low > mean_nrg_high) && (ener_prev * prev_gg^2 > ener_curr * gg^2) */ + prev_gg2 = mult(prev_gg, prev_gg); + prev_gg2_e = shl(prev_gg_e, 1); + ener_prev_gg2 = Mpy_32_16_lc3plus(ener_prev, prev_gg2); /* exp = prev_gg2_e */ + + gg2 = mult(global_gain, global_gain); + gg2_e = shl(global_gain_e, 1); + ener_curr_gg2 = Mpy_32_16_lc3plus(ener_curr, gg2); /* exp = gg2_e */ + + s3 = s_max(prev_gg2_e, gg2_e); + ener_prev_gg2 = L_shr_sat(ener_prev_gg2, sub(s3, prev_gg2_e)); + ener_curr_gg2 = L_shr_sat(ener_curr_gg2, sub(s3, gg2_e)); + + + test(); + IF ( (L_sub(mean_nrg_low, mean_nrg_high) <= 0) || (L_sub(ener_prev_gg2, ener_curr_gg2) <= 0) ) + { + /* fac = prev_gg/gg; */ + s = global_gain_e; move16(); + inv_gain = Inv16_lc3plus(global_gain, &s); + fac_local = mult(prev_gg, inv_gain); + fac_local_e = add(s, prev_gg_e); + } + + /* write synthesized samples */ + *q_old_res_fx_exp = add(*q_old_res_fx_exp, fac_local_e); + thr = shl_sat(20480, sub(-15, *q_old_res_fx_exp)); + FOR (i = spec_inv_idx; i < yLen; i++) + { + q_res_fx[i] = extract_h(L_mult(q_old_res_fx[i] /* exp = q_old_res_fx_exp' */, fac_local /* exp = fac_e */)); /* exp = q_old_res_fx_exp */ + + IF (sub(abs_s(q_res_fx[i]), thr) < 0) + { + q_res_fx[i] = 0; + move16(); + } + } + +#ifdef ENABLE_HR_MODE + s = getScaleFactor32_withNegativeScaling(&q_res_fx[0], spec_inv_idx) - 16; /* exp = 0 */ + s2 = getScaleFactor32_withNegativeScaling(&q_res_fx[spec_inv_idx], + sub(yLen, spec_inv_idx)) - 16; /* exp = q_old_res_fx_exp */ +#else + s = getScaleFactor16_withNegativeScaling(&q_res_fx[0], spec_inv_idx); /* exp = 0 */ + s2 = getScaleFactor16_withNegativeScaling(&q_res_fx[spec_inv_idx], + sub(yLen, spec_inv_idx)); /* exp = q_old_res_fx_exp */ +#endif + + s3 = add(s, *q_old_res_fx_exp); + IF (sub(s3, s2) > 0) + { + tmp16 = sub(s3, s2); + s = sub(s, tmp16); + s3 = sub(s3, tmp16); + } + *q_fx_exp = sub(15, s); + move16(); + +#ifdef ENABLE_HR_MODE + s = add(s, 16); + s3 = add(s3, 16); +#endif + + s = s_max(s, -31); + s = s_min(s, 31); + s3 = s_max(s3, -31); + s3 = s_min(s3, 31); + + FOR (i = 0; i < spec_inv_idx; i++) + { +#ifdef ENABLE_HR_MODE + q_d_fx[i] = L_shl(q_res_fx[i], s); +#else + q_d_fx[i] = L_shl(L_deposit_h(q_res_fx[i]), s); +#endif + move32(); + } + FOR (; i < yLen; i++) + { +#ifdef ENABLE_HR_MODE + q_d_fx[i] = L_shl(q_res_fx[i], s3); +#else + q_d_fx[i] = L_shl(L_deposit_h(q_res_fx[i]), s3); +#endif + move32(); + } + + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +#ifndef ENABLE_HR_MODE +static Word16 getScaleFactor16_withNegativeScaling(Word16 *data16, Word16 dataLen) +{ + Counter i; + Dyn_Mem_Deluxe_In(Word16 tmp, shift; Word16 x_min, x_max;); + + x_max = 0; + move16(); + x_min = 0; + move16(); + + FOR (i = 0; i < dataLen; i++) + { + if (data16[i] > 0) + x_max = s_max(x_max, data16[i]); + if (data16[i] < 0) + x_min = s_min(x_min, data16[i]); + } + + tmp = s_max(x_max, negate(x_min)); + shift = norm_s(tmp); + if (tmp == 0) + { + shift = 15; + move16(); + } + + Dyn_Mem_Deluxe_Out(); + + return shift; +} + +#else +static Word16 getScaleFactor32_withNegativeScaling(Word32 *data32, Word16 dataLen) +{ + Counter i; + Dyn_Mem_Deluxe_In(Word32 tmp, shift; Word32 x_min, x_max;); + + x_max = L_add(0, 0); + x_min = L_add(0, 0); + + FOR (i = 0; i < dataLen; i++) + { + if (data32[i] >= 0) + x_max = L_max(x_max, data32[i]); + if (data32[i] < 0) + x_min = L_min(x_min, data32[i]); + } + + tmp = L_max(x_max, L_negate(x_min)); + shift = norm_l(tmp); + if (tmp == 0) + { + shift = 31; + move16(); + } + + Dyn_Mem_Deluxe_Out(); + + return shift; +} +#endif diff --git a/lib_lc3plus/pc_classify_fx.c b/lib_lc3plus/pc_classify_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..28898f9638abe71bd6e23814681d0a8364654218 --- /dev/null +++ b/lib_lc3plus/pc_classify_fx.c @@ -0,0 +1,260 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "constants.h" +#include "functions.h" + +#define BLOCK_SIZE 3 +#define THR1 8 +#define FAC 9830 /* 0.3 */ + +void peakDetector_fx(Word16 in_sig[], Word16 yLen, Word16 *xover); + +void processPCclassify_fx(Word16 pitch_present, Word16 frame_dms, Word16 q_old_d_fx[], Word16 q_old_res_fx[], + Word16 yLen, Word16 spec_inv_idx, Word16 stab_fac, Word16 *bfi) +{ + Dyn_Mem_Deluxe_In( + Word16 maxPitchBin, xover; + Counter i; + Word16 s, tmp16, full_nrg16, part_nrg16; + Word32 full_nrg, part_nrg; + ); + + /* Apply classifier only if lower than 2kHz signal */ + IF (sub(DEPR_i_mult(spec_inv_idx, 10), shl_pos(frame_dms, 2)) < 0 ) + { + IF (sub(stab_fac, 16384 /* 0.5 */) < 0) + { + *bfi = 1; + } + ELSE IF (sub(pitch_present, 1) == 0) + { + maxPitchBin = 8; move16(); + IF (sub(frame_dms, 50) == 0) + { + maxPitchBin = 4; move16(); + } + + /* avoid phase discontinuity in low frequencies */ + peakDetector_fx(q_old_d_fx, yLen, &xover); + test(); + IF (sub(spec_inv_idx, xover) < 0 || sub(spec_inv_idx, maxPitchBin) < 0) + { + *bfi = 1; + } + } + ELSE + { + s = getScaleFactor16(q_old_res_fx, yLen); + + part_nrg = 0; move32(); + FOR (i = 0; i < spec_inv_idx; i++) + { + tmp16 = shl_sat(q_old_res_fx[i], sub(s, 4)); + part_nrg = L_mac0(part_nrg, tmp16, tmp16); /* exp = 2s - 8 */ + } + + full_nrg = part_nrg; move32(); + FOR (i = spec_inv_idx; i < yLen; i++) + { + tmp16 = shl_sat(q_old_res_fx[i], sub(s, 4)); + full_nrg = L_mac0(full_nrg, tmp16, tmp16); /* exp = 2s - 8 */ + } + + s = getScaleFactor32_lc3plus(&full_nrg, 1); + full_nrg16 = extract_h(L_shl(full_nrg, s)); + part_nrg16 = extract_h(L_shl(part_nrg, s)); + + tmp16 = mult(full_nrg16, 9830 /* 0.3 */); + + IF (part_nrg16 < tmp16) + { + *bfi = 1; + } + } + } + + Dyn_Mem_Deluxe_Out(); +} + +void peakDetector_fx(Word16 in_sig[], Word16 yLen, Word16 *xover) +{ + Dyn_Mem_Deluxe_In( + Counter i, j; + Word16 tmp16, c, s, s2, mean_block_nrg16; + Word32 maxPeak, tmp32; + Word32 mean_block_nrg, block_cent; + Word16 cur_max, prev_max, next_max; + ); + + *xover = 0; + + s = getScaleFactor16(in_sig, yLen); + + mean_block_nrg = 0; move32(); + FOR (i = 0; i < yLen; i++) + { + tmp16 = shl_sat(in_sig[i], sub(s, 4)); + mean_block_nrg = L_mac0(mean_block_nrg, tmp16, tmp16); /* exp = 2s - 8 */ + } + + s2 = getScaleFactor16(&yLen, 1); + c = shl(yLen, s2); + mean_block_nrg16 = div_l(mean_block_nrg, c); /* exp = 2s - 8 - s2 - 1 */ + mean_block_nrg = L_shl(L_mult0(mean_block_nrg16, BLOCK_SIZE * THR1), add(4, s2)); /* exp = 2s - 5 */ + + maxPeak = 0; move32(); + c = sub(yLen, 2 * BLOCK_SIZE); + + test(); + IF (abs_s(in_sig[0]) >= abs_s(in_sig[1])) + { + block_cent = 0; move32(); + FOR (j = 0; j <= 1; j++) + { + tmp16 = shl_sat(in_sig[j], sub(s, 2)); + block_cent = L_mac0(block_cent, tmp16, tmp16); /* -> exp = 2s - 4 */ + } + block_cent = L_shr(block_cent, 1); /* exp = 2s - 5 */ + + IF (L_sub(block_cent, mean_block_nrg) > 0) + { + cur_max = abs_s(in_sig[0]); + cur_max = MAX(abs_s(in_sig[1]), cur_max); + + next_max = abs_s(in_sig[-1 + BLOCK_SIZE]); + next_max = MAX(abs_s(in_sig[-1 + BLOCK_SIZE + 1]), next_max); + next_max = MAX(abs_s(in_sig[-1 + BLOCK_SIZE + 2]), next_max); + + IF (sub(cur_max, next_max) > 0) + { + maxPeak = block_cent; move32(); + *xover = 1; + } + } + } + + FOR (i = 0; i < BLOCK_SIZE; i++) + { + test(); + IF (abs_s(in_sig[i + 1]) >= abs_s(in_sig[i]) && abs_s(in_sig[i + 1]) >= abs_s(in_sig[i + 2])) + { + block_cent = 0; move32(); + FOR (j = 0; j < BLOCK_SIZE; j++) + { + tmp16 = shl_sat(in_sig[i + j], sub(s, 2)); + block_cent = L_mac0(block_cent, tmp16, tmp16); /* -> exp = 2s - 4 */ + } + block_cent = L_shr(block_cent, 1); /* exp = 2s - 5 */ + + IF (L_sub(block_cent, mean_block_nrg) > 0) + { + cur_max = abs_s(in_sig[i]); + cur_max = MAX(abs_s(in_sig[i + 1]), cur_max); + cur_max = MAX(abs_s(in_sig[i + 2]), cur_max); + + prev_max = 0; move16(); + FOR (j = i - BLOCK_SIZE; j <= i - 1; j++) + { + IF (j > 0) + { + prev_max = MAX(abs_s(in_sig[j]), prev_max); + } + } + + next_max = abs_s(in_sig[i + BLOCK_SIZE]); + next_max = MAX(abs_s(in_sig[i + BLOCK_SIZE + 1]), next_max); + next_max = MAX(abs_s(in_sig[i + BLOCK_SIZE + 2]), next_max); + + test(); + IF (sub(cur_max, prev_max) >= 0 && sub(cur_max, next_max) > 0) + { + IF (L_sub(block_cent, maxPeak) >= 0) + { + maxPeak = block_cent; move32(); + *xover = sub(add(i, BLOCK_SIZE), 1); + } + ELSE + { + tmp32 = L_mult(FAC, extract_h(maxPeak)); + + tmp16 = extract_l(L_shr(maxPeak, 1)); + tmp16 = s_and(tmp16, 0x7fff); + tmp16 = mult(FAC, tmp16); + tmp32 = L_add_sat(tmp32, tmp16); + + IF (L_sub(block_cent, tmp32) > 0) + { + *xover = sub(add(i, BLOCK_SIZE), 1); + } + } + } + } + } + } + + FOR (i = BLOCK_SIZE; i <= c; i++) + { + test(); + IF (abs_s(in_sig[i + 1]) >= abs_s(in_sig[i]) && abs_s(in_sig[i + 1]) >= abs_s(in_sig[i + 2])) + { + block_cent = 0; move32(); + FOR (j = 0; j < BLOCK_SIZE; j++) + { + tmp16 = shl_sat(in_sig[i + j], sub(s, 2)); + block_cent = L_mac0(block_cent, tmp16, tmp16); /* -> exp = 2s - 4 */ + } + block_cent = L_shr(block_cent, 1); /* exp = 2s - 5 */ + + IF (L_sub(block_cent, mean_block_nrg) > 0) + { + cur_max = abs_s(in_sig[i]); + cur_max = MAX(abs_s(in_sig[i + 1]), cur_max); + cur_max = MAX(abs_s(in_sig[i + 2]), cur_max); + + prev_max = abs_s(in_sig[i - BLOCK_SIZE]); + prev_max = MAX(abs_s(in_sig[i - BLOCK_SIZE + 1]), prev_max); + prev_max = MAX(abs_s(in_sig[i - BLOCK_SIZE + 2]), prev_max); + + next_max = abs_s(in_sig[i + BLOCK_SIZE]); + next_max = MAX(abs_s(in_sig[i + BLOCK_SIZE + 1]), next_max); + next_max = MAX(abs_s(in_sig[i + BLOCK_SIZE + 2]), next_max); + + test(); + IF (sub(cur_max, prev_max) >= 0 && sub(cur_max, next_max) > 0) + { + IF (L_sub(block_cent, maxPeak) >= 0) + { + maxPeak = block_cent; move32(); + *xover = sub(add(i, BLOCK_SIZE), 1); + } + ELSE + { + tmp32 = L_mult(FAC, extract_h(maxPeak)); + + tmp16 = extract_l(L_shr(maxPeak, 1)); + tmp16 = s_and(tmp16, 0x7fff); + tmp16 = mult(FAC, tmp16); + tmp32 = L_add_sat(tmp32, tmp16); + + IF (L_sub(block_cent, tmp32) > 0) + { + *xover = sub(add(i, BLOCK_SIZE), 1); + } + } + } + } + } + } + + Dyn_Mem_Deluxe_Out(); +} + + diff --git a/lib_lc3plus/pc_main_fx.c b/lib_lc3plus/pc_main_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..708f79d748a758f4bdef3a2af8d9363e55ae3f6e --- /dev/null +++ b/lib_lc3plus/pc_main_fx.c @@ -0,0 +1,57 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "constants.h" +#include "functions.h" + +void processPCmain_fx(Word16 rframe, Word16 *bfi, Word16 yLen, Word16 frame_dms, Word16 q_old_res_fx[], + Word16 *q_old_res_fx_exp, +#ifdef ENABLE_HR_MODE + Word32 q_res_fx[], +#else + Word16 q_res_fx[], +#endif + Word16 q_old_d_fx[], Word16 spec_inv_idx, + Word16 pitch_present, Word16 stab_fac, Word32 q_d_fx[], Word16 *q_fx_exp, + Word16 gg_idx, Word16 gg_idx_off, Word16 *prev_gg, Word16 *prev_gg_e, Word16 *BW_cutoff_idx_nf, + Word16 *prev_BW_cutoff_idx_nf, Word16 fac_ns_idx, Word16 *prev_fac_ns_fx, Word16 *pc_nbLostFramesInRow) +{ + Dyn_Mem_Deluxe_In( + Word16 fac, fac_e; + ); + + fac = 32767; fac_e = 0; + + IF (sub(*bfi, 2) == 0) + { + processPCclassify_fx(pitch_present, frame_dms, q_old_d_fx, q_old_res_fx, yLen, spec_inv_idx, stab_fac, bfi); + } + + IF (sub(*bfi, 2) == 0) + { + processPCapply_fx(yLen, q_old_res_fx, q_old_res_fx_exp, q_res_fx, q_old_d_fx, spec_inv_idx, + &fac, &fac_e, q_d_fx, q_fx_exp, gg_idx, gg_idx_off, *prev_gg, *prev_gg_e, pc_nbLostFramesInRow); + } + + IF (sub(*bfi, 1) != 0) + { + processPCupdate_fx(*bfi, yLen, q_old_res_fx, q_old_res_fx_exp, q_res_fx, spec_inv_idx, gg_idx, gg_idx_off, prev_gg, + prev_gg_e, rframe, BW_cutoff_idx_nf, prev_BW_cutoff_idx_nf, fac_ns_idx, prev_fac_ns_fx, fac, fac_e); + } + + if (*bfi == 0) + { + *pc_nbLostFramesInRow = 0; move16(); + } + + Dyn_Mem_Deluxe_Out(); +} + + diff --git a/lib_lc3plus/pc_update_fx.c b/lib_lc3plus/pc_update_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..17b719bcd224e8dee2cf0695a8a46ca28dfbefab --- /dev/null +++ b/lib_lc3plus/pc_update_fx.c @@ -0,0 +1,148 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "constants.h" +#include "functions.h" + +#ifdef ENABLE_HR_MODE + +void Copy_Scale_sig_32(const Word32 x[], /* i : signal to scale input Qx */ + Word16 y[], /* o : scaled signal output Qx */ + const Word16 lg, /* i : size of x[] Q0 */ + const Word16 exp0 /* i : exponent: x = round(x << exp) Qx ?exp */ +) +{ + Counter i; + Word16 tmp; + + if (exp0 == 0) + { + for (i = 0; i < lg; i++) + { + y[i] = extract_h(x[i]); + } + + return; + } + + tmp = s_max(exp0, -31); + tmp = s_min(tmp, 31); + + for (i = 0; i < lg; i++) + { + y[i] = extract_h(L_shr_r(x[i], -tmp)); + } +} +#endif + +void processPCupdate_fx(Word16 bfi, Word16 yLen, Word16 q_old_res_fx[], Word16 *q_old_res_fx_exp, +#ifdef ENABLE_HR_MODE + Word32 q_res_fx[], +#else + Word16 q_res_fx[], +#endif + Word16 spec_inv_idx, Word16 gg_idx, Word16 gg_idx_off, + Word16 *prev_gg, Word16 *prev_gg_e, Word16 rframe, Word16 *BW_cutoff_idx_nf, + Word16 *prev_BW_cutoff_idx_nf, Word16 fac_ns_idx, Word16 *prev_fac_ns_fx, Word16 fac, + Word16 fac_e) +{ + Word16 global_gain, global_gain_e, s, s2, s3, tmp16; + Word32 tmp32; + +#ifdef DYNMEM_COUNT + struct _dynmem + { + Word16 global_gain, global_gain_e, s, s2, s3, tmp16; + Word32 tmp32; + }; + Dyn_Mem_In("processPCupdate_fx", sizeof(struct _dynmem)); +#endif + + tmp32 = L_shl_pos(L_mult0(add(gg_idx, gg_idx_off), 0x797D), 7); + global_gain_e = add(extract_l(L_shr_pos(tmp32, 25)), 1); + global_gain = round_fx(BASOP_Util_InvLog2_lc3plus(L_or(tmp32, 0xFE000000))); + + *prev_gg = global_gain; move16(); + *prev_gg_e = global_gain_e; move16(); + +#ifdef ENABLE_HR_MODE + s = getScaleFactor32_lc3plus(q_res_fx, spec_inv_idx); /* exp = 0 */ +#else + s = getScaleFactor16(q_res_fx, spec_inv_idx); /* exp = 0 */ +#endif + + IF (bfi == 0) + { + *q_old_res_fx_exp = negate(s); +#ifdef ENABLE_HR_MODE + Copy_Scale_sig_32(q_res_fx, q_old_res_fx, yLen, s); + *q_old_res_fx_exp = *q_old_res_fx_exp + 16; +#else + Copy_Scale_sig(q_res_fx, q_old_res_fx, yLen, s); +#endif + } + ELSE + { +#ifdef ENABLE_HR_MODE + s2 = getScaleFactor32_lc3plus(&q_res_fx[spec_inv_idx], sub(yLen, spec_inv_idx)); /* exp = q_old_res_fx_exp */ + IF (s2 == 0) + s2 = 16; + s3 = add(s, *q_old_res_fx_exp); + IF (sub(s3, s2) > 0) + { + tmp16 = sub(s3, s2); + s = sub(s, tmp16); + } + s2 = add(s, *q_old_res_fx_exp); + *q_old_res_fx_exp = negate(s) + 16; + + + if (s2 > -32) + { + Copy_Scale_sig_32(&q_res_fx[spec_inv_idx], &q_old_res_fx[spec_inv_idx], sub(yLen, spec_inv_idx), s2); + } +#else + s2 = getScaleFactor16(&q_res_fx[spec_inv_idx], sub(yLen, spec_inv_idx)); /* exp = q_old_res_fx_exp */ + s3 = add(s, *q_old_res_fx_exp); + IF (sub(s3, s2) > 0) + { + tmp16 = sub(s3, s2); + s = sub(s, tmp16); + } + s2 = add(s, *q_old_res_fx_exp); + *q_old_res_fx_exp = negate(s); + + s = s_max(s_min(s, 15), -15); + s2 = s_max(s_min(s2, 15), -15); + Copy_Scale_sig(q_res_fx, q_old_res_fx, spec_inv_idx, s); + Copy_Scale_sig(&q_res_fx[spec_inv_idx], &q_old_res_fx[spec_inv_idx], sub(yLen, spec_inv_idx), s2); +#endif + } + + IF (rframe == 0) + { + *prev_BW_cutoff_idx_nf = *BW_cutoff_idx_nf; + *prev_fac_ns_fx = shl_pos(sub(8, fac_ns_idx), 11); + } + ELSE IF(sub(bfi, 2) == 0 && sub(*BW_cutoff_idx_nf, *prev_BW_cutoff_idx_nf) != 0 + && sub(spec_inv_idx, yLen) < 0) + { + *BW_cutoff_idx_nf = *prev_BW_cutoff_idx_nf; + *prev_fac_ns_fx = shl_sat(mult(*prev_fac_ns_fx, fac), fac_e); + *prev_fac_ns_fx = s_max(*prev_fac_ns_fx, 2048); + *prev_fac_ns_fx = s_min(*prev_fac_ns_fx, 16384); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + + diff --git a/lib_lc3plus/per_band_energy_fx.c b/lib_lc3plus/per_band_energy_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..3ba629a83175b81b959f5a27505d7aa8d3dc8685 --- /dev/null +++ b/lib_lc3plus/per_band_energy_fx.c @@ -0,0 +1,275 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" +#include "rom_basop_util_lc3plus.h" + +void processPerBandEnergy_fx(Word32 *d2_fx, Word16 *d2_fx_exp, Word32 *d_fx, Word16 d_fx_exp, + const Word16 *band_offsets, Word16 fs_idx, Word16 n_bands, Word16 linear, Word16 frame_dms, + Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +) +{ + Dyn_Mem_Deluxe_In(Counter i, k, band; Word16 s; Word16 s1; Word16 s2; Word32 nrg; Word16 smax; Word16 tmp16; + Word16 nbands; Word16 maxBwBin; Word16 stopBand; Word16 bandsOffsetOne; Word16 bandsOffsetTwo; + Word16 * d2_band_fx_exp;); + + + d2_band_fx_exp = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * MAX_BANDS_NUMBER_PLC bytes */ + +#ifdef ENABLE_HR_MODE + if (hrmode) + { + maxBwBin = MAX_BW_HR; + fs_idx = fs_idx + 1; + move16(); + } + else +#endif + { + maxBwBin = MAX_BW; + move16(); + } + + SWITCH (frame_dms) + { + case 25: maxBwBin = maxBwBin >> 2; move16(); + { + bandsOffsetOne = bands_offset_with_one_max_2_5ms[fs_idx]; + move16(); + bandsOffsetTwo = bands_offset_with_two_max_2_5ms[fs_idx]; + move16(); + } + BREAK; + case 50: maxBwBin = maxBwBin >> 1; move16(); + { + bandsOffsetOne = bands_offset_with_one_max_5ms[fs_idx]; + move16(); + bandsOffsetTwo = bands_offset_with_two_max_5ms[fs_idx]; + move16(); + } + BREAK; +#ifdef CR8_G_ADD_75MS + case 75: + maxBwBin = (maxBwBin >> 2) * 3; move16(); + bandsOffsetOne = bands_offset_with_one_max_7_5ms[fs_idx]; + move16(); + bandsOffsetTwo = bands_offset_with_two_max_7_5ms[fs_idx]; + move16(); + BREAK; +#endif + default: /* 100 */ + { + bandsOffsetOne = bands_offset_with_one_max[fs_idx]; + move16(); + bandsOffsetTwo = bands_offset_with_two_max[fs_idx]; + move16(); + } + BREAK; + } + + IF (sub(linear, 1) == 0) + { + + #ifdef ENABLE_HR_MODE + if (hrmode) + { + fs_idx = fs_idx - 1; + } + #endif + + SWITCH (frame_dms) + { + case 25: + bandsOffsetOne = bands_offset_with_one_max_lin_2_5ms[fs_idx]; + move16(); + bandsOffsetTwo = bands_offset_with_two_max_lin_2_5ms[fs_idx]; + move16(); + BREAK; + case 50: + bandsOffsetOne = bands_offset_with_one_max_lin_5ms[fs_idx]; + move16(); + bandsOffsetTwo = bands_offset_with_two_max_lin_5ms[fs_idx]; + move16(); + BREAK; +#ifdef CR8_G_ADD_75MS + case 75: + bandsOffsetOne = bands_offset_with_one_max_lin_7_5ms[fs_idx]; + move16(); + bandsOffsetTwo = bands_offset_with_two_max_lin_7_5ms[fs_idx]; + move16(); + BREAK; +#endif + case 100: + bandsOffsetOne = bands_offset_with_one_max_lin[fs_idx]; + move16(); + bandsOffsetTwo = bands_offset_with_two_max_lin[fs_idx]; + move16(); + BREAK; + } + } + + /* start processing with band offsets == 1 */ + FOR (band = 0; band < bandsOffsetOne; band++) + { + ASSERT((band_offsets[band + 1] - band_offsets[band]) == 1); + ASSERT(band < maxBwBin); + + s2 = 15; + move16(); + s = norm_l(d_fx[band]); + if (d_fx[band] != 0) + s2 = s_min(s2, s); + + tmp16 = extract_h(L_shl_pos(d_fx[band], s2)); + + d2_fx[band] = L_mult0(tmp16, tmp16); + move32(); + d2_band_fx_exp[band] = sub(1, shl_pos(s2, 1)); + move16(); + } + + /* start processing with band offsets == 2 */ + i = bandsOffsetOne; + move16(); + FOR (; band < bandsOffsetTwo; band++) + { + ASSERT((band_offsets[band + 1] - band_offsets[band]) == 2); + IF (sub(add(i, 1), maxBwBin) >= 0) + { + IF (sub(i, maxBwBin) >= 0) + { + d2_fx[band] = 0; + move32(); + d2_band_fx_exp[band] = sub(1, shl_pos(15, 1)); + move16(); + } + ELSE + { + s2 = 15; + move16(); + s = norm_l(d_fx[band]); + if (d_fx[band] != 0) + s2 = s_min(s2, s); + + tmp16 = extract_h(L_shl_pos(d_fx[band], s2)); + + d2_fx[band] = L_mult0(tmp16, tmp16); + move32(); + d2_band_fx_exp[band] = sub(1, shl_pos(s2, 1)); + move16(); + } + } + ELSE + { + ASSERT(i + 1 < maxBwBin); + + s2 = 15; + move16(); + s = norm_l(d_fx[i]); + if (d_fx[i] != 0) + s2 = s_min(s2, s); + s = norm_l(d_fx[i + 1]); + if (d_fx[i + 1] != 0) + s2 = s_min(s2, s); + + tmp16 = extract_h(L_shl_pos(d_fx[i], s2)); + nrg = L_mult0(tmp16, tmp16); + nrg = L_min(nrg, 0x3FFFFFFF); + tmp16 = extract_h(L_shl_pos(d_fx[i + 1], s2)); + + d2_fx[band] = L_shr_pos(L_mac0(nrg, tmp16, tmp16), 1); + move32(); + d2_band_fx_exp[band] = sub(1, shl_pos(s2, 1)); + move16(); + } + i = add(i, 2); + } + + /* proceed with band offsets > 2 */ + FOR (; band < n_bands; band++) + { + /* normalization */ + k = i; + move16(); + s1 = 15; + move16(); + + stopBand = s_min(band_offsets[band + 1], maxBwBin); + FOR (; k < stopBand; k++) + { + s = norm_l(d_fx[k]); + if (d_fx[k] != 0) + s1 = s_min(s1, s); + } + + nbands = sub(band_offsets[band + 1], band_offsets[band]); +#ifdef ENABLE_HR_MODE + if (nbands < 32) + { + nbands = s_min(s_max(0, nbands), 31); + /* specify headroom, it can be reduced by one due to use of L_mac0 */ + s2 = sub(s1, bands_nrg_scale[nbands]); + } + else + { + /* Active only in the 96 kHz case */ + s2 = sub(s1, 5); + } +#else + ASSERT(nbands < 32); + nbands = s_min(s_max(0, nbands), 31); + /* specify headroom, it can be reduced by one due to use of L_mac0 */ + s2 = sub(s1, bands_nrg_scale[nbands]); +#endif + + /* calculate energy per band */ + nrg = 0; + move32(); + + FOR (; i < stopBand; i++) + { + tmp16 = extract_h(L_shl(d_fx[i], s2)); + nrg = L_mac0(nrg, tmp16, tmp16); + } + i = band_offsets[band + 1]; + + /* calculate mean value of energy */ + nrg = Mpy_32_16_lc3plus(nrg, InvIntTable[nbands]); + + /* store normalized energy */ + s = norm_l(nrg); + d2_fx[band] = L_shl_pos(nrg, s); + move32(); + d2_band_fx_exp[band] = sub(1, add(shl_pos(s2, 1), s)); + move16(); + } + + /* Determine maximum exponent and rescale band energies */ + smax = -31; + move16(); + FOR (band = 0; band < n_bands; band++) + { + smax = s_max(smax, d2_band_fx_exp[band]); + } + FOR (band = 0; band < n_bands; band++) + { + d2_fx[band] = L_shr_pos(d2_fx[band], s_min(sub(smax, d2_band_fx_exp[band]), 31)); + move32(); + } + + /* Save exponent for all bands */ + *d2_fx_exp = s_max(add(shl_pos(d_fx_exp, 1), smax), -32); + move16(); + + Dyn_Mem_Deluxe_Out(); +} + diff --git a/lib_lc3plus/plc_apply_fx.c b/lib_lc3plus/plc_apply_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..9430d155e1b9d774d24a1bc0ee6b4b824723720e --- /dev/null +++ b/lib_lc3plus/plc_apply_fx.c @@ -0,0 +1,419 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "constants.h" +#include "functions.h" + +void processPLCapply_fx( +#ifdef CR8_A_PLC_FADEOUT_TUNING + Word16 *concealMethod, +#else + Word16 concealMethod, +#endif + Word16 nbLostFramesInRow, Word16 bfi, Word16 prev_bfi, + Word16 frame_length, Word16 la_zeroes, +#ifdef ENABLE_HR_MODE + const Word32 w[], +#else + const Word16 w[], +#endif + Word16 x_fx[], Word16 ola_mem[], + Word16 *ola_mem_exp, Word16 q_old_d_fx[], Word16 *q_old_fx_exp, Word32 q_d_fx[], + Word16 *q_fx_exp, Word16 yLen, Word16 fs_idx, Word16 *damping, Word16 old_pitch_int, + Word16 old_pitch_fr, Word16 *ns_cum_alpha, Word16 *ns_seed, Word16 frame_dms, AplcSetup *plcAd, + Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + , Word32 rel_pitch_change +#endif +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR + , Word16 *alpha_type_2_table +#endif + ) +{ + Dyn_Mem_Deluxe_In( + Counter i; + Word32 *d2_fx; + Word32 *q_old_d_fx32; + Word32 *r_fx; + Word32 *tdc_A_32; + Word16 d2_fx_exp; + Word16 r_fx_exp; + Word16 Q_syn; + Word8 * buffer_perBandEnergy, *buffer_preEmphasis, *buffer_InverseODFT, *buffer_Levinson, + *buffer_tdac, *buffer_phecu; + Word16 y_e; /*exponent of L_ecu_rec */ + Word16 tmp_is_trans[2]; /* may be changed to a single variable */ + Word16 env_stab; + + Word16 n_bands, prev_bfi_plc2; + const Word16 *band_offsets; + Word32 * L_ecu_rec; /* local xtda output is MAX_LEN -> input buffer, + as tmp buffer for w32 fft MAX_LPROT */ + ); +#ifdef CR8_A_PLC_FADEOUT_TUNING + Word16 consecutiveLostThreshold = 0; +#endif + +#ifdef CR9_L_RETRAIN_FADEOUT_TYPE_CLASSIFIER + Word16 thresh_tdc_cnt; + Word16 thresh_ns_cnt; + Word16 thresh_tdc_ns_cnt; +#endif + + band_offsets = NULL; + + d2_fx = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 4 * MAX_BANDS_NUMBER_PLC */ + q_old_d_fx32 = (Word32 *)scratchAlign(d2_fx, sizeof(*d2_fx) * MAX_BANDS_NUMBER_PLC); /* Size = 4 * MAX_BW */ + r_fx = (Word32 *)scratchAlign(d2_fx, sizeof(*d2_fx) * MAX_BANDS_NUMBER_PLC); /* Size = 4 * (M + 1) */ + tdc_A_32 = (Word32 *)scratchAlign(r_fx, sizeof(*r_fx) * (M + 1)); /* Size = 4 * (M + 1) */ + + L_ecu_rec = (Word32 *)scratchAlign(tdc_A_32, sizeof(*tdc_A_32) * (M + 1)); /* Size = 4 * MAX_LPROT bytes */ + + buffer_perBandEnergy = + (Word8 *)scratchAlign(q_old_d_fx32, sizeof(*q_old_d_fx32) * (MAX_LEN)); /* Size = 2 * MAX_BANDS_NUMBER_PLC */ + buffer_preEmphasis = + (Word8 *)scratchAlign(tdc_A_32, sizeof(*tdc_A_32) * (M + 1)); /* Size = 2 * MAX_BANDS_NUMBER_PLC */ + buffer_InverseODFT = buffer_preEmphasis; /* Size = 640 bytes */ + buffer_Levinson = buffer_preEmphasis; /* Size = 4 * (M + 1) */ + + buffer_tdac = scratchBuffer; /* Size = 2 * MAX_LEN bytes */ + buffer_phecu = scratchBuffer; /* Size = 2 * MAX_LGW + 8 * MAX_LPROT + 12 * MAX_L_FRAME */ + /* Buffers overlap since they are not used at once */ + + + UNUSED(ns_cum_alpha); + UNUSED(ns_seed); + + /* Apply/Prepare PLC in bfi-case */ + IF (sub(bfi, 1) == 0) + { + +#ifdef CR8_A_PLC_FADEOUT_TUNING + SWITCH(frame_dms) + { + case 25: + consecutiveLostThreshold = 16; +#ifdef CR9_L_RETRAIN_FADEOUT_TYPE_CLASSIFIER + thresh_tdc_cnt = THRESH_025_DMS_TDC_CNT; + thresh_ns_cnt = THRESH_025_DMS_NS_CNT; + thresh_tdc_ns_cnt = THRESH_025_DMS_TDC_NS_CNT; +#endif + break; + case 50: consecutiveLostThreshold = 8; +#ifdef CR9_L_RETRAIN_FADEOUT_TYPE_CLASSIFIER + thresh_tdc_cnt = THRESH_050_DMS_TDC_CNT; + thresh_ns_cnt = THRESH_050_DMS_NS_CNT; + thresh_tdc_ns_cnt = THRESH_050_DMS_TDC_NS_CNT; +#endif + break; + case 75: consecutiveLostThreshold = 6; +#ifdef CR9_L_RETRAIN_FADEOUT_TYPE_CLASSIFIER + thresh_tdc_cnt = THRESH_075_DMS_TDC_CNT; + thresh_ns_cnt = THRESH_075_DMS_NS_CNT; + thresh_tdc_ns_cnt = THRESH_075_DMS_TDC_NS_CNT; +#endif + break; + case 100: consecutiveLostThreshold = 4; +#ifdef CR9_L_RETRAIN_FADEOUT_TYPE_CLASSIFIER + thresh_tdc_cnt = THRESH_100_DMS_TDC_CNT; + thresh_ns_cnt = THRESH_100_DMS_NS_CNT; + thresh_tdc_ns_cnt = THRESH_100_DMS_TDC_NS_CNT; +#endif + break; + default: assert(0); + } + + IF (sub(fs_idx, 2) == 0 || sub(fs_idx, 4) >= 0) + { +#ifdef CR9_L_RETRAIN_FADEOUT_TYPE_CLASSIFIER + if (sub(plcAd->longterm_counter_plcTdc, thresh_tdc_cnt) < 0){ + plcAd->plc_fadeout_type = 1; + } + else if (sub(plcAd->longterm_counter_plcNsAdv, thresh_ns_cnt) < 0){ + plcAd->plc_fadeout_type = 1; + } + else if (sub(plcAd->longterm_counter_plcTdc + plcAd->longterm_counter_plcNsAdv, thresh_tdc_ns_cnt) < 0){ + plcAd->plc_fadeout_type = 1; + } + else { + plcAd->plc_fadeout_type = 0; + } + +#else + IF (((sub(plcAd->longterm_counter_plcPhaseEcu, L_shr_pos(Mpy_32_16_lc3plus(FAC1_FADEOUT, plcAd->longterm_counter_plcTdc), SHIFT1_FADEOUT)) < 0) || + (sub(plcAd->longterm_counter_plcPhaseEcu, L_shr_pos(Mpy_32_16_lc3plus(FAC1_FADEOUT, plcAd->longterm_counter_plcNsAdv), SHIFT1_FADEOUT)) < 0)) && + (sub(plcAd->longterm_counter_plcTdc, L_shr_pos(Mpy_32_16_lc3plus(FAC2_FADEOUT, plcAd->longterm_counter_plcNsAdv), SHIFT2_FADEOUT)) < 0)) + { + plcAd->plc_fadeout_type = 0; + } + ELSE + { + IF ((sub(plcAd->longterm_counter_plcPhaseEcu, L_shr_pos(Mpy_32_16_lc3plus(FAC3_FADEOUT, plcAd->longterm_counter_plcTdc), SHIFT3_FADEOUT)) > 0) || + (sub(plcAd->longterm_counter_plcPhaseEcu, L_shr_pos(Mpy_32_16_lc3plus(FAC3_FADEOUT, plcAd->longterm_counter_plcNsAdv), SHIFT3_FADEOUT)) > 0)) + { + plcAd->plc_fadeout_type = 1; + } ELSE { + plcAd->plc_fadeout_type = 0; + } + } +#endif + + + env_stab = norm_s(plcAd->longterm_analysis_counter_max); + IF(sub(shl_pos(plcAd->overall_counter, env_stab), mult(shl_pos(plcAd->longterm_analysis_counter_max, env_stab), PLC_LONGTERM_ANALYSIS_STARTUP_FILL)) < 0) + { + plcAd->plc_fadeout_type = 0; + } + +#ifndef CR9_H_REMOVE_SWITCH_TO_PLC_NS + IF (sub(nbLostFramesInRow, consecutiveLostThreshold) >= 0 && sub(plcAd->plc_fadeout_type, 1) == 0) + { + IF (sub(*concealMethod, LC3_CON_TEC_TDPLC) == 0) + { + *concealMethod = LC3_CON_TEC_NS_ADV; + } + } +#endif +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + IF (L_sub(rel_pitch_change,REL_PITCH_THRESH) > 0 && sub(hrmode,1) == 0 && (sub(frame_dms,50) == 0 || sub(frame_dms,25) == 0)){ + plcAd->plc_fadeout_type = 2;move16(); + } ELSE +#endif + IF((sub(nbLostFramesInRow, consecutiveLostThreshold) < 0) && (*concealMethod != LC3_CON_TEC_PHASE_ECU)) + { + plcAd->plc_fadeout_type = 0; + } + } ELSE { + plcAd->plc_fadeout_type = 0; /*fs_idx == 0,1,3 */ + } +#endif /* CR8_A_PLC_FADEOUT_TUNING */ + +#ifdef CR8_A_PLC_FADEOUT_TUNING + SWITCH (*concealMethod) +#else + SWITCH (concealMethod) +#endif + { + case LC3_CON_TEC_PHASE_ECU: + ASSERT(frame_dms == 100); + /* call phaseEcu */ + env_stab = 32767; move16(); /* 1.0=stable , 0.0=dynamic Q15*/ + tmp_is_trans[0] = plcAd->PhECU_short_flag_prev; move16(); + tmp_is_trans[1] = plcAd->PhECU_short_flag_prev; move16(); + + ASSERT(prev_bfi == 0 || prev_bfi == 1|| prev_bfi == 2); /*PC prev_bfi has three states */ + prev_bfi_plc2 = prev_bfi; move16(); + if (sub(prev_bfi_plc2, 2) == 0) + { + prev_bfi_plc2 = 0; move16(); + } + + ASSERT(prev_bfi_plc2 == 0 || prev_bfi_plc2 == 1); /*PhEcu does not accept prev_bfi == 2 */ + IF(prev_bfi_plc2 == 0) + { /* convert pitch lag info at current fs to a normalized fractional bin-frequency */ + plcAd->PhECU_f0hzLtpBinQ7 = plc_phEcuSetF0Hz_fx(fs_idx, old_pitch_int, old_pitch_fr); move16(); + + + + /* first bfi frame calc decoded pcm energy 16,16 ms, in 26 ms buffer separated by 10 ms*/ + + { /* compute energy normalization needed for concealment method 2 Xavg and transient analysis */ + + /* left */ + processPLCUpdateXFP_w_E_hist_fx(0, 0, + &(plcAd->x_old_tot_fx[ sub(plcAd->max_len_pcm_plc , add(num_FsByResQ0[fs_idx],rectLengthTab[fs_idx] )) ]), plcAd->q_fx_old_exp,0, + + fs_idx, + &plcAd->PhECU_L_oold_xfp_w_E_fx, &plcAd->PhECU_oold_xfp_w_E_exp_fx, + &plcAd->PhECU_L_old_xfp_w_E_fx, &plcAd->PhECU_old_xfp_w_E_exp_fx, + &plcAd->PhECU_oold_Ltot_exp_fx, &plcAd->PhECU_old_Ltot_exp_fx); + + /* right */ + processPLCUpdateXFP_w_E_hist_fx(0, 0, plcAd->PhECU_xfp_fx, plcAd->PhECU_xfp_exp_fx, + plcAd->PhECU_margin_xfp, fs_idx, + &plcAd->PhECU_L_oold_xfp_w_E_fx, &plcAd->PhECU_oold_xfp_w_E_exp_fx, + &plcAd->PhECU_L_old_xfp_w_E_fx, &plcAd->PhECU_old_xfp_w_E_exp_fx, + &plcAd->PhECU_oold_Ltot_exp_fx, &plcAd->PhECU_old_Ltot_exp_fx); + } + } + + hq_phase_ecu_fx( + plcAd->PhECU_xfp_fx, /* i : only valid first Bfi frame , buffer of previous synt signal length */ + L_ecu_rec, /* o : reconstructed frame in folded tda domain xtda Word32 Q x */ + &plcAd->PhECU_time_offs, /* i/o: Sample offset for consecutive frame losses*/ + plcAd->PhECU_X_sav_fx, /* i(prev_bfi==1)/o(prev_bfi==0): Stored Complex spectrum of prototype frame */ + &plcAd->PhECU_X_savQ_fx, /* i/o: Q value of stored spectrum */ + &plcAd->PhECU_num_plocs, /* i/o: Number of identified peaks */ + plcAd->PhECU_plocs, /* i/o: Peak locations Q0 */ + plcAd->PhECU_f0est, /* i/o: Interpolated peak locations Q16 */ + env_stab, /* i : Envelope stability parameter */ + plcAd->PhECU_f0hzLtpBinQ7, /* i: LTP bin frequency in normalized Hz Q7 */ + plcAd->norm_corrQ15_fx, /* i : correlation for lag at f0hzLtpBinQ7 */ + prev_bfi_plc2, /* i : indicating burst frame error */ + tmp_is_trans, /* i : flags indicating previous transient frames */ + plcAd->PhECU_mag_chg_1st, /* i/o: per band magnitude modifier for transients*/ + NULL, /* o: dbg per band magnitude modifier, incl. burst attenuation */ + plcAd->PhECU_Xavg, /* i/o: Frequency group average gain to fade to */ + &plcAd->PhECU_beta_mute, /* o : Factor for long-term mute */ + fs_idx, /* i : Encoded bandwidth "nb(0),WB,sWB,WB,FB" */ + frame_length, /* i : frame length */ + NULL , /* o : seed synch dbg */ + NULL , /* o : evolved Spectrum dbg */ + plcAd->PhECU_t_adv, /* i : time adjustment excluding time_offs */ + PhECU_wins[fs_idx][2], /* i: 2 ms initial part pre_tda = mdct-ana */ + PhECU_wins[fs_idx][1], /* i: 16 ms pretda combined part IWHR+MDCT-ana */ + PhECU_wins[fs_idx][0], + plcAd->PhECU_xfp_exp_fx, + plcAd->max_lprot, + plcAd->max_plocs, + plcAd->PhECU_L_oold_xfp_w_E_fx,plcAd->PhECU_oold_xfp_w_E_exp_fx, plcAd->PhECU_oold_Ltot_exp_fx, + plcAd->PhECU_oold_grp_shape_fx, + plcAd->PhECU_L_old_xfp_w_E_fx,plcAd->PhECU_old_xfp_w_E_exp_fx, plcAd->PhECU_old_Ltot_exp_fx, + plcAd->PhECU_old_grp_shape_fx, + plcAd->PhECU_margin_xfp, +#ifdef CR8_A_PLC_FADEOUT_TUNING + plcAd->plc_fadeout_type , /* i : fadeout scheme */ + &(plcAd->PhECU_nonpure_tone_flag), /* i/o : non-pure single tone indicator state */ +#endif + buffer_phecu); + + y_e = 18; move16(); /* the fixed exponent (exp) from Lecu_rec from PhaseECU is 18 */ + + Processing_ITDA_WIN_OLA( + L_ecu_rec, /* i: X_TDA buffer data = "y" DCT-IV output */ + &y_e, /* i/o: x_tda exponent "y_e" */ + w, /* i: window coefficients including normalization of sqrt(2/N) and scaled by 2^4 */ + ola_mem, /* i/o: overlap add memory */ + ola_mem_exp, /* i/o: overlap add exponent */ + x_fx, /* o: time signal out */ + LowDelayShapes_n960_len[fs_idx], /* i: window length */ + frame_length, /* i: block size */ + sub(frame_length, LowDelayShapes_n960_la_zeroes[fs_idx]) /* i: overlap add buffer size */ + ); + *q_fx_exp = y_e; move16(); /* assign updated Q */ + BREAK; + + case LC3_CON_TEC_TDPLC: + IF (sub(nbLostFramesInRow, 1) == 0) + { + plcAd->tdc_fract = old_pitch_fr; move16(); + n_bands = s_min(frame_length, MAX_BANDS_NUMBER_PLC); + SWITCH (frame_dms) + { + case 25: + band_offsets = bands_offset_lin_2_5ms[fs_idx]; move16(); + IF (sub(fs_idx, 4) == 0) + { + n_bands = 60; move16(); + } + BREAK; + case 50: + band_offsets = bands_offset_lin_5ms[fs_idx]; move16(); + IF (sub(fs_idx, 2) == 0) + { + n_bands = 40; move16(); + } + BREAK; +# ifdef CR8_G_ADD_75MS + case 75: + band_offsets = bands_offset_lin_7_5ms[fs_idx]; move16(); +# ifdef ENABLE_HR_MODE + IF (sub(fs_idx, 5) != 0) + { +# endif + IF (sub(fs_idx, 3) != 0) + { + n_bands = 60; move16(); + } +# ifdef ENABLE_HR_MODE + } +# endif + BREAK; +# endif + case 100: + band_offsets = bands_offset_lin[fs_idx]; move16(); + BREAK; + } + + FOR (i = 0; i < yLen; i++) + { + q_old_d_fx32[i] = L_deposit_h(q_old_d_fx[i]); + } + + /* LPC Analysis */ + /* calculate per band energy*/ + processPerBandEnergy_fx(d2_fx, &d2_fx_exp, q_old_d_fx32, *q_old_fx_exp, band_offsets, fs_idx, n_bands, + 1, frame_dms, buffer_perBandEnergy +#ifdef ENABLE_HR_MODE + , hrmode +#endif + ); + + /* calculate pre-emphasis */ + processPreEmphasis_fx(d2_fx, &d2_fx_exp, fs_idx, n_bands, frame_dms, buffer_preEmphasis); + + /* inverse ODFT */ + processInverseODFT_fx(r_fx, &r_fx_exp, d2_fx, d2_fx_exp, n_bands, plcAd->tdc_lpc_order, buffer_InverseODFT); + + /* lag windowing */ + processLagwin_fx(r_fx, lag_win[fs_idx], plcAd->tdc_lpc_order); + + /* Levinson Durbin */ + processLevinson_fx(tdc_A_32, r_fx, plcAd->tdc_lpc_order, NULL, NULL, buffer_Levinson); + + /* 32Q27 -> 16Qx */ + processPLCLpcScaling_fx(tdc_A_32, plcAd->tdc_A, add(plcAd->tdc_lpc_order, 1)); + } + + /* call TD-PLC */ + /* Q_syn = plcAd->q_fx_old_exp; */ /* makes q_fx_old_exp + available in processTimeDomainConcealment_Apply_fx() for + debugging */ + processTimeDomainConcealment_Apply_fx( + old_pitch_int, plcAd->tdc_preemph_fac, plcAd->tdc_A, plcAd->tdc_lpc_order, plcAd->x_old_tot_fx, frame_length, frame_dms, + fs_idx, nbLostFramesInRow, sub(frame_length, la_zeroes), plcAd->stab_fac, &plcAd->tdc_fract, + &plcAd->tdc_seed, + &plcAd->tdc_gain_c, x_fx, &Q_syn, damping, + plcAd->max_len_pcm_plc, + plcAd->harmonicBuf_fx, plcAd->synthHist_fx, &plcAd->harmonicBuf_Q, scratchBuffer +#ifdef CR9_I_INC_TDC_FADEOUT_LEN + , plcAd->plc_fadeout_type +#endif +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR + , alpha_type_2_table +#endif +); + + /* exponent of TD-PLC output */ + Q_syn = add(Q_syn, sub(15, plcAd->q_fx_old_exp)); + *q_fx_exp = sub(15, Q_syn); move16(); + + /* TDAC */ + processTdac_fx(ola_mem, ola_mem_exp, x_fx, *q_fx_exp, w, la_zeroes, frame_length, buffer_tdac); + BREAK; + + case LC3_CON_TEC_NS_ADV: + *q_fx_exp = *q_old_fx_exp; move16(); + + /* call Noise Substitution */ + processPLCNoiseSubstitution_fx(q_d_fx, q_old_d_fx, yLen); + + BREAK; + default: ASSERT(!"Unsupported PLC method!"); + } + } + + Dyn_Mem_Deluxe_Out(); +} + + diff --git a/lib_lc3plus/plc_classify_fx.c b/lib_lc3plus/plc_classify_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..cf455e68dc7717fad0bd00fa8485d9fc3b24a3cb --- /dev/null +++ b/lib_lc3plus/plc_classify_fx.c @@ -0,0 +1,424 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +#ifdef CR8_A_PLC_FADEOUT_TUNING + +static Word32 change_bit_at_position(Word32 value, Word8 bit_position, UWord8 bit) +{ + Word32 helper_mask = ~L_shl_pos(1, bit_position); + Word32 tmp = L_and(value, helper_mask); + tmp = L_or(tmp, L_shl_pos(bit, bit_position)); + return tmp; +} + +static void update_bit_and_byte_positions(Word16 longterm_analysis_counter_max_bytebuffer, Word8 *byte_position, Word8 *bit_position) +{ +#ifdef CR11_A_FIX_IN_PLC_LONGTERM_STATISTIC + IF (sub(*bit_position, 29) == 0) +#else + IF (sub(*bit_position, 30) == 0) +#endif + { + *bit_position = 0; move16(); + + if (sub(*byte_position, longterm_analysis_counter_max_bytebuffer) < -1) + { + *byte_position = add(*byte_position, 1); + } else { + *byte_position = 0; move16(); + } + } ELSE { + *bit_position = add(*bit_position, 1); + } +} + +static void array_insert_and_shift(Word32 *array, UWord8 value, Word16 longterm_analysis_counter_max, Word16 *overall_counter, Word8 *byte_position, Word8 *bit_position) +{ + Word32 current_byte = 0; + +#ifdef WMOPS + push_wmops("PLC::array_insert_and_shift"); +#endif + + IF( overall_counter != NULL) + { + *overall_counter = s_min(add(*overall_counter, 1), longterm_analysis_counter_max); + } + + current_byte = array[*byte_position]; move16(); + current_byte = change_bit_at_position(current_byte, *bit_position, value); + array[*byte_position] = current_byte; move16(); + +#ifdef WMOPS + pop_wmops(); +#endif +} + +#ifdef CR9_L_RETRAIN_FADEOUT_TYPE_CLASSIFIER +static void array_calculate(Word32 *array_tdc, Word32 *array_ns, int length, Word16 *counter_tdc, Word16 *counter_ns, Word16 longterm_analysis_counter_max) +#else +static void array_calculate(Word32 *array_tdc, Word32 *array_ns, int length, Word16 *counter_tdc, Word16 *counter_ns, Word16 *counter_phecu, Word16 overall_counter, Word16 longterm_analysis_counter_max) +#endif +{ + int i, k; + Word32 current_byte_tdc = 0, current_byte_ns = 0; + Word16 counter_loc_tdc = 0, counter_loc_ns = 0, counter_tmp = 0; + +#ifdef WMOPS + push_wmops("PLC::array_calculate"); +#endif + + for (i = length - 1; i >= 0; i--) + { + current_byte_tdc = array_tdc[i]; + current_byte_ns = array_ns[i]; + + for (k = 0; k < 30; k++) + { + counter_loc_tdc += ((current_byte_tdc >> k) & 1); + counter_loc_ns += ((current_byte_ns >> k) & 1); + counter_tmp++; + + /* Break from both loops if full 2s buffer has been evaluated */ + if (counter_tmp >= longterm_analysis_counter_max) + { + i = -1; + k = 30; + break; + } + } + } + + *counter_tdc = counter_loc_tdc; + *counter_ns = counter_loc_ns; + +#ifndef CR9_L_RETRAIN_FADEOUT_TYPE_CLASSIFIER + *counter_phecu = sub(sub(overall_counter, counter_loc_tdc), counter_loc_ns); +#endif +#ifdef WMOPS + pop_wmops(); +#endif +} +#endif + +static Word16 spectral_centroid_fx_lc(Word16 old_scf_q[], const Word16 *band_offsets, Word16 bands_number, Word16 frame_length, + Word16 fs_idx, Word8 *scratchBuffer +# ifdef ENABLE_HR_MODE + , Word16 hrmode +# endif + ); + +void processPLCclassify_fx(Word16 plcMeth, Word16 *concealMethod, Word16 *nbLostFramesInRow, Word16 bfi, + Word16 ltpf_mem_pitch_int, Word16 frame_length, Word16 frame_dms, Word16 fs_idx, Word16 yLen, + Word16 q_old_d_fx[], const Word16 *band_offsets, Word16 bands_number, AplcSetup *plcAd, Word8 *scratchBuffer +# ifdef ENABLE_HR_MODE + , Word16 hrmode +# endif + ) +{ + Dyn_Mem_Deluxe_In( + Word16 scQ15; + Word32 class; + ); + +#ifdef WMOPS + push_wmops("PLC::processPLCclassify_fx"); +#endif + + UNUSED(yLen); + UNUSED(q_old_d_fx); + + if (plcAd) + { + plcAd->norm_corrQ15_fx = 0; move16(); + } + +#ifdef CR8_A_PLC_FADEOUT_TUNING + /* assert(bfi != 2 && "Error bfi flag value, state of fadeout cntr is affected by PartialConcealment here "); */ + /* Save statistics for 24 kHz, 48 kHz and 96 kHz */ + IF((sub(bfi, 1) == 0) || (((bfi >= 0) && (sub(bfi, 2) <= 0)) && ((sub(fs_idx, 2) == 0) || (sub(fs_idx, 4) == 0) || (sub(fs_idx, 5) == 0)))) /* note for PC bfi==2 is possible */ +#else + IF (sub(bfi, 1) == 0) +#endif + { + /* increase counter of lost-frames-in-a-row */ +#ifdef CR8_A_PLC_FADEOUT_TUNING + IF (sub(bfi, 1) == 0) + { + *nbLostFramesInRow = add(*nbLostFramesInRow, 1); + *nbLostFramesInRow = s_min(*nbLostFramesInRow, 0x100); + } +#else + *nbLostFramesInRow = add(*nbLostFramesInRow, 1); + *nbLostFramesInRow = s_min(*nbLostFramesInRow, 0x100); +#endif + +#ifdef CR8_A_PLC_FADEOUT_TUNING + /*assert((bfi != 2) && "PartialConcealment checked vs bfi==0 can cause issues "); */ + IF ((sub(*nbLostFramesInRow, 1) == 0) || (bfi != 1) ) /* was "|| (bfi==0)" , NB only test bfi vs "1" as bfi can have the states [0(good),1(bad),2(good,partialConcealment) } */ +#else + IF (sub(*nbLostFramesInRow, 1) == 0) +#endif + { + *concealMethod = plcMeth; move16(); + + IF(sub(plcMeth, 1) == 0) + { + IF(ltpf_mem_pitch_int > 0) + { + *concealMethod = LC3_CON_TEC_TDPLC; move16(); /* TD-PLC */ + /* Calculate Features */ + + plcAd->norm_corrQ15_fx = plc_xcorr_lc_fx(plcAd->x_old_tot_fx, plcAd->max_len_pcm_plc, ltpf_mem_pitch_int, fs_idx); + scQ15 = spectral_centroid_fx_lc(plcAd->old_scf_q, band_offsets, bands_number, frame_length, + fs_idx, scratchBuffer +#ifdef ENABLE_HR_MODE + , hrmode +#endif + ); + + /* Classify */ + class = L_mult(plcAd->norm_corrQ15_fx, 7640); + class = L_mac(class, scQ15, -32768); + class = L_add_sat(class, -335020208); + + IF(class <= 0) + { +#ifdef ENABLE_HR_MODE + IF((frame_dms == 100) && (hrmode == 0)) +#else + IF(frame_dms == 100) +#endif + { + *concealMethod = LC3_CON_TEC_PHASE_ECU; move16(); /* Phase ECU selected */ +#ifdef CR8_A_PLC_FADEOUT_TUNING + array_insert_and_shift(plcAd->plc_longterm_advc_tdc, 0, plcAd->longterm_analysis_counter_max, &plcAd->overall_counter, &plcAd->longterm_counter_byte_position, &plcAd->longterm_counter_bit_position); + array_insert_and_shift(plcAd->plc_longterm_advc_ns, 0, plcAd->longterm_analysis_counter_max, NULL, &plcAd->longterm_counter_byte_position, &plcAd->longterm_counter_bit_position); +#endif + } + ELSE + { +#ifndef CR9_G_PLC_NS_TDC_FIX + *concealMethod = LC3_CON_TEC_NS_ADV; move16(); /* Noise Substitution */ +#endif +#ifdef CR8_A_PLC_FADEOUT_TUNING + array_insert_and_shift(plcAd->plc_longterm_advc_tdc, 0, plcAd->longterm_analysis_counter_max, &plcAd->overall_counter, &plcAd->longterm_counter_byte_position, &plcAd->longterm_counter_bit_position); + array_insert_and_shift(plcAd->plc_longterm_advc_ns, 0, plcAd->longterm_analysis_counter_max, NULL, &plcAd->longterm_counter_byte_position, &plcAd->longterm_counter_bit_position); +#endif + } + } +#ifdef CR8_A_PLC_FADEOUT_TUNING + ELSE { + array_insert_and_shift(plcAd->plc_longterm_advc_tdc, 1, plcAd->longterm_analysis_counter_max, &plcAd->overall_counter, &plcAd->longterm_counter_byte_position, &plcAd->longterm_counter_bit_position); + array_insert_and_shift(plcAd->plc_longterm_advc_ns, 0, plcAd->longterm_analysis_counter_max, NULL, &plcAd->longterm_counter_byte_position, &plcAd->longterm_counter_bit_position); + } +#endif + } + ELSE + { + *concealMethod = LC3_CON_TEC_NS_ADV; move16(); /* Noise Substitution */ +#ifdef CR8_A_PLC_FADEOUT_TUNING + array_insert_and_shift(plcAd->plc_longterm_advc_tdc, 0, plcAd->longterm_analysis_counter_max, &plcAd->overall_counter, &plcAd->longterm_counter_byte_position, &plcAd->longterm_counter_bit_position); + array_insert_and_shift(plcAd->plc_longterm_advc_ns, 1, plcAd->longterm_analysis_counter_max, NULL, &plcAd->longterm_counter_byte_position, &plcAd->longterm_counter_bit_position); +#endif + } + +#ifdef CR8_A_PLC_FADEOUT_TUNING +# ifdef CR9_L_RETRAIN_FADEOUT_TYPE_CLASSIFIER + array_calculate(plcAd->plc_longterm_advc_tdc, plcAd->plc_longterm_advc_ns, plcAd->longterm_analysis_counter_max_bytebuffer, &plcAd->longterm_counter_plcTdc, &plcAd->longterm_counter_plcNsAdv, plcAd->longterm_analysis_counter_max); +# else + array_calculate(plcAd->plc_longterm_advc_tdc, plcAd->plc_longterm_advc_ns, plcAd->longterm_analysis_counter_max_bytebuffer, &plcAd->longterm_counter_plcTdc, &plcAd->longterm_counter_plcNsAdv, &plcAd->longterm_counter_plcPhaseEcu, plcAd->overall_counter, plcAd->longterm_analysis_counter_max); +# endif + update_bit_and_byte_positions(plcAd->longterm_analysis_counter_max_bytebuffer, &plcAd->longterm_counter_byte_position, &plcAd->longterm_counter_bit_position); +#endif + } + + } + } + + Dyn_Mem_Deluxe_Out(); +#ifdef WMOPS + pop_wmops(); +#endif +} + + +Word16 spectral_centroid_fx_lc(Word16 old_scf_q[], const Word16 *band_offsets, Word16 bands_number, Word16 frame_length, + Word16 fs_idx, Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif + ) +{ + Dyn_Mem_Deluxe_In( + Counter i, j; + Word32 den32, num32, tmp32; + Word16 s, sc, fac, freq, inv, startfreq, stopfreq; + Word16 s2; + Word16 *old_scf_q_mod; + Word16 *old_scf_q_mod_exp; + Word16 *band_offsets_local; + ); +#ifdef WMOPS + push_wmops("PLC::spectral_centroid_fx_lc"); +#endif + +#ifdef ENABLE_HR_MODE + s2 = 0; +#else + UNUSED(s2); +#endif + + + old_scf_q_mod = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * M */ + old_scf_q_mod_exp = (Word16 *)scratchAlign(old_scf_q_mod, sizeof(*old_scf_q_mod) * M); /* Size = 2 * M */ + band_offsets_local = (Word16 *)scratchAlign(old_scf_q_mod_exp, sizeof(*old_scf_q_mod_exp) * (M)); /* Size = 2 * bands_number */ + + /* Linear Domain */ + FOR (i = 0; i < M; i++) + { + old_scf_q_mod[i] = BASOP_Util_InvLog2_16(old_scf_q[i], &old_scf_q_mod_exp[i]); + } + + /* De-emphasis */ + FOR (i = 0; i < M; i++) + { + old_scf_q_mod[i] = mult(old_scf_q_mod[i], lpc_warp_dee_emphasis[fs_idx][i]); move16(); + old_scf_q_mod_exp[i] = add(old_scf_q_mod_exp[i], lpc_warp_dee_emphasis_e[fs_idx][i]); move16(); + } + + IF (sub(bands_number, 64) == 0) + { + basop_memmove(band_offsets_local, band_offsets, (bands_number + 1) * sizeof(Word16)); + } + IF (sub(bands_number, 32) < 0) + { + band_offsets_local[0] = 0; move16(); + s = sub(32, bands_number); + FOR (i = sub(bands_number, 1); i >= s; i--) + { + band_offsets_local[(i + s) * 2 + 1 + 1] = band_offsets[i + 1]; move16(); + band_offsets_local[(i + s) * 2 + 0 + 1] = band_offsets[i + 1]; move16(); + } + FOR (i = sub(s, 1); i >= 0; i--) + { + band_offsets_local[i * 4 + 3 + 1] = band_offsets[i + 1]; move16(); + band_offsets_local[i * 4 + 2 + 1] = band_offsets[i + 1]; move16(); + band_offsets_local[i * 4 + 1 + 1] = band_offsets[i + 1]; move16(); + band_offsets_local[i * 4 + 0 + 1] = band_offsets[i + 1]; move16(); + } + } + ELSE + IF (sub(bands_number, 64) < 0) + { + band_offsets_local[0] = 0; move16(); + s = sub(64, bands_number); + FOR (i = sub(bands_number, 1); i >= s; i--) + { + band_offsets_local[i + s + 1] = band_offsets[i + 1]; move16(); + } + FOR (i = sub(s, 1); i >= 0; i--) + { + band_offsets_local[i * 2 + 1 + 1] = band_offsets[i + 1]; move16(); + band_offsets_local[i * 2 + 0 + 1] = band_offsets[i + 1]; move16(); + } + } + + den32 = 1; move16(); + num32 = 0; move16(); + inv = div_s(1, frame_length); + + FOR (i = 0; i < M; i++) + { + freq = 0; move16(); + startfreq = add(band_offsets_local[i * 4], 1); + stopfreq = band_offsets_local[i * 4 + 4]; + +# ifdef ENABLE_HR_MODE + IF (hrmode != 0) + { + tmp32 = 0; move32(); + FOR (j = startfreq; j <= stopfreq; j++) + { + tmp32 = L_add(tmp32, j); + } + + s2 = norm_l(tmp32); + freq = extract_h(L_shl(tmp32, s2)); + s2 = sub(add(15, s2), 31); + tmp32 = L_mult(inv, freq); + s = norm_l(tmp32); + } + ELSE +# endif + { + FOR (j = startfreq; j <= stopfreq; j++) + { + freq = add(freq, j); + } + + tmp32 = L_mult(inv, freq); + s = norm_l(tmp32); + } + + tmp32 = L_mult(old_scf_q_mod[i], extract_h(L_shl(tmp32, s))); + +# ifdef ENABLE_HR_MODE + if (hrmode != 0) + { + s = add(s, s2); + } +# endif + + num32 = L_add(num32, L_shl(tmp32, add(add(-15, old_scf_q_mod_exp[i]), sub(15, s)))); + den32 = L_add(den32, L_shl(L_mult(old_scf_q_mod[i], stopfreq - startfreq + 1), old_scf_q_mod_exp[i])); + } + + s = norm_l(den32); + s = sub(16, s); + + sc = div_s(extract_l(L_shr(num32, s)), extract_l(L_shr(den32, s))); + + SWITCH (fs_idx) + { + case 0: + fac = 5461; move16(); + BREAK; + case 1: + fac = 10922; move16(); + BREAK; + case 2: + fac = 16384; move16(); + BREAK; + case 3: + fac = 21845; move16(); + BREAK; + default: /* case 4: */ + fac = 32767; move16(); + BREAK; + } + sc = round_fx(L_mult(sc, fac)); +# ifdef ENABLE_HR_MODE + if (sub(fs_idx, 5) == 0) + { + sc = shl_pos(sc, 1); + } +# endif + + Dyn_Mem_Deluxe_Out(); +#ifdef WMOPS + pop_wmops(); +#endif + return sc; +} + + diff --git a/lib_lc3plus/plc_damping_scrambling_fx.c b/lib_lc3plus/plc_damping_scrambling_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..4c5641634867f3d803b0e10028851d98a7294e67 --- /dev/null +++ b/lib_lc3plus/plc_damping_scrambling_fx.c @@ -0,0 +1,430 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +void processPLCDampingScrambling_main_fx(Word16 bfi, Word16 concealMethod, Word16 ns_nbLostFramesInRow, Word16 *cum_fflcAtten, + Word16 pc_nbLostFramesInRow, Word16 *ns_seed, Word16 *pc_seed, Word16 pitch_present_bfi1, + Word16 pitch_present_bfi2, Word32 spec[], Word16 *q_fx_exp, Word16 *q_old_d_fx, + Word16 *q_old_fx_exp, Word16 L_spec, Word16 stabFac, Word16 frame_dms, + Word16 *cum_fading_slow, Word16 *cum_fading_fast, Word16 spec_inv_idx +#ifdef CR8_A_PLC_FADEOUT_TUNING + , UWord8 plc_fadeout_type +#endif + ) +{ + Dyn_Mem_Deluxe_In( + Word16 processDampScramb; + ); + + IF ( bfi != 0 ) + { + processDampScramb = 0; move16(); + test(); + IF (sub(concealMethod, LC3_CON_TEC_NS_ADV) == 0 || sub(bfi, 2) == 0) + { + processDampScramb = 1; move16(); + } + +#ifdef CR8_A_PLC_FADEOUT_TUNING + IF (sub(ns_nbLostFramesInRow, 1) == 0) + { + *cum_fading_slow = 32767; move16(); + *cum_fading_fast = 32767; move16(); + *cum_fflcAtten = 32767; move16(); + } +#endif + + IF (sub(bfi, 1) == 0) + { + processPLCDampingScrambling_fx(spec, L_spec, ns_nbLostFramesInRow, stabFac, + processDampScramb, cum_fflcAtten, + pitch_present_bfi1, frame_dms, cum_fading_slow, + cum_fading_fast, ns_seed, 0 +#ifdef CR8_A_PLC_FADEOUT_TUNING + , plc_fadeout_type +#endif + ); + } + ELSE /* bfi == 2 */ + { + processPLCDampingScrambling_fx(spec, L_spec, pc_nbLostFramesInRow, stabFac, + processDampScramb, cum_fflcAtten, + pitch_present_bfi2, frame_dms, cum_fading_slow, + cum_fading_fast, pc_seed, spec_inv_idx +#ifdef CR8_A_PLC_FADEOUT_TUNING + , plc_fadeout_type +#endif + ); + + processPLCupdateSpec_fx(q_old_d_fx, q_old_fx_exp, spec, q_fx_exp, L_spec); + } + } + Dyn_Mem_Deluxe_Out(); +} + +void processPLCDampingScrambling_fx(Word32 spec[], Word16 L_spec, Word16 nbLostFramesInRow, Word16 stabFac, Word16 processDampScramb, + Word16 *cum_fflcAtten, Word16 pitch_present, Word16 frame_dms, Word16 *cum_fading_slow, + Word16 *cum_fading_fast, Word16 *seed, Word16 spec_inv_idx +#ifdef CR8_A_PLC_FADEOUT_TUNING + , UWord8 plc_fadeout_type +#endif + ) +{ + Counter i; + Word16 lossDuration_dms, slow, fast, tmp16; + Word16 plc_start_inFrames, plc_end_inFrames, plc_duration_inFrames, linFuncStartStop; + Word16 randThreshold, ad_threshFac, energThreshold, s, s2, s3, mean_energy16; + Word32 frame_energy, mean_nrg, fac; + Word16 fflcAtten, cum_fading_slow_local, cum_fading_fast_local; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processPLCDampingScrambling_fx", sizeof(struct { + Counter i; + Word16 lossDuration_dms, slow, fast, tmp16; + Word16 plc_start_inFrames, plc_end_inFrames, plc_duration_inFrames, linFuncStartStop; + Word16 randThreshold, ad_threshFac, energThreshold, s, s2, s3, mean_energy16; + Word32 frame_energy, mean_nrg, fac; + Word16 fflcAtten, cum_fading_slow_local, cum_fading_fast_local; + })); +#endif + + /** preparation */ +#ifndef CR8_A_PLC_FADEOUT_TUNING + /* init cummulative damping factors at first loss */ + IF (sub(nbLostFramesInRow, 1) == 0) + { + *cum_fading_slow = 32767; move16(); + *cum_fading_fast = 32767; move16(); + *cum_fflcAtten = 32767; move16(); + } +#endif + + /* get damping factors */ + tmp16 = mult(6554 /*0.2*/, stabFac); + slow = add(26214 /*0.8*/, tmp16); + fast = add( 9830 /*0.3*/, tmp16); + + + SWITCH (frame_dms) + { + case 25: + IF (sub(slow, 32767) < 0) + { + tmp16 = 0; + slow = Sqrt16_lc3plus(slow, &tmp16); move16(); + slow = shl(slow, tmp16); + } + IF (sub(slow, 32767) < 0) + { + tmp16 = 0; + slow = Sqrt16_lc3plus(slow, &tmp16); move16(); + slow = shl(slow, tmp16); + } + IF (sub(fast, 32767) < 0) + { + tmp16 = 0; + fast = Sqrt16_lc3plus(fast, &tmp16); move16(); + fast = shl(fast, tmp16); + } + IF (sub(fast, 32767) < 0) + { + tmp16 = 0; + fast = Sqrt16_lc3plus(fast, &tmp16); move16(); + fast = shl(fast, tmp16); + } + BREAK; + case 50: + IF (sub(slow, 32767) < 0) + { + tmp16 = 0; + slow = Sqrt16_lc3plus(slow, &tmp16); move16(); + slow = shl(slow, tmp16); + } + IF (sub(fast, 32767) < 0) + { + tmp16 = 0; + fast = Sqrt16_lc3plus(fast, &tmp16); move16(); + fast = shl(fast, tmp16); + } + BREAK; +#ifdef ENABLE_075_DMS_MODE +# ifdef CR8_G_ADD_75MS + case 75: + IF (sub(slow, 32767) < 0) + { + slow = mult(slow, mult(slow, slow)); + } + IF (sub(slow, 32767) < 0) + { + tmp16 = 0; + slow = Sqrt16_lc3plus(slow, &tmp16); move16(); + slow = shl(slow, tmp16); + } + IF (sub(slow, 32767) < 0) + { + tmp16 = 0; + slow = Sqrt16_lc3plus(slow, &tmp16); move16(); + slow = shl(slow, tmp16); + } + IF (sub(fast, 32767) < 0) + { + fast = mult(fast, mult(fast, fast)); + } + IF (sub(fast, 32767) < 0) + { + tmp16 = 0; + fast = Sqrt16_lc3plus(fast, &tmp16); move16(); + fast = shl(fast, tmp16); + } + IF (sub(fast, 32767) < 0) + { + tmp16 = 0; + fast = Sqrt16_lc3plus(fast, &tmp16); move16(); + fast = shl(fast, tmp16); + } + BREAK; +# endif +#endif + } + +#ifdef CR8_A_PLC_FADEOUT_TUNING + if (plc_fadeout_type == 0) + { +#endif + *cum_fading_slow = mult_r(*cum_fading_slow, slow); + *cum_fading_fast = mult_r(*cum_fading_fast, fast); +#ifdef CR8_A_PLC_FADEOUT_TUNING + } +#endif + + IF ( sub(processDampScramb, 1) == 0 ) + { +#ifdef CR8_A_PLC_FADEOUT_TUNING + if (plc_fadeout_type != 0) + { + Word16 lost_frame_thr1 = 4; + Word16 lost_frame_thr2 = 8; + + SWITCH (frame_dms) + { + case 25: + lost_frame_thr1 = 16; + lost_frame_thr2 = 32; + BREAK; + case 50: + lost_frame_thr1 = 8; + lost_frame_thr2 = 16; + BREAK; +#ifdef ENABLE_075_DMS_MODE +# ifdef CR8_G_ADD_75MS + case 75: + lost_frame_thr1 = 6; + lost_frame_thr2 = 11; +# endif +#endif + } + IF (sub(nbLostFramesInRow, lost_frame_thr1) < 0) + { + cum_fading_slow_local = 32767; move16(); + } + ELSE IF (sub(nbLostFramesInRow, lost_frame_thr2) < 0) + { + cum_fading_slow_local = 29491; move16(); + } + ELSE + { + cum_fading_slow_local = 27852; move16(); + } + + *cum_fading_slow = mult_r(*cum_fading_slow, cum_fading_slow_local); move16(); + cum_fading_slow_local = *cum_fading_slow; move16(); + } else { +#endif + /** rapid fading for FFLC */ + fflcAtten = 32767; move16(); + cum_fading_slow_local = *cum_fading_slow; move16(); + cum_fading_fast_local = *cum_fading_fast; move16(); + + IF (spec_inv_idx == 0) + { + lossDuration_dms = DEPR_i_mult(nbLostFramesInRow, frame_dms); + IF (sub(lossDuration_dms, PLC_FADEOUT_IN_MS*10) > 0) + { + *cum_fflcAtten = 0; move16(); + fflcAtten = 0; move16(); + } + ELSE IF (sub(lossDuration_dms, 200) > 0) + { + SWITCH (frame_dms) + { + case 25: fflcAtten = PLC34_ATTEN_FAC_025_FX; BREAK; + case 50: fflcAtten = PLC34_ATTEN_FAC_050_FX; BREAK; +#ifdef ENABLE_075_DMS_MODE +# ifdef CR8_G_ADD_75MS + case 75: fflcAtten = PLC34_ATTEN_FAC_075_FX; BREAK; +# endif +#endif + case 100: fflcAtten = PLC34_ATTEN_FAC_100_FX; BREAK; + } + } + IF ( sub(fflcAtten, 32767) < 0 ) + { + *cum_fflcAtten = mult_r(*cum_fflcAtten, fflcAtten); + cum_fading_slow_local = mult_r(*cum_fading_slow, *cum_fflcAtten); + cum_fading_fast_local = mult_r(*cum_fading_fast, *cum_fflcAtten); + } + } + + /** prepare fade-out function */ + /* being 1 up to plc_start_inFrames, being 0 starting with + plc_end_inFrames; decreasing linearly in between */ + SWITCH (frame_dms) + { + case 25: + plc_start_inFrames = (10*PLC4_TRANSIT_START_IN_MS) / 25; move16(); + plc_end_inFrames = (10*PLC4_TRANSIT_END_IN_MS) / 25; move16(); + BREAK; + case 50: + plc_start_inFrames = (10*PLC4_TRANSIT_START_IN_MS) / 50; move16(); + plc_end_inFrames = (10*PLC4_TRANSIT_END_IN_MS) / 50; move16(); + BREAK; +#ifdef ENABLE_075_DMS_MODE +# ifdef CR8_G_ADD_75MS + case 75: + plc_start_inFrames = (10*PLC4_TRANSIT_START_IN_MS) / 75; move16(); + plc_end_inFrames = (10*PLC4_TRANSIT_END_IN_MS) / 75; move16(); + BREAK; +# endif +#endif + default: + plc_start_inFrames = (10*PLC4_TRANSIT_START_IN_MS) / 100; move16(); + plc_end_inFrames = (10*PLC4_TRANSIT_END_IN_MS) / 100; move16(); + } + + if (pitch_present == 0) + { + plc_start_inFrames = 1; move16(); + } + plc_duration_inFrames = sub(plc_end_inFrames, plc_start_inFrames); + + IF (sub(nbLostFramesInRow, plc_start_inFrames) <= 0) + { + linFuncStartStop = 32767; move16(); + } + ELSE IF (sub(nbLostFramesInRow, plc_end_inFrames) >= 0) + { + linFuncStartStop = 0; move16(); + } + ELSE + { + /* + x = xLostFramesInRow; + m = -1 / plc_duration_inFrames; + b = -plc_end_inFrames; % shift on x axis + linFuncStartStop = m * (x + b); + */ + linFuncStartStop = div_s(sub(plc_end_inFrames, nbLostFramesInRow), plc_duration_inFrames); + } + + /** sign scrambling */ + randThreshold = mult(-32768, linFuncStartStop); +#ifdef CR8_A_PLC_FADEOUT_TUNING + } +#endif + + tmp16 = *seed; move16(); + FOR (i = spec_inv_idx; i < L_spec; i++) + { + tmp16 = extract_l(L_mac0(16831, tmp16, 12821)); + + IF (tmp16 < 0) + { + test(); +#ifdef CR8_A_PLC_FADEOUT_TUNING + if (plc_fadeout_type != 0 || pitch_present == 0 || sub(tmp16, randThreshold) < 0 ) +#else + if (pitch_present == 0 || sub(tmp16, randThreshold) < 0) +#endif + { + spec[i] = L_negate(spec[i]); + } + } + + } + *seed = tmp16; move16(); + +#ifdef CR8_A_PLC_FADEOUT_TUNING + if (plc_fadeout_type == 0) + { +#endif + /** adaptive damping */ + tmp16 = mult(18022 /* 10 - 1.2 */, linFuncStartStop); + ad_threshFac = add(shr(tmp16, 1), 1228 /* 1.2 >> 1 */); /* exp = 5 */ + + s = getScaleFactor32_lc3plus(&spec[spec_inv_idx], sub(L_spec, spec_inv_idx)); + frame_energy = 0; move32(); + FOR (i = spec_inv_idx; i < L_spec; i++) + { + tmp16 = extract_h(L_shl_sat(spec[i], sub(s, 4))); + frame_energy = L_mac0(frame_energy, tmp16, tmp16); /* exp = -(2*(s-16) - 8) */ + } + mean_energy16 = BASOP_Util_Divide3216_Scale_lc3plus(frame_energy, sub(L_spec, spec_inv_idx), &s2); /* exp = -(2*(s-16) - 8) + 16 - (15-s2) */ + + energThreshold = mult(ad_threshFac, mean_energy16); /* exp = -(2*(s-16) - 8) + 16 - (15-s2) + 5 */ + + s3 = add(sub(29, shl(sub(s, 16), 1)), s2); + IF (sub(energThreshold, 32767) < 0) + { + energThreshold = Sqrt16_lc3plus(energThreshold, &s3); + } + s3 = sub(s3, 15); + + mean_nrg = L_shl_sat(L_deposit_l(energThreshold), s3); /* exp = 0 */ + fac = mult(sub(cum_fading_slow_local, cum_fading_fast_local), energThreshold); + fac = L_shl_sat(L_deposit_l(fac), s3); /* exp = 0 */ +#ifdef CR8_A_PLC_FADEOUT_TUNING + } +#endif + + FOR (i = spec_inv_idx; i < L_spec; i++) + { +#ifdef CR8_A_PLC_FADEOUT_TUNING + if ( ( plc_fadeout_type != 0 ) || (L_sub(L_abs(spec[i]), mean_nrg) < 0) ) +#else + if (L_sub(L_abs(spec[i]), mean_nrg) < 0) +#endif + { + spec[i] = Mpy_32_16_lc3plus(spec[i], cum_fading_slow_local); + } + else + { + if (spec[i] > 0) + { + spec[i] = L_add_sat(Mpy_32_16_lc3plus(spec[i], cum_fading_fast_local), fac); + } + else if (spec[i] == 0) + { + spec[i] = Mpy_32_16_lc3plus(spec[i], cum_fading_fast_local); + } + else + { + spec[i] = L_sub_sat(Mpy_32_16_lc3plus(spec[i], cum_fading_fast_local), fac); + } + } + } + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + + diff --git a/lib_lc3plus/plc_lpc_scaling_fx.c b/lib_lc3plus/plc_lpc_scaling_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..85ffbf9422cf3517b0535cfdf573d3c6399320c1 --- /dev/null +++ b/lib_lc3plus/plc_lpc_scaling_fx.c @@ -0,0 +1,36 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +void processPLCLpcScaling_fx(Word32 tdc_A_32[], Word16 tdc_A_16[], Word16 m) +{ + Counter i; + Word16 s; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processPLCLpcScaling_fx", sizeof(struct { + Counter i; + Word16 s; + })); +#endif + + s = getScaleFactor32_lc3plus(tdc_A_32, m); + FOR (i = 0; i < m; i++) + { + tdc_A_16[i] = round_fx_sat(L_shl_sat(tdc_A_32[i], s)); move16(); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + + diff --git a/lib_lc3plus/plc_main_fx.c b/lib_lc3plus/plc_main_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..1948aa23a0683361b7fac146f6c6749e2c157d1f --- /dev/null +++ b/lib_lc3plus/plc_main_fx.c @@ -0,0 +1,85 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +void processPLCmain_fx(Word16 plcMeth, Word16 *concealMethod, Word16 *nbLostFramesInRow, Word16 bfi, Word16 prev_bfi, + Word16 frame_length, Word16 la_zeroes, +#ifdef ENABLE_HR_MODE + const Word32 w[], +#else + const Word16 w[], +#endif + Word16 x_fx[], Word16 ola_mem[], + Word16 *ola_mem_exp, Word16 q_old_d_fx[], Word16 *q_old_fx_exp, Word32 q_d_fx[], + Word16 *q_fx_exp, Word16 yLen, Word16 fs_idx, const Word16 *band_offsets, Word16 bands_number, Word16 *damping, + Word16 old_pitch_int, Word16 old_pitch_fr, Word16 *ns_cum_alpha, Word16 *ns_seed, + AplcSetup *plcAd, Word16 frame_dms, Word8 *scratchBuffer, Word16 *pc_nbLostFramesInRow +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + ,Word32 rel_pitch_change +#endif +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR + ,Word16 *alpha_type_2_table +#endif +) +{ + IF(sub(bfi, 1) == 0 && plcAd) + { + /* FFLC increases the PFLC counter */ + *pc_nbLostFramesInRow = add(*pc_nbLostFramesInRow, 1); + } + + processPLCclassify_fx(plcMeth, concealMethod, nbLostFramesInRow, bfi, old_pitch_int, frame_length, frame_dms, + fs_idx, yLen, q_old_d_fx, band_offsets, bands_number, plcAd, scratchBuffer +#ifdef ENABLE_HR_MODE + , hrmode +#endif + ); + + processPLCapply_fx( +#ifdef CR8_A_PLC_FADEOUT_TUNING + concealMethod, +#else + *concealMethod, +#endif + *nbLostFramesInRow, bfi, prev_bfi, frame_length, la_zeroes, w, x_fx, ola_mem, + ola_mem_exp, q_old_d_fx, q_old_fx_exp, q_d_fx, q_fx_exp, yLen, fs_idx, damping, old_pitch_int, + old_pitch_fr, ns_cum_alpha, ns_seed, frame_dms, plcAd, scratchBuffer +#ifdef ENABLE_HR_MODE + , hrmode +#endif +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + , rel_pitch_change +#endif +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR + , alpha_type_2_table +#endif + ); + + IF (bfi == 0) + { + processPLCupdateSpec_fx(q_old_d_fx, q_old_fx_exp, q_d_fx, q_fx_exp, yLen); + } + +#ifdef ENABLE_HR_MODE + IF (plcAd != NULL && (sub(plcAd->PhECU_frame_ms , 10) == 0) && (hrmode == 0)) +#else + IF (plcAd != NULL && (sub(plcAd->PhECU_frame_ms , 10) == 0)) +#endif + { + processPLCspec2shape_fx(prev_bfi, bfi, q_old_d_fx, yLen, plcAd->PhECU_oold_grp_shape_fx, plcAd->PhECU_old_grp_shape_fx); + } + +} + + diff --git a/lib_lc3plus/plc_noise_substitution_fx.c b/lib_lc3plus/plc_noise_substitution_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..ab618ae7e124429afc2721a496bcdb4c5419975c --- /dev/null +++ b/lib_lc3plus/plc_noise_substitution_fx.c @@ -0,0 +1,32 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +void processPLCNoiseSubstitution_fx(Word32 spec[], Word16 spec_prev[], Word16 L_spec) +{ + Dyn_Mem_Deluxe_In( + Counter i; + ); + + FOR (i = 0; i < L_spec; i++) + { + spec[i] = L_deposit_h(spec_prev[i]); + } + + /* High pass to prevent overflows */ + spec[0] = Mpy_32_16_lc3plus(spec[0], 6553 /* 0.2 Q15*/); move32(); + spec[1] = Mpy_32_16_lc3plus(spec[1], 16384 /* 0.5 Q15*/); move32(); + + Dyn_Mem_Deluxe_Out(); +} + + + diff --git a/lib_lc3plus/plc_phecu_f0_refine_first_fx.c b/lib_lc3plus/plc_phecu_f0_refine_first_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..5c01a00299b11d84ce760dbb71d0245f53066c1b --- /dev/null +++ b/lib_lc3plus/plc_phecu_f0_refine_first_fx.c @@ -0,0 +1,100 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +void plc_phEcu_F0_refine_first_fx(Word16 * plocs, /* i/o */ + const Word16 n_plocs_in, Word32 *L_f0est, /* i/o Q16 */ + const Word16 stPhECU_f0hzLtpBinQ7, const Word16 stPhECU_f0gainLtpQ15, + const Word16 nSubm) + +{ + Counter subm, i; + Word16 ploc, n_plocs_ana; + Word32 L_tmp = 0, L_diff, L_f0EstQ7, L_sensitivity_Q7; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("plc_phEcu_F0_refine_first_fx", sizeof(struct { + Counter subm, i; + Word16 ploc, n_plocs_ana; + Word32 L_tmp, L_diff, L_f0EstQ7, L_sensitivity_Q7; + })); +#endif + + + + /* single initial peak F0 correction using available LTP information */ + + IF (sub(stPhECU_f0gainLtpQ15, ((Word16)(0.25 * 32768.0))) > 0) + { + ploc = -1; move16(); /* sentinel */ + n_plocs_ana = s_min(n_plocs_in, 4); /* only analyze at first 3 deteteced LF peaks */ + + /* only apply analysis below nsubm*pitmax_freq ~= 1600Hz */ + i = sub(n_plocs_ana, 1); + WHILE (i >= 0 && sub(plocs[i], (Word16)(1600.0 / 62.5)) > 0) + { + i--; + } + n_plocs_ana = add(i, 1); + + IF ((n_plocs_ana > 0)) + { + /* % find/correct first peak in f0est , that is a submultiple of n*f0Ltp*/ + FOR (i = 0; i < n_plocs_ana; i++) + { + + L_sensitivity_Q7 = L_deposit_l(((Word32)1) << (7 - 1)); /* 0.5 in Q7 */ + if (sub(stPhECU_f0gainLtpQ15, ((Word16)(0.75 * 32768.0))) < 0) + { + L_sensitivity_Q7 = L_shr_pos(L_sensitivity_Q7, 1); /* % more picky if correlation is rather low */ + } + + L_f0EstQ7 = L_shr_pos(L_f0est[i], 9); /* Q16 to Q7 */ + + FOR (subm = 1; subm <= nSubm; subm++) + { + /*adjf0 = abs(f0est - subm*stPhECU_f0hzLtpBin*ones(size(f0est))) < sensitivity ; % L1 difference, + vector operation over f0 + ind = find(adjf0==1,1); */ + L_diff = L_msu0(L_f0EstQ7, subm, stPhECU_f0hzLtpBinQ7); + L_diff = L_abs(L_diff); + IF (L_sub(L_diff, L_sensitivity_Q7) < 0) + { + L_tmp = L_shl_pos(L_mult0(subm, stPhECU_f0hzLtpBinQ7), 16 - 7); /* to Q16 */ + ploc = i; move16(); + BREAK; + } + L_sensitivity_Q7 = Mpy_32_16_lc3plus(L_sensitivity_Q7, (Word16)(0.875 * 32768.0 )); /* 2 cycles */ + } /* subm*/ + + IF (ploc >= 0) + { + BREAK; + } + } /* i, n_ploc_ana*/ + } + + if (ploc >= 0) + { + L_f0est[ploc] = L_tmp; move32(); /* in Q16 */ + /*ideally also integer plocs should be updated , e.g. if f0est goes from 1.45(plocs=1) to 1.6(plocs==2) + */ + /* but that is costly and not required as long as corr_phase width is large enough ]*/ + } + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif + +} + + diff --git a/lib_lc3plus/plc_phecu_fec_hq_fx.c b/lib_lc3plus/plc_phecu_fec_hq_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..e73a1faa818c1f60af03b5425f3d5b379bac77b9 --- /dev/null +++ b/lib_lc3plus/plc_phecu_fec_hq_fx.c @@ -0,0 +1,3157 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" +#include "math.h" /*dbg*/ + +/*---------------------------------------------------------------------* + * Local constants + *---------------------------------------------------------------------*/ + +#define DELTA_CORR 5 /* Tuning parameter - defining range for phase correction around peak */ +#define DELTA_CORR_F0_INT 2 /* Tuning parameter - defining range for phase correction around peak */ + +#define MAX_INCREASE_GRPPOW_FX 0 /* max. amplification in case of transients (in dB scale) */ + +#ifdef CR8_A_PLC_FADEOUT_TUNING +# define ONE_SIDED_SINE_WIDTH (4) /* expected pure sine main lobe maximum width (4+1+4) bins *62.5 hz/bin => approx 560 Hz total width */ +# define SIDE_LIM 12539859L /* 10^ (4.5/20.0) = 2^(a); --> x= 0.747433821 -> Lx_Q24 = round((1L<<(24))*0.747433821)) = 12539859 */ +# define LFHF_LIM 16719812L /* 10^ (6.0/20.0) = 2^(b); --> x= 0.996578428 -> Lx_Q24 = round((1L<<(24))*0.996578428)) = 16719812 */ +#endif + +#ifdef CR8_A_PLC_FADEOUT_TUNING +#else + +#if PLC2_FADEOUT_IN_MS == 0 +#define BURST_ATT_THRESH (4) /* speech start attenuate with losses in a row , stable content is +1 */ +#define ATT_PER_FRAME 2 /* ptr to a table , regular voiced attenuation settings table [0.4 dBx16 frames + 6dBx16 frames] 10 ms frame */ +/* #define ATT_PER_FRAME 1 */ /* ptr to a table , regular attenuation settings table [0.3 dBx16 frames + 6dBx16 frames] 10 ms frame */ +#define BETA_MUTE_THR 20 /* time threshold from BFI start to start of beta-noise further energy attenuation, by .5 each frame */ +/* #define OFF_FRAMES_LIMIT 30 in defines.h , table size and complete zero signal after BURST_ATT_THRESH + OFF_FRAMES_LIMIT */ +#endif + +#if PLC2_FADEOUT_IN_MS != 0 /* TD_PLC muting setting */ + /*% burst attenuation scheme is allowed to be indirectly controlled by a setting from TDC-PLC settings ,if negative PLC2_FADEOUT_IN_MS */ + +#if (PLC2_FADEOUT_IN_MS < 0) +#define FADEOUT_IN_MS PLC_FADEOUT_IN_MS /*% use TDC-SETTING as input */ +#else +#define FADEOUT_IN_MS PLC2_FADEOUT_IN_MS /* % use a PLC2 individual settings as basis */ +#endif + + /* %Examples + % FADEOUT_IN_MS ==30 ms --> shortest setting, att per frame idx = 10 for PLC2 + % FADEOUT_IN_MS ==40 ms --> att per frame idx = 8 setting for PLC2 + % FADEOUT_IN_MS ==60 ms --> att per frame idx = 6 setting for PLC2 (3+4) low decay then fast decay + % FADEOUT_IN_MS ==80 ms --> att per frame idx = 4 setting for PLC2 + % FADEOUT_IN_MS ==100 ms --> att per frame idx = 2 longest = near original setting for PLC2 + */ +#define PLC_P800_SPEECH_FADEOUT_IN_FRAMES (FADEOUT_IN_MS/10) +#define PLC2_FADEOUT_IN_FRAMES MIN(OFF_FRAMES_LIMIT,MAX(6, (3*PLC_P800_SPEECH_FADEOUT_IN_FRAMES))) /* help variable */ + +#define BURST_ATT_THRESH_PRE MIN(5,MAX(1,((1*PLC2_FADEOUT_IN_FRAMES)/6))) /* nominal 10-50 ms to start actual muting, will be thresh +1 */ + +#undef ATT_PER_FRAME +#define ATT_PER_FRAME MIN(10, MAX(2, 2*(6-BURST_ATT_THRESH_PRE))) /* we let the BURST_ATT_THRESH_PRE control the initial table selection */ +/* will eventually become ATT_PER_FRAME-1 = */ + /* table ptr 1,2 --> 16 low decay, 16 high decay, "0" */ + /* table ptr 3,4 --> 8 low decay, 24 high decay, "0" */ + /* table ptr 5,6 --> 4 low decay, 28 high decay , "0"*/ + /* table ptr 7,8 --> 2 low decay, 30 high decay, "0"*/ + /* table ptr 9,10 --> 1 low decay, 31 high decay, "0"*/ +#undef BURST_ATT_THRESH +#define BURST_ATT_THRESH MIN(BURST_ATT_THRESH_PRE, 4 ) /* nominal 10-40 ms, of no regular muting , 20-50 ms */ + + /* beta mute starts to become active when the low decay mute has ended */ +#undef BETA_MUTE_THR +#define BETA_MUTE_THR MIN( 4+(OFF_FRAMES_LIMIT/2)+1 , MAX(4, BURST_ATT_THRESH + 1 +(1<<(BURST_ATT_THRESH_PRE-1)))) /* nominal time to start mandatory decrease of Xavg */ + +#if (ATT_PER_FRAME < 2) || (ATT_PER_FRAME > 10) +#pragma message(" ROM table POW_ATT_TABLES needs update to change the ATT_PER FRAME constants supported are (1),2 (3), 4, (5) ,6 dB/frame ") +#endif + +#else +#if ( ATT_PER_FRAME != 2) +#pragma (" ROM table POW_ATT_TABLES needs update to change the ATT_PER FRAME constants supported are (1),2 dB/frame ") +#endif +#endif + + +#endif + + +#define CMPLMNT_PLOC_SENS_FX 2294 /* (1.0 - p_locator_sens) in Q15 */ +#define FEC_HQ_ECU_ROOT2 23170 /*(0x5a83) */ /* sqrt(2) in Q14 */ +#define FEC_TWOTHIRDS_Q15 21845 /* round(2^15*2/3) */ + +static void get_sin_cosQ10opt(Word16 phase, /* Q10 0..1023 i.e. 1024=2*pi */ + Word16 *ptrSin, /* Q15 */ + Word16 *ptrCos); /* Q15 */ + +static Word16 sqrt2ndOrder(const Word16); + +void my_wtda_fx(const Word16 *new_audio, /* i : input audio to be windowed Q0 20 ms , OPT can be output as well */ + const Word16 *const win2ms_init, /* i: 2 ms initial part of pre_tda window */ + const Word16 *const win16ms_center, /* i: 16 ms combined part of pre_tda IWHR+MDCT-ana */ + Word32 * L_wtda_audio, /* o : tda audio Q16 20 ms */ + const Word16 L, Word8 *scratchBuffer); + +static void windowing_L(const Word16 *, Word32 *, const Word16 *, const Word16, const Word16); +static void windowing_ola(const Word16 *, Word16 *, const Word16 *, const Word16); +static void ola_add(const Word16 *, const Word16 *, Word16 *, const Word16); +static void intlvW32_2_flippedW16(Word32 *L_x, const Word16 numPairs, const Word16 L_prot, Word16 *x); +static void flippedW16_2_intlvW32(Word16 *x, const Word16 numPairs, const Word16 Lprot, Word32 *L_x); +static Word16 imax_fx(const Word16 *, const Word16); + + +Word16 rand_phase_fx(const Word16 seed, Word16 *sin_F, Word16 *cos_F); + +static Word16 imax2_jacobsen_mag_fx(const Word16 *y_re, const Word16 *y_im, const Word16 special); +static void fft_spec2_sqrt_approx_fx(const Word16 x[], Word16 xMagSqrt[], const Word16 N); +static Word16 sqrtMagnApprox_fx(const Word16 re, const Word16 im); + +#ifdef CR8_A_PLC_FADEOUT_TUNING +static Word16 plc_phEcu_nonpure_tone_ana_fx(const Word16* plocs, const Word16 n_plocs, const Word16* X, + const Word32 *L_Xavg, /* i : Frequency group amp averages for tonal tilt analysis pref. Max upshifted */ + const Word16 Lprot, const Word16 fs_idx); +#endif + + +static void rotate_W16_fx(Word16 re_in, Word16 im_in, Word16 cosFactor, Word16 sinFactor, Word16 *re_out_ptr, + Word16 *im_out_ptr) +{ +#ifdef WMOPS + push_wmops("PhECU::rotate_W16_fx"); +#endif + *re_out_ptr = msu_r(L_mult(re_in, cosFactor), im_in, sinFactor); /* 2 ops no move when inlined */ + *im_out_ptr = mac_r(L_mult(re_in, sinFactor), im_in, cosFactor); /* 2 ops no move when inlined */ +#ifdef WMOPS + pop_wmops(); +#endif + return; +} + +static void valley_magnitude_adj_fx(Word16 *re_ptr, Word16 *im_ptr, Word16 uniFactor, Word16 cosFactor) +{ + Word16 scale_fx; +#ifdef WMOPS + push_wmops("PhECU::valley_magnitude_adj_fx"); +#endif + + /* y = 0.5*((2*rand(1,10000) + 1*cos(2*pi*x)) - 1 */ /* y will be in -1 to 1 range */ + /* y = 1*((1*rand(1,10000) + 0.5*cos(2*pi*x)) - 1 */ /* y will be in -1 to 1 range */ + + scale_fx /*Q15*/ = mac_r(L_mult(uniFactor, 16384), cosFactor, 16384); + /* make gain distribution more like N(0,1) than uniform */ + + scale_fx /*Q14*/ = round_fx(L_mac((Word32)(16384L << 16), scale_fx, 4096)); + /* create a random gain scaling value with mean 1.0 and max 1.25 and min 0.75 */ + ASSERT(scale_fx <= (16384 + 8192)); + ASSERT(scale_fx >= (-16384 - 8192)); + *re_ptr = mult_r(scale_fx, shl_sat(*re_ptr, 1)); /* no moves , should be inlined */ + *im_ptr = mult_r(scale_fx, shl_sat(*im_ptr, 1)); /* no moves , should be inlined */ + +#ifdef WMOPS + pop_wmops(); +#endif + return; +} + +/*------------------------------------------------------------------* + * rand_phase() + * + * randomized phase in form of sin and cos components + *------------------------------------------------------------------*/ +Word16 rand_phase_fx(const Word16 seed, Word16 *sin_F, Word16 *cos_F) +{ + /* 4x8+8 lookup scheme requiring ~40 Words of ROM freqRes 90/8 = 11.25 degrees */ + + /* x=(0:(5*8-1))*(2*pi)/32; y=sin(x);y_int=max(-32768,min(32767,round(y*32768))), y_int/32768 */ + + const Word16 *sincos_lowres_tab_cosQ15_fx = sincos_lowres_tab_sinQ15_fx + 8; + /* position at 90 degrees , ptr init */ + Word16 seed2; + Word16 seed2_shift; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("rand_phase_fx", sizeof(struct { + const Word16 *sincos_lowres_tab_cosQ15_fx; /* position at 90 degrees */ + Word16 seed2; /* 16 bit signed */ + Word16 seed2_shift; + })); +#endif + +#ifdef WMOPS + push_wmops("PhECU::rand_phase_fx"); +#endif + + seed2 = extract_l(L_mac0(13849, seed, 31821)); + seed2_shift = lshr(seed2, 11); + /* logical shift to get uniform random 5 msb bits; 0-31 , 0 degrees to 31*360/32= 348.75 */ + *sin_F = sincos_lowres_tab_sinQ15_fx[seed2_shift]; move16(); /* these moves can often be avoided by returning seed2shift and inlining */ + *cos_F = sincos_lowres_tab_cosQ15_fx[seed2_shift]; move16(); /* these moves can often be avoided by inlining */ +/* total WC 5 ops */ +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + return seed2; +} + +/*----------------------------------------------------------------------------- + * trans_burst_ana_fx() + * + * Transient analysis + *----------------------------------------------------------------------------*/ +void trans_burst_ana_fx( + const Word16 *xfp, /* i : Input signal (, only used if time_offset==0) now in up_scaled *Q_spec */ + Word16 * mag_chg, /* o : Magnitude modification vector Q15 */ + Word16 * ph_dith, /* o : Phase dither, 2*PI is not included (Q15, i.e., between 0.0 and 1.0) */ + Word16 * mag_chg_1st, /* i/o: per band magnitude modifier for transients Q15 */ + const Word16 output_frame, /* i : Frame length */ + const Word16 time_offs, /* i : Time offset (integral multiple of output_frame) */ + const Word16 est_stab_content, /* i : 0.0=dynamic ... 1.0=Stable (==st->env_stab ) */ + Word16 * alpha, /* o : Magnitude modification factors for fade to average */ + Word16 * beta, /* : Magnitude modification factors for fade to average */ + Word16 * beta_mute, /* i/o : Factor for long-term mute */ + Word16 * Xavg, /* o : Frequency group average gain to fade to in same Q as X_sav */ + Word16 Q_spec, Word32 L_oold_xfp_w_E_fx, Word16 oold_xfp_w_E_exp_fx, Word16 oold_Ltot_exp_fx, + Word16 *oold_grp_shape_fx, + + Word32 L_old_xfp_w_E_fx, Word16 old_xfp_w_E_exp_fx, Word16 old_Ltot_exp_fx, Word16 *old_grp_shape_fx, +#ifdef CR8_A_PLC_FADEOUT_TUNING + Word16 fadeout, + Word32 * L_Xavg, /* full scale band amplitudes */ +#endif + Word8 *scratchBuffer /* Size = 4*4 * MAX_LTRANA + (2*4 + 1*2) * MAX_LGW + 8 */ +) +{ + Word16 att_val, attDegreeFrames; + Word32 * L_pGrPowLeft, *L_pGrPowRight; + Word32 * L_gr_pow_left, *L_gr_pow_right; + Word16 Lgw, i, k, burst_len; + Word16 man, expo; + Word16 att_always = 0; /* fixed attenuation per frequency group if set to 1 */ + Word16 oneOverFrame, roundEstMusContent, tmp16; +#ifdef CR8_A_PLC_FADEOUT_TUNING + Word16 burst_att_thresh; + Word16 att_per_frame; +#else + Word16 burst_att_thresh = BURST_ATT_THRESH; + Word16 att_per_frame = ATT_PER_FRAME; +#endif + Word16 * tr_dec; + Word32 L_acc; + Word16 fs_scale; + Word16 scale_sh; + + Word32 L_oold_tmp, L_old_tmp; + Word16 oold_exp_fx, old_exp_fx; + Word16 margin_oold, margin_old; + Word16 fs_idx; + Word16 exp_diff; + Word16 Xavg_exp_fx, Xavg_mod_exp_fx; + Word16 tr_rise[MAX_LGW]; + Word16 tr_decay[MAX_LGW]; + Word16 man_in, expo_in, tmp; + Word32 L_tmp, L_tmp2; + Word16 thresh_tr_rise_lin_Q15; + Word16 thresh_tr_decay_lin_Q15; +#ifdef CR8_A_PLC_FADEOUT_TUNING + Word16 beta_mute_thr; + Word16 fade_ms_ind; +#endif + +#ifdef DYNMEM_COUNT +#ifdef CR8_A_PLC_FADEOUT_TUNING + Dyn_Mem_In("trans_burst_ana_fx", sizeof(struct { + + Word16 att_val, attDegreeFrames; + Word32 * pGrPowLeft_L, *pGrPowRight_L; + Word32 * L_gr_pow_left, *L_gr_pow_right; + Word16 Lprot; + Word16 Lgw, i, k, burst_len; + Word16 man, expo; + Word16 att_always; /* fixed attenuation per frequency group if set to 1 */ + Word16 oneOverFrame, roundEstMusContent, tmp16; + + Word16 burst_att_thresh; + Word16 att_per_frame; + + Word16 * tr_dec; + UWord16 lsb; + Word32 L_acc; + Word16 fs_scale; + Word16 scale_sh; + + Word32 L_oold_tmp; + Word32 L_old_tmp; + Word16 fs_idx; + Word16 shift32; + Word16 margin_old; + Word16 margin_oold; + + Word16 Xavg_exp_fx, Xavg_mod_exp_fx; + Word16 tr_rise[MAX_LGW]; + Word16 tr_decay[MAX_LGW]; + + Word16 man_in, expo_in, tmp; + Word32 L_tmp, L_tmp2; + Word16 thresh_tr_rise_lin_Q15; + Word16 thresh_tr_decay_lin_Q15; + + Word16 beta_mute_thr; + Word16 fade_ms_ind; + })); +#else + Dyn_Mem_In("trans_burst_ana_fx", sizeof(struct { + + Word16 att_val, attDegreeFrames; + Word32 * pGrPowLeft_L, *pGrPowRight_L; + Word32 * L_gr_pow_left, *L_gr_pow_right; + Word16 Lprot; + Word16 Lgw, i, k, burst_len; + Word16 man, expo; + Word16 att_always; /* fixed attenuation per frequency group if set to 1 */ + Word16 oneOverFrame, roundEstMusContent, tmp16; + + Word16 burst_att_thresh; + Word16 att_per_frame; + + Word16 * tr_dec; + UWord16 lsb; + Word32 L_acc; + Word16 fs_scale; + Word16 scale_sh; + + Word32 L_oold_tmp; + Word32 L_old_tmp; + Word16 fs_idx; + Word16 shift32; + Word16 margin_old; + Word16 margin_oold; + + Word16 Xavg_exp_fx, Xavg_mod_exp_fx; + Word16 tr_rise[MAX_LGW]; + Word16 tr_decay[MAX_LGW]; + })); +#endif + +#endif + + UNUSED(xfp); + UNUSED(oold_xfp_w_E_exp_fx); + UNUSED(old_xfp_w_E_exp_fx); + + if (time_offs == 0) + { +#ifdef WMOPS + push_wmops("PhECU::trans_burst_ana_fx(1st)"); +#endif + } + else + { +#ifdef WMOPS + push_wmops("PhECU::trans_burst_ana_fx(N)"); +#endif + } + + fs_idx = mult(output_frame, (Word16)(32768.0 / 99.0)); /* truncation needed , i.e no rounding can be applied here */ + ASSERT(fs_idx == (output_frame / 100)); + + L_gr_pow_left = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 4 * MAX_LGW */ /* Size = 4 * MAX_LGW */ + + L_gr_pow_right = (Word32 *)scratchAlign(L_gr_pow_left, sizeof(*L_gr_pow_left) * MAX_LGW); /* Size = 4 * MAX_LGW */ + + tr_dec = (Word16 *)scratchAlign(L_gr_pow_right, sizeof(*L_gr_pow_right) * MAX_LGW); /* Size = 2bytes * MAX_LGW */ + + oneOverFrame = oneOverFrameQ15Tab[fs_idx]; + Lgw = s_min(add(fs_idx, LGW8K), LGW48K); /* 4,5,6,7, (7/8) */ + + burst_len = add(mult_r(time_offs, oneOverFrame), 1); + + UNUSED(est_stab_content); + UNUSED(roundEstMusContent); +#ifndef CR8_A_PLC_FADEOUT_TUNING + burst_att_thresh = add(BURST_ATT_THRESH, 1); /* in Q0 , stable setting */ + att_per_frame = sub(ATT_PER_FRAME, 1); /* in Q0 , stable setting */ +#endif + +#ifdef CR8_A_PLC_FADEOUT_TUNING + move16(); + fade_ms_ind = (PLC2_FADEOUT_IN_MS - PLC2_FADEOUT_IN_MS_MIN) / PLC2_FADEOUT_RES; /* a shorter fading entry in fade_scheme_tab_fx */ + test(); + if (fadeout != 0) + { + fade_ms_ind = (PLC2_FADEOUT_LONG_IN_MS - PLC2_FADEOUT_IN_MS_MIN) / PLC2_FADEOUT_RES; move16(); + /* a long fading table entry in fade_scheme_tab */ + } + + move16(); move16(); move16(); + att_per_frame = fade_scheme_tab_fx[fade_ms_ind][0]; + burst_att_thresh = fade_scheme_tab_fx[fade_ms_ind][1]; /* number of 1.0 frames before muting phase */ + /* band gain muting can take place earlier due to a band transient */ + beta_mute_thr = fade_scheme_tab_fx[fade_ms_ind][2]; /* faster muting of added noise starts when slow main signal fadeout is over */ +#endif + + + + +#ifdef PLC_FADEOUT_IN_MS +#ifdef CR8_A_PLC_FADEOUT_TUNING + ASSERT(att_per_frame >= 1 && att_per_frame <= 12); /* table based lookup restriction */ +#else + ASSERT(att_per_frame >= 1 && att_per_frame <=10 ); /* table based lookup restriction */ +#endif +#else + ASSERT(att_per_frame == 1 || att_per_frame == 2); /* table based lookup restriction */ +#endif + + *ph_dith = 0; /* peak scrambling, not in use */ + + attDegreeFrames = 0; move16(); + IF(sub(burst_len, burst_att_thresh) > 0) + { + att_always = 1; move16(); + /* increase degree of attenuation */ + + /* N.B. To facilitate the subsequent 10^(-att_degree/20) implementation + * so as to use direct table-lookup, + * the first (burstLen - burst_att_thresh) are NOT multiplied by "att_per_frame". */ + attDegreeFrames = sub(burst_len, burst_att_thresh); /* multiplied by 1.0 , */ + /* Furthermore, in order to minimize the size of the lookup-table required to + * implement 10^(-att_degree/10), hard limit attDegreeFrames to (30% of 100)=30. + * If attDegreeFrames is greater than 30, it means there are more than 30 successive + * bad frames. */ + if (sub(attDegreeFrames, OFF_FRAMES_LIMIT) > 0) + {/* Hard limit the no. of frames, for table lookup */ + attDegreeFrames = OFF_FRAMES_LIMIT; move16(); + } + } + + plc_phEcu_initWord16(alpha, 32767, MAX_LGW); + basop_memset(beta, 0, (MAX_LGW) * sizeof(Word16)); + IF(sub(burst_len, 1) <= 0) + { + *beta_mute = BETA_MUTE_FAC_INI; move16(); + *beta_mute = shr_pos(*beta_mute , 1); /* perceptual decrease */ + } + + IF(sub(burst_len, 1) <= 0) + { + L_pGrPowLeft = &L_gr_pow_left[0]; /* ptr init*/ + L_pGrPowRight = &L_gr_pow_right[0]; /* ptr init*/ + + fs_scale = xfp_wE_MDCT2FFTQ11[fs_idx]; move16(); + scale_sh = 4; /* 15-11 */ move16(); + /* L_*old_xfp_w_E_fx, always upscaled to max from the calculating function */ + + + L_oold_tmp = Mpy_32_16_lc3plus(L_oold_xfp_w_E_fx, fs_scale); + L_old_tmp = Mpy_32_16_lc3plus(L_old_xfp_w_E_fx, fs_scale); + + oold_exp_fx = add(oold_Ltot_exp_fx, scale_sh); + old_exp_fx = add(old_Ltot_exp_fx, scale_sh); + + /*re-normalize L_mantissas and adjust exps */ + margin_oold = norm_l(L_oold_tmp); + L_oold_tmp = L_shl_pos(L_oold_tmp, margin_oold); + oold_exp_fx = sub(oold_exp_fx, margin_oold); + + margin_old = norm_l(L_old_tmp); + L_old_tmp = L_shl_pos(L_old_tmp, margin_old); + old_exp_fx = sub(old_exp_fx, margin_old); + + /* now time to analyze how the actual L_tot exponent scaling should be done */ + /* bring up the lowest exp to the same exp as the higher exp, and scale down the corresponding mantissa */ + exp_diff = sub(old_exp_fx, oold_exp_fx); /* energy increase from oold to old in log2 shifts */ + + /* Overflow2 fix */ + exp_diff = s_max(-31, exp_diff); + exp_diff = s_min(31, exp_diff); + if (exp_diff > 0) + { /* oold_exp < old_exp */ + /* old_exp is limiting, shift down oold mantissa */ + L_oold_tmp = L_shr_pos(L_oold_tmp, exp_diff); + } + if (exp_diff < 0) + { /* oold_exp > old_exp */ + /* oold_exp is limiting, shift down old mantissa */ + L_old_tmp = L_shr_pos(L_old_tmp, negate(exp_diff)); + } + oold_exp_fx = s_max(oold_exp_fx, old_exp_fx); + old_exp_fx = oold_exp_fx; move16(); + + /* safety set lowest energy to 2 , as one bit is shifted away in avg calculation */ + L_oold_tmp = L_max(L_oold_tmp, 2L); + L_old_tmp = L_max(L_old_tmp, 2L); + + FOR(k = 0; k < Lgw; k++) /* NB Lgw may be shorter than all defined bands , e.g at at 48k */ + { + L_gr_pow_left[k] = Mpy_32_16_lc3plus(L_oold_tmp, oold_grp_shape_fx[k]); move32(); + L_gr_pow_right[k] = Mpy_32_16_lc3plus(L_old_tmp, old_grp_shape_fx[k]); move32(); + + /*Xavg[k] = sqrt(0.5f*(gr_pow_left[k]+gr_pow_right[k])/(float)(gw[k+1]-gw[k]));*/ + Xavg_exp_fx = sub(old_exp_fx, 1); /* virtual pre divide X_avg by 2 too keep precision in summation */ + L_acc = L_add(L_shr_pos(L_gr_pow_left[k], 1), L_shr_pos(L_gr_pow_right[k], 1)); + L_acc = L_shr_pos(L_acc, gw_len_inv_shift_fx[k]); /* divide by (bandwidth/2) in bins */ + + { /* new Xavg_fx calculation */ + L_acc = L_max(L_acc, 1L); + tmp = norm_l(L_acc); + Xavg_exp_fx = sub(Xavg_exp_fx, tmp); + L_acc = L_shl_pos(L_acc, tmp); /* now between 0.5 an 1.0*/ + + expo_in = add(Xavg_exp_fx, 0); + man_in = round_fx_sat(L_acc); + + /* now allow both positive and negative expos into sqrt */ + man = sqrt2ndOrder(man_in); + if (s_and(expo_in, 1) != 0) + { + man = mult_r(man, FEC_HQ_ECU_ROOT2); /* odd exp operation */ /* 1/sqrt(2) */ + } + expo = shr_r(expo_in, 1); /* apply even part of exp , square root operation. shr_r needed for positive side exps */ + + + + L_acc = L_deposit_h(man); + Xavg_exp_fx = add(expo, 0); + /*Note: sqrt approximaton may overshoot e.g- sqrt(1.0) may become 1.0001 i.e. saturation is needed when eventually applying expo */ + + + /* Xavg (unscaled flt in L_acc*2^(exp-31)) needs to be saved in the same scale + Q as the stored 16bit + * Xsav_fx, for use in subst_spec() */ + /* move Xavg fft scale to fx domain fx-fft scale*/ + L_acc = Mpy_32_16_lc3plus(L_acc, PhEcu_Xsav_Flt2FxScaleQ15[fs_idx]); /* fs fixed fractional change */ + Xavg_mod_exp_fx = sub(Xavg_exp_fx, PhEcu_Xsav_Flt2FxDnShift[fs_idx]); /* fs fixed exp change*/ + Xavg_mod_exp_fx = add(Xavg_mod_exp_fx, Q_spec); /* signal adaptive exp change*/ + + /* :: move to Q_spec domain of Xsav , Q fixed in first BFI frames */ + + /* extract Q0 value shift so that the mantissa is in the high part with man*2,^(0-15) */ + exp_diff = sub(15, Xavg_mod_exp_fx); + + + exp_diff = s_min(31, exp_diff); /* limit to meaningfull DSP shifts as described by up to 6 bits */ + exp_diff = s_max(-32, exp_diff); + if (exp_diff > 0) + { + L_acc = L_shr_pos(L_acc, exp_diff); /* may underflow */ + } + + if (exp_diff < 0) + { + L_acc = L_shr_sat(L_acc, exp_diff); + } +#ifdef CR8_A_PLC_FADEOUT_TUNING + L_Xavg[k] = L_acc; /* export full 31 bit scale band amplitude */ +#endif + Xavg[k] = round_fx_sat(L_acc); /* extract high part */ + + } /*end of new Xavg_fx calculation */ + /* internal transition detection */ + + { /* pure percentage based transient detection */ + thresh_tr_rise_lin_Q15 = PhEcu_frac_thr_rise_lin_Q15[k]; + thresh_tr_decay_lin_Q15 = PhEcu_frac_thr_decay_lin_Q15[k]; + + /* analyse rise */ + /* one of L_left or L_right should be pre-upshifted to a near max mantissa, (in one band ) */ + L_tmp2 = L_deposit_h(0); + L_tmp = Mpy_32_16_lc3plus(*L_pGrPowRight, thresh_tr_rise_lin_Q15); + if (L_sub(*L_pGrPowLeft, L_tmp) <= 0) + { + L_tmp2 = L_deposit_l(1); + } + + if (*L_pGrPowLeft == 0) /* denominator zero special cases */ + { + /* rise: Right/Left ; " * / 0 " --> tr_rise=1 ; "0/0" --> tr_rise = 0 */ + L_tmp2 = L_min(*L_pGrPowRight, 1L); + } + tr_rise[k] = extract_l(L_tmp2); move16(); + + /* analyse decay */ + L_tmp2 = L_deposit_h(0); + L_tmp = Mpy_32_16_lc3plus(*L_pGrPowLeft, thresh_tr_decay_lin_Q15); + if (L_sub(L_tmp, *L_pGrPowRight) >= 0) + { + L_tmp2 = L_deposit_l(1); + } + if (*L_pGrPowRight == 0) /* right side no energy , special cases */ + { + /* decay: Right/Left ; " 0 / * " --> tr_decay=0 ; "0/0" --> tr_decay = 0 */ + L_tmp2 = L_deposit_h(0); + } + tr_decay[k] = extract_l(L_tmp2); move16(); + + tr_dec[k] = s_max(tr_rise[k], tr_decay[k]); move16(); + + } /* percentage tr_dec */ + /* magnitude modification, calculated for decay only */ + IF(add(tr_dec[k], att_always) != 0) + { + +#if MAX_INCREASE_GRPPOW_FX != 0 +#error trans_burst_ana_fx-- The following implementation is incorrect +#endif + att_val = 32767; move16(); + IF(L_sub(*L_pGrPowRight, 0) > 0) + { + IF(L_sub(*L_pGrPowRight, *L_pGrPowLeft) < 0) /* decay , i.e., (gr_pow_right/gr_pow_left) < 1.0 */ + { + /* Compute sqrt(grp_pow_chg), where grp_pow_chg = gr_pow_right/gr_pow_left. */ + tmp16 = plc_phEcu_ratio_fx(*L_pGrPowRight, *L_pGrPowLeft, &expo); /* output tmp16 in Q14 */ + + expo = sub(expo, (15 - 14)); /* Now, tmp16 is considered in Q15 */ + i = norm_s(tmp16); + man = shl_pos(tmp16, i); /* Mandatory normalization before sqrtNthOrder(). */ + expo = add(expo, i); + man = sqrt2ndOrder(man); + if (s_and(expo, 1) != 0) /* Check even or odd. */ + { + man = mult_r(man, FEC_HQ_ECU_ROOT2); + } + expo = shr_pos(expo, 1); /* Divided by 2-- square root operation. */ + att_val = shr(man, expo); /* Denormalize the mantissa back to Q15. */ + } + /* ELSE + { + do nothing because (gr_pow_right/gr_pow_left) >= 1.0 + } + */ + } + + mag_chg_1st[k] = att_val; move16(); + mag_chg[k] = att_val; move16(); + } + ELSE + { + mag_chg_1st[k] = 32767; move16(); + mag_chg[k] = 32767; move16(); /* Set to ]1.0 in Q15 */ + } + + L_pGrPowLeft++; + L_pGrPowRight++; + } /* FOR band k */ + } + ELSE /* sub(burst_len, 1) <= 0) */ + { + /* BURST path */ + + /* Since attDegreeFrames is discrete (integer) and hard limited to OFF_FRAMES_LIMIT, + * it is easier to implement 10^(-att_degree/20.0) by a simply direct + * table-lookup. Also, att_per_frame is discrete as well and can be + * either ATT_PER_FRAME-1 or ATT_PER_FRAME and nothing else. This + * means only 2 tables of size=(OFF_FRAMES_LIMIT+1) each are required. + * To take square root into account, it is divided by 20 instead of 10. */ + +#ifdef CR8_A_PLC_FADEOUT_TUNING + if (sub(burst_len, beta_mute_thr) > 0) /* beta_mute_thr coincides/close to stronger 6dB muting phase */ + { + *beta_mute = shr_pos_pos(*beta_mute, 1); + } +#endif + + + FOR(k = 0; k < Lgw; k++) /* Lgw may be shorter than all bands at 48k */ + { + /* global burst attenuation */ + #if PLC2_FADEOUT_IN_MS != 0 + #ifdef CR8_A_PLC_FADEOUT_TUNING + /* att_per_frame idx = "1:12") */ +#else + /* att_per_frame idx = "1:10") */ +#endif + att_val = POW_ATT_TABLES[att_per_frame][s_min(OFF_FRAMES_LIMIT, attDegreeFrames)]; move16(); +#else + /* att_per_frame idx = "1:2") */ + att_val = POW_ATT_TABLES[att_per_frame][s_min(OFF_FRAMES_LIMIT, attDegreeFrames)]; move16(); + /* 10^(-attDegreeFrames*(att_per_frame = "1 or 2")/20) */ +#endif + + mag_chg[k] = mult_r(mag_chg_1st[k], att_val); /* Q15 */ + +#ifndef CR8_A_PLC_FADEOUT_TUNING + if (sub(burst_len, BETA_MUTE_THR) > 0) /* BETA_MUTE_THR ~= (5+15) coincides/close to stronger 6dB muting phase */ + { + *beta_mute = shr_pos_pos(*beta_mute, 1); + } +#endif + alpha[k] = mag_chg[k]; move16(); + ASSERT(beta[k] == 0); /* initialization required */ + IF(sub(alpha[k], 32766) < 0) + { + /* beta_pre[k] = sqrt(1.0f - SQR(alpha[k])); */ + /* beta[k] = beta_pre[k]* *beta_mute;*/ + /* (1.0-alpha.^2), in exp 1 due to L_mult0; */ + + L_acc = L_sub((INT32_MAX >> 1) + 1, L_mult0(alpha[k], alpha[k])); + { + + /* use lower complex(WMOPS/ROM) 2nd-order sqrt approximation */ + Word32 L_man, L_acc2 = L_acc; + Word16 tmp, expo_in, expo2, man_in, man; + /* updated code using the 2nd order approximation routine */ + /* form is flt=(L_acc2*2.^(-31 + 1) */ + + tmp = norm_l(L_acc2); /* tmp is always 1 or higher due to Lmac0 downshift */ + man_in = round_fx_sat(L_shl_pos(L_acc2, tmp)); + expo_in = sub(1, tmp); /* 1 due to original 1 bit margin gain in L_mult0 */ + + /* both positive and negative expos into sqrt */ + man = sqrt2ndOrder(man_in); + if (s_and(expo_in, 1) != 0) + { + man = mult_r(man, FEC_HQ_ECU_ROOT2); /* odd exp operation */ /* sqrt(2)/2 */ + } + + expo2 = shr_r(expo_in, 1); /* apply square root operation. shr_r needed for pos and neg exps */ + ASSERT(expo2 <= 1); + + L_man = L_deposit_h(man); + L_man = L_shl_sat(L_man, expo2); /* move to a zero exp , _sat needed for 1.0 input (due to approximation overshoot) */ + + man = round_fx_sat(L_man); /* better perf with round here */ + + + beta[k] = mult_r(*beta_mute, man); move16(); + } + + /* bw Lowpass shape additive component */ + /* tab[LGW48K + 1] = { 1.0, ....1.0, 0.5,0.5, ... 0.1, 0.1 } */ + + IF(sub(k, LGW32K - 1) >= 0) + { + beta[k] = mult_r(beta[k], 3277); /* 0.1 in Q15 */ + } + ELSE IF(sub(k, LGW16K - 1) >= 0) + { + beta[k] = mult_r(beta[k], 16384); /* 0.5 in Q15 */ + } + + /* + % limit Xavg noise contribution further in case of offset/tr_decay + % attenuation was already active + + if (burst_len <= burst_att_thresh) && ( stPhECU_mag_chg_1st(k) < (32766/32768) ) + XavgFadeinFactor = (burst_len-1)/burst_att_thresh; + XavgFadeinFactor = min(1.0, XavgFadeinFactor); + beta(k) = beta(k)*XavgFadeinFactor; + % limit initial Xavg noise contribution until We have reached regular burst attenuation + end + end + */ + IF( sub(mag_chg_1st[k], 32767) <0 ) + { /* offset muting was started before burst muting phase */ + /* Xavg noise gradually increased during a short period */ + Word16 XavgFadeinFactor = 32767; + Word16 ratio2_3_4_5tab[4][5 - 1] = { + {(Word16)(.5 * 32768.0), (Word16)(1.0 * 32767.0), (Word16)(1.0 * 32767.0), (Word16)(1.0 * 32767.0)}, /* 1/2*/ + {(Word16)(.333 * 32768.0), (Word16)(.666 * 32768.0), (Word16)(1.0 * 32767.0), (Word16)(1.0 * 32767.0)}, /* 1/3*/ + {(Word16)(.25 * 32768.0), (Word16)(.5 * 32768.0), (Word16)(.75 * 32768.0), (Word16)(1.0 * 32767.0)}, /* 1/4 */ + {(Word16)(.2 * 32768.0), (Word16)(.4 * 32768.0), (Word16)(.6 * 32768.0), (Word16)(.8 * 32768.0)} /* 1/5 */ + + }; + ASSERT(burst_att_thresh >= 1 && burst_att_thresh <= 5); + ASSERT(burst_len >= 2); + if (sub(burst_len,burst_att_thresh) <= 0) + { + ASSERT(burst_len - 2 < (5-1)); + ASSERT(burst_att_thresh-1-1 < (4)); + XavgFadeinFactor = ratio2_3_4_5tab[burst_att_thresh-1-1][burst_len - 2]; /* second bfi frame burst_len= is 2 */ + } + beta[k] = mult_r(beta[k], XavgFadeinFactor); /* n Q15 */ + } + } /* IF (sub(alpha[k], 32766) < 0) */ + } /* FOR k*/ + + } /* BURST */ + + + + IF(sub(output_frame, L_FRAME48K) == 0) + { /* for 48kHz set/handle scalings of last group/band the same way as previous lower freq band(s) */ + + FOR(k = Lgw; k < MAX_LGW; k++) + { + tr_dec[k] = tr_dec[k - 1]; move16(); /* only available in first bfi frame */ + Xavg[k] = Xavg[k - 1]; move16(); + mag_chg_1st[k] = mag_chg_1st[k - 1]; move16(); + mag_chg[k] = mag_chg[k - 1]; move16(); + alpha[k] = alpha[k - 1]; move16(); + beta[k] = beta[k - 1]; move16(); + } + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif +} + +/*----------------------------------------------------------------------------- + * imax_fx() + * + * Get interpolated maximum position + *-----------------------------------------------------------------------------*/ +static Word16 imax_fx( /* o: The location, relative to the middle of the 3 given data point, of the maximum. (Q15) */ + const Word16 *y, /* i: The 3 given data points. */ + const Word16 special /* i: -1 = left edge special case, 0 = normal, +1 = right edge special case */ +) +{ + Word16 posi; + Word16 man, expo, edge; + const Word16 *pY; + Word32 L_y1, L_y2, L_y3, L_numer, L_denom, L_sign, L_acc, L_y3_y1; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("imax_fx", sizeof(struct { + Word16 posi; + Word16 man, expo, edge; + const Word16 *pY; + Word32 L_y1, L_y2, L_y3, L_numer, L_denom, L_sign, L_acc, L_y3_y1; + })); +#endif + +#ifdef WMOPS + push_wmops("PhECU::imax_fx"); +#endif + + /* Seek the extremum of the parabola P(x) defined by 3 consecutive points + so that P([-1 0 1]) = [y1 y2 y3] */ + pY = y; + L_y1 = L_deposit_l(*pY++), L_y2 = L_deposit_l(*pY++), L_y3 = L_deposit_l(*pY); + + /* The extremum value: + * y2i = -0.125f * SQR(y3_y1) / (y1+y3-2*y2)+y2 + * is not computed. Alternatively, the derivative of the parabola evaluated at y=0, + * dP/dy|y=0, is used to determine whether the extremum is maximum or not. + */ + + /* Compute the extremum location: posi = (y3 - y1)/(4*y2 - 2*y1 - 2*y3). */ + L_y3_y1 = L_sub(L_y3, L_y1); + L_acc = L_shl_pos(L_y2, 1); /* N.B. y2 is multiplied by 2 not 4. */ + L_acc = L_sub(L_acc, L_y1); /* N.B. Y1 is not multiplied by 2. */ + L_denom = L_sub(L_acc, L_y3); /* N.B. Y3 is not multiplied by 2. */ + L_sign = L_xor(L_y3_y1, L_denom); /* Preserve the sign since div_s() only takes positive arguments. */ + L_numer = L_abs(L_y3_y1); + L_denom = L_abs(L_denom); + + test(); + IF(L_numer == 0 || L_denom == 0) + { + posi = 0; move16(); /* flat top , exit with center freq. */ + } + ELSE + { + + IF(L_sub(L_denom, L_shr_pos_pos(L_numer, 1)) > 0) + { + /* Although the output of ratio() is in Q14, adding the missing factor of 2 (See above) + * in the denominator, the output is now considered to be in Q15. */ + man = plc_phEcu_ratio_fx(L_numer, L_denom, &expo); /* The mantissa is considered in Q15 */ + + posi = shr_sat(man, expo); /* in Q15 (Due to saturation, it is automatically bound inside [-1.0,1.0].) */ + } + ELSE + { + posi = 0x7fff; move16(); + } + + if (L_sign < 0) /* Restore the sign. */ + { + posi = negate(posi); + } + + /* For both edges (left and right), the extremum found above may be minimum. + * It needs to reject the minimum. */ + IF(special != 0) /* Either edge special case. */ + { + edge = 0x7fff; /* 1 in Q15 for the right edge special case */ move16(); + if (special < 0) + { + edge = 0; /* Left edge special case */ move16(); + } + + /* The derivative (slope) of the interpolating parabola = 2*A*y + B, + * where A = (y3 + y1)/2 - y2 + * and B = (y3 - y1)/2. + * Therefore, the slope at y=0 is simply B. Use this slope to determine + * if the parabola is concave upward or downward. + */ + IF(posi > 0) /* The extremum is in between the middle and the right given data points. */ + { + posi = sub(0x7fff, posi); /* maximum case */ + if (L_sub(L_y3, L_y1) <= 0) /* Check the slope at y=0, i.e., at the middle given data point. */ + { + posi = edge; /* minimum case */ move16(); + } + } + ELSE /* The extremum is in between the left and the middle given data points. */ + { + posi = add(0x7fff, posi); /* maximum case */ + if (L_sub(L_y3, L_y1) >= 0) + { + posi = edge; /* minimum case */ move16(); + } + } + } + } +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + return posi; + /* Q15. The position either left or right relative to the index of the middle of the 3 given data points. */ +} + + /*----------------------------------------------------------------------------- + * spec_ana_fx() + * + * Spectral analysis + *-----------------------------------------------------------------------------*/ + /* OPT add the FB transient input flags , and skip peakfinder if fullband transient is set */ + void spec_ana_fx(Word16 * xfp, /* i/o : Input 16ms pre-upscaled time signal, output xfp utility buffer */ + Word16 * plocs, /* o : The indicies of the identified peaks Q0 */ + Word32 * L_plocsi, /* o : Interpolated positions of the identified peaks Q16 */ + Word16 * num_plocs, /* o : Number of identified peaks Q0 */ + Word16 * X_sav, /* o : Stored fft spectrum */ + const Word16 output_frame, /* i : Frame length Q0 */ + const Word16 bwidth_fx, /* i : Encoded Fs index Q0 */ + const Word16 *sp_ana_win, /* i : spectral analysis window Q15 */ + const Word16 f0hzLtpBinQ7, /* i : LTP bin frequency in normalized Hz Q7 */ + const Word16 norm_corrQ15_fx, /* i : correlation for lag at f0hzLtpBinQ7 */ + Word16 maxLprot, Word16 maxPlocs, + Word8 *scratchBuffer /* Size = 4 * (MAX_LPROT + MAX_LPROT_RED + 1) + 2 * MAX_PLOCS */ + ) + { + Counter n, k; + Word16 nJacob, Lprot, hamm_len2 = 0, Lprot2, Lprot2p1; + Word32 *L_xfp; + + Word16 *pXfp; + Word16 *pPlocs; + Word16 Xmax, Xmin, sens; + Word16 rectLength, fraction; + Word32 *pPlocsi_L; + Word32 L_acc; + Word16 peak_range_1; + Word16 stop_band_start; + Word16 stop_band_length; + Word16 fft_scale; + Word8 * buffer_fft; + Word16 currPlocs, endPlocs; + Word16 P_in_plocs; + Word16 n_real_interp_tail; + +#ifdef WMOPS + push_wmops("PhECU::spec_ana_fx(1st)"); +#endif +#ifdef DYNMEM_COUNT + Dyn_Mem_In("spec_ana_fx", sizeof(struct { + Counter n, k; + Word16 nJacob ,Lprot, hamm_len2, Lprot2, Lprot2p1; + Word32 *L_xfp; + Word32 *pXfp_L; + Word16 *y_re_ptr, *y_im_ptr; /* otrs to Xsav as xfp was overwritten */ + Word16 *pXfp, *pXfp1, *pPlocs; + Word16 Xmax, Xmin, sel; + Word16 rectLength, fraction, special; + Word32 *pPlocsi_L; + Word32 L_acc; + Word16 peak_range_1; + Word16 stop_band_start; + Word16 stop_band_length; + Word16 fft_scale; + Word8 * buffer_fft; + Word16 fft_scale_by4; + Word16 currPlocs, endPlocs; + Word16 P_in_plocs; + Word16 n_real_interp_tail; + })); +#endif + /* Initialize for 48k to avoid warnings + Lprot - length of saved prototype samples + hamm_len2 - half Hamming window length + pFftTbl - Table for real input FFT + LprotLog2Minus1 - FFT stages for complex input FFT + */ + + + L_xfp = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 4 * MAX_LPROT bytes */ + buffer_fft = scratchAlign(L_xfp, sizeof(*L_xfp) * maxLprot); /* Size = 4 * (MAX_LPROT_RED + 1) + 2 * MAX_PLOCS */ + + ASSERT(bwidth_fx >= 0 && bwidth_fx <= 4); /* avoid bwidth_fx variable warning */ + + Lprot = LprotSzPtr[bwidth_fx]; + move16(); + hamm_len2 = DEPR_i_mult(3, mult(output_frame, (Word16)(3277) /* divBy10 + floor */)); /* 3 ms */ + fft_scale = PhEcuFftScale[bwidth_fx]; + move16(); /* 32,16,8 kHz all have fft scale 0, 24 has 8, 48 has 4 */ + Lprot2 = shr_pos(Lprot, 1); + Lprot2p1 = add(Lprot2, 1); /* Magnitude lengths */ + rectLength = sub(Lprot, shl_pos(hamm_len2, 1)); + /* The length of the rectangular portion of the Hamming-Rectangular window. */ + { +#ifdef WMOPS + push_wmops("PhECU::WhrAnaWin+fft"); +#endif + + /* Apply hamming-rect window */ + windowing_L(xfp, L_xfp, sp_ana_win, rectLength, hamm_len2); + BASOP_rfftN(L_xfp, Lprot, &fft_scale, buffer_fft); + } +#ifdef WMOPS + pop_wmops(); /* anawin+fft */ +#endif + + /* Convert 32 Bit intlv FFT into phecu 16 bit flipped fft format */ + /* can not yet be an inplace operation */ + + intlvW32_2_flippedW16(L_xfp, sub(Lprot2, 1), Lprot, xfp); + + /* Apply zeroing of non-coded FFT spectrum above 20 kHz */ + IF(sub(output_frame, ((L_FRAME48K) * 40) / 48) >= 0) /* only relevant for 48kHz in LC3plus */ + { + stop_band_start = ((LPROT48K / 2) * 40) / 48; /* initial start position in real part , 320 */ + stop_band_length = ((LPROT48K * 8) / 48) - 1; /* real tail and into Im parts , 128-1 */ + stop_band_start = add(stop_band_start, 1); /* exclude DC ... */ + + basop_memset(xfp + stop_band_start, 0, (stop_band_length) * sizeof(Word16)); + } + + peak_range_1 = s_min(Lprot2p1, MAX_LPROT_RED / 2 + 1); /* limit preliminary only active for 48k to save WMOPS */ + + basop_memmove(X_sav, xfp, (Lprot) * sizeof(Word16)); + + /* Magnitude representation */ + fft_spec2_sqrt_approx_fx(xfp, xfp, Lprot); + /* inplace, i.e. [ Dc, real part of xfp ,Fs/2 ] will be replaced by magnitude(scaled by .5) */ + + /* Find global maximum and minimum. */ + plc_phEcu_maxval_fx(xfp, peak_range_1, &Xmax); + plc_phEcu_minval_fx(xfp, peak_range_1, &Xmin); + sens = mult_r(sub(Xmax, Xmin), CMPLMNT_PLOC_SENS_FX); + + + plc_phEcu_peak_locator_fx(xfp, peak_range_1, plocs, num_plocs, sens, Xmax, Xmin, MAX_LPROT_RED, buffer_fft); + + +#ifdef WMOPS + push_wmops("PhECU::Peaks_refine"); +#endif + + /* Refine peaks */ + pPlocsi_L = L_plocsi; + pPlocs = plocs; + /* n = sub(*num_plocs, 1); */ /* -1 so as to exclude the very last peak. */ + 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 */ + logic16(); + IF((n > 0) && (sub(*pPlocs, 0) == 0)) /* Very 1st peak position possible to have a peak at 0/DC index position. */ + { + fraction = imax_fx(xfp, -1); /* -1 signifies special left edge case. */ + L_acc = L_deposit_h(*pPlocs++); /* N.B., (*pPlocs) must be zero here. */ + *pPlocsi_L++ = L_mac(L_acc, fraction, 1); move32(); /* in Q16 */ + n = sub(n, 1); /* This special case is taken care of -- one less peak to go */ + } + logic16(); + IF((n > 0) && (sub(*pPlocs, 1) == 0)) /* Also 2nd peak position uses DC which makes jacobsen unsuitable. */ + { + fraction = imax_fx(xfp, 0); /* for parabolic this is not a special case. */ + L_acc = L_deposit_h(*pPlocs++); /* N.B., (*pPlocs) must be 1 here. */ + *pPlocsi_L++ = L_mac(L_acc, fraction, 1); move32(); /* in Q16 */ + n = sub(n, 1); /* This special case is taken care of -- one less peak to go */ + } + + /* All remaining peaks except the very last two possible integer positions */ + currPlocs = *pPlocs++; move16(); + endPlocs = sub(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; move16(); + + /* catch all three xxx01 , xxx10 and xxx11 , + and not only xxx01, xxx10 */ + + n_real_interp_tail = 0; move16(); + if (sub(endPlocs, plocs[sub(*num_plocs, 1)]) <= 0) + { + n_real_interp_tail = add(n_real_interp_tail, 1); + } + + logic16(); + if (sub(n,1) > 0 && sub(endPlocs, plocs[sub(*num_plocs, 2)]) <= 0) + { + n_real_interp_tail = add(n_real_interp_tail, 1); + } + + nJacob = sub(nJacob, n_real_interp_tail); + + FOR (k = 0; k < nJacob; k++) + { + fraction = imax2_jacobsen_mag_fx(&(X_sav[currPlocs - 1]), &(X_sav[Lprot - 1 - currPlocs]), 0); /* in Q15 */ /* not endpoint */ + move16(); move16(); /* account for inloop indirect ptrs into Xsav */ + + L_acc = L_deposit_h(currPlocs); + *pPlocsi_L++ = L_mac(L_acc, fraction, 1); move32(); /* in Q16. Append the fractional part to the integral part. */ + currPlocs = *pPlocs++; move16(); + } + n = sub(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) */ + + pXfp = xfp + sub(Lprot2, 2); + IF(sub(currPlocs, sub(Lprot2p1, DELTA_CORR_F0_INT)) == 0) + /* Also 2nd last peak position uses fs/2 which makes jacobsen less suitable. */ + { + fraction = imax_fx(pXfp, 0); /* for parabolic this is not a special case. */ + + L_acc = L_deposit_h(currPlocs); /* N.B., (*pPlocs) must be 1 here. */ + *pPlocsi_L++ = L_mac(L_acc, fraction, 1); move32(); /* in Q16 */ + currPlocs = *pPlocs++; move16(); + n = sub(n, 1); /* This special case is taken care of -- one less peak to go */ + + if (n > 0) + { + /* allow for an additional consecutive final plocs after (Fs/2-1) at Fs/2 */ + currPlocs = *pPlocs++; move16(); + } + } + + /* 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 . */ + { + fraction = imax_fx(pXfp, 1); /* for parabolic this is a special case. */ + + L_acc = L_deposit_h(currPlocs); /* N.B., (*pPlocs) must be 1 here. */ + *pPlocsi_L++ = L_mac(L_acc, fraction, 1); move32(); /* in Q16 */ + currPlocs = *pPlocs++; move16(); + n = sub(n, 1); /* This special case is taken care of -- one less peak to go */ + } + } + + /* here n should be 0 if all peaks have been processed */ + ASSERT(n == 0); + + /* Check number of plocs within an assumed pitch range */ + P_in_plocs = 0; move16(); + FOR(n = 0; n < *num_plocs; n++) + { + /* count number of peaks in locations 1,2,3,4,5,6 , ~= 60 Hz ... 380 Hz */ + fraction = s_min(1, plocs[n]); /* 0 stays zero , otherwise 1 */ + if (sub(plocs[n], 7) < 0) + { + P_in_plocs = add(P_in_plocs, fraction); + } + } + +#ifdef WMOPS + pop_wmops(); /* peaks refine */ +#endif + + logic16(); + IF(f0hzLtpBinQ7 > 0 && P_in_plocs > 0) + { + Word16 n_plocs_in, n_plocs_out; + + n_plocs_in = *num_plocs; move16(); + + /* NB LF peak analysis may add adjacent peaks in { plocs, L_plocsi}, (output from peakfinder did not have + * adjacent peaks ) */ + plc_phEcu_LF_peak_analysis_fx(plocs /* i/o */, num_plocs /* i/o */, L_plocsi /* i/o */, xfp, f0hzLtpBinQ7, + norm_corrQ15_fx, 2, maxPlocs, buffer_fft); + n_plocs_out = *num_plocs; move16(); + + IF(sub(n_plocs_in, n_plocs_out) == 0) + { + /* adjust first peak coinciding with LTPF0 measures if it indicates so */ + plc_phEcu_F0_refine_first_fx(plocs /* i/o */, *num_plocs, L_plocsi /* i/o */, f0hzLtpBinQ7, norm_corrQ15_fx, + 3); + } + } + /* moved inside spec_ana_fx , to include validated pitch peak P_in_plocs*/ + { + Word16 peak_limits_fx[5] = { 14 /*NB*/, 14 /*WB*/, 14 /*sWB*/, 14 /*SWB*/, + 14 /* FB */ }; /* to be trained for each BW */ + + test(); + test(); + IF((sub(norm_corrQ15_fx, 0) > 0) && /* == 0 indicates a negative correlation, which could be likely stable */ + (sub((Word16)(0.5 * 32768), norm_corrQ15_fx) > 0) && (sub(*num_plocs, peak_limits_fx[bwidth_fx]) > 0)) + { + if (P_in_plocs > 0) + { + *num_plocs = 0; move16(); /*activate noise only path only if normcorr vas valid energywise */ + } + } + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + } + + /*-------------------------------------------------------------------* + * subst_spec_fx() + * + * Substitution spectrum calculation + *-------------------------------------------------------------------*/ + + void subst_spec_fx( + const Word16 *plocs, /* i : The indices of the identified peaks Q0 */ + const Word32 *L_plocsi, /* i : Interpolated positions of the identified peaks Q16 */ + Word16 * num_plocs, /* i/o : Number of identified peaks Q0 */ + const Word16 time_offs, /* i : Time offset Q0 */ + Word16 * X, /* i/o : FFT spectrum */ + const Word16 *mag_chg, /* i : Magnitude modification Q15 */ + const Word16 ph_dith, /* i : Phase dither, 2*PI is not included. (Q15, i.e., between 0.0 and 1.0) */ + const Word16 *is_trans, /* i : (Transient) noise generation flags (either 0 or not 1 ) */ + const Word16 output_frame, /* i : Frame length Q0 */ + Word16 * seed, /* i/o : Random seed */ + const Word16 *alpha, /* i : Magnitude modification factors for fade to average Q15 */ + const Word16 *beta, /* i : Magnitude modification factors for fade to average Q15 */ + const Word16 *Xavg, /* i : Frequency group averages to fade to Q0 */ + const Word16 t_adv /* i : time adjustement excluding time_offs Q0 */ +#ifdef CR8_A_PLC_FADEOUT_TUNING + ,const Word16 fadeout, /* need for DC muting */ + Word16 * nonpure_tone_flag_ptr, /* i/o : non-pure single tone indicator state */ + const Word32 * L_Xavg /* i : Frequency group amp averages for tonal tilt analysis Max upshifted */ +#endif + ) + { + Word16 Xph_short; + Word32 L_corr_phase[MAX_PLOCS], L_Xph; + Word32 *pCorrPhase_L; + Word16 cos_F, sin_F, tmp; + Word16 peak_sin_F = 0, peak_cos_F = 0; + Word16 sin_F_fade2avg, cos_F_fade2avg; + Word16 fs_idx; + Word16 Lprot, m, i, e, im_ind, delta_corr_up, delta_corr_dn, delta_tmp; + UWord16 lsb; + Word16 j, re, im, *pReX, *pImX, lastPeak, lprotBy2Minus1, segmentLen; + Word16 pkLocation_1, pkLocation, pkLocation1; + const Word16 *pPlocs; + const Word32 *pPlocsi_L; + Word32 L_acc; + Word16 Lprot_inv; + Word16 k; + Word16 tmp2; + Word16 alpha_local; + Word32 tmp_L; + Word16 mag_chg_local; + const Word16 *gwlpr_fxPlus1; + Word16 one_peak_flag_mask; + Word16 noise_mag_scale_neg; + Word16 up_shift_adj; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("subst_spec_fx", sizeof(struct { + Word16 Xph_short; + Word32 L_corr_phase[MAX_PLOCS], L_Xph; + Word32 *pCorrPhase_L; + Word16 cos_F, sin_F, tmp; + Word16 peak_sin_F, peak_cos_F; + Word16 sin_F_fade2avg, cos_F_fade2avg; + Word16 fs_idx; + Word16 Lprot, m, i, e, im_ind, delta_corr_up, delta_corr_dn, delta_tmp; + UWord16 lsb; + Word16 j, re, im, *pReX, *pImX, lastPeak, lprotBy2Minus1, segmentLen; + Word16 pkLocation_1, pkLocation, pkLocation1; + const Word16 *pPlocs; + const Word32 *pPlocsi_L; + Word32 L_acc; + Word16 Lprot_inv; + Word16 k; + Word16 tmp2; + Word16 alpha_local; + Word16 expo; + Word32 tmp_L; + Word16 mag_chg_local; + const Word16 *gwlpr_fxPlus1; + Word16 one_peak_flag_mask; + Word16 noise_mag_scale_neg; + Word16 up_shift_adj; + })); +#endif + + if (time_offs == 0) + { +#ifdef WMOPS + push_wmops("PhECU::subst_spec_fx(1st)"); +#endif + } + else + { +#ifdef WMOPS + push_wmops("PhECU::subst_spec_fx(N)"); +#endif + } + + + gwlpr_fxPlus1 = &(gwlpr_fx[1]); /* ptr init */ + fs_idx = mult(output_frame, (Word16)(32768.0 / 99.0)); /* truncation needed , i.e no rounding can be applied here */ + ASSERT(fs_idx == (output_frame / 100)); + Lprot = LprotSzPtr[fs_idx];move16(); + Lprot_inv = InvLprot_Q22[fs_idx]; move16(); + + tmp2 = add(mult_r(time_offs, oneOverFrameQ15Tab[fs_idx]), 1);/* save a local burst_len for securing DC and fs/2 muting */ + + /* Correction/evolution phase of the identified peaks */ + IF(s_or(is_trans[0], is_trans[1]) != 0) + { + *num_plocs = 0; move16(); + } + ELSE + { + + tmp = t_adv; + + tmp = add_sat(tmp, time_offs); + /* NB tmp can be stored in Word16 Q0 as max used value is 684+(OFF FRAMELIMIT==60)*480 = 29484 */ + tmp_L = L_mult0(tmp, Lprot_inv); + + + tmp = norm_l(tmp_L); + up_shift_adj = s_max(0, sub(4, tmp)); /* 48kHz : PLC frame 1..49 -> tmp_L<<4 , frame 50..60 -> tmpL<<3 */ + tmp_L = L_shl_sat(tmp_L, sub(4, up_shift_adj)); + tmp = round_fx_sat( tmp_L); + + + pPlocsi_L = L_plocsi; + pCorrPhase_L = L_corr_phase; + FOR(m = 0; m < *num_plocs; m++) + { + + /* tmp has variable resolution 10 or 9 bits */ + ASSERT( up_shift_adj >= 0); + Mpy_32_16_ss(L_shl_pos(*pPlocsi_L++, up_shift_adj), tmp, &L_acc, &lsb); + L_acc = L_add(L_shl_pos(L_acc, 5), lshr(lsb, 11)); + /* 5 lsb's actually unused though, as 6 bits are shifted out */ + *pCorrPhase_L++ = L_acc; move32();/* in Q16. 2*PI is not included. */ + } + } + + one_peak_flag_mask = (Word16)0xFFFF; move16(); /* all ones mask -> keep */ +#ifdef CR8_A_PLC_FADEOUT_TUNING + test(); logic16(); + IF((*num_plocs > 0) && sub(*num_plocs, 3) < 0) + { + one_peak_flag_mask = 0x0000; move16(); /* all zeroes mask -> zeroes in valleys, single clean tone assumed */ + + /* revert initial pure tone decision in some cases */ + logic16(); logic16(); + IF((sub(*nonpure_tone_flag_ptr, 0) < 0) && + ((sub(fs_idx, 2) == 0)/* SemiSWB 24 kHz */ || (sub(fs_idx, 4) >= 0)) /* FB 48 kHz */ + ) + { + /* in the first lost frame analyze spectra and spectral bands to possibly reverse an initial pure sine assumption */ + *nonpure_tone_flag_ptr = plc_phEcu_nonpure_tone_ana_fx(plocs, *num_plocs, X, L_Xavg, Lprot, fs_idx); + +#ifdef LOCAL_PLC2_TON_ANA_DEACTIVATE + *nonpure_tone_flag_ptr = 0; /* dbg of inactive tone analysis */ +#endif + } + + + if (sub(*nonpure_tone_flag_ptr, 0) > 0) + { + /* actually revert single pure tone detection */ /* 0-> mute all surrounding valley bins in evolution , 0xff -> generate noise in all valleys */ + one_peak_flag_mask = (Word16)0xFFFF; move16(); /* all ones mask -> keep */ + } + } +#else + logic16(); + if ((*num_plocs > 0) && sub(*num_plocs, 3) < 0) + { + one_peak_flag_mask = 0x0000; move16(); /* all zeroes mask -> zero */ + } +#endif + + + noise_mag_scale_neg = 0; move16(); /* no change of valley noise magnitude */ + logic16(); + if ((*num_plocs == 0) || (time_offs != 0)) + { /* only adj_scale noise amplitude when we have no WC path , or in all noise frame */ + noise_mag_scale_neg = -32768; move16(); /* all ones --> scale_noise */ + } + + IF(*num_plocs == 0) + { + X[0] = 0; move16(); /* reset DC if there are no peaks */ + X[shr_pos(Lprot, 1)] = 0; move16(); /* also reset fs/2 if there are no peaks */ + } + +#ifdef CR8_A_PLC_FADEOUT_TUNING + /* the binary selection of fadeout scheme */ + tmp = (PLC2_FADEOUT_IN_MS - PLC2_FADEOUT_IN_MS_MIN) / PLC2_FADEOUT_RES; move16(); + if (fadeout != 0) + { + tmp = (PLC2_FADEOUT_LONG_IN_MS - PLC2_FADEOUT_IN_MS_MIN) / PLC2_FADEOUT_RES; move16(); + } + + IF(sub(tmp2, add(fade_scheme_tab_fx[tmp][1],1) ) > 0) +#else + IF(sub(tmp2, (BURST_ATT_THRESH+1)) > 0) +#endif + { + /* also start DC scaling attenuation */ + X[0] = mult(alpha[0], X[0]); move16(); + /* start fs/by2 attenuation */ + X[shr_pos(Lprot, 1)] = mult(alpha[s_min(add(fs_idx, LGW8K), LGW48K)], X[shr_pos(Lprot, 1)]); move16(); + } + + + lprotBy2Minus1 = sub(shr_pos(Lprot, 1), 1); + + /* for 48k the last (63+1+63) 128/2-1 values above 20 kHz are always zeroes */ + { /* after a last, peak no need to evolve above 20kHz , those coeffs have been/ will be zeroed already */ + /* DC, Xused,ReZeroed, fs/2, ImZeroed, ImUsed */ + /*N: 1, 320 , 63 , 1 , 63 , 320 */ + /*Cind: 0, 1-320, 321-383 , 384 , 385-447, 448 -767 */ + lprotBy2Minus1 = s_min( lprotBy2Minus1, 320); + /*only process up to bin X[320] , 63 coeffs X[321] fwd should already be zeroed */ + } + + i = 1; move16(); /* index in the X[DC, ReX part of X_Sav ,i.e *pReX == X[i] */ + k = 0; move16(); + + pReX = X + i; + im_ind = (Lprot - 1); /* ptr init */ + pImX = X + im_ind; + pPlocs = plocs; + pCorrPhase_L = L_corr_phase; + + + pkLocation_1 = -4; move16(); /* dummy value to avoid Out of Array Read */ + pkLocation = -3; move16(); /* dummy value to avoid Out of Array Read for the *num_plocs==0 case */ + pkLocation1 = -2; move16(); /* dummy value to avoid Out of Array Read */ + + IF (*num_plocs != 0) + { + + pkLocation = *pPlocs; move16(); /* N.B. No post-increment */ + lastPeak = sub(*num_plocs, 1); + if (lastPeak >= 0) + { + pkLocation1 = *pPlocs++; move16(); /* get a next peak */ + } + } + + FOR(m = 0; m < *num_plocs; m++) + { + pkLocation_1 = pkLocation; /* plocs[m - 1] */ move16(); + pkLocation = pkLocation1; /* plocs[m] */move16(); + + /*location dependent update of plocs[m + 1] */ + if ( sub(lastPeak, m) > 0) + { /* only read additional peak when teher is a valid position to read */ + pkLocation1 = *pPlocs++; /* plocs[m + 1] */ move16(); + } + + delta_tmp = shr_pos(sub(sub(pkLocation, pkLocation_1), 1), 1); + if (m == 0) + { + delta_tmp = DELTA_CORR; move16(); /* first peak special case */ + } + delta_corr_dn = s_min(delta_tmp, DELTA_CORR); + + delta_tmp = shr_pos(sub(sub(pkLocation1, pkLocation), 1), 1); + if (sub(m, lastPeak) >= 0) + { + delta_tmp = DELTA_CORR; move16(); + } + delta_corr_up = s_min(delta_tmp, DELTA_CORR); /* last peak special case */ + + + /* Input Xph */ + segmentLen = sub(sub(pkLocation, delta_corr_dn), i); /* may be negative */ + + ASSERT(pReX == &(X[i])); + ASSERT(*pReX == X[i]); /*before first, nth valley*/ + + FOR(j = 0; j < segmentLen; j++) /* valley section , may be skipped for segmentlen < 0 */ + { + + *seed = rand_phase_fx(*seed, &sin_F, &cos_F); + + /* phase scrambling */ + rotate_W16_fx(*pReX, *pImX, cos_F, sin_F, &tmp, &im); /* tmp=real part, should be inlined */ + UNUSED(re); + + /* i.e. add a bit of magnitude scrambling around 1.0 in longer bursts */ + *seed = rand_phase_fx(*seed, &sin_F_fade2avg, &cos_F_fade2avg); + IF(noise_mag_scale_neg != 0) + { + valley_magnitude_adj_fx(&tmp, &im, *seed, cos_F); + /* use two random variables */ /*reuse cosF from regular X scrambling, + reuse *seed from fade2avg + */ + } + + IF( beta[k] != 0 ) + { + alpha_local = alpha[k]; /* no move as alpha_local is only needed for debug */ + /* the fade2avg mixing branch, fade2avg and transient downscaling and evolution rotation */ + tmp2 = mult_r(beta[k], Xavg[k]); + + { + tmp2 = s_and(tmp2, one_peak_flag_mask); + tmp = s_and(tmp, one_peak_flag_mask); + im = s_and(im, one_peak_flag_mask); + } + + *pReX++ = mac_r(L_mult(alpha_local, tmp), tmp2, cos_F_fade2avg); move16(); + *pImX-- = mac_r(L_mult(alpha_local, im), tmp2, sin_F_fade2avg); move16(); + } + ELSE + { /* the no fade2avg mixing branch, only transient downscaling and evolution rotation */ + { + tmp = s_and(tmp, one_peak_flag_mask); + im = s_and(im, one_peak_flag_mask); + } + + + *pReX++ = mult_r(mag_chg[k], tmp); move16(); + *pImX-- = mult_r(mag_chg[k], im); move16(); + } + i = add(i, 1); + ASSERT(pReX == &(X[i])); /* nth Valley */ + ASSERT(*pReX == X[i]); /* nth Valley */ + if (sub(i, gwlpr_fxPlus1[k]) >= 0) + { + k = add(k, 1); + } + } /* segment_len 1st++ etc valley excluding last */ + + /* peak area section */ + + e = s_min(lprotBy2Minus1, add(pkLocation, delta_corr_up)); + segmentLen = sub(e, sub(i, 1)); + + + L_Xph = *pCorrPhase_L; move32(); + /* rounding here, add "0.5" before extracting the 10 bits for table lookup */ + Xph_short = s_and(extract_l(L_shr_pos_pos(L_add(L_Xph, (1L << (16 - 10 - 1))), 16 - 10)), 0x3ff); + /* 10 bits precision after radix point, for a virtual 0-1023 sin/cos table lookup */ + + + get_sin_cosQ10opt(Xph_short, &peak_sin_F, &peak_cos_F); + + + ASSERT(pReX == &(X[i])); /*before peak*/ + FOR(j = 0; j < segmentLen; j++) + { + mag_chg_local = mag_chg[k]; /* mag_chg_local actually only need for debugging , no move16()*/ + + UNUSED(ph_dith); + *seed = extract_l(L_mac0(13849, *seed, 31821)); + rotate_W16_fx(*pReX, *pImX, peak_cos_F, peak_sin_F, &tmp, &im); /* should be inlined */ + UNUSED(re); + + *seed = rand_phase_fx(*seed, &sin_F, &cos_F); + + IF( beta[k] != 0 ) + { /* fade2avg path alpha*X_sav + beta *Xavg */ + alpha_local = mag_chg_local; /* no move alpha_local only needed for dbg */ + tmp2 = mult_r(beta[k], Xavg[k]); + + + *pReX++ = mac_r(L_mult(alpha_local, tmp), tmp2, cos_F); move16(); + *pImX-- = mac_r(L_mult(alpha_local, im), tmp2, sin_F); move16(); + } + ELSE + { + *pReX++ = mult_r(mag_chg_local, tmp); move16(); + *pImX-- = mult_r(mag_chg_local, im); move16(); + } + + i = add(i, 1); + ASSERT(pReX == &(X[i])); + ASSERT(*pReX == X[i]); + if (sub(i, gwlpr_fxPlus1[k]) > 0) + { + k = add(k, 1); + } + } /* segment_length Peak*/ + pCorrPhase_L++; + } + + segmentLen = sub(lprotBy2Minus1, sub(i, 1)); /* tail/valley noise-bins */ + + /* for 48k the last 63+1+63 = values above 20 kHz */ + { /* after last, peak no need to scramble above 20kHz , those coeffs have been/ will be zeroed already */ + /* DC, Xused,ReZeroed, fs/2, ImZeroed, ImUsed */ + /*N: 1, 320 , 63 , 1 , 63 , 320 */ + /*ind: 0, 1-320, 321-383 ,384 , 385-447, 448 -767 */ + /* segmentLen = sub(320, i-1); */ /*only process up to bin X[320] , 63 coeffs X[321] fwd should already be + zeroed */ + /* ASSERT(i-1+ segmentLen == lprotBy2Minus1 ); */ + } + + ASSERT(*pReX == X[i]); /* before a final valley*/ + FOR(j = 0; j < segmentLen; j++) + { + + + *seed = rand_phase_fx(*seed, &sin_F, &cos_F); + rotate_W16_fx(*pReX, *pImX, cos_F, sin_F, &tmp, &im); /* should be inlined , tmp=real part */ + + *seed = rand_phase_fx(*seed, &sin_F_fade2avg, &cos_F_fade2avg); + /* i.e. add a bit of magnitude scrambling around 1.0 in longer bursts */ + IF(noise_mag_scale_neg != 0) + { + valley_magnitude_adj_fx(&tmp, &im, *seed, cos_F); + /*reuse cosF from regular X scrambling, + reuse *seed from fade2avg */ + } + + tmp = s_and(tmp, one_peak_flag_mask); + im = s_and(im, one_peak_flag_mask); + IF(beta[k] != 0) + { /* fade2avg path never in first BFI frame */ + + alpha_local = alpha[k]; /* no move as alpha_local is only needed for debug */ + tmp2 = mult_r(beta[k], Xavg[k]); + { + tmp2 = s_and(tmp2, one_peak_flag_mask); + } + + + *pReX++ = mac_r(L_mult(alpha_local, tmp), tmp2, cos_F_fade2avg); move16(); + *pImX-- = mac_r(L_mult(alpha_local, im), tmp2, sin_F_fade2avg); move16(); + } + ELSE + { + + *pReX++ = mult_r(mag_chg[k], tmp); move16(); + *pImX-- = mult_r(mag_chg[k], im); move16(); + } + i = add(i, 1); + ASSERT(*pReX == X[i]); + if (sub(i, gwlpr_fxPlus1[k]) > 0) + { + k = add(k, 1); + } + } /* segment_len last valley */ + + + + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + } + + void my_wtda_fx(const Word16 *new_audio, /* i : input audio to be windowed Q0 20 ms , OPT can be output as well */ + const Word16 *const win2ms_init, /* i: 2 ms initial part of pre_tda window */ + const Word16 *const win16ms_center, /* i: 16 ms combined part of pre_tda IWHR+MDCT-ana */ + Word32 *L_wtda_audio, /* o : tda audio Q16 20 ms */ + const Word16 L, Word8 *scratchBuffer) /* Size = 8 * MAX_L_FRAME */ + { + Word16 i, L2; /*,L4;*/ + const Word16 *pX; + const Word16 *pW; + Word32 *p1_L, *p2_L, *p3_L, *p4_L; + Word32 *L_w_audio; /*OPt 1 use input buffer , OPT2, may be shortened from 20 ms to 16 ms due to + zeroed parts*/ + Word32 *pY_L, *pa1_L, *pa2_L; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("my_wtda_fx", sizeof(struct { + Word16 i, L2; /*,L4;*/ + const Word16 *pX; + const Word16 *pW; + Word32 *p1_L, *p2_L, *p3_L, *p4_L; + Word32 *L_w_audio; /*OPT 1 use input buffer, OPT2, may be shortened from 20 ms to 16.25+(1.75) ms + due to zeroed parts*/ + Word32 *pY_L, *pa1_L, *pa2_L; + })); +#endif + +#ifdef WMOPS + push_wmops("PhECU::my_wtda_fx"); +#endif + + L_w_audio = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 4 * 2 * MAX_L_FRAME */ + + /* |111111|222222|333333|444444 */ + /* |p1 p2| p3||p4 */ + + /* Apply analysis window */ + + pX = new_audio; + pY_L = L_w_audio; + + pW = win2ms_init; + FOR(i = 0; i < ((2 * L / 10)); i++) /* Loop over 2ms window MDCT-ana length */ + { + *pY_L++ = L_mult(*pX++, *pW++); move32(); + } + + pW = win16ms_center; + /* 20 ms - 2ms - 3.75 ms = 14.25 ms */ + FOR(i = 0; i < (2 * L - (2 * L / 10) - ((3 * 2 * L) / 16)); + i++) /* Loop over remaining 14.25ms, currently out of a 16 ms stored length */ + { + *pY_L++ = L_mult(*pX++, *pW++); move32(); + } + + + /* tda */ + L2 = shr_pos_pos(L, 1); /* length of tda blocks */ + + p1_L = L_w_audio; /* block 1 fwd */ + p2_L = L_w_audio + L - 1; /* block 2 rev */ + p3_L = L_w_audio + L + L2 - 1; /* block 3 rev */ + p4_L = L_w_audio + L + L2; /* block 4 fwd */ + + pa1_L = L_wtda_audio; /* first part output */ + pa2_L = L_wtda_audio + L2; /* second part output */ + + FOR(i = 0; i < (L / 8); i++) + { + /* first 1.25ms part of tda signal -p3_rev -p4_fwd */ + *pa1_L++ = L_negate(L_add_sat(*p3_L--, *p4_L++)); move32(); + } + FOR(; i < L2; i++) + { + /* first front part 3.75 ms p4_l is zeroes -p3_rev + (-p4_fwd==0) */ + *pa1_L++ = L_negate(*p3_L--); move32(); + } + + FOR(i = 0; i < L2; i++) + { + /* second part of tda signal p1 -p2_rev */ + *pa2_L++ = L_sub_sat(*p1_L++, *p2_L--); move32(); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + return; + } + + /*-------------------------------------------------------------------------- + * rec_wtda() + * + * Windowing and TDA of reconstructed frame + *--------------------------------------------------------------------------*/ + + + static void + rec_wtda_fx( + Word16 *X, /* i : iFFT(X-evolved) TD-signal o: dbg 16 ms */ + Word32 *L_ecu_rec, /* o : Reconstructed frame in tda domain Qx? */ + const Word16 output_frame, /* i : Frame length */ + const Word16 Lprot, /* i : Prototype frame length */ + const Word16 *const win2ms_init, /* i: 2 ms initial part of pre_tda window */ + const Word16 *const win16ms_center, /* i: 16 ms combined part of pre_tda IWHR+MDCT-ana */ + const Word16 maxLen, + const Word16 *prevsynth, + const Word16 Q_psMinus1, /*i: Q prev_synth minus 1 , (-1 to match Q of Xsav in first bfi frame ) */ + Word8 *scratchBuffer) /* Size = 12 * MAX_L_FRAME */ + { + Word16 l, Lprot2; + Word16 *rec_buf; + Word16 *xsubst_; /*,*out_ptr;*/ + + Word16 ola_old[COPY_LEN_48K + OLA_LEN_48K]; /* 3.75 ms */ + Word16 work_len; + Word16 copy_len; + Word16 ola_len; + + + Word8 *buffer_wtda; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("rec_wtda_fx", sizeof(struct { + Word16 l, Lprot2; + Word16 *rec_buf; + Word16 *xsubst_; /*,*out_ptr;*/ + Word8 *buffer_wtda; + })); +#endif + +#ifdef WMOPS + push_wmops("PhECU::rec_wtda_fx"); +#endif + + rec_buf = scratchAlign(scratchBuffer, 0); /* Size = 2 * 2 * MAX_L_FRAME */ + buffer_wtda = (Word8 *)scratchAlign(rec_buf, sizeof(*rec_buf) * (2 * maxLen)); /* Size = 4 * 2 * MAX_L_FRAME */ + + xsubst_ = rec_buf; + Lprot2 = shr_pos_pos(Lprot, 1); + + /* extract reconstructed frame with ld window into rec_buf */ + l = sub(output_frame, Lprot2); + basop_memmove(xsubst_ + l, X, (Lprot) * sizeof(Word16)); /* 16 ms IFFT raw output */ + copy_len = COPY_LEN[FRAME2FS_IDX(output_frame)]; + ola_len = OLA_LEN[FRAME2FS_IDX(output_frame)]; + work_len = add(copy_len, ola_len); + /* Copy and scale copy part 2ms from prevsynth */ + basop_memmove(rec_buf, &prevsynth[Lprot - work_len], (copy_len) * sizeof(Word16)); /* 2ms out of 3.75 ms copied */ + Scale_sig_sat(rec_buf, copy_len, sub(-3, Q_psMinus1)); /* inplace scaling by 2^(-Q_ps-4) */ + + + /* Copy, window and scale 1.75 ms ola part from prevsynth , into a temporary buffer ola_old */ + + + windowing_ola(&prevsynth[Lprot - ola_len], ola_old, w_old[FRAME2FS_IDX(output_frame)], ola_len); /* 1.75 ms */ + + Scale_sig_sat(ola_old, ola_len, sub(-3, Q_psMinus1)); /* inplace scaling by 2^(-Qps-4) */ + + /* Window 1.75 ms length inplace recreated X=IFFT(prototype) signal copied into rec_buf signal */ + windowing_ola(&rec_buf[copy_len], &rec_buf[copy_len], w_new[FRAME2FS_IDX(output_frame)], ola_len); + /* mix add the two windowed components */ + ola_add(&rec_buf[copy_len], ola_old, &rec_buf[copy_len], ola_len); /* OPT: sat check */ + + my_wtda_fx(rec_buf, + win2ms_init, /* i: 2 ms initial part of pre_tda window */ + win16ms_center, /* i: 16 ms combined part of pre_tda IWHR+MDCT-ana */ + L_ecu_rec, output_frame, buffer_wtda); /* */ + + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + + return; + } + + /*-------------------------------------------------------------------------- + * rec_frame_fx() + * + * Frame reconstruction + *--------------------------------------------------------------------------*/ + void rec_frame_fx(Word16 * x, /* i : FFT spectrum 16 ms, o: ifft() TD debug signal 16ms */ + Word32 * L_ecu_rec, /* o : Reconstructed frame in tda domain 10ms buffer */ + const Word16 output_frame, /* i : Frame length */ + const Word16 Q, /* i : Xsav Q */ + const Word16 *const win2ms_init, /* i: 2 ms initial part of pre_tda window */ + const Word16 *const win16ms_center, /* i: 16 ms combined part of pre_tda IWHR+MDCT-ana */ + Word16 maxLprot, + const Word16 *prevsynth, + const Word16 Q_prevsynthMinus1, /* i : prevsynthQ-1 or xfp Q */ + Word8 *scratchBuffer /* Size = 4 * MAX_LPROT + 12 * MAX_L_FRAME */ + ) + { + Counter i; + Word16 Lprot; + Word32 *L_x; + Word32 *pX_L; + Word16 *pX; + Word16 fft_scale; + Word8 * buffer_fft; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("rec_frame_fx", sizeof(struct { + Counter i; + Word16 Lprot; + Word32 *L_x; + Word32 *pX_L; + Word16 *pX; + Word16 fft_scale; + Word8 * buffer_fft; + })); +#endif + +#ifdef WMOPS + push_wmops("PhECU::rec_frame_fx"); +#endif + + L_x = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 4 * MAX_LPROT */ + buffer_fft = (Word8 *)scratchAlign(L_x, sizeof(*L_x) * maxLprot); /* Size = 4* (2+1) * MAX_L_FRAME */ + + /* Initialize to FB constants */ + Lprot = mult(output_frame, (Word16)(32768.0 / 99.0)); /* truncation needed , i.e no rounding can be applied here */ + ASSERT(Lprot == (output_frame / 100)); + Lprot = LprotSzPtr[Lprot]; move16(); + + + /* Convert stored 16 bit into 32bit for fft */ + flippedW16_2_intlvW32(x, sub(shr_pos_pos(Lprot, 1), 1), Lprot, L_x); + /*scratch x now free for re-use */ + + fft_scale = -1; move16(); + +#ifdef WMOPS + push_wmops("PhECU::IFFT_fx"); +#endif + BASOP_irfftN(L_x, Lprot, &fft_scale, buffer_fft); +#ifdef WMOPS + pop_wmops(); +#endif + + pX_L = &L_x[0]; + pX = &x[0]; /* scratch x reused */ + + { + FOR(i = 0; i < Lprot; i++) + { + *pX++ = extract_h(L_shl_sat(*pX_L++, fft_scale)); move16(); + } + } + /* Scratch L_x may be released */ + + + /* Saturation possible when rescaling to Q0 if there are random bit errors in the bit stream + * One may use one guard bit to better handle this - though it should not be needed for normal + * operation. + */ + Scale_sig_sat(x, Lprot, negate(Q)); /* scale by 2^(-Q) */ + + /*scratch x is Lprot word16 */ + /* scatch need for win-TDA XXX */ + /* scrcatch need for TDA XXX */ + + rec_wtda_fx(x, L_ecu_rec, output_frame, Lprot, + win2ms_init, /* i: 2 ms initial part of pre_tda window */ + win16ms_center, /* i: 16 ms combined part of pre_tda IWHR+MDCT-ana */ + s_max(output_frame, 160), + prevsynth, + Q_prevsynthMinus1, /* NB: prevsynth Q may change from prev_bfi=0 to prev_bfi==1, due to phase + of signal or PLC2-muting */ + buffer_fft); + + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + return; + } + + /*-------------------------------------------------------------------------- + * hq_phase_ecu_fx() + * + * Main routine for HQ phase ECU + *--------------------------------------------------------------------------*/ + void hq_phase_ecu_fx( + const Word16 *prevsynth, /* i : buffer of previously synthesized signal currently 16ms */ + Word32 * L_ecu_rec, /* o : reconstructed frame in tda domain , also tmp w32_fft buffer */ + Word16 * time_offs, /* i/o: Sample offset for consecutive frame losses*/ + Word16 * X_sav, /* i/o: Stored spectrum of prototype frame */ + Word16 * Q_spec, /* o: Q value of stored spectrum */ + Word16 * num_p, /* i/o: Number of identified peaks */ + Word16 * plocs, /* i/o: Peak locations */ + Word32 * L_plocsi, /* i/o: Interpolated peak locations Q16 */ + const Word16 env_stab, /* i : Envelope stability parameter */ + const Word16 f0hzLtpBinQ7, /* i: LTP bin frequency in normalized Hz Q7 */ + const Word16 norm_corrQ15_fx, /*i : correlation for lag at f0hzLtpBinQ7 */ + const Word16 prev_bfi, /* i : indicating burst frame error */ + Word16 old_is_transient[2], /* i/o : flags indicating noise generation frames */ + Word16 * mag_chg_1st, /* i/o: per band magnitude modifier for transients*/ + Word16 * mag_chg_gr, /* o: per band magnitude modifier, incl burst attenuation */ + Word16 * Xavg, /* i/o: Frequency group average gain to fade to */ + Word16 * beta_mute, /* o : Factor for long-term mute */ + const Word16 bwidth_fx, /* i : Encoded bandwidth */ + const Word16 output_frame, /* i : frame length */ + Word16 * seed_out_fxPtr, /* o: utput dbg NULL may be used*/ + Word16 * X_out, /* o: utput dbg NUll may be used */ + const Word16 t_adv, /* i : time adjustment including time_offs */ + const Word16 *const win2ms_init, /* i: 2 ms initial part of pre_tda window */ + const Word16 *const win16ms_center, /* i: 16 ms combined part of pre_tda IWHR+MDCT-ana */ + const Word16 *sp_ana_win, /* i : whr 3+10+3 window */ + Word16 q_fx_old_exp, /* i : exp of prev_synth */ + + Word16 maxLprot, /* i : maz spectrum buffer size */ + Word16 maxPlocs, /* i : max nb of peaks */ + Word32 L_oold_xfp_w_E_fx, Word16 oold_xfp_w_E_exp_fx, /* exp of time signale */ + Word16 oold_Ltot_exp_fx, /*true exp of energy */ + Word16 *oold_grp_shape_fx, Word32 L_old_xfp_w_E_fx, Word16 old_xfp_w_E_exp_fx, /* exp of time signale */ + Word16 old_Ltot_exp_fx, /*true exp of energy */ + Word16 *old_grp_shape_fx, + Word16 margin_prevsynth, +#ifdef CR8_A_PLC_FADEOUT_TUNING + const Word16 fadeout, + Word16 *nonpure_tone_flag_ptr, /* i/o : non-pure single tone indicator state */ +#endif + Word8 *scratchBuffer /* Size = 2 * MAX_LGW + 8 * MAX_LPROT + 12 * MAX_L_FRAME */ + ) + { + Word16 lprot; + Word16 *mag_chg, ph_dith, *X; + Word16 *xfp; + Word16 seed; + Word16 alpha[MAX_LGW], beta[MAX_LGW] ; + Word16 prevsynth_man_upshift; + Word16 Q_prevsynthMinus1; + Word8 *buffer; +# ifdef CR8_A_PLC_FADEOUT_TUNING + Word32 L_Xavg[MAX_LGW]; /* i/o : Frequency group amp averages for tonal tilt analysis Max upshifted */ +# endif +#ifdef DYNMEM_COUNT + Dyn_Mem_In("hq_phase_ecu_fx", sizeof(struct { + Counter i; + Word16 lprot; + Word16 *mag_chg, ph_dith, *X; + Word16 seed; + Word16 alpha[MAX_LGW], beta[MAX_LGW]; + Word16 prevsynth_man_upshift; + Word16 Q_prevsynthMinus1; + Word8 *buffer; + // ToDO Word32 L_Xavg[MAX_LGW]; + })); +#endif + + if (!prev_bfi) + { +#ifdef WMOPS + push_wmops("PhECU::hq_phase_ecu_fx(1st)"); +#endif + } + else + { +#ifdef WMOPS + push_wmops("PhECU::hq_phase_ecu_fx(N)"); +#endif + } + + mag_chg = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * MAX_LGW */ + X = (Word16 *)scratchAlign(mag_chg, sizeof(*mag_chg) * MAX_LGW); /* Size = 2 * MAX_LPROT == 1 Word16*MAX_LPROT */ + xfp = (Word16 *)scratchAlign(X, sizeof(*X) * maxLprot); /* Size = 2 * MAX_LPROT == 1 Word16*MAX_LPROT */ + buffer = (Word8 *)scratchAlign(xfp, sizeof(*xfp) * maxLprot); /* Size = 4 * MAX_LPROT + 12 * MAX_L_FRAME */ + + /* buffer size = Word32 * MAX_LPROT (FFT, IFFT) DRAM + + 3*Word32 * MAX_L_FRAME */ + + basop_memset(alpha, 0, MAX_LGW*sizeof(Word16)); + basop_memset(beta, 0, MAX_LGW*sizeof(Word16)); + + lprot = LprotSzPtr[bwidth_fx]; move16(); + + test(); + ASSERT(prev_bfi >= 0 && prev_bfi <= 1); + IF( prev_bfi == 0 ) /* inside PhECU we can check vs 0 */ + { + *time_offs = 0; move16(); +#ifdef CR8_A_PLC_FADEOUT_TUNING + *nonpure_tone_flag_ptr = -1; move16(); /* flag nonpure tone flag for new analysis */ +#endif + /* analysis made outside, up/down scaling here from static RAM to dynamic RAM */ + /* prevsynth_in_flt = prev_synth_man*2.^(-15 + exp_old) */ + /* X_sav_flt = X_man/2.^(Q_spec) */ + + /* 1 bit headroom needed in xfp_tmp_buf for FFT processing into X_sav */ + /* margin_prevsynth = actual margin in incoming 16 ms xpf segment */ + /* q_fx_old_exp was computed on full 21+ ms updatepcm buffer) */ + + ASSERT(margin_prevsynth >= 0 && (margin_prevsynth <= 16)); + + prevsynth_man_upshift = + sub(margin_prevsynth, 1); /* 0 --> -1(==down), 1--> 0 , 2 --> 1(==up), ... */ + ASSERT(prevsynth_man_upshift >= -16 && prevsynth_man_upshift <= 15); /* avoid Overflow in shr, shl */ + *Q_spec = sub(15, sub(q_fx_old_exp, prevsynth_man_upshift)); + /* Q_spec target is to create 1 additional bit of margin in the xfp TD buffer , before converting to + * Xsav + */ + + if (margin_prevsynth == 0) + { + Word16 Qold = 15 - (q_fx_old_exp + 1); + Word16 tmp_man_upshift = margin_prevsynth - 1; /* 1 .. -15 */ + Word16 Qnew = 15 - (q_fx_old_exp - tmp_man_upshift); + assert(Qold == Qnew); + UNUSED(Qold); + UNUSED(Qnew); + } + if (margin_prevsynth == 1) + { + Word16 Qold = 15 - (q_fx_old_exp + 0); + assert(*Q_spec == Qold); + UNUSED(Qold); + } + if (margin_prevsynth == 2) + { + Word16 Qold = 15 - (q_fx_old_exp - 1); + assert(*Q_spec == Qold); + UNUSED(Qold); + } + + Q_prevsynthMinus1 = sub(15, add(q_fx_old_exp, +1)); /* dbg to use non-scaled prevsynth for OLA */ + + /* Q of prev_synth now separated from prev_bfi=0 and prev_bfi==1 */ + +#ifdef USE_TMPXFP_IN_OLA + Q_prevsynthMinus1 = *Q_spec; /* a possibly upscaled Q */ +#endif + + + Copy_Scale_sig( + prevsynth, xfp, lprot, + prevsynth_man_upshift); /* unscaled prevsynth is still used by rec_frame, copy to a temporary + xfp analysis buffer, and scale down to a margin of 1 bit */ + + + trans_burst_ana_fx( + ((void *)NULL), + mag_chg, &ph_dith, mag_chg_1st, output_frame, *time_offs, env_stab, alpha, beta, beta_mute, Xavg, + (*Q_spec), L_oold_xfp_w_E_fx, oold_xfp_w_E_exp_fx, oold_Ltot_exp_fx, oold_grp_shape_fx, + L_old_xfp_w_E_fx, old_xfp_w_E_exp_fx, old_Ltot_exp_fx, old_grp_shape_fx, +#ifdef CR8_A_PLC_FADEOUT_TUNING + fadeout, + L_Xavg, /* full scale band amplitudes in first bfi frame */ +#endif + buffer); + + spec_ana_fx(&(xfp[0]), plocs, L_plocsi, num_p, X_sav, output_frame, bwidth_fx, + sp_ana_win, f0hzLtpBinQ7, norm_corrQ15_fx, maxLprot, maxPlocs, buffer); + } + ELSE + { + /* analysis made outside, possible up/down scaling here from static RAM to dynamic RAM */ + ASSERT(margin_prevsynth >= 0 && (margin_prevsynth <= 15)); + + /* prev_synth may have been scaled outside by update_pcm() function */ + /* prevsynth_in_flt = prev_synth_man*2.^(-15 + exp_old) */ + /* first bfi frame: X_sav_flt = X_man/2.^(*Q_spec) */ + /* this bfi frame prev_synth(TD) is mixed with ifft signal(TD,from Q_spec) in rec_frame_fx + variable Q_prevsynthMinus1 provided to rec_frame for this TD+TD mixing + */ + + Q_prevsynthMinus1 = sub(15, add(q_fx_old_exp, +1)); /* for now, "old" use of unscaled prevsynth for added OLA */ + +#ifdef USE_TMPXFP_IN_OLA + { /* DBG target here is to instead upshift to a zero margin */ + /* but Q value is maintained to match the save Xsav *Q_spec which is used with an offset of " -1" */ + /* prevsynth_man_upshift = -prevsynth_margin ; */ + Word16 tmp, worklen = add(hamm_len2Tab[bwidth_fx], shr(hamm_len2Tab[bwidth_fx], 2)); + tmp = mult(7680, lprot); /* needs to truncate to integer */ + ASSERT(tmp == worklen); + Copy_Scale_sig(&prevsynth[lprot - worklen], &xfp[lprot - worklen], worklen, + margin_prevsynth); /* only scale up last 3.75 ms */ + Q_prevsynthMinus1 = sub(15, add(q_fx_old_exp, margin_prevsynth)); /*-1 does not make sense */ + } +#endif + + *time_offs = add_sat(*time_offs, output_frame); + + trans_burst_ana_fx( + ((void *)NULL), + mag_chg, &ph_dith, mag_chg_1st, output_frame, *time_offs, env_stab, alpha, beta, beta_mute, Xavg, + (0), /* *Q_spec input only used in first bfi frames for burst analysis */ + L_oold_xfp_w_E_fx, oold_xfp_w_E_exp_fx, oold_Ltot_exp_fx, oold_grp_shape_fx, L_old_xfp_w_E_fx, + old_xfp_w_E_exp_fx, old_Ltot_exp_fx, old_grp_shape_fx, +#ifdef CR8_A_PLC_FADEOUT_TUNING + fadeout, + NULL, /* full scale band amplitudes , only used in first bfi frame */ +#endif + buffer); + } + /* cpy LPROT Word16 from Static RAM Xsav to working DRAM/scratch buffer X ;*/ + basop_memmove(X, X_sav, (lprot) * sizeof(Word16)); + /* seed for own_rand2 */ + seed = *time_offs; move16(); + + if (mag_chg_gr != NULL) /* o: dbg per band magnitude modifier, incl. burst attenuation */ + { + Counter k; + Word16 lgw_local = s_min(add(bwidth_fx, LGW8K), LGW48K); /* 4,5,6,7, (7/8) */ + for (k = 0; k < lgw_local; k++) + { + mag_chg_gr[k] = mag_chg[k]; /* dbg SNR output */ + } + } + + subst_spec_fx(plocs, L_plocsi, num_p, *time_offs, X, mag_chg, ph_dith, old_is_transient, output_frame, + &seed, alpha, beta, + Xavg, t_adv +#ifdef CR8_A_PLC_FADEOUT_TUNING + ,fadeout, + nonpure_tone_flag_ptr, /* i/o : non-pure single tone indicator state */ + L_Xavg /*i : only used in first bfi frame */ +#endif + ); + + if (seed_out_fxPtr != NULL) + { + *seed_out_fxPtr = seed; /* verify seed synch after subst_spec */ + } + + + if (X_out != NULL) + { + Word16 ii; + for (ii = 0; ii < lprot; ii++) + { + X_out[ii] = X[ii]; /* evolve spectrum, no moves counted as this is a dbg-vector info cpy */ + } + } + + /* reconstructed frame in tda domain */ + /* NB *Q_spec only updated in first bfi frame */ + + /*Scratch Analysis at this point */ + /* X fft input needed as evolved spectrum Lprot* Word16 */ + /* xfp not needed any longer Word16* Lprot */ + /* IFFT operation needs Word32*Lprot in and Word32*Lprot out */ + /* MDCT win operation may be inplace 2x MAX_L_FRAME */ + /* TDA output is 1x MAX_L_FRAME */ + + rec_frame_fx(X, L_ecu_rec, output_frame, *Q_spec, + win2ms_init, win16ms_center, + maxLprot, +#ifdef USE_TMPXFP_IN_OLA + xfp, /* only last 3.75 ms used, in both prevbfi=0 and prevBfi=1 i.e frames, xfp is an + upscaled prev_synth */ +#else + prevsynth, /*only last 3.75 ms used in both prevbfi=0 and prevBfi=1 i.e frames */ +#endif + Q_prevsynthMinus1, + buffer); + + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + } + + + static Word16 sqrt2ndOrder( /* o: in Q15 (2nd order least square approx.) */ + const Word16 x /* i: x must be in between 0.5 and 1.0 (Q15). */ + ) + { + Word32 acc; + Word16 z; +#ifdef WMOPS + push_wmops("PhECU::sqrt2ndOrder"); +#endif + + ASSERT(x >= 16384); + + acc = 1890205600L; /* 0.880195572812922 in Q31 */ move32(); + z = mac_r(acc, x, -6506); /* -0.198537395405340 in Q15 */ + acc = 682030261L; /* 0.317595089462249 in Q31 */ move32(); + z = mac_r(acc, z, x); /* in Q15 */ + + +#ifdef WMOPS + pop_wmops(); +#endif + return z; + } + + + /* Modified version to produce Word32 input to FFT */ + static void windowing_L( + const Word16 *x, /* i: Input signal */ + Word32 * L_y, /* o: Windowed output */ + const Word16 *win, /* i: Window coefficients */ + const Word16 rectLength, /* i: Offset in between the 1st and 2nd symmetric halves of the Hamming window */ + const Word16 halfLength /* i: Half of the total length of a complete Hamming window. */ + ) + { + Counter i; + Word32 * pY_L; + const Word16 *pX, *pW; + Word16 tmp_RL; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("windowing_L", sizeof(struct { + Counter i; + Word32 * pY_L; + const Word16 *pX, *pW; + })); +#endif + +#ifdef WMOPS + push_wmops("PhECU::windowing_L"); +#endif + + pX = x; + pW = win; + pY_L = L_y; + + FOR(i = 0; i < halfLength; i++) /* 1st symmetric half of the Hamming window */ + { + *pY_L++ = L_mult(*pX++, *pW++); move32(); + } + /* Periodic filter - one more rect sample before end tapering */ + + tmp_RL = add(rectLength, 1); + + if (rectLength == 0) + { + tmp_RL = 0; move16(); + } + /* If rectLength is zero, it's a pure Hamming window; otherwise Hamming-Rectangular. */ + FOR(i = 0; i < tmp_RL;i++) + { + *pY_L++ = L_deposit_h(*pX++); move32(); + } + tmp_RL = sub(halfLength, 1); + if (rectLength == 0) + { + tmp_RL = halfLength; move16(); + } + FOR(i = 0; i < tmp_RL; i++) /* 2nd symmetric half of the Hamming window. */ + { + *pY_L++ = L_mult(*pX++, *(--pW)); move32(); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + } + + /* Modified version to produce Word16 input to FFT */ + static void windowing_ola(const Word16 *x, /* i: Input signal */ + Word16 * y, /* o: Windowed output */ + const Word16 *win, /* i: Window coefficients */ + const Word16 Length /* i: Half of the total length of a complete Hamming window. */ + ) + { + Counter i; + Word16 * pY; + const Word16 *pX, *pW; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("windowing_ola", sizeof(struct { + Counter i; + Word16 * pY; + const Word16 *pX, *pW; + })); +#endif + +#ifdef WMOPS + push_wmops("PhECU::windowing_ola"); +#endif + + pX = x; + pW = win; + pY = y; + + FOR(i = 0; i < Length; i++) /* 1st symmetric half of the Hamming window */ + { + *pY++ = mult_r(*pX++, *pW++); move16(); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + } + + /* Modified version to produce Word16 input to FFT */ + static void ola_add(const Word16 *x, /* i: Input signal 1 */ + const Word16 *y, /* i: Input signal 2 */ + Word16 * z, /* o: Output signal */ + const Word16 Length /* i: Half of the total length of a complete window. */ + ) + { + Counter i; + Word16 * pZ; + const Word16 *pX, *pY; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("windowing_ola", sizeof(struct { + Counter i; + Word16 * pY; + const Word16 *pX, *pW; + })); +#endif + + + + pX = x; + pY = y; + pZ = z; + + FOR(i = 0; i < Length; i++) /* 1st symmetric half of the Hamming window */ + { + *pZ++ = add_sat(*pX++, *pY++); move16(); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif + + } + + /*----------------------------------------------------------------------------- + * magnSqrtApprox_fx() + * + * Approximation of sqrt(Square magnitude) of fft spectrum + * if min_abs <= 0.4142135*max_abs + * abs = 0.99*max_abs + 0.197*min_abs + * else + * abs = 0.84*max_abs + 0.561*min_abs + * end + * + * Note: even to handle the dynamics of sqrt(re^2+im^2) located on + * a scaled unit circle. One need to scale down the results + * with a factor 2, that is Q_out = Q_in - 1 + * sqrt(32768.^2+32768.^2) results in = 23170 Q0-1, + * which corresponds to 46341 in the Q0 domain + *----------------------------------------------------------------------------*/ + Word16 sqrtMagnApprox_fx( /* o : sqrt of magnitude square spectrum Q_in-1*/ + const Word16 re, /* i : Real part Q_in */ + const Word16 im /* i : Imag part Q_in */ + ) + { + /* Constants for Approximation of sqrt(Square magnitude) of fft spectrum + * >> num2str(round(0.4142135]*2.^15)) + * ans = 13573 + * >> num2str(round([0.99 0.197 0.84 0.561]*2.^14)) + * ans = 16220 3228 13763 9191 + */ + +#define C_0p4142135_Q15 13573 + +#define C_0p99_Q14 16220 +#define C_0p197_Q14 3228 +#define C_0p84_Q14 13763 +#define C_0p561_Q14 9191 + Word16 sgn_bit, re_abs, im_abs, max_abs, min_abs, sum; + Word16 jcoeffs[2][2] = { {C_0p99_Q14, C_0p197_Q14}, {C_0p84_Q14, C_0p561_Q14} }; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("sqrtMagnApprox_fx", sizeof(struct { + Word16 sgn_bit, re_abs, im_abs, max_abs, min_abs, sum; + Word16 jcoeffs[2][2]; + })); +#endif + +#ifdef WMOPS + push_wmops("PhECU::sqrtMagnApprox_fx"); +#endif + + /* Get values and move pointers */ + re_abs = abs_s(re); /* 1 cycle */ + im_abs = abs_s(im); /* 1 cycle */ + + /* Find max and min value */ + min_abs = s_min(re_abs, im_abs); /* 1 cycle */ + max_abs = s_max(re_abs, im_abs); /* 1 cycle */ + + /* Calc approximation depending on relation */ + sgn_bit = lshr(sub(mult(max_abs, C_0p4142135_Q15), min_abs), 15); /* 3 cycles */ + sum = mac_r(L_mult(max_abs, jcoeffs[sgn_bit][0]), min_abs, jcoeffs[sgn_bit][1]); /* 2 cycles */ +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + return sum; + } + + /*----------------------------------------------------------------------------- + * fft_spec2_sqrt_approx_fx() + * + * Approximation of sqrt(Square magnitude) of fft spectrum + * if min_abs <= 0.4142135*max_abs + * abs = 0.99 max_abs + 0.197*min_abs + * else + * abs = 0.84 max_abs + 0.561*min_abs + * end + * + * Note: even to handle the dynamics of sqrt(re^2+im^2) located on + * a scaled unit circle. One need to scale down the results + * with a factor 2, that is Q_out = Q_in - 1 + * sqrt( -32768.^2 + -32768.^2 ) results in = 23170 Qin-1, + * which corresponds to 46341 in the Qin domain + *----------------------------------------------------------------------------*/ + + void fft_spec2_sqrt_approx_fx(const Word16 x[], /* i : Input vector: complex spectrum , Qin */ + Word16 xMagSqrt[], /* o : sqrt of magnitude square spectrum Qout=Qin-1*/ + const Word16 N /* i : Input vector x length */ + ) + { + Counter i; + Word16 l; + const Word16 *pRe, *pIm; + Word16 * pMagSqrt; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("fft_spec2_sqrt_approx_fx", sizeof(struct { + Counter i; + Word16 l; + const Word16 *pRe, *pIm; + Word16 * pMagSqrt; + })); +#endif + +#ifdef WMOPS + push_wmops("PhECU::fft_spec2_sqrt_approx_fx"); +#endif + + /* Magnitude at 0. only real component */ + pMagSqrt = &xMagSqrt[0]; + pRe = &x[0]; + *pMagSqrt++ = mult(abs_s(*pRe++), C_0p99_Q14); move16(); + + /* From 1 to (N/2 - 1). */ + pIm = &x[N - 1]; + + l = sub(shr_pos_pos(N, 1), 1); /* N/2 - 1. */ + l = s_min(l, (LPROT48K_RED / 2 - 1) + DELTA_CORR_F0_INT); + /* at 48 k the top 8 khz are always zero, and further peaks are not + located above LPROT48K_RED 32 kHz */ + FOR(i = 0; i < l; i++) + { + *pMagSqrt++ = sqrtMagnApprox_fx(*pRe++, *pIm--); move16(); + } + + /* The sqrt magnitude square at N/2 - only real component */ + *pMagSqrt = mult(abs_s(*pRe), C_0p99_Q14); move16(); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + return; + } + + Word16 + imax2_jacobsen_mag_fx(/* o: The location, relative to the middle of the 3 given data point, of the maximum. + (Q15) */ + const Word16 *y_re, /* i: The 3 given data points. real part order -1 0 1 */ + const Word16 *y_im, /* i: The 3 given data points. imag part order 1 0 -1 (from FFT)*/ + const Word16 + special /* i: -1 = left edge special case, 0 = normal, +1 = right edge special case */ + ) + { + Word16 posi; + Word16 man, expo; + const Word16 *pY; + Word16 y_m1_re, y_0_re, y_p1_re; + Word16 y_m1_im, y_0_im, y_p1_im; + + Word16 D_re, D_im, N_re, N_im; + + Word32 L_sign, L_denom, L_numer; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("imax2_jacobsen_mag_fx", sizeof(struct { + Word16 posi; + Word16 man, expo; + const Word16 *pY; + Word16 y_m1_re, y_0_re, y_p1_re; + Word16 y_m1_im, y_0_im, y_p1_im; + Word16 D_re, D_im, N_re, N_im; + Word32 L_sign, L_denom, L_numer; + })); +#endif + +#ifdef WMOPS + push_wmops("PhECU::imax2_jacobsen_mag_fx"); +#endif + + /* Jacobsen estimates peak offset relative y_0 using + * X_m1 - X_p1 + * d = REAL ( ------------------- ) * c_jacob + * 2*X_0 - X_m1 -Xp1 + * + * Where c_jacob is a window dependent constant + */ +#define C_JACOB_Q14 18725 /* c_jacob = 1.1429; % assume 0.1875 hammrect window 'periodic' */ + + ASSERT(special == 0); /* always use other imax for edges cases */ + UNUSED(special); + + /* Get the bin parameters into variables */ + pY = y_re; + y_m1_re = *pY++; + y_0_re = *pY++; + y_p1_re = *pY++; + + /* Same for imaginary parts - note reverse order from FFT */ + pY = y_im; + y_p1_im = *pY++; + y_0_im = *pY++; + y_m1_im = *pY++; + + test(); + IF( norm_s(y_0_re) == 0 || norm_s(y_0_im) == 0 ) + { +#define JACOB_MARGIN 2 + /* for very high peaks the Complex denominator values may need to be downshifted 2 steps */ + y_0_re = shr_pos(y_0_re, JACOB_MARGIN); + y_0_im = shr_pos(y_0_im, JACOB_MARGIN); + + y_m1_re = shr_pos(y_m1_re, JACOB_MARGIN); + y_m1_im = shr_pos(y_m1_im, JACOB_MARGIN); + + y_p1_re = shr_pos(y_p1_re, JACOB_MARGIN); + y_p1_im = shr_pos(y_p1_im, JACOB_MARGIN); + } + + /* prepare numerator real and imaginary parts*/ + N_re = sub(y_m1_re, y_p1_re); + N_im = sub(y_m1_im, y_p1_im); + + /* prepare denominator real and imaginary parts */ + + D_re = sub(sub(shl_pos(y_0_re, 1), y_m1_re), y_p1_re); + D_im = sub(sub(shl_pos(y_0_im, 1), y_m1_im), y_p1_im); + + /* REAL part of complex division */ + L_numer = L_mac0(L_mult0(N_re, D_re), N_im, D_im); + L_denom = L_mac0(L_mult0(D_re, D_re), D_im, D_im); + L_sign = L_xor(L_numer, L_denom); /* Preserve the sign since div_s() only takes positive arguments. */ + + L_numer = L_abs(L_numer); + L_denom = L_abs(L_denom); + + test(); + IF(L_numer != 0 && L_denom != 0) + { + + man = plc_phEcu_ratio_fx(L_numer, L_denom, &expo); /* The mantissa is considered in Q15 */ + + man = mult_r(man, C_JACOB_Q14); + posi = shr_sat( man, sub(expo, 2)); + /* to Q15 (and due to saturation, it is automatically bound inside [-1.0,1.0].) */ + + if (L_sign < 0) /* Restore the sign. */ + { + posi = negate(posi); + } + } + ELSE + { + posi = 0; move16(); /* flat top, division is not possible choose center freq */ + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + return posi; /* Q15. The position either left or right relative to the index of the middle of the 3 given + data points. */ + } + + /* Convert 32 Bit FFT into 16 bit fft domain */ + static void intlvW32_2_flippedW16( + Word32 * L_x, /* i : interleaved coeffs DC, Fs/2, Re(1),Im(1), Re(2),Im(2), ... ] */ + const Word16 numPairs, /* i: typically (fft-size/2 -1), re/im coeffs to copy */ + const Word16 Lprot, /* i: fft size , including DC+fs/2 */ + Word16 * x /* o : flipped coeffs , [DC, Re(1),.. Re(N-1/2) , Fs/2, Im(N-1/2) ... Im(1) ] */ + ) + { + + /* reorder real and imag components, and apply fractional scale for 24/48Khz */ + Counter m; + Counter numPairsLocal; + Word32 *pX_L = &L_x[2]; /*ptr init*/ + Word16 *pX_Re = &x[1]; /*ptr init*/ + Word16 *pX_Im = &x[Lprot - 1]; /*ptr init*/ + +#define FHG_FFT_UPSHIFT 2 + +#ifdef WMOPS + push_wmops("PhECU::intlvW32_2_flippedW16"); +#endif +#ifdef DYNMEM_COUNT + Dyn_Mem_In("intlvW32_2_flippedW16", sizeof(struct { + Counter m; + Counter numPairsLocal; + Word32 *pX_L; + Word16 *pX_Re; + Word16 *pX_Im; + })); +#endif + + /* make the scaling of 8/3= 4*0.666 here for 24 kHz and 48 kHz using 16x16 instead or 32x16 ops + a limited loss of SNR */ + + test(); + IF(sub(numPairs, 383) == 0 || sub(numPairs, 191) == 0) + { /* 24,48 kHz , 16 ms , scale by 8/3 = .666*4 */ + numPairsLocal = s_min(numPairs, 383 - 63); /* do not copy bins above 20 kHz */ + /* for 48 kHz is to only go up to 40 kHz pairs , */ + FOR(m = 0; m < numPairsLocal; m++) + { + /* multiply by (8/3)*(2.^FHG_FFT_UPSHIFT) */ + /* note: multiplication by 2/3 need to preceed upshift , due to FFT scaling being very close to the 48/24 3 + * split kHz bit margin */ + *pX_Re++ = extract_h(L_shl_pos(Mpy_32_16_lc3plus(*pX_L++, FEC_TWOTHIRDS_Q15), FHG_FFT_UPSHIFT + 2)); + move16(); + *pX_Im-- = extract_h(L_shl_pos(Mpy_32_16_lc3plus(*pX_L++, FEC_TWOTHIRDS_Q15), FHG_FFT_UPSHIFT + 2)); + move16(); + } + /* Place the two real only components */ + x[0] = extract_h(L_shl_pos(Mpy_32_16_lc3plus(L_x[0], FEC_TWOTHIRDS_Q15), FHG_FFT_UPSHIFT + 2)); /* DC */ + move16(); + m = shr_pos_pos(Lprot, 1); + x[m] = extract_h(L_shl_pos(Mpy_32_16_lc3plus(L_x[1], FEC_TWOTHIRDS_Q15), FHG_FFT_UPSHIFT + 2)); /* fs/2 */ + move16(); + } + ELSE + { /* 8,16,32 kHz 16 ms no additional scaling by 8/3 */ + + FOR(m = 0; m < numPairs; m++) + { + *pX_Re++ = extract_h(L_shl_pos(*pX_L++, FHG_FFT_UPSHIFT)); + move16(); + *pX_Im-- = extract_h(L_shl_pos(*pX_L++, FHG_FFT_UPSHIFT)); + move16(); + } + + /* Place the two real only components */ + x[0] = extract_h(L_shl_pos(L_x[0], FHG_FFT_UPSHIFT)); /* DC */ move16(); + m = shr_pos_pos(Lprot, 1); + x[m] = extract_h(L_shl_pos(L_x[1], FHG_FFT_UPSHIFT)); /* fs/2 */ move16(); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + } + + static void flippedW16_2_intlvW32( + Word16 * x, /* i : flipped coeffs , [DC, Re(1),.. Re(N-1/2) , Fs/2, Im(N-1/2) ... Im(1) ] */ + const Word16 numPairs, /* i: typically (fft-size/2 -1), re/im coeffs to copy */ + const Word16 Lprot, /* i: fft size , including DC+fs/2 */ + Word32 * L_x /* o : interleaved coeffs DC, Fs/2, Re(1),Im(1), Re(2),Im(2), ... ] */ + ) + { + Counter i; + Counter numPairsLocal; + Word32 *pX_L; + Word16 *pX_re, *pX_im; +#ifdef WMOPS + push_wmops("PhECU::flippedW16_2_intlvW32"); +#endif +#ifdef DYNMEM_COUNT + Dyn_Mem_In("flippedW16_2_intlvW32", sizeof(struct { + Counter i; + Counter numPairsLocal; + Word32 *pX_L; + Word16 *pX_re, *pX_im; + })); +#endif + + /* Convert stored 16 bit into 32bit for fft */ + /* Note during save FFT output was left shifted FHG_FFT_UPSHIFT */ + /* this needs to be restored before one calls ifft to avoid overflow */ + + pX_L = &L_x[2]; /*ptr init*/ + pX_re = &x[1]; /*ptr init*/ + pX_im = &x[Lprot - 1]; /*ptr init*/ + + numPairsLocal = s_min(320, numPairs); /* 48kHz optimization */ + FOR(i = 0; i < numPairsLocal; i++) + { + *pX_L++ = L_shr_pos(L_deposit_h(*pX_re++), FHG_FFT_UPSHIFT); move32(); + *pX_L++ = L_shr_pos(L_deposit_h(*pX_im--), FHG_FFT_UPSHIFT); move32(); + } + /* at 48KHz zero tail 2x63= 126 bins for Word32 IFFT input */ + basop_memset(pX_L, 0, sizeof(Word32) * shl_pos(sub(numPairs, numPairsLocal), 1)); + + /* Place the two real only components */ + L_x[0] = L_shr_pos(L_deposit_h(x[0]), FHG_FFT_UPSHIFT); move32(); + L_x[1] = L_shr_pos(L_deposit_h(x[Lprot / 2]), FHG_FFT_UPSHIFT); move32(); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + } + + void get_sin_cosQ10opt(Word16 phase, /* Q10 0..1023 i.e. 1024=2*pi */ + Word16 * ptrSin, /* Q15 */ + Word16 * ptrCos /* Q15 */ + ) + { + Word16 sign_val, idx, idx2, idx3; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("get_sin_cosQ10", sizeof(struct { Word16 sign_val, idx, idx2, idx3; })); +#endif + +#ifdef WMOPS + push_wmops("PhECU::get_sin_cosQ10opt"); +#endif + + /* sin table has a range up to pi/2 (256+1)=257 coeffs*/ + + sign_val = shr_pos_pos(phase, 9); /* highest bit is the sinus sign */ + idx = s_and(phase, 0x1ff); /* mask away sign */ + + idx2 = sub(idx, 256); + if (idx2 < 0) + { /*rising sine part */ + *ptrSin = sin_quarterQ15_fx[idx]; move16(); + } + + idx3 = sub(512, idx); + if (idx2 >= 0) + { /* decaying part, reverse idx */ + *ptrSin = sin_quarterQ15_fx[idx3]; move16(); + } + + if (sign_val != 0) + { + *ptrSin = negate(*ptrSin); /*no move when inlined , no sat as max in table is 32767 */ + } + + /*cos*/ + idx = add(phase, 256); /* +pi/2, i.e. move to cos phase */ + idx = s_and(idx, 0x3ff); /* wrap on 10 bits limit */ + + sign_val = shr_pos_pos(idx, 9); /* highest bit is the sign */ + idx = s_and(idx, 0x1ff); /* mask away sign */ + + idx2 = sub(idx, 256); + if (idx2 < 0) + { /*rising sine part */ + *ptrCos = sin_quarterQ15_fx[idx]; move16(); + } + + idx3 = sub(512, idx); + if (idx2 >= 0) + { /* decaying part, reverse idx*/ + *ptrCos = sin_quarterQ15_fx[idx3]; move16(); + } + + if (sign_val != 0) + { + *ptrCos = negate(*ptrCos); /* no move when inlined , no sat as max in table is 32767 */ + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + } + +#ifdef CR8_A_PLC_FADEOUT_TUNING + static Word16 plc_phEcu_nonpure_tone_ana_fx(const Word16* plocs, + const Word16 n_plocs, + const Word16* X, /*i: { DC, Re1,Re2 ,.....ReN , Fs/2, ImN... , Im2, Im1} */ + const Word32 *L_Xavg, /* i : Frequency group amp averages for tonal tilt analysis Max upshifted */ + const Word16 Lprot, + const Word16 fs_idx) + { +#ifdef DYNMEM_COUNT + Dyn_Mem_In("PhECU::nonpure_tone_ana", sizeof(struct { + Word16 nonpure_tone_detect; + Word16 n_ind, tone_ind, low_ind, high_ind; + Word16 peak_amp, peak_amp2, valley_amp, x_abs[(1 + 2 * ONE_SIDED_SINE_WIDTH + 2 * 1)]; + Word16 sineband_ind_low, sineband_ind_high; + Word16 i, N_grp; + Word16 tmp, tmp_dB; + Word32 L_tot_inc_HF, L_tot_inc_LF; + Word16* pRe; + Word16* pIm; + Word16* gwlpr_fxPlus1; + Word32 L_nf; + Word32 L_XavgL2_fx[MAX_LGW + 1]; + Word32 L_XavgUp_fx[MAX_LGW + 1]; + })); +#endif + +#ifdef WMOPS + push_wmops("PhEcu::nonpure_tone_ana_fx"); +#endif + + Word16 nonpure_tone_detect; /* output variable */ + Word16 n_ind, tone_ind, low_ind, high_ind; + Word16 peak_amp, peak_amp2, valley_amp, x_abs[(1 + 2 * ONE_SIDED_SINE_WIDTH + 2 * 1)]; + + Word16 sineband_ind_low, sineband_ind_high; + Word16 i, N_grp; + Word16 tmp; + + Word32 L_Ltot_inc_HF, L_Ltot_inc_LF; + Word32 L_tmp_dB; + + const Word16* pRe; + const Word16* pIm; + const Word16* gwlpr_fxPlus1; + Word32 L_nf; + Word32 L_XavgL2_fx[MAX_LGW + 1], L_tmp ; + Word32 L_XavgUp_fx[MAX_LGW + 1]; /* upscaled values , excluding peak band(s) */ + + /* use of a compressed hearing sensitivity curve allowing more energy deviation in highest and lowest bands */ + /* ROM table Word16 scATHFx[MAX_LGW - 1] */ + + /* init */ + nonpure_tone_detect = 0; move16(); /* Word16 register with decisions */ + + peak_amp = 0; move16(); + peak_amp2 = 0; move16(); + + /* limit single sine optimization to when 2 peaks are close enough to represent a single sinusoid */ + test(); + if ((sub(n_plocs, 2) == 0) && + (sub(sub(plocs[1], plocs[0]), ONE_SIDED_SINE_WIDTH) >= 0) + ) /* NB, plocs is an ordered vector */ + { + nonpure_tone_detect = s_or(nonpure_tone_detect, 0x01); + } + + /* local bin wise dynamics analysis, for 1 or 2 initial local maxima peaks , + if 2 peaks , we do the analysis based on the location of the largest abs peak */ + { + tone_ind = 0; move16(); /* one peak only , use position plocs[tone_ind], tone_ind==0 */ + + peak_amp = shr(abs_s(X[0]), 1); /* plocs[0]=0, simply multiply DC*0.5 to match scaling in function sqrtMagnApprox_fx */ + test(); + IF(plocs[0] != 0) + { + peak_amp = sqrtMagnApprox_fx(X[plocs[0]], X[sub(Lprot, plocs[0])]); + } + + IF(sub(n_plocs, 2) == 0) /* locate abs max peak */ + { + peak_amp2 = sqrtMagnApprox_fx(X[plocs[1]], X[sub(Lprot, plocs[1])]); /* Re-part and Im-part in different ends of array X */ + + tmp = sub(peak_amp, peak_amp2); + tone_ind = lshr(tmp, 15); /* mask out sign bit 0(for peak_amp0), 1( for peak_amp2), lshr --> no sign extension in shift */ + peak_amp = s_max(peak_amp, peak_amp2); + } + + low_ind = s_max(1, sub(plocs[tone_ind], (ONE_SIDED_SINE_WIDTH + 1))); /* DC is not allowed in the range */ + high_ind = s_min(sub(shr(Lprot, 1), 2), add(plocs[tone_ind], (ONE_SIDED_SINE_WIDTH + 1))); /* Fs/2 is not allowed in the range */ + + n_ind = add(sub(high_ind, low_ind), 1); + /* find lowest amplitude around the assumed main lobe center location */ + + pRe = &(X[low_ind]); /* ptr init */ + pIm = &(X[Lprot - low_ind]); /* ptr init*/ + FOR(i = 0; i < n_ind; i++) + { + x_abs[i] = sqrtMagnApprox_fx(*pRe++, *pIm--); move16(); /* x_abs is downscaled by 0.5 in abs(complex) approximation */ + } + + valley_amp = peak_amp; move16(); + FOR(i = 0; i < n_ind; i++) + { + valley_amp = s_min(x_abs[i], valley_amp); + } + + /* at least a localized amplitude ratio of 16 (24 dB) required to declare a pure noise-free sinusoid */ + if (sub(shr(peak_amp, 4), valley_amp) < 0) /* 1/16 */ + { + nonpure_tone_detect = s_or(nonpure_tone_detect, 0x02); /* not a pure tone due to too low local SNR P2V */ + } + } + + + /* analyze LF/ HF bands energy dynamics vs the assumed single tone band ( for one or two peaks found cases ) */ + { + /* Xavg , is a vector of rather rough MDCT based band amplitude estimates in perceptually motivated bands. from approx the last 26 ms of synthesis */ + + /* eval amplitude relations for assumed tonal band vs lower and higher bands */ + /*N_grp = xavg_N_grp[fs_idx];*/ /* { 4 NB , 5 WB , 6 SSWB , 7 SWB, 8 FB }; */ + N_grp = add(fs_idx, 4); + assert(fs_idx < 5); + + + /* establish band(s) with assumed sinusoid tone */ + /* if tone freq location is below first MDCT-band definition, use first band as band location anyway */ + + /* band 0 , 1 , 2 , 3 , ...*/ + /* dct-inds "c" "0"...11, 12...19, 20...35, 36 ... */ + /* gwplr_fx= [ 1 , 12(750Hz), 20(1250Hz) , 36 , ... */ /* lowest lim+1 in gwplr */ + + /* for-loop BASOP version */ + tmp = 0; move16(); + gwlpr_fxPlus1 = &(gwlpr_fx[1]); /* ptr init */ + FOR(i = 0; i < N_grp; i++) + { + if (sub(plocs[tone_ind], gwlpr_fxPlus1[i]) >= 0) + { + tmp = add(i, 1); + } + } + + sineband_ind_low = tmp; move16(); + sineband_ind_high = tmp; move16(); /* typically in the same band as low */ + + /* a single tone may end up on a band border + , handle case when assumed tone is more or less right in-between two perceptual bands +/- 4*62.5 Hz */ + + test(); logic16(); + if ((sineband_ind_high > 0) && + (sub(sub(plocs[tone_ind], ONE_SIDED_SINE_WIDTH), gwlpr_fx[add(sineband_ind_high, 1)]) >= 0) + ) + { + sineband_ind_low = sub(sineband_ind_high, 1); + } + + logic16(); + if ((sub(sineband_ind_low, sub(N_grp, 1)) < 0) && + (sub(add(plocs[tone_ind], ONE_SIDED_SINE_WIDTH), gwlpr_fx[add(sineband_ind_low, 1)]) >= 0) + ) + { + sineband_ind_high = add(sineband_ind_low, 1); + } + } + + /* intraframe(26 ms), weighted LB and HB envelope dynamics/variation analysis */ + /* envelope analysis , + require at least two HF or two LF bands in the envelope taper/roll-off analysis , otherwise skip this condition */ + + logic16(); + test(); logic16(); + IF( (nonpure_tone_detect == 0) && + ( (sub( add(sineband_ind_high, 2), N_grp) < 0 ) || + (sub(sineband_ind_low, 2+1 ) >= 0) + ) + ) + { + + /* delta taper-off analysis solution, less sensitive to input bandwidth limitation and levels */ + + /* test Xavg Word16 result above vs a high resolution Word32 L_Xavg */ + /* strong spectral tilt causes HF to be truncated in Word16 */ + + basop_memcpy(L_XavgUp_fx, L_Xavg, N_grp * sizeof(Word32) ) ; + + /* first remove all energy from the assumed tonal peak band(s) */ + L_XavgUp_fx[sineband_ind_low] = L_min(L_XavgUp_fx[sineband_ind_low], 1); move32(); + L_XavgUp_fx[sineband_ind_high] = L_min(L_XavgUp_fx[sineband_ind_high], 1); move32(); + + tmp = getScaleFactor32_0(L_XavgUp_fx, N_grp); /* o: measured headroom in range [0..32], 32 if all L_x[i] == 0 */ + if (sub(tmp, 32) == 0) + { + nonpure_tone_detect = s_or(nonpure_tone_detect, 0x100); /* also set a flag for an all zero L_Xavg coarse spectrum estimate signal */ + } + + + /* add noise floor to L_Xavg before log2 function call */ + L_nf = L_shl(1L, sub(tmp, 1)); + L_nf = L_max(L_nf, 1L); + for (i = 0; i < N_grp; i++) + { + L_XavgUp_fx[i] = L_shl_sat(L_XavgUp_fx[i], tmp); move32(); /* maximize precision before actual log2_fx(Word32) calc call */ + + L_tmp = L_XavgUp_fx[i]; move32(); + test(); + if (L_tmp <= 0) + { + L_tmp = L_nf; move32(); + } + + /* log2(Upshifted Word32) */ + /* maximize precision in BASOP Log2 function */ + L_XavgL2_fx[i] = BASOP_Util_Log2_lc3plus(L_tmp); /* L_input 1.0 or lower --> output always negative */ + /* add 31.0 to store as fractional bits of an upscaled positive Word32 integer input ) */ + L_XavgL2_fx[i] = L_add(31L << 25, L_XavgL2_fx[i]); /* only diffs added so 31.0 is cancelled out later , in total only values between +/- 2^6 = [-64 ... -64[ are possible */ + } /* band i for L_Xavg calc*/ + /* verify that an assumed clean sine does not have any odd HF content indications by thresholding the accumulated delta rise in LF/HF side lobes */ + L_Ltot_inc_HF = 0; move32(); + for (i = (sineband_ind_high + 1); i < (N_grp - 1); i++) + { + L_tmp_dB = 0; move32(); + if (L_sub(L_Xavg[i], L_Xavg[i + 1]) < 0) /* only increases are accumulated */ + { + L_tmp_dB = L_sub(L_XavgL2_fx[i + 1], L_XavgL2_fx[i]); /* obtain ratio in log2 domain */ + } + L_tmp = Mpy_32_16_lc3plus(L_tmp_dB, scATHFx[i]); /* scATHFx[i] is the ATH weight for band i and band i+1 */ + L_tmp = L_shr_pos(L_tmp, 1); /* Q25 -> Q24 */ + + L_Ltot_inc_HF = L_add(L_Ltot_inc_HF, L_tmp); /* Q24 */ + } + + /* verify that an assumed clean sine does not have any odd LF content by thresholding the accumulated LF reverse up tilt */ + + L_Ltot_inc_LF = 0; move32(); + tmp = s_max(0, sub(sineband_ind_low, 1)); /* could also be pointer init */ + for (i = tmp; i > 0; i--) + { + L_tmp_dB = 0; move32(); + if (L_sub(L_Xavg[i - 1], L_Xavg[i]) > 0) /* only increases are accumulated */ + { + L_tmp_dB = L_sub(L_XavgL2_fx[i - 1], L_XavgL2_fx[i]); /* obtain ratio in log2 domain */ + } + L_tmp = Mpy_32_16_lc3plus(L_tmp_dB, scATHFx[i-1]); /* scATHFx[i-1] is the ATH weight in between band i-1 and band i */ + L_tmp = L_shr_pos(L_tmp, 1); /* Q25 -> Q24 */ + L_Ltot_inc_LF = L_add(L_Ltot_inc_LF, L_tmp); /* Q24 */ + } + + if (L_sub(L_Ltot_inc_HF, SIDE_LIM) > 0) /* side_lim=round(Q24x*0.7474) */ + { + /* 4.5 dB in log2 is 0.7474 */ + nonpure_tone_detect = s_or(nonpure_tone_detect, 0x10); /* still not a pure tone, too great HF side increase */ + } + + if (L_sub(L_Ltot_inc_LF, SIDE_LIM) > 0) /* side_lim=round(Q24x*0.7474) */ + { + /* 4.5 dB in log2 is 0.7474 */ + nonpure_tone_detect = s_or(nonpure_tone_detect, 0x20); /* still not a pure tone, too great HF side increase */ + } + + /* verify that an assumed clean sine does not have any odd LF+HF content by thresholding the accumulated LF+HF unexpected tilt */ + if (L_sub(L_add_sat(L_Ltot_inc_LF, L_Ltot_inc_HF), LFHF_LIM) > 0) /* side_lim=round(Q24x*0.7474) */ + { + /* 6.0 dB in log2 is 0.996578428 */ + nonpure_tone_detect = s_or(nonpure_tone_detect, 0x40); /* still not a pure tone, too great LF+HF side increase */ + } + + } /* bands available*/ + +#ifdef WMOPS + pop_wmops(); +#endif + + return nonpure_tone_detect; + } +#endif /* CR8_A_PLC_FADEOUT_TUNING plc_phecu_non_pure_ana_fx */ + + + + diff --git a/lib_lc3plus/plc_phecu_lf_peak_analysis_fx.c b/lib_lc3plus/plc_phecu_lf_peak_analysis_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..50b694e5ca75f16373cb719608419d5b7956eb9d --- /dev/null +++ b/lib_lc3plus/plc_phecu_lf_peak_analysis_fx.c @@ -0,0 +1,202 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +void plc_phEcu_LF_peak_analysis_fx(Word16 * plocs, /* i/o 0 ... Lprot/2 +1*/ + Word16 * n_plocs, /* i/o 0.. MAX_PLOCS */ + Word32 * L_f0estQ16, /* i/o Q16*/ + const Word16 *mag, /* i: Qx */ + const Word16 stPhECU_f0hzLtpBinQ7, const Word16 stPhECU_f0gainLtpQ15, + const Word16 nSubm, Word16 maxPlocs, + Word8 *scratchBuffer /* Size = 6 * MAX_PLOCS + 42 */ +) + +{ + Counter i, j; + Word16 n_plocs_ana, peakLF_Xval, tmp, f_abs_ind, plocsIntersectFlag; + + Word32 L_fQ7, *L_f0est_prelQ16; + Word16 num_prel = 0, *plocs_prel; + Word16 prel_low, prel_high, start, fin; + Word16 *plocs_old; + Word32 *L_plocsi_old; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("plc_phEcu_LF_peak_analysis_fx", sizeof(struct { + Counter i, j; + Word16 n_plocs_ana, peakLF_Xval, tmp, f_abs_ind, plocsIntersectFlag; + Word32 L_fQ7, *L_f0est_prelQ16; + Word16 num_prel, *plocs_prel; + Word16 prel_low, prel_high, start, fin; + Word16 *plocs_old; + Word32 *L_plocsi_old; + })); +#endif + + + + L_f0est_prelQ16 = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 4 * 7 */ + plocs_prel = (Word16 *)scratchAlign(L_f0est_prelQ16, sizeof(*L_f0est_prelQ16) * 7); /* Size = 2 * 7 */ + plocs_old = (Word16 *)scratchAlign(plocs_prel, sizeof(*plocs_prel) * 7); /* Size = 2 * MAX_PLOCS */ + L_plocsi_old = (Word32 *)scratchAlign(plocs_old, sizeof(*plocs_old) * maxPlocs); /* Size = 4 * MAX_PLOCS */ + + test(); test(); + IF ((*n_plocs > 0) && sub(stPhECU_f0gainLtpQ15, ((Word16)(0.25 * 32768.0))) > 0 && + sub(stPhECU_f0hzLtpBinQ7, (Word16)(2.75 * 128.0)) < 0) + { + + /* % analyze/apply f0Ltp to avoid intermodulation effects below f0 of ~180 Hz + % we only do the f0Ltp-replacement(s) if there is already an established + % fft peak in the region ~fRes to 2.5*fres + fft_peak_eval_plocs = 1:3; + plocsIntersectFlag = intersect(plocs, fft_peak_eval_plocs ); % check for 1,2,3 in plocs */ + + plocsIntersectFlag = 0; move16(); + peakLF_Xval = 0; move16(); + n_plocs_ana = s_min(*n_plocs, 3); + FOR (i = 0; i < n_plocs_ana; i++) + { + tmp = plocs[i]; move16(); + if (sub(tmp, 2) <= 0) /* C index 0, 1,2 checked , [DC, 62.5 Hz, 125Hz ] */ + { + plocsIntersectFlag = add(i, 1); + } + peakLF_Xval = s_max(mag[tmp], peakLF_Xval); + } + + num_prel = 0; move16(); + IF (plocsIntersectFlag != 0) + { /* fft-peak at 0, 62 or 125 Hz */ + /* analyze if ltp-based f0 need to be added or not */ + peakLF_Xval = mult_r(peakLF_Xval, (Word16)(.375 * 32768.0)); /* now as a limit */ + + FOR (i = 1; i <= nSubm; i++) + { + L_fQ7 = L_mult0(i, stPhECU_f0hzLtpBinQ7); /* fractional index stored in L_plocsi */ + f_abs_ind = L_shr_pos(L_add(L_fQ7, 64), 7); /* integer bin index stored in plocs */ + + test(); + IF ((L_sub(L_fQ7, 819) <= 0) && /* % only apply up to ~400hz , 819 = 400/62.5*128 */ + (sub(mag[f_abs_ind], peakLF_Xval) > + 0)) /* % only set as preliminary if relative peak strength is signficant*/ + { + L_f0est_prelQ16[num_prel] = L_shl_pos(L_fQ7, 9); move32(); + plocs_prel[num_prel] = f_abs_ind; move16(); + num_prel = add(num_prel, 1); + } + } + } /*intersectFlag*/ + + /* now replace/ merge new preliminary added peaks with existing plocs and L_f0estQ16 */ + /* note that a previous fake/merged magnitude-determined peak may be replaced by two separated side peaks */ + + /* a general non-optimized list-merging solution below */ + test(); + IF ((num_prel > 0) && (sub(add(num_prel, *n_plocs), MAX_PLOCS) <= 0) /* skip in case plocs list is too large */ + ) + { + prel_low = plocs_prel[0]; move16(); + prel_high = plocs_prel[sub(num_prel, 1)]; move16(); + + /* initial assumption:: all original peaks (1 or 2 of them) are positioned below prel_low */ + start = (*n_plocs); /* at this point 'start' is the location_c where to add any harmonics peaks */ + + FOR (i = sub(*n_plocs, 1); i >= 0; i--) + { + if (sub(plocs[i], prel_low) >= 0) + { + start = i; move16(); + } + } + start = sub(start, 1); /* end of old section to copy before the added/merged section */ + start = s_max(start, -1); /* limit for loop later */ + /*% dbg check low part for a sucessful replace/merge */ + if (start >= 0 && start < *n_plocs) + { + ASSERT(plocs[start] < plocs_prel[0]); + } + + sub(0, 0); + IF (prel_high < plocs[0]) + { + fin = 0; move16(); /*% keep all plocs , just concat */ + } + ELSE + { + fin = *n_plocs; + FOR (i = 0; i < *n_plocs; i++) + { + sub(0, 0); + if (plocs[i] <= prel_high) + { + fin = i; move16(); + } + } + fin = add(fin, 1); /* first element in high part of old plocs to be copied */ + } + + /*% dbg check high part for a sucessful replace/merge */ + if (fin >= 0 && fin < *n_plocs) + { + ASSERT(plocs_prel[sub(num_prel, 1)] < plocs[fin]); + } + + /* + % actual replace/merge of added integer locations and fractional freqs. into plocs/f0list list ; + % three loops in BASOP + plocs = [ plocs(1:(start)) ; plocs_prel ; plocs((fin):end) ]; + f0est = [ f0est(1:(start)) ; f0est_prel; f0est((fin):end) ]; + */ + + FOR (i = 0; i < *n_plocs; i++) + { + plocs_old[i] = plocs[i]; move16(); + L_plocsi_old[i] = L_f0estQ16[i]; move32(); + } + + /* + j=0; + FOR(i=0; i <= start; i++) + { + plocs[i] = plocs_old[i]; move16(); + L_f0estQ16[i] = L_plocsi_old[i]; move32(); + j++; + } + */ + + j = add(start, 1); + + ASSERT(j>=0); + + FOR (i = 0; i < num_prel; i++) /* NB this section may both insert or overwrite old plocs */ + { + plocs[j] = plocs_prel[i]; move16(); + L_f0estQ16[j] = L_f0est_prelQ16[i]; move32(); + j++; + } + FOR (i = fin; i < *n_plocs; i++) /* copy the tail of the list */ + { + plocs[j] = plocs_old[i]; move16(); + L_f0estQ16[j] = L_plocsi_old[i]; move32(); + j++; + } + + *n_plocs = j; move16(); /* update total length */ + } /* num_prel >0*/ +} /* gain/hz Limits */ + +#ifdef DYNMEM_COUNT +Dyn_Mem_Out(); +#endif + +} + + diff --git a/lib_lc3plus/plc_phecu_peak_locator_fx.c b/lib_lc3plus/plc_phecu_peak_locator_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..42729e800fba9b283ca1dc2e4c32570d0228b786 --- /dev/null +++ b/lib_lc3plus/plc_phecu_peak_locator_fx.c @@ -0,0 +1,385 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +#define RES_fx 1 /* fixed point resolution */ + +/*----------------------------------------------------------------------------- + * peak_locator_fx() + *----------------------------------------------------------------------------*/ +void plc_phEcu_peak_locator_fx(const Word16 *inp, /* i: vector with values >=0 ,Qx */ + const Word16 inp_len, /* i: length of inp */ + Word16 * int_plocs, /* o: array of filtered integer plocs Q0 */ + Word16 * n_fsc, /* o: total_ number of filtered located highs Q0 */ + const Word16 sens, /* i sensitivity, Qx */ + const Word16 inp_high, /* i global high , Qx */ + const Word16 inp_low, /* i: global low, Qx */ + Word16 maxLprot_Red, /* i: optional size for wc memory alloc of scratch buffer */ + Word8 *scratchBuffer /* i: : scratch buffer 2* 3*(1+1+(maxLprot_Red/2)+1) */ +) +{ + Counter j, k, n, idx_high, idx_low; + Word16 inp_len_minus1 ; + Word16 pairs_start, pairs_end; + Word16 *p_tmp; + Word16 prev_delta, curr_delta; + Word16 delta_predc, delta_fin; + Word16 add_dc_flag, add_fin_flag; + Word16 low_val_cand_pairs, val_range; + Word16 num_pairs, n_tail_values; + Word16 cand_phase_start, cand_idx, prev_low_plus_sens, tmp; + + Word16 cand_high, prev_low; + Word16 *sc_idx; /* 1+ 128/2+1, or 1+ 256/2+1 ... 1+ 640/2+1 or 1+ 768/2+1*/ + Word16 *cand_pairs_buf ; /* actually lowVal + [DC ] + (368/2)pairs + [FS/2] */ + Word16 *cand_pairs; /* actually [DC ] + pairs + [FS/2] */ + Word16 * fsc_idx; /* list of high locations in sc__idx 1+368/2+1 */ + + + + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("peak_locator_fx", sizeof(struct { + Counter j, k, n, idx_high, idx_low; + Word16 inp_len_minus1; + Word16 pairs_start, pairs_end; + Word16 *p_tmp; + Word16 prev_delta, curr_delta; + Word16 delta_predc, delta_fin; + Word16 add_dc_flag, add_fin_flag; + Word16 low_val_cand_pairs, val_range; + Word16 num_pairs, n_tail_values; + Word16 cand_phase_start, cand_idx, prev_low_plus_sens, tmp; + Word16 cand_high, prev_low; + Word16 *sc_idx; + Word16 *cand_pairs_buf; + Word16 *cand_pairs; + Word16 *fsc_idx; + })); +#endif +#ifdef WMOPS + push_wmops("PhECU::peak_locator_fx(1st)"); +#endif + sc_idx = (Word16 *)scratchAlign(scratchBuffer, 0); /* ByteSize = 2 * (1+ inp_len+1) */ + cand_pairs_buf = (Word16 *)scratchAlign(sc_idx, sizeof(*sc_idx) * (1+inp_len+1)); /* ByteSize = 2 * (1+ 1+ inp_len+1 ) */ + fsc_idx = (Word16 *)scratchAlign(cand_pairs_buf , sizeof(*cand_pairs_buf) * (1+ 1+ inp_len+1)); /* ByteSize = 2 * ( 1+ inp_len + 1) */ + ASSERT((4 * maxLprot_Red) >= 3 * (1 + 1 + inp_len + 1)); /* basic buffer check */ + UNUSED(maxLprot_Red); + + inp_len_minus1 = sub(inp_len, 1); /* size of delta=derivative array ,and last index in inp */ + + cand_pairs = &cand_pairs_buf[1]; /* ptr init , make space for storing a lowest amplitude value in location -1 */ + pairs_start = 1; move16(); /* adjusted to zero or 1 or 2 when/if, DC is injected as sc_idx[0], or initial plateau skipped */ + + p_tmp = &(sc_idx[pairs_start]); /* ptr init */ + + + /* xor high/low pairs of delta_inp and save sign changes */ + prev_delta = sub(inp[1], inp[0]); /* precompute very first delta */ + + FOR(n = 1; n < inp_len_minus1; n++) + { /* sign change analysis */ + curr_delta = sub(inp[n + 1], inp[n]); /* n+1 ,n , are loop ptrs */ + if (s_xor(prev_delta, curr_delta) < 0) /* a "0" delta treated as a positive sign */ + { + *p_tmp++ = n; move16(); /* store sign change bin locations , location n in the inp[] signal */ + } + prev_delta = curr_delta; move16(); + } + + L_sub(0, 0); /* account for length calculaton */ + k = (Word16)(p_tmp - &(sc_idx[pairs_start])); + + + /* copy sign change location values to a pairs array */ + /* leave one initial sc_idx location open for a potential initial DC value */ + + ASSERT(pairs_start >= 0 && ((k - 1) + pairs_start) < (inp_len +2)); + FOR(j = 0; j < k; j++) + { + cand_pairs[j + pairs_start] = inp[sc_idx[j + pairs_start]]; move16(); move16(); /* the indirect should be calculated */ + } + + + /* filter away a potential single initial/trailing plateau + to enable correct analysis for adding DC or fs/2 bins */ + + logic16(); + IF((sub(k, 2) >= 0) && + (sub(cand_pairs[pairs_start], cand_pairs[pairs_start + 1]) == 0)) + { + pairs_start = add(pairs_start, 1); + k = sub(k, 1); + } + + /* filter away potential single trailing plateu */ + pairs_end = sub(add(pairs_start,k), 1); /* point to last established sign change element */ + logic16(); + if ((sub(k, 2) >= 0) && + (sub(cand_pairs[sub(pairs_end,1)], cand_pairs[pairs_end]) == 0)) + { + k = sub(k, 1); + } + pairs_end = sub(add(pairs_start,k), 1); /* recalc ptr to last element */ + + + /* conditionally add high/lows on both sides of input (pre_dc or fin) as candidates */ + add_dc_flag = 0; move16(); + add_fin_flag = 0; move16(); + + + IF(sub(k, 1) == 0) /* one single sign change found special case */ + { + if (sub(inp[0], cand_pairs[pairs_start]) != 0) + { + add_dc_flag = 1; move16(); /* not plateau */ + } + + if (sub(cand_pairs[pairs_end], inp[inp_len_minus1]) != 0) + { + add_fin_flag = 1; move16(); /* not plateau */ + } + } + + IF(sub(k, 2) >= 0) + { + delta_predc = sub(cand_pairs[pairs_start + 1], cand_pairs[pairs_start]); + delta_fin = sub(cand_pairs[pairs_end], cand_pairs[pairs_end - 1]); + + /* plateaus are allowed to be detected by xor sign change, + but still not allowed at the start nor at the end */ + + add_dc_flag = 1; move16(); + if (sub(inp[0], cand_pairs[pairs_start]) == 0) + { + add_dc_flag = 0; move16(); /* plateau down or , plateus up., --> do not add DC */ + } + + logic16(); + if ((sub(inp[0], cand_pairs[pairs_start]) < 0) && (delta_predc > 0)) + { + add_dc_flag = -1; move16(); /*UP - up ... replace */ + } + logic16(); + if ((sub(inp[0], cand_pairs[pairs_start]) > 0) && (delta_predc < 0)) + { + add_dc_flag = -1; move16(); /* DOWN - down ... % replace */ + } + + add_fin_flag = 1; move16(); + if (sub(cand_pairs[pairs_end], inp[inp_len_minus1]) == 0) + { + add_fin_flag = 0; move16(); /* up - plateau ... */ + } + logic16(); + if ((delta_fin > 0) && (sub(cand_pairs[pairs_end], inp[inp_len_minus1]) < 0)) + { + add_fin_flag = -1; move16(); /* up - UP ... % replace , hard to hit */ + } + logic16(); + if ((delta_fin < 0) && (sub(cand_pairs[pairs_end], inp[inp_len_minus1]) > 0)) + { + add_fin_flag = -1; move16(); /*down - DOWN ... % replace */ + } + + } + + IF(add_dc_flag > 0) + { /* add DC */ + pairs_start = sub(pairs_start, 1); + cand_pairs[pairs_start] = inp[0]; move16(); + sc_idx[pairs_start] = 0; move16(); + ASSERT(pairs_start >= 0 && pairs_start <= 2); + k = add(k, 1); + } + IF(add_dc_flag < 0) + { /* -1 --> replace with DC*/ + cand_pairs[pairs_start] = inp[0]; move16(); + sc_idx[pairs_start] = 0; move16(); + ASSERT(pairs_start >=0 && pairs_start <= 2); + } + + IF(add_fin_flag > 0) + { /* add FS/2 */ + pairs_end = add(pairs_end, 1); + cand_pairs[pairs_end] = inp[inp_len_minus1]; move16(); + sc_idx[pairs_end] = inp_len_minus1; move16(); + k = add(k, 1); + } + IF(add_fin_flag < 0) + { /* -1, replace tail with FS/2*/ + cand_pairs[pairs_end] = inp[inp_len_minus1]; move16(); + sc_idx[pairs_end] = inp_len_minus1; move16(); + } + /* preliminary cand_pairs now only have highs , lows , no initial/trailing plateaus */ + + + /* we allow the DC/FsBy2 lows to be used as the candidatelLow */ + low_val_cand_pairs = inp_low; move16(); + val_range = sub( inp_high, low_val_cand_pairs); /* used to determine if search is useful at all */ + + logic16(); + if ((sub(val_range, RES_fx) < 0) || + (sub( inp_high, sens) < 0)) + { + k = 0; move16(); + } + + logic16(); + if ((k == 0) && (sub(val_range, sens) >= 0)) + { + k = 1; move16(); + } + + + IF(sub(k, 2) > 0) + { + /* low, high, low, ... or + high, low, high, ...*/ + + cand_phase_start = pairs_start; move16(); /*assume first candidate is a high */ + if (sub(cand_pairs[pairs_start], cand_pairs[pairs_start + 1]) < 0) + { + cand_phase_start = add(pairs_start, 1); /* first is a low, --> skip to next higher cand */ + } + + /* high, low, high, ... */ + tmp = k; move16(); + if (sub(cand_phase_start, pairs_start) != 0) + { + tmp = sub(tmp, 1); + } + num_pairs = shr(tmp, 1); + n_tail_values = sub(tmp, shl(num_pairs, 1)); + + /* filter preliminary sign changes into sensitivity filtered sign changes */ + + *n_fsc = 0; move16(); /* counter of filtered fsc_idx */ + cand_high = low_val_cand_pairs; move16(); + cand_idx = -1; move16(); /* sentinel location for no high cand found yet. */ + cand_pairs[-1] = low_val_cand_pairs; move16(); + + prev_low = low_val_cand_pairs; move16(); + prev_low_plus_sens = add(prev_low, sens); + + /* filter loop for high - low sign change pairs */ + /* idx_high, idx_low are raw pointers into the cand_pairs and sc_idx arrays */ + + FOR( idx_high = cand_phase_start; idx_high < (cand_phase_start + 2 * num_pairs); idx_high += 2) + { + idx_low = idx_high+1; /* loop ptr increase */ + + /* new high candidate larger than previous candidate and */ + /* sensitivity still larger than the the previous low */ + tmp = s_max(cand_high, prev_low_plus_sens); + if(sub(cand_pairs[idx_high], tmp) > 0) + { + cand_idx = idx_high; move16(); /* enable or shift candidate position fwd */ + } + cand_high = cand_pairs[cand_idx]; move16(); /* NB, cand_pairs[-1] , has the low_val_cand_pairs value stored */ + + /* now check the fwd idx_low of the current {high,low} pair */ + prev_low = s_min(cand_pairs[idx_low], prev_low); + + tmp = sub(cand_high, sens); + IF(sub(tmp, cand_pairs[idx_low]) > 0) + { + /* this low point is now low enough to fix a previous high candidate */ + + fsc_idx[*n_fsc] = cand_idx; move16(); /*% add cand high idx -> output idx list*/ + *n_fsc = add(*n_fsc, 1); + + prev_low = cand_pairs[idx_low]; move16(); /* use this value as new low estimate */ + cand_idx = -1; move16(); /* no candidate until next pair or tail bin, and pt to lowVal */ + cand_high = low_val_cand_pairs; move16(); /* enable next candidate to be selected immediately */ + } + prev_low_plus_sens = add(prev_low, sens); + } /* { high, low} FOR loop */ + + logic16(); + IF((n_tail_values == 0) && (cand_idx >= 0)) + { + /* no tail low or high value to analyze + still may need to lock a non-locked but qualified candidate */ + fsc_idx[*n_fsc] = cand_idx; move16(); + *n_fsc = add(*n_fsc, 1); + } + + + /* cand_pairs vector may have a last orphan value */ + IF(n_tail_values > 0) + { + /* cand_pairs vector may have a last orphan tail value */ + /* + logic boils down to if (nTailValues > 0) && (cand_pairs(n_end) > tmp) + there is a last one trailing high to process + + a) the last high, may be a new high Peak if we have not yet + locked the current candidate + b) if we have locked the last candidate, the last high may also be + a highpeak if it is high enough from the(newly set previous) valley floor. + + tmp=a||b + */ + + tmp = s_max(cand_high, prev_low_plus_sens); + tmp = sub(cand_pairs[pairs_end], tmp); + IF(tmp > 0) + { + fsc_idx[*n_fsc] = pairs_end; move16(); + *n_fsc = add(*n_fsc, 1); + } + ELSE + { + IF(cand_idx >= 0) + { /* we have a previously established high candidate */ + fsc_idx[*n_fsc] = cand_idx; move16(); + *n_fsc = add(*n_fsc, 1); + } + + } + } + /* move high locations info from fsc_idx , to output */ + FOR(j = 0; j < *n_fsc; j++) + { + ASSERT(fsc_idx[j] >= 0 && fsc_idx[j] < (inp_len+2)); + int_plocs[j] = sc_idx[fsc_idx[j]]; move16(); move16(); /* the indirect moves are calculated */ + } + + } /* end of pairs + [tail] section filtering */ + ELSE + { + /* constant/single rise or constant decay or very low overall values, cases */ + *n_fsc = 0; move16(); + + logic16(); + tmp = sub(inp_high, sens); + IF((k != 0) && (sub(tmp, low_val_cand_pairs) > 0)) + { + /* low,high */ + /* high,low */ + tmp = plc_phEcu_find_ind_fx(inp, inp_len, inp_high); move16(); + int_plocs[0] = tmp; move16(); /* simply locate the high peak*/ + *n_fsc = 1; move16(); + if (tmp < 0) + { /*safety in case max value index was not found */ + *n_fsc = 0; move16(); + } + } + } +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif +} + diff --git a/lib_lc3plus/plc_phecu_setf0hz_fx.c b/lib_lc3plus/plc_phecu_setf0hz_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..3dd5b1a0844025d9a1c4b6d80f000bf670da16e2 --- /dev/null +++ b/lib_lc3plus/plc_phecu_setf0hz_fx.c @@ -0,0 +1,60 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +/* +st_PhECU_f0minLtp=55; % 55.4 Hz +st_PhECU_f0maxLtp=376; % 376.4706 Hz + +*/ + + +Word16 +plc_phEcuSetF0Hz_fx(/* output Q7 bin frequency [0.. 255.xxxx] "1 sign, 8 bits mantissa, 7 binomial" [0-255.9999] */ + Word16 fs_idx, Word16 old_pitch_int, Word16 old_pitch_fr) +{ + Word16 pitch_lagQ2, result, expo; + Word32 L_result, L_tmp; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("plc_phEcuSetF0Hz_fx", sizeof(struct { + Word16 pitch_lagQ2, result, expo; + Word32 L_result, L_tmp; + Word16 num_FsByResQ0[5]; + })); +#endif + +#ifdef WMOPS + push_wmops("PhECU::plc_phEcuSetF0Hz_fx"); +#endif + + result = 0; move16(); + IF (old_pitch_int != 0) + { + pitch_lagQ2 = add( + old_pitch_fr, + shl(old_pitch_int, 2)); /* lag at the current fs_idx , max lag_value is is 228(+.75)*48/12.8 = 858 in Q0 */ + + L_result = plc_phEcu_ratio_fx(L_deposit_h(num_FsByResQ0[fs_idx]), L_deposit_h(pitch_lagQ2), &expo); + L_tmp = L_shl_sat(L_result, sub(11, expo)); /* move to Q7, in high word to allow round*/ + result = round_fx(L_tmp); + } +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + + return result; /*Q7*/ +} + + diff --git a/lib_lc3plus/plc_phecu_tools_fx.c b/lib_lc3plus/plc_phecu_tools_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..c78d406a46e801b4594fd82ccc2dbc358ea2f356 --- /dev/null +++ b/lib_lc3plus/plc_phecu_tools_fx.c @@ -0,0 +1,247 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +/* initilize a short vector */ +void plc_phEcu_initWord16(Word16 * vec, /*i/o : short vector pointer */ + const Word16 value, /*i : short initialization value */ + const Word16 len) /*i : number of elements */ +{ + Counter n; + + FOR (n = 0; n < len; n++) + { + vec[n] = value; move16(); + } +} + +/* scale inplace with allowed saturation in upscaling , function not available in basop_util */ +void Scale_sig_sat(Word16 x[], /* i/o: signal to scale Qx */ + const Word16 lg, /* i : size of x[] Q0 */ + const Word16 exp0 /* i : exponent: x = round(x << exp) Qx ?exp */ +) +{ + Counter i; + Word16 tmp; + IF (exp0 > 0) + { + FOR (i = 0; i < lg; i++) + { + x[i] = shl_sat(x[i], exp0); move16(); /* no saturation warnings triggered here */ + } + return; + } + IF (exp0 < 0) + { + tmp = shl(-32768, s_max(exp0, -15)); /* we use negative to correctly represent 1.0 */ + FOR (i = 0; i < lg; i++) + { + x[i] = msu_r(0, x[i], tmp); move16(); /* msu instead of mac because factor is negative */ + } + return; + } +} + +void plc_phEcu_minval_fx(const Word16 *inp, /* i : vector */ + const Word16 len, /* i : length */ + Word16 *minvalPtr /* o : min value Ptr */ +) +{ + Word16 minTmp; + Counter pos; + + minTmp = inp[0]; move16(); + assert(len>1); + FOR (pos = 1; pos < len; pos++) + { + minTmp = s_min(inp[pos], minTmp); + } + + *minvalPtr = minTmp; move16(); +} + +void plc_phEcu_maxval_fx(const Word16 *inp, /* i : vector */ + const Word16 len, /* i : length */ + Word16 *maxvalPtr /* o : *maxvalPtr */ +) +{ + Word16 maxTmp; + Counter pos; + + maxTmp = inp[0]; move16(); + + assert(len>1); + FOR (pos = 1; pos < len; pos++) + { + maxTmp = s_max(inp[pos], maxTmp); + } + *maxvalPtr = maxTmp; move16(); +} + +/* in case a value (e.g max or min) is already known , find the first corresponding array index */ +Word16 plc_phEcu_find_ind_fx( /* o : output maximum indx 0.. len-1 */ + const Word16 *inp, /* i : vector */ + const Word16 len, /* i : length */ + const Word16 val /* i : value to find */ +) +{ + Word16 val_ind; + Counter pos; + + val_ind = -1; move16(); + + FOR(pos = 0; pos < len; pos++) + { + if (sub(inp[pos], val) == 0) + { + val_ind = pos; move16(); + } + } + return val_ind; +} + +/*----------------------------------------------------------------------------- + * ratio_fx() + * + * Divide the numerator by the denominator. + *----------------------------------------------------------------------------*/ +Word16 plc_phEcu_ratio_fx( /* o : quotient in Q14 */ + const Word32 numer, /* i : numerator */ + const Word32 denom, /* i : denominator */ + Word16 *expo) /* o : req shift of quotient */ +{ + Word16 expNumer, expDenom; + Word16 manNumer, manDenom; + Word16 quotient; +#ifdef DYNMEM_COUNT + Dyn_Mem_In("plc_phEcu_ratio_fx", sizeof(struct { + Word16 expNumer, expDenom; + Word16 manNumer, manDenom; + Word16 quotient; + })); +#endif + + expDenom = norm_l(denom); /* exponent */ + manDenom = extract_h(L_shl(denom, expDenom)); /* mantissa */ + expNumer = norm_l(numer); /* exponent */ + manNumer = extract_h(L_shl(numer, expNumer)); /* mantissa */ + manNumer = shr_pos(manNumer, 1); /* Ensure the numerator < the denominator */ + quotient = div_s(manNumer, manDenom); /* in Q14 */ + + *expo = sub(expNumer, expDenom); +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif + return quotient; /* Q14 */ +} + +Word32 winEnCalc( /* o: output summed energy Ltot */ + const Word16 *x, /* i: Input signal */ + const Word16 headroom_shift, /* i: headroom_shift */ + const Word16 *win, /* i: left side Window coefficients */ + const Word16 rectLength, /* i: Offset in between the 1st and 2nd symmetric halves of the Hamming window */ + const Word16 halfLength, /* i: Half of the total length of a complete Hamming window. */ + Word16 *exp /* i/o : i exp of Word16 variable x , o:Lexp of output Word32 sum */ + ) +{ + Counter i; + Word32 L_tot; + const Word16 *pX, *pW; + Word16 tmp, tmp_RL; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("PhEcu::GF::winEnCalc", sizeof(struct { + Counter i; + Word32 L_tot; + const Word16 *pX, *pW; + Word16 tmp, tmp_RL; + })); +#endif + + +#ifdef WMOPS + push_wmops("PhECU::winEnCalc"); +#endif + + L_tot = INT32_MAX; move32(); /*acc is on negative side , but as all accumulation is positive, we make use of one extra bit */ + pX = x; + pW = win; + + + assert( headroom_shift>=0 ); + FOR (i = 0; i < halfLength; i++) /* 1st symmetric half of the Hamming window */ + { + tmp = mult(*pX++, *pW++); + tmp = shr_pos(tmp, headroom_shift); /* shr may/create bias on the negative side , costly options are shr_r or use msu_r */ + L_tot = L_msu0(L_tot, tmp, tmp); /* acc on negative energy side */ + } + + /* Periodic filter - one more rect sample before end tapering */ + tmp_RL = add(rectLength, 1); + ASSERT(rectLength != 0); + + FOR (i = 0; i < tmp_RL; i++) /* If rectLength is zero, it's a pure Hamming window; otherwise Hamming-Rectangular. */ + { + tmp = shr_pos( *pX++, headroom_shift); + L_tot = L_msu0(L_tot, tmp, tmp); /* acc on negative side */ + } + + tmp_RL = sub(halfLength, 1); + ASSERT(rectLength != 0); + + FOR (i = 0; i < tmp_RL; i++) /* 2nd symmetric half of the Hamming window. */ + { + tmp = mult(*pX++, *(--pW)); + tmp = shr_pos(tmp, headroom_shift); + L_tot = L_msu0(L_tot, tmp, tmp); + } + + /* Lexp = 2*(incoming_exp + dnshift) + 1 , 2x for square + 1(for msu0 DSP dn shift)*/ + *exp = add(shl_pos(add(*exp, headroom_shift),1),1); + + /* handle wrap on zero point */ + IF( L_tot >= 0 ) + { /* L_tot positive --> less than 32 bits needed, */ + L_tot = L_add(L_tot,(INT32_MIN+1)); + if( L_tot == 0 ) + { + *exp = LTOT_MIN_EXP; /* WC is actually (-(15+4)*2 + 1 +1 -31) */ ; move16(); + } + L_tot = L_min(L_tot, -1); /* make sure there is energy for future ratio calculations */ + } + ELSE + { /* L_tot negative --> more than 31 bits needed for sum , scale 32 bit sum within 31 bits and adjust exp */ + + L_tot = L_shr_pos(L_add(L_tot,1),1); /* rnd by adding 1, then use 50% contribution from negative side */ + L_tot = L_add(L_tot, INT32_MIN>>1); /* add 50% contribution from positive side */ + + *exp = add(*exp, 1); move16(); + } + + L_tot = L_max( -(INT32_MAX), L_tot); /* guard against max accumulation on the negative side , should only occur for rectangle windows */ + L_tot = L_negate(L_tot); /* no saturation here */ + + /* activate when xfp_exp is not used any longer */ + /* pre-maximize the mantissa for the following steps in burst_ana_dx */ + tmp = norm_l(L_tot); + L_tot = L_shl(L_tot,tmp); + *exp = sub(*exp, tmp); move16(); + +#ifdef WMOPS + pop_wmops(); +#endif +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif + + return L_tot; +} + diff --git a/lib_lc3plus/plc_tdac_fx.c b/lib_lc3plus/plc_tdac_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..c27cc9e7a29083b56fc54b940870ab8f36b9bc35 --- /dev/null +++ b/lib_lc3plus/plc_tdac_fx.c @@ -0,0 +1,217 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +/* + * processTdac_fx + * + * Parameters: + * ola_mem o: pointer of output signal Q0 + * ola_mem_exp o: exponent of output signal Q0 + * synth i: pointer of input signal Q0 + * synth_exp i: exponent of input signal Q0 + * win i: pointer of analysis and synthesis window Q0 + * la_zeroes i: number of zeroes Q0 + * frame_len i: frame length Q0 + * + * Function: + * + * + * Returns: + * void + */ +void processTdac_fx(Word16 *ola_mem, Word16 *ola_mem_exp, const Word16 *synth_inp, const Word16 synth_exp_inp, +#ifdef ENABLE_HR_MODE + const Word32 *win, +#else + const Word16 *win, +#endif + const Word16 la_zeroes, const Word16 frame_len, Word8 *scratchBuffer) +{ + Counter i; + Word16 s; + Word16 L; + Word16 N; + Word16 NZ; + Word16 LD2; + Word32 sz; + Word16 INV_NORM; + Word16 INV_NORM_E; + Word16 smax; + Word16 * synth; + Word16 synth_len; + Word16 synth_exp; +#ifdef ENABLE_HR_MODE + const Word32 *win1, *win2, *win3, *win4; +#else + const Word16 *win1, *win2, *win3, *win4; +#endif + const Word16 *synth1; + const Word16 *synth2; + Word16 * ola_mem1; + Word16 * ola_mem2; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processTdac_fx", sizeof(struct { + Counter i; + Word16 s; + Word16 L; + Word16 N; + Word16 NZ; + Word16 LD2; + Word32 sz; + Word16 INV_NORM; + Word16 INV_NORM_E; + Word16 smax; + Word16 * synth; + Word16 synth_len; + Word16 synth_exp; + const Word16 *win1; + const Word16 *win2; + const Word16 *win3; + const Word16 *win4; + const Word16 *synth1; + const Word16 *synth2; + Word16 * ola_mem1; + Word16 * ola_mem2; + })); +#endif + + synth = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * MAX_LEN */ + + ASSERT(la_zeroes <= frame_len / 2); + + L = frame_len; move16(); + LD2 = shr_pos(L, 1); + NZ = sub(LD2, la_zeroes); + + /* inverse normalization of sqrt(2/N) inside window */ +#ifdef ENABLE_HR_MODE + IF ((sub(frame_len, 960) == 0) || (sub(frame_len, 720) == 0)) + { + INV_NORM = negate(shl_pos(frame_len, (15 - 10))); + INV_NORM_E = 3; move16(); + } + ELSE +#endif + { + INV_NORM = negate(shl_pos(frame_len, (15 - 9))); + INV_NORM_E = 2; move16(); + if (norm_s(INV_NORM) > 0) + { + INV_NORM = shl_pos(INV_NORM, 1); + INV_NORM_E = 1; move16(); + } + if (sub(frame_len, 120) <= 0) + { + INV_NORM_E = add(INV_NORM_E, 2); + } + if (sub(frame_len, 20) <= 0) + { + INV_NORM_E = add(INV_NORM_E, 2); + } + } + + /* Scale input */ + synth_len = sub(shl_pos(L, 1), la_zeroes); + s = getScaleFactor16(synth_inp, synth_len); + + FOR (i = 0; i < synth_len; i++) + { + synth[i] = shl(synth_inp[i], s); move16(); + } + synth_exp = sub(synth_exp_inp, s); + + /* calculate x_ov[L+la_zeroes] ... x_ov[2*L-1] */ + + win1 = &win[L + LD2 - 1]; + win2 = &win[L + LD2]; + + win3 = &win[LD2 - 1]; + win4 = &win[LD2]; + + synth1 = &synth[L + LD2 - 1 - la_zeroes]; + synth2 = &synth[L + LD2 - la_zeroes]; + + ola_mem1 = &ola_mem[LD2 - la_zeroes]; + ola_mem2 = &ola_mem[LD2 - la_zeroes - 1]; + + smax = 15; move16(); + + FOR (i = 0; i < NZ; i++) + { + /* analysis windowing + 2N -> N */ + sz = L_mac_sat(L_mult(*synth1, extractW16(*win1)), *synth2, extractW16(*win2)); + + /* N -> 2N + synthesis windowing */ + *ola_mem1 = round_fx(Mpy_32_16_lc3plus(sz, extractW16(*win3))); move16(); + *ola_mem2 = round_fx(Mpy_32_16_lc3plus(sz, extractW16(*win4))); move16(); + + /* determine headroom */ + s = norm_s(*ola_mem1); + if (*ola_mem1 != 0) + smax = s_min(smax, s); + s = norm_s(*ola_mem2); + if (*ola_mem2 != 0) + smax = s_min(smax, s); + + /* pointer update */ + win1--; + win2++; + win3--; + win4++; + synth1--; + synth2++; + ola_mem1++; + ola_mem2--; + } + + N = LD2; move16(); + + FOR (; i < N; i++) + { + /* analysis windowing + 2N -> N */ + sz = L_mult(*synth1, extractW16(*win1)); + + /* N -> 2N + synthesis windowing */ + *ola_mem1 = round_fx(Mpy_32_16_lc3plus(sz, extractW16(*win3))); move16(); + + /* determin headroom */ + s = norm_s(*ola_mem1); + if (*ola_mem1 != 0) + smax = s_min(smax, s); + + /* pointer update */ + win1--; + win2++; + win3--; + synth1--; + synth2++; + ola_mem1++; + } + + smax = s_min(smax, 15); + + N = add(N, NZ); + + FOR (i = 0; i < N; i++) + { + ola_mem[i] = round_fx(L_mult(shl(ola_mem[i], smax), INV_NORM)); move16(); + } + + *ola_mem_exp = sub(add(synth_exp, INV_NORM_E), smax); move16(); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + + diff --git a/lib_lc3plus/plc_tdc_inverse_odft_fx.c b/lib_lc3plus/plc_tdc_inverse_odft_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..1e8e3191c2ef81e074411e5913ca181da7c2277a --- /dev/null +++ b/lib_lc3plus/plc_tdc_inverse_odft_fx.c @@ -0,0 +1,130 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +void processInverseODFT_fx(Word32 *r_fx, Word16 *r_fx_exp, Word32 *d2_fx, Word16 d2_fx_exp, Word16 n_bands, + Word16 lpc_order, Word8 *scratchBuffer) +{ + Counter i; + Word16 s; + Word16 n_bands2; + Word32 * x; + const Word32 *inv_odft_twiddle_re; + const Word32 *inv_odft_twiddle_im; + Word8 * buffer_BASOP_rfftN; + + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processInverseODFT_fx", sizeof(struct { + Counter i; + Word16 s; + Word16 n_bands2; + Word32 * x; + const Word32 *inv_odft_twiddle_re; + const Word32 *inv_odft_twiddle_im; + Word8 * buffer_BASOP_rfftN; + Word32 * params[2]; + })); +#endif + + x = scratchAlign(scratchBuffer, 0); /* Size = 320 bytes */ + buffer_BASOP_rfftN = scratchAlign(x, sizeof(*x) * (MAX_BANDS_NUMBER_PLC + MAX_BANDS_NUMBER_PLC/2)); /* Size = 480 bytes */ + + ASSERT(lpc_order <= M); + ASSERT(n_bands == 80 || n_bands == 60 || n_bands == 40 || n_bands == 20); + + n_bands2 = shr_pos_pos(n_bands, 1); + + test(); + IF (sub(n_bands, 20) == 0 || sub(n_bands, 60) == 0) + { + /* sort input samples */ + FOR (i = 0; i < n_bands2; i++) + { + x[2*i] = d2_fx[2 * i]; move32(); + x[2*i+1] = 0; move32(); + x[n_bands + 2*i] = d2_fx[n_bands - 1 - 2 * i]; move32(); + x[n_bands + 2*i + 1] = 0; move32(); + } + BASOP_cfft_lc3plus(&x[0], &x[1], n_bands, 2, &d2_fx_exp, (Word32*)buffer_BASOP_rfftN); + } + ELSE + { + /* sort input samples */ + FOR (i = 0; i < n_bands2; i++) + { + x[i] = d2_fx[2 * i]; move32(); + x[n_bands2 + i] = d2_fx[n_bands - 1 - 2 * i]; move32(); + } + + BASOP_rfftN(x, n_bands, &d2_fx_exp, buffer_BASOP_rfftN); + } + + inv_odft_twiddle_re = inv_odft_twiddle_80_re; + inv_odft_twiddle_im = inv_odft_twiddle_80_im; + IF (sub(n_bands, 20) == 0) + { + inv_odft_twiddle_re = inv_odft_twiddle_20_re; + inv_odft_twiddle_im = inv_odft_twiddle_20_im; + } + ELSE IF (sub(n_bands, 40) == 0) + { + inv_odft_twiddle_re = inv_odft_twiddle_40_re; + inv_odft_twiddle_im = inv_odft_twiddle_40_im; + } + ELSE IF (sub(n_bands, 60) == 0) + { + inv_odft_twiddle_re = inv_odft_twiddle_60_re; + inv_odft_twiddle_im = inv_odft_twiddle_60_im; + } + + s = norm_l(x[0]); + + /* imag[0] is always zero */ + r_fx[0] = L_shl_pos(x[0], s); move32(); + + /* r_fx[0] = r_fx[0] * 1.0001 */ + r_fx[0] = Mpy_32_32_lc3plus(r_fx[0], 0x4001A36E); move32(); + IF (norm_l(r_fx[0]) > 0) + { + r_fx[0] = L_shl_pos(r_fx[0], 1); + } + ELSE + { + s = sub(s, 1); + } + + /* post-twiddle */ + FOR (i = 1; i <= lpc_order; i++) + { + r_fx[i] = L_add(Mpy_32_32_lc3plus(L_shl(x[2 * i], s), inv_odft_twiddle_re[i - 1]), + Mpy_32_32_lc3plus(L_shl(x[2 * i + 1], s), inv_odft_twiddle_im[i - 1])); move32(); + } + + *r_fx_exp = sub(d2_fx_exp, s); move16(); + + /* r_fx[0] must not be zero */ + IF (r_fx[0] == 0) + { + r_fx[0] = (Word32)0x7FFFFFFF; move32(); + FOR (i = 1; i <= lpc_order; i++) + { + r_fx[i] = 0; move32(); + } + *r_fx_exp = 0; move16(); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + + diff --git a/lib_lc3plus/plc_tdc_lagwin_fx.c b/lib_lc3plus/plc_tdc_lagwin_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..e5bd94d66ffb985d19cb1ec48cd4fd3abbd629d0 --- /dev/null +++ b/lib_lc3plus/plc_tdc_lagwin_fx.c @@ -0,0 +1,32 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +void processLagwin_fx(Word32 r[], const Word32 w[], Word16 m) +{ + /* Start Processing */ + Counter i; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processLagwin_fx", sizeof(struct { Counter i; })); +#endif + + FOR (i = 0; i < m; i++) + { + r[i + 1] = Mpy_32_32_lc3plus(r[i + 1], w[i]); move32(); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + + diff --git a/lib_lc3plus/plc_tdc_main_fx.c b/lib_lc3plus/plc_tdc_main_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..c6558dd1b63d0bfad744af76ccdf48ec1c4ddd4b --- /dev/null +++ b/lib_lc3plus/plc_tdc_main_fx.c @@ -0,0 +1,1257 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +/*****************************************************************************/ + +static Word16 TDC_Dot_product(const Word16 x[], const Word16 y[], const Word16 lg); +static Word32 TDC_L_Dot_product(const Word16 x[], const Word16 y[], const Word16 lg); +static void TDC_highPassFiltering_fx(const Word16 L_buffer, Word16 exc2[], const Word16 l_fir_fer, + const Word16 *hp_filt); +static Word32 TDC_calcGainp(Word16 x[], Word16 y[], Word16 lg); +static void TDC_calcGainc(Word16 *exc, Word16 Q_exc, Word16 old_fpitch, Word16 lg, Word16 frame_dms, Word16 lp_gainp, Word32 *lp_gainc); +static void TDC_random_fx(Word16 *seed, Word16 lg, Word16 *y); +static Word16 TDC_preemph(Word16 *x, const Word16 fac, const Word16 lg); +static void TDC_LPC_residu_fx(const Word16 *a, Word16 *x, Word16 *y, Word16 lg, Word16 m); +static void TDC_deemph_fx(const Word16 *x, Word16 *y, const Word16 fac, const Word16 lg, const Word16 mem); +static void TDC_LPC_synthesis_fx(const Word16 sh, const Word16 a[], const Word16 x[], Word16 y[], const Word16 lg, + const Word16 m); +static void TDC_normalize_energy_fx(Word16 *gain, Word16 *gain_exp, const Word16 *x, const Word16 lg); + +#ifdef CR8_G_ADD_75MS +const Word16 beforeNextIncArray_fx[4][4] = {{0,0,0,1}, + {0,1,0,1}, + {0,1,1,1}, + {1,1,1,1}}; +const Word16 nextIncArray_fx[4][4] = {{1,0,0,0}, + {1,0,1,0}, + {1,0,1,1}, + {1,1,1,1}}; +#endif +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR +static Word16 type_2_alpha_long(Word16 nbLostFramesInRow, Word16 frame_dms); +static Word16 powWord16rest(Word16 base, Word16 exp, Word16 rest); +#endif + +/*****************************************************************************/ + + +/* + * processTimeDomainConcealment_Apply_fx + * + * Parameters: + * pitch_int i : integer pitch lag Q0 + * preemphFac_fx i : preemphase factor Q15 + * A_fx i : lp filter coefficients Qx + * pcmbufHist_fx i : pointer to input signal Qq_fx_old_exp + * frame_length i : frame length Q0 + * fs_idx i : sample rate index Q0 + * nbLostFramesInRow i : number of consecutive lost frames Q0 + * overlap i : overlap length Q0 + * stabFac_fx i : stability factor Q15 + * fract i/o: fraction of lag Q0 + * seed_fx i/o: pointer to seed Q0 + * gain_p_fx i/o: pointer to gainp Q15 + * gain_c_fx i/o: pointer to gainc 15Q16 + * synth_fx o : pointer to synthesized signal Q_syn + * Q_syn o : exponent for synthesized signal Q0 + * alpha o : damping factor Q15 + * scratchBuffer i : scratch buffer + * + * Function: + * Perform the time domain concealment. + * + * Returns: + * void + */ +void processTimeDomainConcealment_Apply_fx(const Word16 pitch_int, const Word16 preemphFac_fx, const Word16 *A_fx, + const Word16 lpc_order, const Word16 *pcmbufHist_fx, const Word16 frame_length, + const Word16 frame_dms, const Word16 fs_idx, const Word16 nbLostFramesInRow, + const Word16 overlap, const Word16 stabFac_fx, Word16 *fract, + Word16 *seed_fx, + Word32 *gain_c_fx, Word16 *synth_fx, Word16 *Q_syn, Word16 *alpha, Word16 max_len_pcm_plc, + Word16 harmonicBuf_fx[MAX_PITCH], Word16 synthHist_fx[M], Word16 *const harmonicBuf_Q, + Word8 *scratchBuffer +#ifdef CR9_I_INC_TDC_FADEOUT_LEN + ,UWord8 plc_fadeout_type +#endif +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR + ,Word16 * alpha_type_2_table +#endif +) +{ + Counter i; + Word16 s, s1, c1, c2, len, cnt, g_fx, ilen, Tc, nextInc, beforeNextInc; + Word32 tmp32, tmp32_2, gainc_tmp; + Word16 gain_p_fx; + Word32 gain_c_32_fx; + Word16 gain_c_16_fx, gain_c_16_fx_exp, gain_inov_fx, gain_inov_fx_exp, ilen_exp; + Word16 hpBlendFac; + Word16 len_pi_lf_2, frame_length_2, step_fx, step_n_fx, gain_h_fx, nbLostCmpt_loc, mem_deemph; + Word16 * synth_mem_fx, *synth_tmp_fx, *exc2_fx, *exc_fx, *pt_exc, *pt1_exc, *x_pre_fx; + Word16 * harmonicBufPtr; + Word16 Q_exc = 0, exp_scale; + const Word16 *hp_filt_fx, *TDC_high_harm; + Word16 alphaPrev_fx; + Word16 throttle; +#ifdef CR8_G_ADD_75MS + Word16 frame_dms_idx, nbLostFramesInRow_mod; +#endif + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processTimeDomainConcealment_Apply_fx", sizeof(struct { + Counter i; + Word16 s, s1, c1, c2, len, cnt, g_fx, ilen, Tc, nextInc, beforeNextInc; + Word32 tmp32, tmp32_2, gainc_tmp; + Word16 gain_p_fx; + Word32 gain_c_32_fx; + Word16 gain_c_16_fx, gain_c_16_fx_exp, gain_inov_fx, gain_inov_fx_exp, ilen_exp; + Word16 hpBlendFac; + Word16 len_pi_lf_2, frame_length_2, step_fx, step_n_fx, gain_h_fx, nbLostCmpt_loc, mem_deemph; + Word16 * synth_mem_fx, *synth_tmp_fx, *exc2_fx, *exc_fx, *pt_exc, *pt1_exc, *x_pre_fx; + Word16 * harmonicBufPtr; + Word16 Q_exc, exp_scale; + const Word16 *hp_filt_fx, *TDC_high_harm; + Word16 alphaPrev_fx; + Word16 throttle; + Word16 frame_dms_idx, nbLostFramesInRow_mod; + })); +#endif + +#ifdef CR9_I_INC_TDC_FADEOUT_LEN + Word32 plc_fadeout_len = 0; +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR + if (plc_fadeout_type >= 1){ +#else + if (plc_fadeout_type == 1){ +#endif + plc_fadeout_len = PLC_FADEOUT_TYPE_1_IN_MS; + } + else{ + plc_fadeout_len = PLC_FADEOUT_IN_MS; + } +#endif + + /* len of output signal */ + len = add(frame_length, overlap); + +#ifdef CR8_G_ADD_75MS + nbLostFramesInRow_mod = sub(nbLostFramesInRow, 1) & 0x0003; + + frame_dms_idx = mult(frame_dms, 0x051F); + nbLostCmpt_loc = add(shr(L_mult0(frame_dms_idx, sub(nbLostFramesInRow, 1)), 2), 1); + frame_dms_idx = sub(frame_dms_idx, 1); + beforeNextInc = beforeNextIncArray_fx[frame_dms_idx][nbLostFramesInRow_mod]; move16(); + nextInc = nextIncArray_fx [frame_dms_idx][nbLostFramesInRow_mod]; move16(); +#else + nbLostCmpt_loc = nbLostFramesInRow; move16(); + nextInc = 1; move16(); + beforeNextInc = 1; move16(); + SWITCH (frame_dms) + { + case 25: + nbLostCmpt_loc = shr(add(nbLostFramesInRow, 3), 2); + nextInc = (nbLostFramesInRow & 0x0003) == 1; move16(); + beforeNextInc = (nbLostFramesInRow & 0x0003) == 0; move16(); + BREAK; + case 50: + nbLostCmpt_loc = shr(add(nbLostFramesInRow, 1), 1); + nextInc = (nbLostFramesInRow & 0x0001) == 1; move16(); + beforeNextInc = (nbLostFramesInRow & 0x0001) == 0; move16(); + BREAK; + } +#endif + +#ifdef CR9_I_INC_TDC_FADEOUT_LEN + IF (sub(nbLostCmpt_loc, plc_fadeout_len / 10) > 0) +#else + IF (sub(nbLostCmpt_loc, PLC_FADEOUT_IN_MS / 10) > 0) +#endif + { + gain_p_fx = 0; move16(); + *gain_c_fx = 0; move32(); + *Q_syn = 0; move16(); + *alpha = 0; move16(); + basop_memset(synth_fx, 0, len * sizeof(Word16)); +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif + return; + } + + frame_length_2 = shr_pos(frame_length, 1); + + Tc = pitch_int; move16(); + if (sub(*fract, 0) > 0) + { + Tc = add(Tc, 1); + } + + len_pi_lf_2 = add(Tc, frame_length_2); + + /*---------------------------------------------------------------- + * Buffer Initialization + * + * exc_fx synth_mem_fx + * |--exc_buf_past--|--exc_buf_curr--|--syn_mem--|--x_pre--| + * |--exc2--| + * |--syn--| + * + *---------------------------------------------------------------*/ + + /* pointer inits */ + exc_fx = (Word16 *)scratchAlign(scratchBuffer, + sizeof(Word16) * len_pi_lf_2); /* MAX_PITCH+MAX_LEN/2 + MAX_LEN+MDCT_MEM_LEN_MAX */ + synth_mem_fx = (Word16 *)scratchAlign(exc_fx, sizeof(*exc_fx) * len); /* M */ + x_pre_fx = (Word16 *)scratchAlign(synth_mem_fx, sizeof(*synth_mem_fx) * lpc_order); /* MAX_PITCH+MAX_LEN/2+M+1 */ + exc2_fx = (Word16 *)scratchAlign(synth_mem_fx, sizeof(*synth_mem_fx) * lpc_order); /* MAX_LEN+MDCT_MEM_LEN_MAX+TDC_L_FIR_HP-1 */ + synth_tmp_fx = (Word16 *)scratchAlign(synth_mem_fx, sizeof(*synth_mem_fx) * lpc_order); /* MAX_LEN+MDCT_MEM_LEN_MAX */ + /* Buffers 'overlap' since they are not used at the same time */ + + /*---------------------------------------------------------------* + * LPC Residual * + *---------------------------------------------------------------*/ + IF (sub(nbLostFramesInRow, 1) == 0) + { + + /* copy buffer to pre-emphasis buffer */ + cnt = add(len_pi_lf_2, lpc_order + 1); + basop_memmove(&x_pre_fx[0], &pcmbufHist_fx[max_len_pcm_plc - cnt], cnt * sizeof(Word16)); + + /* apply pre-emphasis to the signal; x_pre = x_pre_flt * 2^(q_fx_old_exp-15-Q_exc+1) */ + Q_exc = TDC_preemph(&(x_pre_fx[1]), preemphFac_fx, sub(cnt, 1)); + + /* copy memory for LPC synth */ + basop_memmove(&synth_mem_fx[0], &x_pre_fx[len_pi_lf_2 + 1], lpc_order * sizeof(Word16)); + + /* LPC Residual; exc = exc_fx * 2^(q_fx_old_exp-15-Q_exc) */ + TDC_LPC_residu_fx(A_fx, &(x_pre_fx[lpc_order + 1]), &(exc_fx[-len_pi_lf_2]), len_pi_lf_2, lpc_order); + } + + /*---------------------------------------------------------------* + * Calculate gains * + *---------------------------------------------------------------*/ + + IF (sub(nbLostFramesInRow, 1) == 0) + { + IF (sub(pitch_int, Tc) == 0) + { + gain_p_fx = + round_fx_sat(L_shl_sat(TDC_calcGainp(&(x_pre_fx[lpc_order + Tc + 1]), &(x_pre_fx[lpc_order + 1]), frame_length_2), 15)); + } + ELSE + { + tmp32 = TDC_calcGainp(&(x_pre_fx[lpc_order + Tc + 1]), &(x_pre_fx[lpc_order + 2]), frame_length_2); + tmp32_2 = TDC_calcGainp(&(x_pre_fx[lpc_order + Tc + 1]), &(x_pre_fx[lpc_order + 1]), frame_length_2); + + IF (L_sub(tmp32, tmp32_2) > 0) + { + Tc = pitch_int; move16(); + gain_p_fx = round_fx_sat(L_shl_sat(tmp32, 15)); + *fract = 0; move16(); + } + ELSE + { + gain_p_fx = round_fx_sat(L_shl_sat(tmp32_2, 15)); + } + } + + if (gain_p_fx < 0) + { + gain_p_fx = 0; move16(); + } + + IF (sub(pitch_int, Tc) == 0) + { + /* gain_c = gain_c_32_fx * 2^(q_fx_old_exp-31) */ + TDC_calcGainc(exc_fx, Q_exc, Tc, frame_length_2, frame_dms, gain_p_fx, &gain_c_32_fx); + } + ELSE + { + TDC_calcGainc(exc_fx, Q_exc, pitch_int, frame_length_2, frame_dms, gain_p_fx, &tmp32); + TDC_calcGainc(exc_fx, Q_exc, Tc , frame_length_2, frame_dms, gain_p_fx, &gain_c_32_fx); + + gain_c_32_fx = L_min(gain_c_32_fx, tmp32); move32(); + } + } + ELSE + { + gain_c_32_fx = *gain_c_fx; move32(); + gain_p_fx = *alpha; + } + + /*---------------------------------------------------------------* + * Damping factor * + *---------------------------------------------------------------*/ + + alphaPrev_fx = 0x7FFF; move16(); + IF (sub(nbLostFramesInRow,1) > 0) + { + alphaPrev_fx = *alpha; move16(); + } +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + IF (sub(plc_fadeout_type,2) == 0 ){ +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR + *alpha = alpha_type_2_table[nbLostFramesInRow]; +#else + IF (sub(frame_dms,50) == 0){ + IF (sub(nbLostFramesInRow,30) >= 0){ + *alpha = 0; move16(); + } ELSE { + *alpha = FADE_OUT_TYPE_2_ALPHA_5MS[nbLostFramesInRow]; move16(); + } + } + IF (sub(frame_dms,25) == 0){ + IF (sub(nbLostFramesInRow,60) >= 0){ + *alpha = 0; move16(); + } ELSE { + *alpha = FADE_OUT_TYPE_2_ALPHA_2_5MS[nbLostFramesInRow]; move16(); + } + } +#endif + } + ELSE{ +#endif + IF (nextInc != 0) + { + IF (sub(nbLostCmpt_loc, 1) == 0) + { + /* Threshold 31470 is 0.98^2 in Q15 format */ + IF (sub(gain_p_fx, 31470) > 0) + { + *alpha = 0x7D71; /*0.98f*/ + move16(); + } + /* Threshold 28037 is 0.925^2 in Q15 format */ + ELSE IF (sub(gain_p_fx, 28037) < 0) + { + *alpha = 0x7666; /*0.925f*/ + move16(); + } + ELSE + { + exp_scale = 0; + *alpha = Sqrt16_lc3plus(gain_p_fx, &exp_scale); move16(); + *alpha = shl(*alpha, exp_scale); + } + } + ELSE + { + SWITCH (nbLostCmpt_loc) + { + case 2: + c1 = 0x50A4; /*0.630f*/ + move16(); + c2 = 0x2CCD; /*0.350f*/ + move16(); + BREAK; + default: + c1 = 0x5375; /*0.652f*/ + move16(); + c2 = 0x29FC; /*0.328f*/ + move16(); + BREAK; + } + + *alpha = mult_r(stabFac_fx, c2); + *alpha = add(*alpha, c1); + + *alpha = mult(gain_p_fx, *alpha); + + + IF (sub(nbLostCmpt_loc, 2) == 0) + { + if (sub(*alpha, 0x75A2 /*0.919f*/) < 0) + { + *alpha = 0x75A2; move16(); + } + } + ELSE IF (sub(nbLostCmpt_loc, 5) > 0) + { + gain_p_fx = *alpha; move16(); + } + } + } + + IF (sub(nbLostCmpt_loc,3) > 0) + { + SWITCH (frame_dms) + { + case 25: *alpha = mult(*alpha, PLC34_ATTEN_FAC_025_FX); BREAK; +#ifdef CR9_J_SLOW_TDC_FADEOUT + case 50: *alpha = mult(*alpha, PLC34_ATTEN_FAC_025_FX); BREAK; +#else + case 50: *alpha = mult(*alpha, PLC34_ATTEN_FAC_050_FX); BREAK; +#endif +#ifdef CR8_G_ADD_75MS + case 75: *alpha = mult(*alpha, PLC34_ATTEN_FAC_075_FX); BREAK; +#endif + case 100: *alpha = mult(*alpha, PLC34_ATTEN_FAC_100_FX); BREAK; + } + } + if (sub(nbLostCmpt_loc, 5) > 0) + { + gain_p_fx = *alpha; move16(); + } +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + } +#endif + + /*---------------------------------------------------------------* + * Construct the harmonic part * + * Last pitch cycle of the previous frame is repeatedly copied. * + *---------------------------------------------------------------*/ + + pt_exc = harmonicBuf_fx; move16(); + pt1_exc = exc_fx - Tc; move16(); + s = s_min(len, Tc); move16(); + test(); + IF (sub(nbLostFramesInRow, 1) == 0) + { + *harmonicBuf_Q = Q_exc; move16(); + IF (sub(stabFac_fx, 32767 /*1.f Q15*/) >= 0) + { + basop_memmove(pt_exc, pt1_exc, Tc * sizeof(Word16)); + } + ELSE + { + /* These values are necessary for the last five filtered samples */ + basop_memmove(exc_fx, &exc_fx[-Tc], (TDC_L_FIR_HP-1)/2 * sizeof(Word16)); + TDC_high_harm = TDC_high_32_harm; + if (sub(fs_idx, 1) <= 0) + { + TDC_high_harm = TDC_high_16_harm; + } + FOR (i = 0; i < Tc; i++) + { + pt_exc[i] = TDC_Dot_product(&pt1_exc[i-(TDC_L_FIR_HP-1)/2], TDC_high_harm, TDC_L_FIR_HP); + } + } + } + ELSE + { + Q_exc = *harmonicBuf_Q; move16(); + } + + + /*---------------------------------------------------------------* + * Construct the random part of excitation * + *---------------------------------------------------------------*/ + + TDC_random_fx(seed_fx, add(len, sub(TDC_L_FIR_HP, 1)), exc2_fx); + + /* high pass noise */ + hp_filt_fx = TDC_high_32; + if (sub(fs_idx, 1) <= 0) + { + hp_filt_fx = TDC_high_16; + } + + IF (sub(nbLostFramesInRow, 1) == 0) + { + TDC_highPassFiltering_fx(len, exc2_fx, TDC_L_FIR_HP, hp_filt_fx); + } + ELSE + { + throttle = div_s(nbLostCmpt_loc, add(nbLostCmpt_loc, PLC3_HPBLENDTHROTTLE)); + hpBlendFac = mult(sub(0x7FFF, *alpha), throttle); + c1 = sub(0x7FFF, hpBlendFac); + FOR (i = 0; i < len; i++) + { + /* Return value of dot product is Q1 */ + tmp32 = Mpy_32_16_lc3plus(TDC_L_Dot_product(&exc2_fx[i], hp_filt_fx, TDC_L_FIR_HP), c1 /*Q15*/); + exc2_fx[i] = round_fx(L_mac0(tmp32, hpBlendFac, exc2_fx[i+TDC_L_FIR_HP/2])); move16(); + } + } + + /* normalize energy */ + TDC_normalize_energy_fx(&gain_inov_fx, &gain_inov_fx_exp, exc2_fx, frame_length); + tmp32 = Mpy_32_16_lc3plus( + L_sub(590558016l /*1.1 Q29*/, Mpy_32_16_lc3plus(L_shr_pos(L_deposit_h(gain_p_fx), 2), 24576 /*0.75*/)) /*Q29*/, + gain_inov_fx /*Q15,gain_inov_e*/); /*Q29,gain_inov_e*/ + s = norm_l(tmp32); + tmp32 = L_shl_pos(tmp32, s); + tmp32 = L_min(tmp32, 0x7FFEFFFF); + gain_inov_fx_exp = add(sub(gain_inov_fx_exp, s), 31 - 29); /*->Q31*/ + gain_inov_fx = round_fx(tmp32); /*Q15,gain_inov_e*/ + + /* gains */ + gain_h_fx = alphaPrev_fx; move16(); + + /* update steps */ + if (frame_length == 720) + { + ilen = BASOP_Util_Divide1616_Scale_lc3plus((Word16)1, 960, &ilen_exp); + } else { + ilen = BASOP_Util_Divide1616_Scale_lc3plus((Word16)1, frame_length, &ilen_exp); + } + step_fx = round_fx(L_shl(L_mult(sub(gain_h_fx, *alpha), ilen), ilen_exp)); + + s = norm_l(gain_c_32_fx); + tmp32 = L_shl_pos(gain_c_32_fx, s); + + gain_c_16_fx = extract_h(tmp32); + gain_c_16_fx_exp = sub(15, s); +#ifdef CR9_M_FIX_DIV_ZERO + gainc_tmp = L_mult (gain_c_16_fx, div_s(*alpha, s_max(alphaPrev_fx, 1))); +#else + gainc_tmp = L_mult (gain_c_16_fx, div_s(*alpha, alphaPrev_fx)); +#endif + tmp32 = L_sub (tmp32, gainc_tmp); + step_n_fx = round_fx(L_shl(Mpy_32_16_lc3plus(tmp32, ilen), ilen_exp)); + + /*---------------------------------------------------------------* + * Construct the total excitation * + *---------------------------------------------------------------*/ + + harmonicBufPtr = harmonicBuf_fx + ((nbLostFramesInRow - 1) * frame_length) % Tc; + + s1 = add(Q_exc, add(gain_inov_fx_exp, gain_c_16_fx_exp)); + cnt = add(frame_length, TDC_L_FIR_HP / 2); + + g_fx = mult_r(gain_c_16_fx, gain_inov_fx); + + FOR (i = 0; i < len; i++) + { + /* harmonic */ + if (harmonicBufPtr - harmonicBuf_fx >= Tc) { + harmonicBufPtr = harmonicBuf_fx; + } + exc_fx[i] = *harmonicBufPtr++; + tmp32 = L_mult(exc_fx[i], gain_h_fx); + /* random */ + tmp32_2 = L_shl_sat(L_mult(exc2_fx[i], g_fx), s1); + /* total */ + exc_fx[i] = round_fx_sat(L_add_sat(tmp32, tmp32_2)); move16(); + /* update */ + gain_h_fx = s_max(sub(gain_h_fx, step_fx), 0); + gain_c_16_fx = s_max(sub(gain_c_16_fx, step_n_fx), 0); + g_fx = mult_r(gain_c_16_fx, gain_inov_fx); + } + + /* update gain */ + *gain_c_fx = L_shl(gainc_tmp, sub(gain_c_16_fx_exp, 15)); move32(); + + + /*----------------------------------------------------------* + * Compute the synthesis speech * + *----------------------------------------------------------*/ + + /* introduce some headroom to avoid Overflows, 2 bit seem to be sufficient */ + *Q_syn = sub(Q_exc, 2); + *Q_syn = s_max(*Q_syn, -3); + + exp_scale = sub(*Q_syn, Q_exc - 1); + + IF (sub(nbLostFramesInRow, 1) != 0) + { + synth_mem_fx = synthHist_fx; + } + Copy_Scale_sig(synth_mem_fx, &synth_tmp_fx[-lpc_order], lpc_order, exp_scale); + TDC_LPC_synthesis_fx(sub(Q_exc, *Q_syn), A_fx, exc_fx, synth_tmp_fx, len, lpc_order); + + FOR (i=0; i= 0); + synth_fx[i] = mult(synth_fx[i], gain_h_fx); + gain_h_fx = sub(gain_h_fx, step_fx); + } + basop_memset(&synth_fx[frame_length], 0, overlap * sizeof(Word16)); + } + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + + +/*****************************************************************************/ + +static Word32 syn_kern_2(Word32 L_tmp, const Word16 a[], const Word16 y[]) +{ + L_tmp = L_msu_sat(L_tmp, y[-1], a[1]); + L_tmp = L_msu_sat(L_tmp, y[-2], a[2]); + return L_tmp; +} + +static Word32 syn_kern_4(Word32 L_tmp, const Word16 a[], const Word16 y[]) +{ + L_tmp = syn_kern_2(L_tmp, a, y); + return syn_kern_2(L_tmp, a + 2, y - 2); +} + +static Word32 syn_kern_8(Word32 L_tmp, const Word16 a[], const Word16 y[]) +{ + L_tmp = syn_kern_4(L_tmp, a, y); + return syn_kern_4(L_tmp, a + 4, y - 4); +} + +static Word32 syn_kern_16(Word32 L_tmp, const Word16 a[], const Word16 y[]) +{ + L_tmp = syn_kern_8(L_tmp, a, y); + return syn_kern_8(L_tmp, a + 8, y - 8); +} + +/* + * TDC_Dot_product + * + * Parameters: + * x i: x vector Q0 + * y i: y vector Q0 + * lg i: vector length Q0 + * + * Function: + * dot product + * + * Returns: + * dot product Q0 + */ +static Word16 TDC_Dot_product(const Word16 x[], const Word16 y[], const Word16 lg) +{ + Dyn_Mem_Deluxe_In( + Counter i; + Word32 sum; + ); + + sum = L_mult(x[0], y[0]); + FOR (i = 1; i < lg-1; i++) + { + sum = L_mac_sat(sum, x[i], y[i]); + } + + sum = mac_r_sat(sum, x[lg-1], y[lg-1]); + + Dyn_Mem_Deluxe_Out(); + + return sum; +} + +/* + * TDC_L_Dot_product + * + * Parameters: + * x i: x vector Q0 + * y i: y vector Q0 + * lg i: vector length Q0 + * + * Function: + * dot product + * + * Returns: + * dot product Q1 + */ +static Word32 TDC_L_Dot_product(const Word16 x[], const Word16 y[], const Word16 lg) +{ + Dyn_Mem_Deluxe_In( + Counter i; + Word32 sum; + ); + + sum = L_mac0(1L, x[0], y[0]); + FOR (i = 1; i < lg; i++) + { + sum = L_mac0(sum, x[i], y[i]); + } + + Dyn_Mem_Deluxe_Out(); + + return sum; +} + +/* + * TDC_highPassFiltering_fx + * + * Parameters: + * L_buffer i: buffer length + * exc2 i: unvoiced excitation before the high pass filtering Qx/Qx+1 + * l_fir_fer i: length highpass filter + * hp_filt i: highpass filter coefficients Q15 + * + * Function: + * Highpass filter + * + * Returns: + * void + */ +static void TDC_highPassFiltering_fx(const Word16 L_buffer, Word16 exc2[], const Word16 l_fir_fer, + const Word16 *hp_filt) +{ + Dyn_Mem_Deluxe_In( + Counter i; + ); + + FOR (i = 0; i < L_buffer; i++) + { + exc2[i] = round_fx(L_sub(TDC_L_Dot_product(&exc2[i], hp_filt, l_fir_fer), 1)); move16(); + } + + Dyn_Mem_Deluxe_Out(); +} + +/* + * TDC_calcGainc + * + * Parameters: + * exc i: pointer to excitation buffer + * Q_exc i: Q format of excitation buffer + * old_fpitch i: pitch_int + * lg i: length + * lp_gainp i: gain p + * lp_gainc o: pointer to gain (15Q16) + * + * Function: + * Gain calculation + * + * Returns: + * void + */ +static void TDC_calcGainc(Word16 *exc, Word16 Q_exc, Word16 old_fpitch, Word16 lg, Word16 frame_dms, Word16 lp_gainp, Word32 *lp_gainc) +{ + Dyn_Mem_Deluxe_In( + Word16 tmp16, tmp_e, tmp2_e; + Word32 L_tmp, L_tmp_max; + Counter i; + ); + + L_tmp = L_deposit_l(0); + + FOR (i = 0; i < lg; i++) + { + /* gain_c += ( exc[-i-1] - *gain_p * exc[-i-1-pitch_int] ) * ( exc[-i-1] - *gain_p * exc[-i-1-pitch_int] ); */ + tmp16 = sub_sat(exc[i - lg] /*Q1*/, mult_r(lp_gainp /*Q15*/, exc[i - lg - old_fpitch] /*Q1*/) /*Q1*/); + L_tmp = L_mac0_sat(L_tmp, tmp16, tmp16); /*Q3*/ + } + + IF (sub(frame_dms, 100) < 0) + { + L_tmp_max = L_deposit_l(0); + FOR (i = 0; i < lg; i++) + { + L_tmp_max = L_mac0_sat(L_tmp_max, exc[i - lg], exc[i - lg]); /*Q3*/ + } + L_tmp = L_min(L_tmp, L_tmp_max); + } + + tmp_e = norm_l(L_tmp); + L_tmp = L_shl(L_tmp, tmp_e); + tmp_e = sub(sub(31, shl_pos(Q_exc, 1)), tmp_e); /*L_tmp is Q31, now*/ + tmp16 = BASOP_Util_Divide3216_Scale_lc3plus(L_tmp /*Q31,norm,tmp_e*/, lg /*Q15,15*/, &tmp2_e) /*Q15,tmp2_e+tmp_e-15*/; + tmp_e = sub(add(tmp2_e, tmp_e), 15); + + IF (tmp16 != 0) + { + tmp16 = Sqrt16_lc3plus(tmp16, &tmp_e); /*Q15,norm,tmp_e*/ + tmp_e = L_min(tmp_e, 15); + *lp_gainc = L_shl_pos(L_deposit_l(tmp16), add(tmp_e, 1)); /*15Q16*/ + move32(); + } + ELSE + { + *lp_gainc = 0; + } + + Dyn_Mem_Deluxe_Out(); +} + +/* + * TDC_calcGainp + * + * Parameters: + * x i: input signal + * y i: shifted input signal + * lg i: vector length + * + * Function: + * Gain calculation + * + * Returns: + * gain (15Q16) + */ +static Word32 TDC_calcGainp(Word16 x[], Word16 y[], Word16 lg) +{ + Dyn_Mem_Deluxe_In( + Word32 tcorr, tener, Lgain, L_tmp1, L_tmp2; + Word16 m_corr, m_ener, negative, Q_corr, Q_ener; + Counter i; + ); + + negative = 0; move16(); + + L_tmp1 = L_deposit_l(0); + L_tmp2 = L_deposit_l(0); + FOR (i = 0; i < lg; i += 2) + { + L_tmp1 = L_mac0_sat(L_tmp1, x[i], y[i]); + L_tmp2 = L_mac0_sat(L_tmp2, x[i + 1], y[i + 1]); + } + tcorr = L_add(L_shr_pos(L_tmp1, 1), L_shr_pos(L_tmp2, 1)); + Q_corr = norm_l(tcorr); + tcorr = L_shl(tcorr, Q_corr); + Q_corr = sub(2, Q_corr); + + L_tmp1 = L_deposit_l(0); + L_tmp2 = L_deposit_l(0); + FOR (i = 0; i < lg; i += 2) + { + L_tmp1 = L_mac0_sat(L_tmp1, y[i], y[i]); + L_tmp2 = L_mac0_sat(L_tmp2, y[i + 1], y[i + 1]); + } + tener = L_add(L_shr_pos(L_tmp1, 1), L_shr_pos(L_tmp2, 1)); + Q_ener = norm_l(tener); + tener = L_shl(tener, Q_ener); + Q_ener = sub(2, Q_ener); + + tener = L_max(tener, 1); + + if (tcorr <= 0) + { + negative = 1; move16(); + } + tcorr = L_abs(tcorr); + + m_corr = extract_h(tcorr); + + m_ener = extract_h(tener); + + IF (sub(m_corr, m_ener) > 0) + { + m_corr = shr_pos(m_corr, 1); + Q_corr = add(Q_corr, 1); + } + if (m_ener == 0) + { + move16(); + m_corr = 0x7FFF; + } + if (m_ener != 0) + { + m_corr = div_s(m_corr, m_ener); + } + + Q_corr = sub(Q_corr, Q_ener); + + Lgain = L_shl(L_deposit_l(m_corr), add(Q_corr, 1)); + + if (negative != 0) + { + Lgain = L_negate(Lgain); + } + + Dyn_Mem_Deluxe_Out(); + + return Lgain; +} + +/* + * TDC_LPC_synthesis_fx + * + * Parameters: + * sh i : scaling to apply for a[0] Q0 + * a[] i : LP filter coefficients Qx + * x[] i : input signal Qx + * y[] o : output signal Qx-s + * lg i : size of filtering Q0 + * m i : order of LP filter Q0 + * + * Function: + * Apply LP filtering to obtain synthesis signal. + * Memory size is always m. + * + * Returns: + * void + */ +static void TDC_LPC_synthesis_fx(const Word16 sh, const Word16 a[], const Word16 x[], Word16 y[], const Word16 lg, + const Word16 m) +{ + Dyn_Mem_Deluxe_In( + Counter i; + Word16 a0; + Word16 q; + Word32(*syn_kern)(Word32 L_tmp, const Word16 a[], const Word16 y[] + );); + + ASSERT(m == 16 || m == 8); + + if (sub(m, 16) == 0) + { + syn_kern = syn_kern_16; + } + if (sub(m, 8) == 0) + { + syn_kern = syn_kern_8; + } + + q = add(norm_s(a[0]), 1); + a0 = shr_sat(a[0], sh); + + FOR (i = 0; i < lg; i++) + { + y[i] = round_fx_sat(L_shl_sat(syn_kern(L_mult(a0, x[i]), a, &y[i]), q)); move16(); + } + + Dyn_Mem_Deluxe_Out(); +} + +/* TDC_LPC_residu_fx + * + * Parameters: + * a I: LP filter coefficients (Qx) + * x I: input signal + * y O: output signal + * lg I: size of filtering + * m I: lpc order + * + * Function: + * Apply inverse filtering to obtain LP residual signal. + * + * Returns: + * void + */ +static void TDC_LPC_residu_fx(const Word16 *a, Word16 *x, Word16 *y, Word16 lg, Word16 m) +{ + Dyn_Mem_Deluxe_In( + Word16 a_exp; + Word32 s; + Counter i; + ); + + ASSERT(m == 16 || m == 8); + + a_exp = add(norm_s(a[0]), 1); + a_exp = add(a_exp, 1); + + IF (sub(m, 16) == 0) + { + FOR (i = 0; i < lg; i++) + { + s = L_mult(x[i], a[0]); + s = L_mac_sat(s, x[i - 1], a[1]); + s = L_mac_sat(s, x[i - 2], a[2]); + s = L_mac_sat(s, x[i - 3], a[3]); + s = L_mac_sat(s, x[i - 4], a[4]); + s = L_mac_sat(s, x[i - 5], a[5]); + s = L_mac_sat(s, x[i - 6], a[6]); + s = L_mac_sat(s, x[i - 7], a[7]); + s = L_mac_sat(s, x[i - 8], a[8]); + s = L_mac_sat(s, x[i - 9], a[9]); + s = L_mac_sat(s, x[i - 10], a[10]); + s = L_mac_sat(s, x[i - 11], a[11]); + s = L_mac_sat(s, x[i - 12], a[12]); + s = L_mac_sat(s, x[i - 13], a[13]); + s = L_mac_sat(s, x[i - 14], a[14]); + s = L_mac_sat(s, x[i - 15], a[15]); + s = L_mac_sat(s, x[i - 16], a[16]); + + s = L_shl_sat(s, a_exp); + y[i] = round_fx_sat(s); move16(); + } + } + IF (sub(m, 8) == 0) + { + FOR (i = 0; i < lg; i++) + { + s = L_mult(x[i], a[0]); + s = L_mac_sat(s, x[i - 1], a[1]); + s = L_mac_sat(s, x[i - 2], a[2]); + s = L_mac_sat(s, x[i - 3], a[3]); + s = L_mac_sat(s, x[i - 4], a[4]); + s = L_mac_sat(s, x[i - 5], a[5]); + s = L_mac_sat(s, x[i - 6], a[6]); + s = L_mac_sat(s, x[i - 7], a[7]); + s = L_mac_sat(s, x[i - 8], a[8]); + + s = L_shl_sat(s, a_exp); + y[i] = round_fx_sat(s); move16(); + } + } + + Dyn_Mem_Deluxe_Out(); +} + +/* TDC_random_fx + * + * Parameters: + * seed i/o: seed for random number + * lg i : vector length + * y o : output values + * + * Function: + * Uniform distributed random generator. + * + * Returns: + * random number + */ +static void TDC_random_fx(Word16 *seed, Word16 lg, Word16 *y) +{ + Dyn_Mem_Deluxe_In( + Counter i; + ); + + FOR (i = 0; i < lg; i++) + { + *seed = extract_l(L_mac0(16831L, *seed, 12821)); + *y++ = *seed; move16(); + } + + Dyn_Mem_Deluxe_Out(); +} + +/* + * TDC_preemph + * + * Parameters: + * x i/o: signal Qx + * fac i: preemphasis factor Q15 + * lg i: vector length + * + * Function: + * Filtering through 1 - fac z^-1 + * + * Returns: + * Q-factor + */ +static Word16 TDC_preemph(Word16 *x, const Word16 fac, const Word16 lg) +{ + Dyn_Mem_Deluxe_In( + Word16 fac_sh, Q_max_value, Q_out; + Word32 max_val; + Counter i; + ); + + fac_sh = shr(fac, 3); + Q_max_value = 4096; move16(); + Q_out = 12; move16(); + + max_val = 0; move32(); + FOR (i = sub(lg, 1); i >= 0; i--) + { + max_val = L_max(L_abs(L_msu(L_mult(x[i], Q_max_value), x[i - 1], fac_sh)), max_val); + } + + IF (extract_h(max_val) != 0) + { + Q_out = s_min(s_max(sub(norm_s(extract_h(max_val)), 3), 0), 12); + } + + FOR (i = sub(lg, 1); i >= 0; i--) + { + x[i] = round_fx(L_shl(L_msu(L_mult(x[i], Q_max_value), x[i - 1], fac_sh), Q_out)); move16(); + } + + Dyn_Mem_Deluxe_Out(); + + return sub(Q_out, 2); +} + +/* + * TDC_deemph_fx + * + * Parameters: + * x i: input signal Qx + * y o: output signal Qx + * fac i: deemphasis factor Q15 + * lg i: size of filtering Q0 + * mem i: memory (x[-1]) + * + * Function: + * Filtering through 1/(1-fac z^-1) + * + * Returns: + * void + */ +static void TDC_deemph_fx(const Word16 *x, Word16 *y, const Word16 fac, const Word16 lg, const Word16 mem) +{ + Dyn_Mem_Deluxe_In( + Counter i; + ); + + y[0] = round_fx_sat(L_mac_sat(L_deposit_h(x[0]), mem, fac)); move16(); + FOR (i = 1; i < lg; i++) + { + y[i] = round_fx_sat(L_mac_sat(L_deposit_h(x[i]), y[i - 1], fac)); move16(); + } + + Dyn_Mem_Deluxe_Out(); +} + +/* + * TDC_normalize_energy_fx + * + * Parameters: + * gain o: gain + * gain_exp o: exponent of gain + * x i: input signal + * lg i: length of input signal + * + * Function: + * Normalizes the energy. + * + * Returns: + * void + */ +static void TDC_normalize_energy_fx(Word16 *gain, Word16 *gain_exp, const Word16 *x, const Word16 lg) +{ + Dyn_Mem_Deluxe_In( + Counter i; + Word16 c; + Word16 e; + Word16 e1; + Word16 e2; + Word32 tmp; + Word16 tmp16; + ); + + tmp = 0; move32(); + FOR (i = 0; i < lg; i++) + { + tmp16 = mult_r(x[i], 2048); + tmp = L_mac(tmp, tmp16, tmp16); + } + + e = norm_l(tmp); + tmp = L_shl_pos(tmp, e); + e1 = sub(sub(30, e), -8); move16(); + tmp16 = BASOP_Util_Divide3216_Scale_lc3plus(tmp, lg, &e2); + + e = 0; move16(); + if (tmp16 != 0) + { + e = sub(add(e1, e2), 15); + } + + c = 0x0148; /* 0.01 */ + move16(); + IF (e > 0) + { + c = shr(c, s_min(e, 15)); + } + ELSE + { + tmp16 = shr(tmp16, s_min(negate(e), 15)); + e = 0; move16(); + } + + e2 = 2; move16(); + if (s_and(e, 1)) + { + e2 = 1; move16(); + } + + tmp16 = add(shr_pos(tmp16, e2), shr_pos(c, e2)); + e = add(e, e2); + + tmp16 = Sqrt16_lc3plus(tmp16, &e); + + *gain = BASOP_Util_Divide1616_Scale_lc3plus((Word16)0x7FFF, tmp16, &e1); move16(); + *gain_exp = sub(e1, e); move16(); + + Dyn_Mem_Deluxe_Out(); +} + +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR +static Word16 type_2_alpha_long(Word16 nbLostFramesInRow, Word16 frame_dms) +{ + Word16 n_help; + Word32 n_shift; + + if (nbLostFramesInRow <= 3*(100.0/frame_dms)){ + n_help = (nbLostFramesInRow + (100/frame_dms) - 1) * frame_dms; + return powWord16rest(31129,n_help/100,n_help%100); + } + else { + n_shift = (nbLostFramesInRow - 3*(100/frame_dms)) * 50/frame_dms; + n_help = (n_shift + (100/frame_dms) - 1) * frame_dms; + return powWord16rest(22937,n_help/100,n_help%100); + } +} + +Word16 type_2_fadeout_fx(Word16 nbLostFramesInRow, Word16 frame_dms) +{ + Word16 n_help; + Word16 selector = PLC_FADEOUT_TYPE_2_SELECTOR * 2 * (100/frame_dms); + + if (selector >= nbLostFramesInRow){ + return type_2_alpha_long(nbLostFramesInRow, frame_dms); + } + else { + n_help = (nbLostFramesInRow + (100/frame_dms) - 1) * frame_dms; + return powWord16rest(16383,n_help/100, n_help%100); + } +} + +static Word16 powWord16rest(Word16 base, Word16 exp, Word16 rest) { + Word32 exp_result = 32767; + Word32 tmp_result; + Word16 root, i, exp2; + + FOR (i = 0; i < exp; ++i) { + tmp_result = (Word32)exp_result * base; + exp_result = (Word16)(tmp_result >> 15); + } + + IF (rest != 0) { + exp2 = 0; + SWITCH (rest) + { + case 50: + root = Sqrt16_lc3plus(base, &exp2); + shr(root,exp2); + exp_result = L_shr(exp_result * root,15); /* 0.5^1.5 = 0.5^(3/2) = 0.5^3*sqrt(0.5) */ + BREAK; + case 25: + root = Sqrt16_lc3plus(base, &exp2); + shr(root,exp2); + exp2 = 0; + root = Sqrt16_lc3plus(root, &exp2); + shr(root,exp2); + exp_result = L_shr(exp_result * root,15); /* 0.5^(1/4) = 0.5^sqrt(sqrt(0.5)) */ + BREAK; + case 75: + root = Sqrt16_lc3plus(base, &exp2); + shr(root,exp2); + exp2 = 0; + root = Sqrt16_lc3plus(root, &exp2); + shr(root,exp2); + tmp_result = powWord16rest(root, 3, 0); + exp_result = L_shr( exp_result * tmp_result,15); + BREAK; + } + } + return (Word16) exp_result; +} +#endif diff --git a/lib_lc3plus/plc_tdc_pre_emphasis_fx.c b/lib_lc3plus/plc_tdc_pre_emphasis_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..3a961acf7398235d16b5fc0d6b192076aee2e8ee --- /dev/null +++ b/lib_lc3plus/plc_tdc_pre_emphasis_fx.c @@ -0,0 +1,95 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +void processPreEmphasis_fx(Word32 *d2_fx, Word16 *d2_fx_exp, Word16 fs_idx, Word16 n_bands, Word16 frame_dms, Word8 *scratchBuffer) +{ + Word16 s; + Word32 nrg; + Word16 smax; + Counter band; + const Word16 *pre_emph; + const Word16 *pre_emph_e; + Word16 * d2_band_fx_exp; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processPreEmphasis_fx", sizeof(struct { + Word16 s; + Word32 nrg; + Word16 smax; + Counter band; + const Word16 *pre_emph; + const Word16 *pre_emph_e; + Word16 * d2_band_fx_exp; + })); +#endif + + d2_band_fx_exp = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * MAX_BANDS_NUMBER_PLC = 160 bytes */ + + pre_emph = lpc_lin_pre_emphasis[fs_idx]; + pre_emph_e = lpc_lin_pre_emphasis_e[fs_idx]; + SWITCH (frame_dms) + { + case 25: + pre_emph = lpc_lin_pre_emphasis_2_5ms[fs_idx]; + pre_emph_e = lpc_lin_pre_emphasis_e_2_5ms[fs_idx]; + BREAK; + case 50: + pre_emph = lpc_lin_pre_emphasis_5ms[fs_idx]; + pre_emph_e = lpc_lin_pre_emphasis_e_5ms[fs_idx]; + BREAK; +#ifdef CR8_G_ADD_75MS + case 75: + pre_emph = lpc_lin_pre_emphasis_7_5ms[fs_idx]; + pre_emph_e = lpc_lin_pre_emphasis_e_7_5ms[fs_idx]; + BREAK; +#endif + } + + ASSERT(n_bands==20 || n_bands==40 || n_bands==60 || n_bands ==80); + + /* start processing */ + smax = -31; move16(); + + FOR (band = 0; band < n_bands; band++) + { + nrg = Mpy_32_16_lc3plus(d2_fx[band], pre_emph[band]); + + if (nrg == 0) + { + s = 31; move16(); + } + + if (nrg != 0) + { + s = norm_l(nrg); + } + + d2_fx[band] = L_shl_pos(nrg, s); move32(); + d2_band_fx_exp[band] = sub(pre_emph_e[band], s); move16(); + + smax = s_max(smax, d2_band_fx_exp[band]); + } + +/* Rescale band energies */ + FOR (band = 0; band < n_bands; band++) + { + d2_fx[band] = L_shr_pos(d2_fx[band], s_min(sub(smax, d2_band_fx_exp[band]), 31)); move32(); + } + /* Save common exponent for all bands */ + *d2_fx_exp = add(*d2_fx_exp, smax); move16(); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + + diff --git a/lib_lc3plus/plc_update_aft_imdct_fx.c b/lib_lc3plus/plc_update_aft_imdct_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..9ba483792d2ee91590e667026c4b2372659d6ebf --- /dev/null +++ b/lib_lc3plus/plc_update_aft_imdct_fx.c @@ -0,0 +1,343 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +static void processPLCcomputeStabFac(Word16 scf_q[], Word16 old_scf_q[], Word16 prev_bfi, Word16 *stab_fac); + +void processPLCUpdateAfterIMDCT_fx(Word16 x_fx[], Word16 q_fx_exp, Word16 concealMethod, Word16 xLen, Word16 fs_idx, + Word16 *nbLostFramesInRow, Word16 *prev_prev_bfi, Word16 *prev_bfi, Word16 bfi, Word16 scf_q[], + Word16 *ns_cum_alpha, AplcSetup *plcAd) +{ + Word16 oldLen, usedHistlen; + Word16 scale_fac_old, scale_fac_new, q_theo_new_old, q_theo_new_new, q_new, shift_old, shift_new; + Word16 frontLen, pastLen; + Word16 marginOldPast; + Word16 marginNewXlen, marginOldFront; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processPLCUpdateAfterIMDCT_fx", sizeof(struct { + Word16 oldLen, usedHistlen; + Counter i; + Word16 scale_fac_old, scale_fac_new, q_theo_new_old, q_theo_new_new, q_new, shift_old, shift_new; + Word16 frontLen, pastLen; + Word16 marginOldPast; + Word16 scale_fac_old_dual; + Word16 marginNewXlen, marginOldFront; + })); +#endif + + + + +#ifdef WMOPS + push_wmops("processPLCUpdateAfterIMDCT "); +#endif + + + if (plcAd) + { + /* for short NB frames(2.5 ms) TDC-filtering requires more PCM samples than the plc_xcorr function */ + usedHistlen = plcAd->max_len_pcm_plc; + + + logic16(); + IF( (sub(bfi,1) == 0) && sub(concealMethod, LC3_CON_TEC_PHASE_ECU) == 0 && xLen == (Word16)(((double)LprotSzPtr[fs_idx])*0.625)) + { /* % reduced buffering update length during concealment method 2 as Xsav_fx is stored in the joint q_old_fx and pcmbufHist buffer */ + usedHistlen = sub(usedHistlen, sub(LprotSzPtr[fs_idx], s_min(MAX_BW_BIN, xLen))); + ASSERT(xLen == (Word16)(((double)LprotSzPtr[fs_idx])*0.625)); /*/ only enter here for 10 ms cases */ + + /* actually one can select to always update xLen(10 ms) less samples of x_old_tot, also in TDC-PLC bfi frames ,, and for PhECU.PLC */ + } + oldLen = sub(usedHistlen, xLen); + + /* update ltpf-free pcm history buffer for TD-PLC */ + + basop_memmove(&plcAd->x_old_tot_fx[plcAd->max_len_pcm_plc - usedHistlen], + &plcAd->x_old_tot_fx[plcAd->max_len_pcm_plc - usedHistlen + xLen], oldLen * sizeof(Word16)); + + basop_memcpy(&plcAd->x_old_tot_fx[plcAd->max_len_pcm_plc - xLen], &x_fx[0], xLen * sizeof(Word16)); + +#ifdef ENABLE_HR_MODE + frontLen = 0; + IF (sub(fs_idx, 5) < 0) +#endif + { + frontLen = sub(LprotSzPtr[fs_idx], xLen); /*16-10 = 6ms of the prev_synth/xfp part */ + } + pastLen = sub(oldLen, frontLen); /* ~11.8 ms*/ + + marginOldPast = getScaleFactor16_0(&(plcAd->x_old_tot_fx[plcAd->max_len_pcm_plc - usedHistlen]), pastLen); + marginOldFront = getScaleFactor16_0(&(plcAd->x_old_tot_fx[plcAd->max_len_pcm_plc - usedHistlen + pastLen]), frontLen); + + scale_fac_old = s_min(marginOldFront, marginOldPast); + + frontLen = 0; move16(); + logic16(); logic16(); + IF(bfi == 1 && *prev_bfi == 0 && sub(concealMethod, LC3_CON_TEC_PHASE_ECU) == 0) + { /* prepare localized margin_xfp value for a next bad concealment Method 2 frame */ + frontLen = *nbLostFramesInRow; + frontLen = add(hamm_len2Tab[fs_idx], shr(hamm_len2Tab[fs_idx], 2)); /* find margin in the 3.75 ms front part */ + pastLen = sub(xLen, frontLen); + scale_fac_new = getScaleFactor16_0(&(x_fx[0]), pastLen); + marginNewXlen = getScaleFactor16_0(&(x_fx[0]) + pastLen, frontLen); /* for pHEcuprev_synth in 2nd+ bfi frame */ + + scale_fac_new = s_min(scale_fac_new, marginNewXlen); + } + ELSE + { /* prepare margin value for any coming good frame or any coming first bad frame */ + + marginNewXlen = getScaleFactor16_0(&(x_fx[0]),xLen); /* prevsynth in first bfi frame */ + scale_fac_new = marginNewXlen; move16(); + } + + q_theo_new_old = s_max(plcAd->q_fx_old_exp - scale_fac_old, 0); + q_theo_new_new = s_max(q_fx_exp - scale_fac_new, 0); + + q_new = s_max(q_theo_new_old, q_theo_new_new); + + shift_old = plcAd->q_fx_old_exp - q_new; + shift_new = q_fx_exp - q_new; + + IF(shift_old != 0) + { + Scale_sig(&plcAd->x_old_tot_fx[plcAd->max_len_pcm_plc - usedHistlen], oldLen, shift_old); + logic16(); + test(); + IF ((sub(bfi,1) == 0) && (sub(concealMethod, LC3_CON_TEC_TDPLC) == 0)) + { + plcAd->harmonicBuf_Q -= shift_old; + plcAd->tdc_gain_c = L_shl_sat(plcAd->tdc_gain_c, shift_old); + } + move16(); /* count move to static RAM */ + + marginOldFront = s_min(16, sub(marginOldFront, shift_old)); + } + IF(shift_new) + { + Scale_sig(&plcAd->x_old_tot_fx[plcAd->max_len_pcm_plc - xLen], xLen, shift_new); /* positive shift_new means upshift=less margin */ + marginNewXlen = s_min(16, sub(marginNewXlen, shift_new)); + } + + plcAd->q_fx_old_exp = sub(q_fx_exp, shift_new); + + plcAd->PhECU_margin_xfp = s_min(marginNewXlen, marginOldFront); move16(); /* for pHECU winEncalc xfp energy calculations */ + if (frontLen != 0) + { /* prepare margin value for a first pHECU(16 ms) or a consecutive bad PhEcu frame (3.75ms) */ + plcAd->PhECU_margin_xfp = marginNewXlen; move16(); + } + if (sub(plcAd->PhECU_margin_xfp, 16) == 0) + { + plcAd->PhECU_margin_xfp = 1; move16(); /* "1" --> does not rescale the all-zero vector, inside PhECU */ + } + } + + /* Update PLC params */ + IF(sub(bfi, 1) != 0) + { + /* % reset counters in GF */ + *nbLostFramesInRow = 0; move16(); + *ns_cum_alpha = 32767; move16(); + + if (plcAd) + { + basop_memmove(plcAd->old_old_scf_q, plcAd->old_scf_q, M * sizeof(Word16)); + basop_memmove(plcAd->old_scf_q, scf_q, M * sizeof(Word16)); + + /* PLC fullband transient detector setting for non-bfi frames */ + plcAd->PhECU_short_flag_prev = 0; move16(); /* fullband transient not active */ + } + } + + /* values may be {0,1,2} */ + *prev_prev_bfi = *prev_bfi; move16(); + *prev_bfi = bfi; move16(); + +#ifdef WMOPS + pop_wmops(); +#endif + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +void processPLCcomputeStabFac_main(Word16 scf_q[], Word16 old_scf_q[], Word16 old_old_scf_q[], Word16 bfi, Word16 prev_bfi, + Word16 prev_prev_bfi, Word16 *stab_fac) +{ + IF (sub(bfi, 1) == 0) + { + IF (sub(prev_bfi, 1) != 0) + { + processPLCcomputeStabFac(old_scf_q, old_old_scf_q, prev_prev_bfi, stab_fac); + } + } + ELSE IF(sub(bfi, 2) == 0) + { + processPLCcomputeStabFac(scf_q, old_scf_q, prev_bfi, stab_fac); + } +} + +static void processPLCcomputeStabFac(Word16 scf_q[], Word16 old_scf_q[], Word16 prev_bfi, Word16 *stab_fac) +{ + Counter i; + Word32 tmp32; + Word16 d; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("calculateStabFac", sizeof(struct { + Counter i; + Word32 tmp32; + Word16 d; + })); +#endif + + /* calculate stability factor */ + IF (sub(prev_bfi, 1) == 0) + { + *stab_fac = 26214; move16(); + } + ELSE + { + tmp32 = 0; move32(); + FOR (i = 0; i < M; i++) + { + d = sub(scf_q[i], old_scf_q[i]); + tmp32 = L_mac_sat(tmp32, d, d); + } + tmp32 = L_shl_sat(tmp32, 3); + IF (tmp32 > 0x7D000000 /*1.25*25*/) + { + *stab_fac = 0; move16(); + } + ELSE IF (tmp32 < 0x19003E82 /*0.25*25*/) + { + *stab_fac = 0x7FFF; move16(); + } + ELSE + { + tmp32 = L_shl_pos(L_sub(0x50000000 /*1.25/2*/, Mpy_32_16_lc3plus(tmp32, 0x51EC /*16/25*/)), 1); + *stab_fac = round_fx(tmp32); move16(); + } + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +void processPLCUpdateXFP_w_E_hist_fx(Word16 prev_bfi, Word16 bfi, Word16 *xfp_fx, Word16 xfp_exp_fx, Word16 margin_xfp, + Word16 fs_idx, + Word32 *L_oold_xfp_w_E_fx, Word16 *oold_xfp_w_E_exp_fx, + Word32 *L_old_xfp_w_E_fx, Word16 *old_xfp_w_E_exp_fx, + + Word16 *oold_Ltot_exp_fx ,Word16 *old_Ltot_exp_fx ) + +{ + Word32 L_tot ; + Word16 dn_scale, exp_shift; + Word16 used_xfp_exp_fx; + Word16 exp_out ; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("PLCUpdateXFP_w_E_hist", sizeof(struct { + Word32 L_tot; + Word16 dn_scale, exp_shift; + Word16 used_xfp_exp_fx; + Word16 exp_out; + })); +#endif +#ifdef WMOPS + push_wmops("PhECU::UpdateXfp_w_E_hist_fx"); +#endif + + IF (sub(bfi,1) != 0) + { + + if (sub(prev_bfi,1) == 0) + { + /* only a single historic frame available in the next frame + , force artifical update of oold energy to be the same as old */ + *old_xfp_w_E_exp_fx = LTOT_INIT_FLAG ; move16(); + } + + /* Time shift energy state and xfp exp */ + IF (sub_sat(*old_xfp_w_E_exp_fx, LTOT_INIT_FLAG ) == 0) + { + *L_oold_xfp_w_E_fx = LTOT_MIN_MAN ; move32(); + *oold_xfp_w_E_exp_fx = UNINIT_OR_UNSAFE_OOLD_SENTINEL ; move16(); + } + ELSE + { + *L_oold_xfp_w_E_fx = *L_old_xfp_w_E_fx; move32(); /* regular update */ + *oold_xfp_w_E_exp_fx = *old_xfp_w_E_exp_fx; move16(); + } + + /* Time shift L_tot energy state and L_tot_exp */ + IF (sub_sat(*old_Ltot_exp_fx, LTOT_INIT_FLAG ) == 0) + { + *L_oold_xfp_w_E_fx = LTOT_MIN_MAN ; move32(); + *oold_Ltot_exp_fx = UNINIT_OR_UNSAFE_OOLD_SENTINEL ; move16(); + } + ELSE + { + *L_oold_xfp_w_E_fx = *L_old_xfp_w_E_fx; move32(); /* regular update */ + *oold_Ltot_exp_fx = *old_Ltot_exp_fx; move16(); + } + + + dn_scale = e_tot_headroom[fs_idx]; /* allowed minimum dn_scale for a max upshifted signal */ + used_xfp_exp_fx = xfp_exp_fx; + + IF( margin_xfp > 0 ) /* xfp_fx was normalized on a larger area than 16ms part of pcmBuffer */ + { + ASSERT(bfi !=1) ; /* if bfi was set the margin_xfp does not reflect the correct 16ms part of pcm_buf hist, prev_synth */ + dn_scale = s_max(0, sub(e_tot_headroom[fs_idx], margin_xfp)); + + exp_shift = sub(e_tot_headroom[fs_idx], dn_scale); + used_xfp_exp_fx = sub(xfp_exp_fx, exp_shift); /* the virtual change of the xfp_buffer due to reduced downscaling in L_tot calc */ + } + + /* use semifixed dn_scale as adjusted by margin_xfp in 16 ms region */ + exp_out = xfp_exp_fx; move16(); + L_tot = winEnCalc(xfp_fx, dn_scale , PhECU_wins[fs_idx][0], rectLengthTab[fs_idx], hamm_len2Tab[fs_idx], &exp_out ); + + *L_old_xfp_w_E_fx = L_tot; move32(); + + *old_xfp_w_E_exp_fx = used_xfp_exp_fx ; move16(); + /* this now needs to be in Q1 , used_fx_exp , (exp_out-1-2*e_tot_headroom[fs_idx])/2 */ + + *old_Ltot_exp_fx = exp_out; /* new proper _Ltot value from winEnCalc function */ + + + /* use true Word32 exponent of L_tot */ + + + /* restart oold and old from same state for init or prevBFI cases */ + logic16(); + IF (sub_sat(*oold_xfp_w_E_exp_fx, UNINIT_OR_UNSAFE_OOLD_SENTINEL) <= 0 || /* old xfp_Exp */ + sub_sat(*oold_Ltot_exp_fx, UNINIT_OR_UNSAFE_OOLD_SENTINEL) <= 0 ) /* new L_tot_exp */ + { + *L_oold_xfp_w_E_fx = L_tot; move32(); + *oold_xfp_w_E_exp_fx = used_xfp_exp_fx; move16(); + *oold_Ltot_exp_fx = *old_Ltot_exp_fx; /* use Ltot exp value */ + } + } + +#ifdef WMOPS + pop_wmops(); +#endif +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + + + diff --git a/lib_lc3plus/plc_update_fx.c b/lib_lc3plus/plc_update_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..7abb2b613ddfaa91068503689c12395bb0d840dd --- /dev/null +++ b/lib_lc3plus/plc_update_fx.c @@ -0,0 +1,224 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +void processPLCupdate_fx(AplcSetup *plcAd, Word16 x_fx[], Word16 q_fx_exp, Word16 concealMethod, Word16 frame_length, + Word16 fs_idx, Word16 *nbLostFramesInRow, Word16 *prev_prev_bfi, Word16 *prev_bfi, Word16 bfi, Word16 scf_q[], + Word16 *ns_cum_alpha +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif + ) +{ + processPLCUpdateAfterIMDCT_fx(x_fx, q_fx_exp, concealMethod, frame_length, fs_idx, nbLostFramesInRow, prev_prev_bfi, prev_bfi, bfi, + scf_q, ns_cum_alpha, plcAd); /* NB *prev_bfi updated here */ + + IF ( plcAd != 0 ) + { + /* reuse/inplace the most recent 16 ms of x_old_tot without additional rescaling, keep exponent aligned with tdc pitch buffer to save WMOPS */ + + +#ifdef ENABLE_HR_MODE + if (hrmode == 0) +#endif + { + ASSERT( (&plcAd->x_old_tot_fx[plcAd->max_len_pcm_plc - LprotSzPtr[fs_idx] ]) == plcAd->PhECU_xfp_fx ); + plcAd->PhECU_xfp_exp_fx = plcAd->q_fx_old_exp; move16(); /* exponent used by concealmethod 2 in prevBfi frames and also right after non bfi frames */ + } + } +} + +void processPLCupdateSpec_fx(Word16 q_old_d_fx[], Word16 *q_old_fx_exp, Word32 q_d_fx[], Word16 *q_fx_exp, Word16 yLen) +{ + Dyn_Mem_Deluxe_In( + Counter i; + Word16 s; + ); + + /* save spectrum and the corresponding exponent */ + s = getScaleFactor32_lc3plus(q_d_fx, yLen); + + *q_old_fx_exp = sub(*q_fx_exp, s); + + + FOR (i = 0; i < yLen; i++) + { + q_old_d_fx[i] = round_fx_sat(L_shl_sat(q_d_fx[i], s)); /* */ + } + + Dyn_Mem_Deluxe_Out(); +} + +void processPLCspec2shape_fx(Word16 prev_bfi, Word16 bfi, Word16 q_old_d_fx[], Word16 yLen, + Word16 *stPhECU_oold_grp_shape_fx, Word16 *stPhECU_old_grp_shape_fx) + +#define L_GRP_DC 4 + +{ + Counter i,l; + Word16 *pX, tmp; + Word16 N_grp,l_grp; + Word16 man, expo; + Word32 L_acc; + Word32 L_tot; + Word32 L_grp_shape[MAX_LGW]; + Word16 grp_shape[MAX_LGW]; /**/ + Word16 fs_idx,local_prev_bfi; + + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("process_plc_spec_2_shape_fx", sizeof(struct { + Counter i,l; + Word16 *pX; + Word16 N_grp,l_grp; + Word32 L_acc; + Word32 L_tot; + Word32 L_grp_shape[MAX_LGW]; + Word16 fs_idx,local_prev_bfi; + })); +#endif +#ifdef WMOPS + push_wmops("PhECU::GF::process_plc_spec_2_shape_fx"); +#endif + + IF(sub(bfi, 1) != 0) + { + fs_idx = mult(yLen, (Word16)(32768.0 / (99.0))); /* truncation needed , i.e no rounding can be applied here */ + N_grp = xavg_N_grp_fx[fs_idx]; move16(); + + local_prev_bfi = prev_bfi; move16(); + if (sub(local_prev_bfi, 2)==0) + { + local_prev_bfi = 0; move16(); + } + + if( stPhECU_oold_grp_shape_fx[0] < 0 ) + { + local_prev_bfi = 1 ; move16(); /* handle startup in the case 2nd frame is a BFI frame */ + } + + /* Copy old to oold grp shape */ + FOR( i=0; i < MAX_LGW ; i++) + { + stPhECU_oold_grp_shape_fx[i] = stPhECU_old_grp_shape_fx[i]; move16(); + } + + + /* Accumulate DC bin(s) to total */ + pX = q_old_d_fx; /* ptr setup */ + L_tot = L_deposit_h(0); /* acc on negative side */ + + FOR( i= 0; i < L_GRP_DC; i++) + { + tmp = shr_pos(*pX++ ,spec_shape_headroom[fs_idx]); /* scale down upscaled MDCT to create some headroom */ + L_tot = L_msu0(L_tot, tmp, tmp); + + } + + /* Accumulate middle subbands and add to total */ + FOR( i=0; i < sub(N_grp,1) ; i++) + { + + L_acc = L_deposit_h(0); /* acc on negative side */ + l_grp = sub(mdct_grp_bins_fx[i+1], mdct_grp_bins_fx[i]); move16(); + + + + FOR(l=0;l 0) + { + FOR(i=0; i < N_grp ; i++) + { + man = plc_phEcu_ratio_fx(L_grp_shape[i], L_tot, &expo); /* The mantissa is considered in Q15 output in Q14 */ + grp_shape[i] = shr_sat(man, sub(expo,1)); /* gfrom Q14 to in Q15 (Due to saturation, it is automatically bound inside [-1.0,1.0].) */ + } + } + ELSE + { + FOR(i=0; i < N_grp ; i++) + { + grp_shape[i] = GRP_SHAPE_INIT; move16(); + + } + } + + /* copy to output */ + FOR(i=0; i < N_grp ; i++) + { + stPhECU_old_grp_shape_fx[i] = grp_shape[i]; move16(); + } + FOR(i = N_grp; i < MAX_LGW ; i++) + { + stPhECU_old_grp_shape_fx[i] = GRP_SHAPE_INIT; move16(); + } + + + + /* handle oold states for the frame sequence BAD, GOOD, NEXT_BAD */ + if(sub(local_prev_bfi, 1)==0) + { + FOR( i=0; i < MAX_LGW ; i++) + { + stPhECU_oold_grp_shape_fx[i] = stPhECU_old_grp_shape_fx[i] ; move16(); + } + } + + } + +#ifdef WMOPS + pop_wmops(); +#endif +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif + +} + + + + diff --git a/lib_lc3plus/plc_xcorr_fx.c b/lib_lc3plus/plc_xcorr_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..d8c6d83904ef6955eee8d584709578625a4c8186 --- /dev/null +++ b/lib_lc3plus/plc_xcorr_fx.c @@ -0,0 +1,250 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" +#include "functions.h" + +#define MAX_ACCS 3 /* sum(x.*y), sum(x.*x), sum(y.*y), nb of always nonsaturated shorter sub_blocks*/ +#define MAX_BLOCKS 8 +#define MAX_ACC_LEN_BITS 7 +#define MIN_ACC_LEN_BITS 5 +#define MAX_ACC_LEN (1 << MAX_ACC_LEN_BITS) +#define MIN_PITCH_8K 20 /* 8000* MIN_PITCH_12k8/12800 */ + +static const Word16 pitch_min_2[] = {2 * MIN_PITCH_8K , 2 * MIN_PITCH_8K * 2, 2 * MIN_PITCH_8K * 3, + 2 * MIN_PITCH_8K * 4, 2 * MIN_PITCH_8K * 6, 2 * MIN_PITCH_8K * 12}; + +/* req headroom in bits, for safe summing of block results w/o downshift */ +/* also the safe pre subblock acc downshift for various number of blocks */ +static const Word16 tab_req_headroom[MAX_BLOCKS + 1] = {0, 0, 1, 2, 2, 3, 3, 3, 3}; +/*(0, 1, 2, 3,4, 5,6,7,8)*/ + +static Word16 plc_norm_corr_blocks_fx(Word16 tot_len, Word16 l2_base_len, Word16 n_blocks, Word16 inshift, + Word16 *currFrame, Word16 *predFrame); + +Word16 plc_norm_corr_blocks_fx( /* o: norm_corr range [-1 ... 1.0[ in Q15 */ + Word16 tot_len, /* i: total correlation length in Q0 */ + Word16 l2_base_len, /* i: size of subblocks in log2 */ + Word16 n_blocks, /* i: number of accumulator sub_blocks */ + Word16 inshift, /* i: required inshift of curr/pred Q0 */ + Word16 *currFrame, /* i: ptr to most recent section */ + Word16 *predFrame) /* i: ptr to historic section */ +{ + Word16 scale0, scale1, scale2, scale_min, shift, prod_exp, acc_margin; + Word32 L_prod, L_inv, L_tmp0 = 0, L_tmp1 = 0, L_tmp2 = 0; + Word16 norm_corr, curr, pred; + Counter m, b; + Word32 L_ce[MAX_ACCS][MAX_BLOCKS]; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("plc_norm_corr_blocks_fx", sizeof(struct { + Word16 scale0, scale1, scale2, scale_min, shift, prod_exp, acc_margin; + Word32 L_prod, L_inv, L_tmp0, L_tmp1, L_tmp2; + Word16 norm_corr, curr, pred; + Counter m, b; + Word32 L_ce[MAX_ACCS][MAX_BLOCKS]; + })); +#endif + +#ifdef WMOPS + push_wmops("plc_norm_corr_blocks_fx"); +#endif + + /* Calculate normalized correlation with added shift and block interleaving possibility */ + ASSERT(n_blocks <= MAX_BLOCKS && n_blocks > 0); + ASSERT(((float)tot_len / (float)n_blocks) <= (float)(1 << l2_base_len)); + ASSERT(inshift > 0); + UNUSED(l2_base_len); + + FOR (b = 0; b < n_blocks; b++) + { /* block loop with fixed pre_down shifting(inshift) of input signal */ + curr = shr_pos(currFrame[b], inshift); + pred = shr_pos(predFrame[b], inshift); + L_tmp2 = L_deposit_l(0); + L_tmp0 = L_msu0(L_tmp2, curr, pred); /* acc L_tmp0 on negative side to avoid saturation for (-1*-1) */ + L_tmp1 = L_msu0(L_tmp2, pred, pred); /* acc_energy on negative side */ + L_tmp2 = L_msu0(L_tmp2, curr, curr); /* acc_energy on negative side */ + + FOR (m = (b + n_blocks); m < tot_len; m += n_blocks) + { /* interleaved accumulation over total length */ + curr = shr_pos(currFrame[m], inshift); + pred = shr_pos(predFrame[m], inshift); + L_tmp0 = L_msu0(L_tmp0, curr, pred); + L_tmp1 = L_msu0(L_tmp1, pred, pred); + L_tmp2 = L_msu0(L_tmp2, curr, curr); + } + + L_ce[0][b] = L_add(L_tmp0, 0); /* account for moves from register to stack memory */ + L_ce[1][b] = L_add(L_tmp1, 0); + L_ce[2][b] = L_add(L_tmp2, 0); + } + + /* aggregate interleaved subsections */ + IF (sub(n_blocks, 1) >= 0) + { /* 100% safe non saturating L_ce with a safe acc_margin */ + acc_margin = tab_req_headroom[n_blocks]; move16(); + + L_tmp0 = L_shr_pos(L_ce[0][0], acc_margin); + L_tmp1 = L_shr_pos(L_ce[1][0], acc_margin); + L_tmp2 = L_shr_pos(L_ce[2][0], acc_margin); + + FOR (b = 1; b < n_blocks; b++) + { + L_tmp0 = L_add(L_tmp0, L_shr_pos(L_ce[0][b], acc_margin)); /* add negative values */ + L_tmp1 = L_add(L_tmp1, L_shr_pos(L_ce[1][b], acc_margin)); /* add negative values */ + L_tmp2 = L_add(L_tmp2, L_shr_pos(L_ce[2][b], acc_margin)); /* add negative values */ + } + + /* evaluate headroom margin in coarse representation */ + scale0 = norm_l(L_tmp0); + scale1 = norm_l(L_tmp1); + scale2 = norm_l(L_tmp2); + + scale_min = s_min(scale0, scale1); + scale_min = s_min(scale_min, scale2); + + shift = sub(scale_min, acc_margin); + IF (shift >= 0) + { /* re-accumulate blocks with highest possible precision */ + L_tmp0 = L_add(L_ce[0][0], 0); /* add negative values */ + L_tmp1 = L_add(L_ce[1][0], 0); /* add negative values */ + L_tmp2 = L_add(L_ce[2][0], 0); /* add negative values */ + + FOR (b = 1; b < n_blocks; b++) + { + L_tmp0 = L_add(L_tmp0, L_ce[0][b]); /* add negative values */ + L_tmp1 = L_add(L_tmp1, L_ce[1][b]); /* add negative values */ + L_tmp2 = L_add(L_tmp2, L_ce[2][b]); /* add negative values */ + } + } + } + + /* quota: norm_corr = corr/sqrt(en1*en2) = negate(L_tmp1)/sqrt(-L_tmp1*-L_tmp2) */ + L_tmp1 = L_min(L_tmp1, -1); /* make sure there is negative energy */ + L_tmp2 = L_min(L_tmp2, -1); /* make sure there is negative energy */ + + ASSERT(L_tmp1 < 0 && L_tmp2 < 0); + + /* negate correlation, due to the used safe msu0 accumulation, with a saturation pre-check ctrl */ + L_tmp0 = L_max(L_tmp0, (MIN_32 + 1)); + L_tmp0 = L_negate(L_tmp0); + + scale0 = norm_l(L_tmp0); + scale1 = norm_l(L_tmp1); + scale2 = norm_l(L_tmp2); + + L_tmp1 = L_shl_pos(L_tmp1, scale1); + L_tmp2 = L_shl_pos(L_tmp2, scale2); + L_prod = Mpy_32_32_lc3plus(L_tmp1, L_tmp2); /* neg * neg -> positive */ + shift = norm_l(L_prod); + L_prod = L_shl_pos(L_prod, shift); + prod_exp = sub(62, add(add(scale1, scale2), shift)); + L_inv = Isqrt_lc3plus(L_prod, &prod_exp); + + L_tmp0 = L_shl_pos(L_tmp0, scale0); + L_prod = Mpy_32_32_lc3plus(L_tmp0, L_inv); + prod_exp = add(sub(31, scale0), prod_exp); + + norm_corr = 32767; move16(); /* as close to 1.0 as possible in Q15 */ + if (L_tmp0 < 0) + { + norm_corr = -32768; move16(); /*-1.0*/ + } + + test(); + IF (L_prod == 0 || sub(norm_l(L_prod), prod_exp) >= 0) + { + norm_corr = round_fx_sat(L_shl_sat(L_prod, prod_exp)); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + return norm_corr; +} + +Word16 plc_xcorr_lc_fx( /* o: quantized output xcorr in Q15 [ 0 ..32767 ] = [0. 1.0[ */ + Word16 *pcmbuf_fx, /* i: NB should be an already dynamically upscaled pcm buffer with about + 0...1(2) bits margin */ + Word16 max_len_pcm_plc, /* i: Q0 physical size of pcmbuf_fx */ + Word16 pitch_int, /* i: Q0 in Fs, lag value to evaluate, corresponding to the current f0 in + pcm_buf_Fx */ + Word16 fs_idx /*i: */) +{ + Word16 *range1Ptr; + Word16 *range2Ptr; + Word16 corr_len_fx, inshift, l2_base_len, n_blocks, norm_xcorr_est_q, pcm_max_corr_len, max_corr_len; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("plc_xcorr_lc_fx", sizeof(struct { + Word16 *range1Ptr; + Word16 *range2Ptr; + Word16 corr_len_fx, inshift, l2_base_len, n_blocks, norm_xcorr_est_q, pcm_max_corr_len, max_corr_len; + })); +#endif + +#ifdef WMOPS + push_wmops("plc_xcorr_lc_fx"); +#endif + + norm_xcorr_est_q = 0; move16(); + + IF (pitch_int > 0) + { + pcm_max_corr_len = sub(max_len_pcm_plc, pitch_int); + + max_corr_len = rectLengthTab[fs_idx]; /* maximum 10 ms */ + max_corr_len = s_min(max_corr_len, pcm_max_corr_len); + + corr_len_fx = s_min(max_corr_len, pitch_int); + corr_len_fx = s_max(corr_len_fx, pitch_min_2[fs_idx]); /* at least 5 ms (=2*pitchmin*) corr length */ + + ASSERT(corr_len_fx >= (pitch_min_2[fs_idx])); /* at least 2 x pitch min(fs) */ + ASSERT(corr_len_fx <= (MAX_ACC_LEN * MAX_BLOCKS)); + ASSERT(corr_len_fx <= max_corr_len); + ASSERT( max_len_pcm_plc - corr_len_fx - pitch_int + 1 > 0 ); + + range1Ptr = &(pcmbuf_fx[max_len_pcm_plc]) - corr_len_fx; /* ptr setup, start of head section */ + range2Ptr = range1Ptr - pitch_int; /* ptr setup, history = tail - lag distance */ + + /* assume 32 bit acc of up to 32 values -> sum(over 32, x_up>>2 * y_up>>2) */ + inshift = 2; move16(); + l2_base_len = MIN_ACC_LEN_BITS; move16(); + n_blocks = shr(add(corr_len_fx, (1 << MIN_ACC_LEN_BITS) - 1), MIN_ACC_LEN_BITS); + + IF (sub(n_blocks, MAX_BLOCKS) > 0) + { /* shift to 32 bit acc of up to 128 values -> sum(over 128, x_up>>3 * y_up>>3) */ + inshift = 3; move16(); + l2_base_len = MAX_ACC_LEN_BITS; move16(); + n_blocks = shr(add(corr_len_fx, ((1 << MAX_ACC_LEN_BITS) - 1)), MAX_ACC_LEN_BITS); + } + + ASSERT(n_blocks <= MAX_BLOCKS); /* MAX_BLOCKS*(32 or 128) is max possible total corr_length */ + ASSERT(n_blocks > 0); + + /* subblock accumulation of corr and energies, to achieve high low level precision */ + norm_xcorr_est_q = + plc_norm_corr_blocks_fx(corr_len_fx, l2_base_len, n_blocks, inshift, range1Ptr, /* curr_frame */ + range2Ptr); /* pred_frame = curr_frame-lag, i.e historic section */ + + norm_xcorr_est_q = s_max(0, norm_xcorr_est_q); /* do not allow negative output values */ + } +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + return norm_xcorr_est_q; +} + + diff --git a/lib_lc3plus/pvq_dec_fx.c b/lib_lc3plus/pvq_dec_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..d77aae80964e4db1d7296152cdfe33165ed7880b --- /dev/null +++ b/lib_lc3plus/pvq_dec_fx.c @@ -0,0 +1,153 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +Word16 pvq_dec_deidx_fx( /* out BER detected 1 , ok==0 */ + Word16 * y, /* o: decoded vector (non-scaled int) */ + const Word16 k_val, /* i: number of allocated pulses */ + const Word16 dim, /* i: Length of vector */ + const Word16 LS_ind, /* i; lS index 1 bit */ + const UWord32 UL_MPVQ_ind /* i; MPVQ index */ +) +{ + Dyn_Mem_Deluxe_In( + Word16 BER_flag; + UWord32 h_mem[1 + KMAX_FX + 1]; + PvqEntry_fx entry; + ); + + BER_flag = 0; move16(); + + /* get_size will likely be called before this function, as the range decoder needs the size to fetch the index + */ + entry = get_size_mpvq_calc_offset_fx(dim, k_val, h_mem); /* TBD should be made into tables for N=16,10,6 */ + + entry.lead_sign_ind = LS_ind; move16(); + entry.index = L_deposit_l(0); /* only in case dim == 1 */ + IF (sub(dim, 1) != 0) + { + entry.index = UL_MPVQ_ind; + + /* safety check in case of bit errors */ + IF (L_sub(entry.index, entry.size) >= 0) + { + BER_flag = 1; move16(); + entry.index = 0; move16(); /* return something deterministic/valid, and LOW complex */ + } + } + mpvq_deindex_fx(&entry, h_mem, y); /* actual deindexing */ + + Dyn_Mem_Deluxe_Out(); + return BER_flag; +} + + + +#ifdef ENABLE_HR_MODE +void pvq_dec_scale_vec_fx(const Word32 *inQ29, Word16 adjGainQ13, Word32 *outQ) +#else +void pvq_dec_scale_vec_fx(const Word16 *inQ14, Word16 adjGainQ13, Word16 *outQ14) +#endif +{ + Dyn_Mem_Deluxe_In( + Counter i; + ); + FOR (i = 0; i < M; i++) + { +#ifdef ENABLE_HR_MODE + outQ[i] = L_shr(L_add(outQ[i], Mpy_32_16_lc3plus(inQ29[i], adjGainQ13)), 1); + move16(); +#else + outQ14[i] = add(outQ14[i], mult_r(adjGainQ13, inQ14[i])); move16(); +#endif + } + Dyn_Mem_Deluxe_Out(); +} + + +void pvq_dec_en1_normQ14_fx(/* Have to be used EXACTLY the same way in both both encoder and decoder */ +#ifdef ENABLE_HR_MODE + Word32 * xq, /* o: en1 normalized decoded vector (Q14) */ +#else + Word16 * xq, /* o: en1 normalized decoded vector (Q14) */ +#endif + const Word16 *y, /* i: decoded vector (non-scaled int) */ + const Word16 k_val_max, + /* i: max possible K in Q0 kO or kA */ /* OPT: not BE , use dynamic max pulse + amplitude */ + const Word16 dim /* i: Length of vector */ +) +{ +#ifdef ENABLE_HR_MODE + Dyn_Mem_Deluxe_In( + Counter i; + Word32 L_tmp; + Word16 shift_num, shift_tot; + Word32 isqrtQ31_local; + Word16 tmp, exp, exp_shift; + Word32 L_yy; + ); +#else + Dyn_Mem_Deluxe_In( + Counter i; + Word32 L_tmp; + Word16 shift_num, shift_tot; + Word16 isqrtQ16_local, tmp, exp, exp_shift; + Word32 L_yy; + ); +#endif + +/* energy normalization starts here */ + L_yy = L_mult0(y[0], y[0]); + FOR (i = 1; i < dim; i++) + { + L_yy = L_mac0(L_yy, y[i], y[i]); /* stay in Q0 */ /* OPT: reuse some energies from PVQ linear search */ + } + /* 16 bit */ + IF (L_sub(L_yy, SQRT_EN_MAX_FX) < 0) + { + ASSERT(L_yy > 4); /* Q16 isqrt table lookup not valid below 5 */ +#ifdef ENABLE_HR_MODE + isqrtQ31_local = isqrt_Q31tab[L_yy]; move16(); /* 1 cycle */ +#else + isqrtQ16_local = isqrt_Q16tab[L_yy]; move16(); /* 1 cycle */ +#endif + } + ELSE + { + /* about 8-9 cycles */ + exp = 15; move16(); /* set ISqrt16() exp_in to get delta exp out near 0 when Lyy is in Q0 */ + tmp = ISqrt16(extract_l(L_yy), + &exp); /* exp out is now a delta shift with a later tmp Q15 multiplication in mind */ +#ifdef ENABLE_HR_MODE + exp_shift = add(exp, 16); /* up to Q16 */ + isqrtQ31_local = L_shl(L_deposit_l(tmp), exp_shift); /* new mantissa in a fixed Q16 */ +#else + exp_shift = add(exp, 16 - 15); /* up to Q16 */ + isqrtQ16_local = shl(tmp, exp_shift); /* new mantissa in a fixed Q16 */ +#endif + } + + shift_num = norm_s(k_val_max); /* simply account for the preknown fixed max possible pulseamp in y */ + shift_tot = sub(14 - 1, shift_num); /* upshift to get to Q14 */ + FOR (i = 0; i < dim; i++) /* upshifted y[i] used */ + { +#ifdef ENABLE_HR_MODE + L_tmp = Mpy_32_16_lc3plus(isqrtQ31_local, shl_pos(y[i], shift_num)); /* Q(16+0+shift_num +1 = shift_num+1 */ + xq[i] = L_shl(L_tmp, shift_tot + 1); move32(); /* Q30 , */ +#else + L_tmp = L_mult(isqrtQ16_local, shl_pos(y[i], shift_num)); /* Q(16+0+shift_num +1 = shift_num+1 */ + xq[i] = round_fx(L_shl(L_tmp, shift_tot)); move16(); /* Q14 , */ +#endif + } + + Dyn_Mem_Deluxe_Out(); +} + diff --git a/lib_lc3plus/pvq_enc_fx.c b/lib_lc3plus/pvq_enc_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..b41d5ad0e50bcdb35dd1d739260452de07efed07 --- /dev/null +++ b/lib_lc3plus/pvq_enc_fx.c @@ -0,0 +1,369 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +static void pvq_pyr_project(const Word16 dim_proj, /* end vector dimension+1 */ + const Word16 *xabs, /* absolute vector values */ + Word32 L_xsum, /* absolute vector sum over dim */ + Word16 num, /* target number of pulses */ + Word16 * y, /* projected output vector */ + Word16 *pulse_tot_ptr, Word32 *L_xy_ptr, /* accumulated correlation Q(in+0+1) = Qin+1 */ + Word32 *L_yy_ptr /* accumulated energy Q0 */ +) +{ + + Dyn_Mem_Deluxe_In( + Counter i; + Word32 L_tmp, L_num; + Word16 den, shift_num, shift_den, shift_delta, proj_fac; + ); + + *pulse_tot_ptr = 0; move16(); + *L_xy_ptr = L_deposit_l(0); + *L_yy_ptr = L_deposit_l(0); + + shift_den = norm_l(L_xsum); /* x_sum input Qin */ + den = extract_h(L_shl_pos(L_xsum, shift_den)); /* now in Qin+shift_den */ + + L_num = L_deposit_l(num); + shift_num = sub(norm_l(L_num), 1); + L_num = L_shl_pos(L_num, shift_num); /* now in Q0 +shift_num -1 */ + proj_fac = div_l(L_num, den); /* L_num always has to be less than den<<16 , norm_l-1 makes that happen */ + + shift_delta = sub(shift_num, shift_den); + FOR (i = 0; i < dim_proj; i++) + { + L_tmp = L_mult(proj_fac, xabs[i]); /* Q shift_delta + PVQ_SEARCH_QIN */ + y[i] = extract_h(L_shr(L_tmp, shift_delta)); move16(); /* to Q0 with floor , and potential sturation */ + ; + + *pulse_tot_ptr = add(*pulse_tot_ptr, y[i]); /* Q0 */ + *L_yy_ptr = L_mac0(*L_yy_ptr, y[i], y[i]); /* Energy, Q0 */ + *L_xy_ptr = L_mac(*L_xy_ptr, xabs[i], y[i]); /* Corr, Q0*Q12 +1 --> Q13 */ + } + + Dyn_Mem_Deluxe_Out(); +} + + +static __forceinline Word16 one_pulse_search(const Word16 dim_start, /* start vector dimension */ + const Word16 dim_end, /* end vector dimension+1 */ + const Word16 *x_abs, /* absolute vector values */ + Word16 * y, /* output vector */ + Word16 * pulse_tot_ptr, + Word32 * L_xy_ptr, /* accumulated correlation Q(12+0+1) = Q13 */ + Word32 * L_yy_ptr, /* accumulated energy Q0 */ + Word16 max_xabs) /* current max amplitude for target */ +{ + Dyn_Mem_Deluxe_In( + Counter i; + Word16 corr_tmp, corr_sq_tmp, en_max_den, cmax_num, en_tmp; + Word32 L_tmp_en_lc, L_tmp_corr; + Word16 corr_up_shift, imax; + ); + + /* maximize correlation precision, prior to every unit pulse addition in the vector */ + corr_up_shift = norm_l(L_mac(*L_xy_ptr, 1, max_xabs)); /* pre analyze worst case L_xy update in the dim loop */ + imax = -1; /* not needed for search, only added to avoid compiler warning */ + { + en_max_den = 0; move16(); + cmax_num = -1; move16(); /* req. to force a 1st update for n==dim_start */ + + FOR (i = dim_start; i < dim_end; i++) + { + L_tmp_corr = L_shl_pos(L_mac(*L_xy_ptr, 1, x_abs[i]), corr_up_shift); /* actual in-loop target value */ + + corr_tmp = round_fx_sat(L_tmp_corr); + + corr_sq_tmp = mult(corr_tmp, corr_tmp); /* CorrSq_tmp for a 16bit low complexity cross multiplication */ + + L_tmp_en_lc = L_mac(*L_yy_ptr, 1, y[i]); /*Q0 x^2+ 2x , "+1" added once before loop , result , energy may + span up to ~14+1(Q1)+1(sign)=16 bits */ + /* extract_l without shift can always be used for this section as energy is guaranteed to stay in the lower + * word*/ + + en_tmp = extract_l(L_tmp_en_lc); /* L_shl + round_fx could also be used also but then adds an uphift cost */ + + /* 16/32 bit comparison WC (4 +1+1 + (1+1+1) = 9 */ + IF (L_msu(L_mult(corr_sq_tmp, en_max_den), cmax_num, en_tmp) > 0) /* use L_mult and then a L_msu */ + { + cmax_num = corr_sq_tmp; move16(); + en_max_den = en_tmp; move16(); + imax = i; move16(); + } + } /* dim */ + } + + + /* finally add found unit pulse contribution to past L_xy, Lyy, for next pulse loop */ + *L_xy_ptr = L_mac(*L_xy_ptr, x_abs[imax], 1); /* Qin+1 */ + *L_yy_ptr = L_mac(*L_yy_ptr, 1, y[imax]); + + y[imax] = add(y[imax], 1); move16(); /* Q0 added pulse */ + (*pulse_tot_ptr) = add((*pulse_tot_ptr), 1); /* increment total pulse sum */ + Dyn_Mem_Deluxe_Out(); + return imax; +} + + +void pvq_enc_search_fx( + const Word16 *x, /* i: target vector to quantize Qin */ + Word16 * y_far, /* o: outl_far o, raw pulses (non-scaled short) Q0 , length dim */ + Word16 * y, /* o: outl_near o, raw pulses (non-scaled short) Q0 , length dim */ + Word16 * yA, /* o: A section raw pulses (non-scaled short) Q0 , length dimA */ + Word16 * yB, /* o: B section raw pulses (non-scaled short) Q0 , length dim-dimA */ + Word32 * L_corr, /* o: 4 un-normalized correlation sums for outl_far, outl_near, A, AB */ + Word32 * L_search_en, /* o: 4 energy sums for outl_far, outl_near, A, AB */ + Word16 * pulses_fin, /* i: number of allocated pulses to outl_far, outl_near , A, AB sections */ + Word16 * pulses_proj, /* i: number of projection pulses for outl_far, outl_near, A, AB */ + + const Word16 dim, /* i: Length of outlier vector */ + const Word16 dimA /* i: Length of vector A section */ +) +{ + + Dyn_Mem_Deluxe_In( + Counter i; + Word16 pulse_tot_far, pulse_tot, pulse_totA, pulse_totB; + Word16 xabs[PVQ_MAX_VEC_SIZE]; + Word16 max_xabs, max_xabsA, max_xabsB; + Word32 L_xsum, L_xsumA; + Word32 L_yy, L_xy; + Word16 imax; + Counter k; + Word16 dim_m1; + Word16 dimB; + const Word16 *xBptr; + Word16 pulses_far, pulses, pulsesA, pulsesB; + ); + +#ifdef WMOPS + push_wmops("pvq_enc_search_fx"); +#endif + + pulses_far = pulses_fin[0]; move16(); + pulses = pulses_fin[1]; move16(); + pulsesA = pulses_fin[2]; move16(); + pulsesB = pulses_fin[3]; move16(); + + FOR (i = 0; i < N_SCF_SHAPES_ST2; i++) + { + L_corr[i] = L_deposit_l(0); + L_search_en[i] = L_deposit_l(0); + } + + dimB = sub(dim, dimA); + + L_xsum = L_deposit_h(0); + + max_xabs = -1; move16(); + max_xabsA = -1; move16(); + max_xabsB = -1; move16(); + FOR (i = 0; i < dimA; i++) + { + xabs[i] = abs_s(x[i]); move16(); /* Qx */ + max_xabsA = s_max(max_xabsA, xabs[i]); /* for efficient search correlation scaling */ + L_xsum = L_mac0(L_xsum, 1, xabs[i]); /* stay in Qx */ + } + + basop_memset(y_far, 0, dim * sizeof(Word16)); + basop_memset(y, 0, dimA * sizeof(Word16)); + basop_memset(yA, 0, dimA * sizeof(Word16)); + + L_xsumA = L_add(L_xsum, 0); /* save for section A projection */ + + FOR (i = dimA; i < dim; i++) + { + xabs[i] = abs_s(x[i]); move16(); /* Qx */ + max_xabsB = s_max(max_xabsB, xabs[i]); /* for efficient search correlation scaling */ + L_xsum = L_mac0(L_xsum, 1, xabs[i]); /* stay in Qx */ + } + + basop_memset(&y[dimA], 0, (dim - dimA) * sizeof(Word16)); + + basop_memset(yB, 0, dimB * sizeof(Word16)); + + max_xabs = s_max(max_xabsA, max_xabsB); /* global max abs value */ + + test(); + IF (L_xsum == 0) + { /* no shape in any section, projection in outl_far, outl_near, A, AB not possible, any search meaningless */ + + dim_m1 = sub(dim, 1); + y_far[0] = shr_pos(pulses_far, 1); move16(); + y_far[dim_m1] = add(y_far[dim_m1], sub(pulses_far, y_far[0])); move16(); + + dim_m1 = sub(dim, 1); + y[0] = shr_pos(pulses, 1); move16(); + y[dim_m1] = add(y[dim_m1], sub(pulses, y[0])); move16(); + + dim_m1 = sub(dimA, 1); + yA[0] = shr_pos(pulsesA, 1); move16(); + yA[dim_m1] = add(yA[dim_m1], sub(pulsesA, yA[0])); move16(); + + dim_m1 = sub(dimB, 1); + yB[0] = shr_pos(pulsesB, 1); move16(); + yB[dim_m1] = add(yB[dim_m1], sub(pulsesB, yB[0])); move16(); + } + ELSE + { + ASSERT(pulses_proj[0] > 0); + ASSERT(L_xsum > 0); + + pvq_pyr_project(dim, xabs, L_xsum, pulses_proj[0], y_far, &pulse_tot_far, &L_xy, + &L_yy); /* outlier submode projection */ + + ASSERT(pulses_far <= 127); + FOR (k = pulse_tot_far; k < pulses_far; k++) + { + L_yy = L_add(L_yy, 1); /* pre add 1 in Q0 in L_yyQ0 = (x^2 + 2*x + 1) */ + imax = one_pulse_search(0, dim, xabs, y_far, &pulse_tot_far, &L_xy, &L_yy, max_xabs); + } + ASSERT(pulse_tot_far == pulses_far); + /* outlier far submode result vector in y_far[0...15] */ + L_corr[0] = L_shr_pos(L_xy, 1); /* to Qin*Q0 */ + + basop_memmove(y, y_far, dim * sizeof(Word16)); /*y_far->y */ + + pulse_tot = pulse_tot_far; move16(); + + ASSERT(pulses <= 127); + FOR (k = pulse_tot; k < pulses; k++) + { + L_yy = L_add(L_yy, 1); /* pre add 1 in Q0 in L_yyQ0 = (x^2 + 2*x + 1) */ + imax = one_pulse_search(0, dim, xabs, y, &pulse_tot, &L_xy, &L_yy, max_xabs); + } + + /* outlier near submode result vector in y[0...15] */ + L_corr[1] = L_shr_pos(L_xy, 1); /* to Qin*Q0 */ + + ASSERT(pulse_tot == pulses); + + IF (L_xsumA == 0) + { + /* no shape in A section, projection in A not possible, search meaningless */ + dim_m1 = sub(dimA, 1); + yA[0] = shr_pos(pulsesA, 1); move16(); + yA[dim_m1] = add(yA[dim_m1], sub(pulsesA, yA[0])); move16(); + } + ELSE + { + IF (pulses_proj[2] != 0) /* fixed setup if bitrate is fixed */ + { + ASSERT(pulses_proj[2] > 0); + ASSERT(L_xsumA > 0); + pvq_pyr_project(dimA, xabs, L_xsumA, pulses_proj[2], yA, &pulse_totA, &L_xy, + &L_yy); /* section A , in submode 1 projection */ + } + ELSE + { + /* default, otherwise recalculate A from outlier result (to remove any section B pulses influence) + */ + pulse_totA = 0; move16(); + L_xy = L_deposit_l(0); + L_yy = L_deposit_l(0); + + basop_memmove(yA, y, dimA * sizeof(Word16)); + FOR (i = 0; i < dimA; i++) + { + pulse_totA = add(pulse_totA, yA[i]); /* Q0 */ + L_xy = L_mac(L_xy, xabs[i], yA[i]); /* Corr, Q0*Q12 +1 --> Q13 */ + L_yy = L_mac(L_yy, yA[i], yA[i]); /* Energy, Q(0+0)+1)= Q1 */ + } + L_yy = L_shr_pos(L_yy, 1); /* En to Q0 */ + } + + /* search remaining pulses in regular section A */ + FOR (k = pulse_totA; k < pulsesA; k++) + { + L_yy = L_add(L_yy, 1); /* 1 added in Q0 */ + imax = one_pulse_search(0, dimA, xabs, yA, &pulse_totA, &L_xy, &L_yy, max_xabsA); + } + ASSERT(pulse_totA == pulsesA); + } /* L_xsumA!=0 */ + + /* reg Set A result vector now in yA[0...9] */ + L_corr[2] = L_shr_pos(L_xy, 1); /* to Qin*Q0 */ + + /* search remaining pulses in regular section B, even if energy in B is zero */ + ASSERT(pulses_proj[3] == 0); + pulse_totB = 0; move16(); + + IF (sub(pulsesB, 1) == 0) + { /* LC search, sufficient to find a single max, as pulses can not be stacked, when nb-pulses==1 */ + imax = 0; move16(); /* safety */ + FOR (i = dimA; i < dim; i++) + { + if (xabs[i] == max_xabsB) + { + imax = sub(i, dimA); + } + } + pulse_totB = 1; move16(); + yB[imax] = 1; move16(); /* reg set B result vector in yB[0...5] */ + L_xy = L_mac(L_xy, xabs[add(imax, dimA)], 1); /* calc total corr for A+B sections */ + L_yy = L_add(L_yy, 1); + } + ELSE + { /* more than one target pulse in section B */ + /* keep A pulses influence, search section B pulses influence */ + FOR (k = pulse_totB; k < pulsesB; k++) + { + L_yy = L_add(L_yy, 1); /* 1 added in Q0*/ + imax = one_pulse_search(dimA, dim, xabs, &(yB[-dimA]), &pulse_totB, &L_xy, &L_yy, max_xabsB); + } + } + + L_corr[3] = L_shr_pos(L_xy, 1); move32(); /* to Qin*Q0 , corr of combined A and B */ + + ASSERT(pulse_totB == pulsesB); + /* reg set B result vector now in yB[0...5] */ + } /* L_xsum != 0 */ + +/* apply sign of (x) to first orthant result */ + FOR (i = 0; i < dim; i++) + { + if (x[i] < 0) + { + y_far[i] = negate(y_far[i]); /* apply sign for outlier far */ + } + } + + FOR (i = 0; i < dim; i++) + { + if (x[i] < 0) + { + y[i] = negate(y[i]); /* apply sign for outliers near */ + } + } + + xBptr = &(x[dimA]); move32(); /* ptr init to B target section */ + FOR (i = 0; i < dimA; i++) + { + if (x[i] < 0) + { + yA[i] = negate(yA[i]); /* apply sign in N_SETA */ + } + } + + FOR (i = 0; i < (dimB); i++) + { + if (xBptr[i] < 0) + { + yB[i] = negate(yB[i]); /* apply sign in N_SETB */ + } + } + + Dyn_Mem_Deluxe_Out(); +#ifdef WMOPS + pop_wmops(); +#endif +} + diff --git a/lib_lc3plus/pvq_index_fx.c b/lib_lc3plus/pvq_index_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..966dd7d138538d320d139ada03d6ae8b41aef721 --- /dev/null +++ b/lib_lc3plus/pvq_index_fx.c @@ -0,0 +1,513 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +#define SIGNBIT_FX 0x80000000u +#define SIGNBIT_SHRT_FX 0x8000 + +static void initOffsets_fx(Word16 dim_in, UWord32 *h_mem, + Word16 k_val_in) /* may be removed with tables for N=16,10,6 */ +{ + UWord32 k_val_prev, k_val_curr; + UWord32 k_val, UL_k_val_in; +#ifdef DYNMEM_COUNT + Dyn_Mem_In("initOffsets_fx", sizeof(struct { + UWord32 k_val_prev, k_val_curr; + UWord32 k_val, UL_k_val_in; + })); +#endif + + h_mem[0] = UL_deposit_l(0); + h_mem[1] = UL_deposit_l(1); + + UL_k_val_in = UL_deposit_l(k_val_in); + IF (sub(dim_in, 2) == 0) + { + FOR (k_val = 2; k_val <= UL_k_val_in; k_val++) + { + h_mem[k_val] = UL_subNsD(UL_lshl(k_val, 1), 1U); move32(); + } + h_mem[k_val] = UL_k_val_in; move32(); + } + ELSE + { + k_val_prev = UL_deposit_l(1U); + FOR (k_val_curr = 2; k_val_curr <= UL_k_val_in; k_val_curr++) + { + h_mem[k_val_curr] = UL_addNsD(1U, UL_Mpy_32_32(k_val_curr, UL_lshl(k_val_prev, 1))); move32(); + k_val_prev = UL_addNsD(k_val_curr, 0U); + } + h_mem[k_val_curr] = UL_Mpy_32_32(k_val_curr, k_val_prev); move32(); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +static void a_fwd_fx(UWord32 *a_in, /* i/o: offsets */ + Word16 n_items /* i : items, k's */ +) +{ + UWord32 a_1, a_in0; + Counter i; + UWord32 *a_in_prev_ptr; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("a_fwd_fx", sizeof(struct { + UWord32 a_1, a_in0; + Counter i; + UWord32 *a_in_prev_ptr; + })); +#endif + + a_in0 = UL_deposit_l(1); + + a_in_prev_ptr = &(a_in[-1]); + FOR (i = 1; i <= n_items; i++) + { + a_1 = UL_addNsD(a_in0, UL_addNsD(a_in_prev_ptr[i], a_in[i])); + a_in_prev_ptr[i] = a_in0; move32(); + a_in0 = UL_addNsD(a_1, 0U); + } + a_in_prev_ptr[i] = a_in0; move32(); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +static void a_bwd_fx(UWord32 *a_in, /* i/o: offsets */ + Word16 n_items /* i: n_items */ +) +{ + UWord32 a_1, a_in0; + Counter i; + UWord32 *a_in_prev_ptr; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("a_bwd_fx", sizeof(struct { + UWord32 a_1, a_in0; + Counter i; + UWord32 *a_in_prev_ptr; + })); +#endif + + a_in0 = UL_deposit_l(0); + a_in_prev_ptr = &(a_in[-1]); + + FOR (i = 1; i <= n_items; i++) + { + a_1 = UL_subNsD(UL_subNsD(a_in[i], a_in0), a_in_prev_ptr[i]); + a_in_prev_ptr[i] = a_in0; move32(); + a_in0 = UL_addNsD(a_1, 0U); + } + a_in_prev_ptr[i] = a_in0; move32(); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +static void a_u_fwd_fx(UWord32 *a_u_in, Word16 k_val_in, Word16 mem_size_m1) +{ + UWord32 u_kp1_prev, u_kp1; + UWord32 u_k_prev; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("a_u_fwd_fx", sizeof(struct { + UWord32 u_kp1_prev, u_kp1; + UWord32 u_k_prev; + })); +#endif + + u_kp1_prev = a_u_in[mem_size_m1]; move32(); + u_k_prev = UL_lshr(a_u_in[k_val_in], 1); + + a_fwd_fx(&a_u_in[1], k_val_in); + + u_kp1 = UL_lshr(a_u_in[k_val_in], 1); + a_u_in[mem_size_m1] = UL_addNsD(1U, UL_addNsD(u_kp1_prev, UL_addNsD(u_k_prev, u_kp1))); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +static Word16 get_lead_sign_fx(UWord32 *ind) +{ + Word16 leading_sign; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("get_lead_sign_fx", sizeof(struct { Word16 leading_sign; })); +#endif + + leading_sign = 1; move16(); + if (UL_and(*ind, 1) != 0) + { + leading_sign = -1; move16(); + } + (*ind) = UL_lshr(*ind, 1); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif + + return leading_sign; +} + +/*-------------------------------------------------------------------* + * mind2vec_one_fx() + *-------------------------------------------------------------------*/ +static void mind2vec_one_fx(Word16 k_val_in, /* i: nb unit pulses , [ 0...K_MAX ] */ + Word16 leading_sign, /* i: leading sign -1, 0, 1*/ + UWord32 ind, /* i: index */ /* parameter could be omitted */ + Word16 *vec_out /* o: pulse train */ +) +{ + *vec_out = (Word16)ind; /* dummy assignment to handle the common ind parameter warning */ + + if (leading_sign < 0) + { + k_val_in = negate(k_val_in); + } + *vec_out = k_val_in; move16(); +} + +static Word16 setval_update_sign_fx(Word16 k_delta, Word16 k_max_local, Word16 *leading_sign, UWord32 *ind_in, + Word16 *vec_out) +{ + IF (k_delta != 0) + { + mind2vec_one_fx(k_delta, *leading_sign, *ind_in, vec_out); + *leading_sign = get_lead_sign_fx(ind_in); + k_max_local = sub(k_max_local, k_delta); + } + return k_max_local; +} + +/*-------------------------------------------------------------------* + * mind2vec_fx() + *-------------------------------------------------------------------*/ +static void mind2vec_fx(Word16 dim_in, /* i: dimension */ + Word16 k_max_local, /* i: nb unit pulses */ + Word16 leading_sign, /* i: leading sign */ + UWord32 ind, /* i: index */ + Word16 * vec_out, /* o: pulse train */ + UWord32 *h_in /* i: offset vector A=1+2U */ +) +{ + Counter pos; + Word16 k_acc, k_delta; + UWord32 UL_tmp_offset, UL_diff; + UWord16 sgn; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("mind2vec_fx", sizeof(struct { + Counter pos; + Word16 k_acc, k_delta; + UWord32 UL_tmp_offset, UL_diff; + UWord16 sgn; + })); +#endif + + k_acc = k_max_local; move16(); + FOR (pos = 0; pos < dim_in; pos++) + { + + IF (ind != 0) + { + + k_acc = k_max_local; move16(); + + UL_tmp_offset = UL_addNsD(h_in[k_acc], 0U); + + UL_diff = UL_subNs(ind, UL_tmp_offset, &sgn); + + WHILE (sgn) + { + UL_diff = UL_subNs(ind, h_in[--k_acc], &sgn); + } + + ind = UL_addNsD(UL_diff, 0U); + + k_delta = sub(k_max_local, k_acc); + } + ELSE + { + mind2vec_one_fx(k_max_local, leading_sign, ind, &vec_out[pos]); + BREAK; + } + + k_max_local = setval_update_sign_fx(k_delta, k_max_local, &leading_sign, &ind, &vec_out[pos]); + + a_bwd_fx(h_in, add(k_max_local, 1)); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +PvqEntry_fx get_size_mpvq_calc_offset_fx( /* o : size, dim, k_val */ + Word16 dim_in, /* i : dimension */ + Word16 k_val_in, /* i : nb unit pulses */ + UWord32 *h_mem /* o : offsets */ +) +{ + Counter i; + PvqEntry_fx entry; + Word16 kp1; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("get_size_mpvq_calc_offset_fx", sizeof(struct { + Counter i; + PvqEntry_fx entry; + Word16 kp1; + })); +#endif + + entry.dim = dim_in; move16(); + entry.k_val = k_val_in; move16(); + + entry.index = L_deposit_l(0); + entry.lead_sign_ind = 0; move16(); + + ASSERT(dim_in <= M); + ASSERT(tabledKMAX[dim_in] != 0); + + /* tabled values for worst case K */ /* made into table lookup for N=16, 10, 6 */ + kp1 = add(k_val_in, 1); + FOR (i = 0; i <= kp1; i++) /* A+U copying */ + { + h_mem[i] = + UL_addNsD(MPVQ_offs_ptr[dim_in][i], 0U); /* a vector copying is needed as MPVQ recursion is in place */ + } + /* special handling of last U offset in k+1 column */ + if (sub(k_val_in, tabledKMAX[dim_in]) != 0) + { + h_mem[kp1] = UL_lshr(h_mem[kp1], 1); /* (A+1)/2 , convert from A(K+1) to U(K+1) domain */ + } + entry.size = + UL_addNsD(1U, UL_addNsD(h_mem[kp1], UL_lshr(h_mem[k_val_in], 1))); /* MPVQ size calc. 1 + H(K+1) + (A(K)>>1) */ + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif + + return entry; +} + +/*-------------------------------------------------------------------* + * mpvq_deindex_fx() + *-------------------------------------------------------------------*/ +void mpvq_deindex_fx( /* o : void */ + const PvqEntry_fx *entry, /* i : sign_ind, index, dim, k_val */ + UWord32 * h_mem, /* i : A/U offsets */ + Word16 * vec_out /* o : pulse train */ +) +{ + Word16 leading_sign; +#ifdef DYNMEM_COUNT + Dyn_Mem_In("mpvq_deindex_fx", sizeof(struct { Word16 leading_sign; })); +#endif +#ifdef WMOPS + push_wmops("mpvq_deindex_fx"); +#endif + + basop_memset(vec_out, 0, (entry->dim) * sizeof(Word16)); + + leading_sign = 1; move16(); + if (entry->lead_sign_ind != 0) + { + leading_sign = -1; move16(); + } + + IF (entry->k_val != 0) + { + mind2vec_fx(entry->dim, entry->k_val, leading_sign, entry->index, vec_out, h_mem); + } +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif +} + +/*-------------------------------------------------------------------* + * vec2mind_two_fx() + *-------------------------------------------------------------------*/ +static void vec2mind_two_fx(const Word16 *vec_in, /* i : PVQ pulse train */ + Word16 * k_val_out_ptr, /* o : number of unit pulses */ + UWord32 * next_sign_ind, /* i/o: next sign ind */ + UWord32 * ind /* o: MPVQ index */ +) +{ + UWord32 lead_sign_ind_add; + Word16 abs0, abs1, abs01, sptr; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("vec2mind_two_fx", sizeof(struct { + UWord32 lead_sign_ind_add; + Word16 abs0, abs1, abs01, sptr; + })); +#endif + + abs0 = abs_s(vec_in[0]); + abs1 = abs_s(vec_in[1]); + abs01 = add(abs0, abs1); + *k_val_out_ptr = abs01; move16(); + *ind = UL_deposit_l(0); + + *next_sign_ind = UL_deposit_h(SIGNBIT_SHRT_FX); + + IF (abs01 != 0) + { + sptr = 0; move16(); + *next_sign_ind = UL_deposit_l(sptr); + + test(); + IF (abs0 != 0 && abs1 != 0) + { + lead_sign_ind_add = UL_deposit_l(1); + if (vec_in[1] < 0) + { + lead_sign_ind_add = UL_deposit_l(2); + } + *ind = UL_addNsD(UL_deposit_l((UWord16)lshl(sub(abs1, 1), 1)), lead_sign_ind_add); + } + ELSE + { + IF (abs0 == 0) + { + *ind = UL_deposit_l((UWord16)sub(lshl(abs1, 1), 1)); + sptr = 1; move16(); + } + } + + if (vec_in[sptr] < 0) + { + *next_sign_ind = UL_deposit_l(1); + } + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +static void enc_push_sign(Word16 val, UWord32 *next_sign_ind, UWord32 *index) +{ + test(); + IF ((UL_and(*next_sign_ind, SIGNBIT_FX) == 0) && (val != 0)) + { + *index = UL_addNsD(UL_lshl(*index, 1), *next_sign_ind); + } + if (val < 0) + { + *next_sign_ind = UL_deposit_l(1); + } + if (val > 0) + { + *next_sign_ind = UL_deposit_l(0); + } +} + +static void vec2mind_fx(Word16 dim_in, /* i : dim */ + Word16 k_val_in, /* i : number of unit pulses */ + const Word16 *vec_in, /* i : PVQ pulse train */ + UWord32 * next_sign_ind, /* o : pushed leading sign */ + UWord32 * index, /* o : MPVQ index */ + UWord32 * N_MPVQ_ptr, /* o : size(N_MPVQ(dim,K_val_in))*/ + UWord32 * h_mem) /* o : offsets */ +{ + Counter pos; + Word16 mem_size_m1, k_val_acc, tmp_val; + UWord32 tmp_h; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("vec2mind_fx", sizeof(struct { + Counter pos; + Word16 mem_size_m1, k_val_acc, tmp_val; + UWord32 tmp_h; + })); +#endif + + mem_size_m1 = add(k_val_in, 1); + *next_sign_ind = UL_deposit_h(SIGNBIT_SHRT_FX); + + pos = sub(dim_in, 2); + vec2mind_two_fx(&vec_in[pos], &k_val_acc, next_sign_ind, index); + initOffsets_fx(3, h_mem, k_val_in); + + tmp_h = h_mem[k_val_acc]; move32(); + FOR (pos--; pos >= 0; pos--) + { + tmp_val = vec_in[pos]; move16(); + enc_push_sign(tmp_val, next_sign_ind, index); + + *index = UL_addNsD(*index, tmp_h); + + k_val_acc = add(k_val_acc, abs_s(tmp_val)); + + IF (pos != 0) + { + a_u_fwd_fx(h_mem, k_val_in, mem_size_m1); + } + tmp_h = UL_addNsD(h_mem[k_val_acc], 0U); + } + *N_MPVQ_ptr = UL_addNsD(1U, UL_addNsD(UL_lshr(tmp_h, 1), h_mem[mem_size_m1])); move32(); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +PvqEntry_fx mpvq_index_fx( /* o : leading_sign_index, index, size, k_val */ + const Word16 *vec_in, /* i : signed pulse train */ + Word16 dim_in, /* i : dimension */ + Word16 k_val_local /* i : nb unit pulses */ +) +{ + PvqEntry_fx result; + UWord32 h_mem[1 + KMAX_FX + 1]; + UWord32 lead_sign_ind; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("mpvq_index_fx", sizeof(struct { + PvqEntry_fx result; + UWord32 h_mem[1 + KMAX_FX + 1]; + UWord32 lead_sign_ind; + })); +#endif +#ifdef WMOPS + push_wmops("mpvq_index_fx"); +#endif + + ASSERT(k_val_local <= KMAX_FX); + + result.k_val = k_val_local; move16(); + result.dim = dim_in; move16(); + + vec2mind_fx(dim_in, k_val_local, vec_in, &lead_sign_ind, &result.index, &result.size, h_mem); + + result.lead_sign_ind = u_extract_l(lead_sign_ind); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +#ifdef WMOPS + pop_wmops(); +#endif + + return result; +} + diff --git a/lib_lc3plus/quantize_spec_fx.c b/lib_lc3plus/quantize_spec_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..4667cf14639a9694b3c0e96fba394a7a97f804ff --- /dev/null +++ b/lib_lc3plus/quantize_spec_fx.c @@ -0,0 +1,1167 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +# ifdef ENABLE_HR_MODE +void processQuantizeSpec_fx(Word32 x[], Word16 x_e, Word32 gain, Word16 gain_e, Word32 xq[], Word16 nt, Word16 target, + Word16 totalBits, Word16 *nBits, Word16 *nBits2, Word16 fs_idx, Word16 *lastnzout, + Word16 *codingdata, Word16 *lsbMode, Word16 mode, Word16 hrmode) +{ + + Word32 a1, b1, a1_i, b1_i; + Word16 t, lev1; + Word16 lastnz, lastnz2; + Word16 rateFlag; + Word32 nbits32, nbits232, target32; + Word16 nt_half; + Word32 c, ab_max, msb, a1_msb, b1_msb; + Word16 levmax; + Word16 s; + Word16 totBits, nbits_lsb; + Counter k, lev; + Word16 maxlevs; +# ifndef FUNCTION_quantizeSpec_func1 + Word16 tmp16; + Word32 offs32; + Counter i; +# else + Word32 ARM_params[3]; +# endif + +# ifdef DYNMEM_COUNT + Dyn_Mem_In("processQuantizeSpec_fx", sizeof(struct { + Word32 a1, b1, a1_i, b1_i, ab_max, c; + Word16 t, lev1; + Word16 lastnz, lastnz2; + Word16 rateFlag; + Word32 nbits32, nbits232; + Word16 nt_half; + Word16 msb, a1_msb, b1_msb, levmax; + Counter k, lev, i; + Word16 s; + Word16 tmp16; + Word32 offs32, target32; + Word16 totBits, nbits_lsb; + Word16 maxlevs; + })); +# endif + + assert(target >= 0); + + /* Quantization */ + gain = invFixp(gain, &gain_e); + + maxlevs = 21; + IF (hrmode) + { + s = sub(add(x_e, gain_e), 23); + s = s_min(s, 31); +# ifdef FUNCTION_quantizeSpec_func1 + ARM_params[0] = gain; + ARM_params[1] = s; + + quantizeSpec_func1_hr_ip(xq, x, nt, ARM_params); +# else + IF(s > 4) + { + s = sub(s, 4); /* Use extra bits of precision for fine calculation */ + FOR(i = 0; i < nt; i++) + { + offs32 = Mpy_32_32_lc3plus(L_shl_pos(x[i], s), gain); /* multiply */ + xq[i] = L_shr_r_pos(offs32, 4); /* Convert to Q0 with rounding */ + /* rounding is the equivalent of adding 0.5, which is the offset in hrmode */ + + move32(); + } + } + ELSE + { + FOR(i = 0; i < nt; i++) + { + offs32 = Mpy_32_32_lc3plus(x[i], gain); /* multiply */ + offs32 = L_shl(offs32, s); /* convert to 23Q8 */ + xq[i] = L_shr_r_pos(offs32, 8); /* Convert to Q0 with rounding */ + /* rounding is the equivalent of adding 0.5, which is the offset in hrmode */ + + move32(); + } + } +# endif /* FUNCTION_quantizeSpec_func1 */ + } + ELSE + { + s = sub(add(x_e, gain_e), 15); + s = s_max(s_min(s, 15), -15); +# ifdef FUNCTION_quantizeSpec_func1 + ARM_params[0] = gain; + ARM_params[1] = s; + ARM_params[2] = -4096; + quantizeSpec_func1_ip(xq, x, nt, ARM_params); +# else + FOR (i = 0; i < nt; i++) + { + offs32 = Mpy_32_32_lc3plus(L_abs(x[i]), gain); /* multiply */ + offs32 = L_shl(offs32, s); /* convert to 15Q16 */ + tmp16 = mac_r(offs32, -4096, 1); /* add offset and truncate */ + + if (x[i] < 0) + tmp16 = negate(tmp16); /* restore sign */ + + /* Normal quantization: xq[i] = x[i] / gg + sign(x[i]) * 0.375 + quant_offset is -0.125 in Q15 and round adds 0.5 in Q16. Hence + mac_r results in abs(x[i])/gain - 0.125 + 0.5 = abs(x[i])/gain + 0.375. + Due to the abs and negate combination this achieves the same result + as spec. + */ + + xq[i] = tmp16; + move16(); + } +# endif /* FUNCTION_quantizeSpec_func1 */ + } + /* Rate flag */ + rateFlag = 0; + move16(); + if (fs_idx != 5) + { + if (sub(totalBits, add(160, DEPR_i_mult(fs_idx, 160))) > 0) + { + rateFlag = 2 << NBITS_CONTEXT; + move16(); + } + } + + /* Init */ + nt_half = shr_pos(nt, 1); + c = 0; + move16(); + t = 0; + move16(); + a1_i = 0; + move16(); + b1_i = 1; + move16(); + target32 = L_shl_pos(L_deposit_l(target), SYM_BITS_Q); + nbits32 = L_negate(target32); + nbits232 = 0; + move32(); + nbits_lsb = 0; + move16(); + + if (fs_idx != 5) + { + IF (mode == 0 && sub(totalBits, add(480, DEPR_i_mult(fs_idx, 160))) >= 0) + { + mode = 1; + move16(); + } + } + + /* Find last non-zero tuple */ + lastnz = find_last_nz_pair(xq, nt); + IF (mode >= 0) + { + lastnz2 = 2; + } + ELSE + { + lastnz2 = lastnz; + } + + IF (mode < 0) + { + /* Main Loop through the 2-tuples */ + FOR (k = 0; k < lastnz; k += 2) + { + + /* Get context */ + t = add(c, rateFlag); + if (sub(k, nt_half) > 0) + { + t = add(t, 1 << NBITS_CONTEXT); + } + codingdata[0] = t; + move16(); + + /* Init current 2-tuple encoding */ + a1 = L_abs(xq[a1_i]); + b1 = L_abs(xq[b1_i]); + ab_max = L_max(a1, b1); + + IF (ab_max == 0) + { + codingdata[1] = -1; + move16(); + codingdata[2] = 0; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][0]); + c = add(shl_pos(s_and(c, 0xf), 4), 1); + } + ELSE IF (L_sub(ab_max, A_THRES) < 0) + { + codingdata[1] = 0; + move16(); + msb = L_add(a1, L_shl_pos(b1, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][msb]); + if (a1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + c = L_add(shl_pos(s_and(c, 0xf), 4), L_add(L_add(a1, b1), 1)); + } + ELSE IF (L_sub(ab_max, 2 * A_THRES) < 0) + { + codingdata[1] = 1; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][VAL_ESC]); + nbits32 = L_add(nbits32, 2 << SYM_BITS_Q); + a1_msb = L_shr_pos_pos(a1, 1); + b1_msb = L_shr_pos_pos(b1, 1); + msb = L_add(a1_msb, shl_pos(b1_msb, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[1]]][msb]); + if (a1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + c = L_add(shl_pos(s_and(c, 0xf), 4), L_add(L_shl_pos(L_add(a1_msb, b1_msb), 1), 1)); + } + ELSE + { + levmax = sub(maxlevs, sub(norm_l(ab_max), 8)); + codingdata[1] = levmax; + move16(); + FOR (lev = 0; lev < levmax; lev++) + { + lev1 = s_min(lev, 3); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[lev1]]][VAL_ESC]); + } + nbits32 = L_add(nbits32, L_shl_pos(L_deposit_l(levmax), SYM_BITS_Q + 1)); + a1_msb = L_shr(a1, levmax); + b1_msb = L_shr(b1, levmax); + msb = L_add(a1_msb, L_shl_pos(b1_msb, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + lev1 = s_min(levmax, 3); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[lev1]]][msb]); + if (a1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + c = add(shl_pos(s_and(c, 0xf), 4), add(12, s_min(levmax, 3))); + } + + a1_i += 2; + b1_i += 2; + codingdata += 3; + + } /* end of the 2-tuples loop */ + } + ELSE IF (mode == 0) + { + /* Main Loop through the 2-tuples */ + FOR (k = 0; k < lastnz; k += 2) + { + + /* Get context */ + t = add(c, rateFlag); + if (sub(k, nt_half) > 0) + { + t = add(t, 1 << NBITS_CONTEXT); + } + + codingdata[0] = t; + move16(); + + /* Init current 2-tuple encoding */ + a1 = L_abs(xq[a1_i]); + b1 = L_abs(xq[b1_i]); + ab_max = L_max(a1, b1); + + IF (ab_max == 0) + { + codingdata[1] = -1; + move16(); + codingdata[2] = 0; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][0]); + c = add(shl_pos(s_and(c, 0xf), 4), 1); + } + ELSE IF (L_sub(ab_max, A_THRES) < 0) + { + codingdata[1] = 0; + move16(); + msb = L_add(a1, L_shl_pos(b1, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][msb]); + if (a1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + + if (nbits32 <= 0) + { + lastnz2 = add(k, 2); + } + if (nbits32 <= 0) + { + nbits232 = nbits32; + move32(); + } + + c = L_add(shl_pos(s_and(c, 0xf), 4), L_add(L_add(a1, b1), 1)); + } + ELSE IF (L_sub(ab_max, 2 * A_THRES) < 0) + { + codingdata[1] = 1; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][VAL_ESC]); + nbits32 = L_add(nbits32, 2 << SYM_BITS_Q); + a1_msb = L_shr_pos_pos(a1, 1); + b1_msb = L_shr_pos_pos(b1, 1); + msb = L_add(a1_msb, L_shl_pos(b1_msb, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[1]]][msb]); + if (a1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + + if (nbits32 <= 0) + { + lastnz2 = add(k, 2); + } + if (nbits32 <= 0) + { + nbits232 = nbits32; + move32(); + } + + c = add(shl_pos(s_and(c, 0xf), 4), L_add(L_shl_pos(L_add(a1_msb, b1_msb), 1), 1)); + } + ELSE + { + levmax = sub(maxlevs, sub(norm_l(ab_max), 8)); + codingdata[1] = levmax; + move16(); + FOR (lev = 0; lev < levmax; lev++) + { + lev1 = s_min(lev, 3); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[lev1]]][VAL_ESC]); + } + nbits32 = L_add(nbits32, L_shl_pos(L_deposit_l(levmax), SYM_BITS_Q + 1)); + a1_msb = L_shr(a1, levmax); + b1_msb = L_shr(b1, levmax); + msb = L_add(a1_msb, L_shl_pos(b1_msb, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + lev1 = s_min(levmax, 3); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[lev1]]][msb]); + if (a1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + + if (nbits32 <= 0) + { + lastnz2 = add(k, 2); + } + if (nbits32 <= 0) + { + nbits232 = nbits32; + move32(); + } + + c = add(shl_pos(s_and(c, 0xf), 4), add(12, s_min(levmax, 3))); + } + + a1_i += 2; + b1_i += 2; + codingdata += 3; + + } /* end of the 2-tuples loop */ + } + ELSE + { + /* Main Loop through the 2-tuples */ + FOR (k = 0; k < lastnz; k += 2) + { + + /* Get context */ + t = add(c, rateFlag); + + if (sub(k, nt_half) > 0) + { + t = add(t, 1 << NBITS_CONTEXT); + } + + codingdata[0] = t; + move16(); + + /* Init current 2-tuple encoding */ + a1 = L_abs(xq[a1_i]); + b1 = L_abs(xq[b1_i]); + ab_max = L_max(a1, b1); + + IF (ab_max == 0) + { + codingdata[1] = -1; + move16(); + codingdata[2] = 0; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][0]); + c = add(shl_pos(s_and(c, 0xf), 4), 1); + } + ELSE IF (L_sub(ab_max, A_THRES) < 0) + { + codingdata[1] = 0; + move16(); + msb = L_add(a1, L_shl_pos(b1, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][msb]); + if (a1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + + if (nbits32 <= 0) + { + lastnz2 = add(k, 2); + } + if (nbits32 <= 0) + { + nbits232 = nbits32; + move32(); + } + + c = add(shl_pos(s_and(c, 0xf), 4), add(add(a1, b1), 1)); + } + ELSE IF (L_sub(ab_max, 2 * A_THRES) < 0) + { + codingdata[1] = 1; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][VAL_ESC]); + a1_msb = L_shr_pos_pos(a1, 1); + b1_msb = L_shr_pos_pos(b1, 1); + msb = L_add(a1_msb, L_shl_pos(b1_msb, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[1]]][msb]); + if (a1_msb != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1_msb != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + nbits_lsb = add(nbits_lsb, 2); + if (L_sub(a1, 1) == 0) + { + nbits_lsb = add(nbits_lsb, 1); + } + if (L_sub(b1, 1) == 0) + { + nbits_lsb = add(nbits_lsb, 1); + } + + if (nbits32 <= 0) + { + lastnz2 = add(k, 2); + } + if (nbits32 <= 0) + { + nbits232 = nbits32; + move32(); + } + + c = add(shl_pos(s_and(c, 0xf), 4), add(shl_pos(add(a1_msb, b1_msb), 1), 1)); + } + ELSE + { + levmax = sub(maxlevs, sub(norm_l(ab_max), 8)); + codingdata[1] = levmax; + move16(); + FOR (lev = 0; lev < levmax; lev++) + { + lev1 = s_min(lev, 3); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[lev1]]][VAL_ESC]); + } + nbits32 = L_add(nbits32, L_shl_pos(L_deposit_l(sub(levmax, 1)), SYM_BITS_Q + 1)); + a1_msb = L_shr(a1, levmax); + b1_msb = L_shr(b1, levmax); + msb = L_add(a1_msb, L_shl_pos(b1_msb, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + lev1 = s_min(levmax, 3); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[lev1]]][msb]); + a1_msb = L_shr_pos(a1, 1); + b1_msb = L_shr_pos(b1, 1); + if (a1_msb != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1_msb != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + nbits_lsb = add(nbits_lsb, 2); + if (L_sub(a1, 1) == 0) + { + nbits_lsb = add(nbits_lsb, 1); + } + if (L_sub(b1, 1) == 0) + { + nbits_lsb = add(nbits_lsb, 1); + } + + if (nbits32 <= 0) + { + lastnz2 = add(k, 2); + } + if (nbits32 <= 0) + { + nbits232 = nbits32; + move32(); + } + + c = add(shl_pos(s_and(c, 0xf), 4), add(12, s_min(levmax, 3))); + } + + a1_i += 2; + b1_i += 2; + codingdata += 3; + + } /* end of the 2-tuples loop */ + } + + /* Number of consumed bits */ + nbits32 = L_add(nbits32, target32); + totBits = add(extract_l(L_shr_pos_pos(L_sub(nbits32, 1), SYM_BITS_Q)), 1); + IF (mode > 0) + { + totBits = add(totBits, nbits_lsb); + } + IF (nBits != NULL) + { + *nBits = totBits; + } + IF (mode >= 0) + { + nbits232 = L_add(nbits232, target32); + *nBits2 = add(extract_l(L_shr_pos(L_sub(nbits232, 1), SYM_BITS_Q)), 1); + } + ELSE + { + *nBits2 = *nBits; + move16(); + } + IF (mode > 0) + { + *nBits2 = add(*nBits2, nbits_lsb); + } + *lastnzout = lastnz2; + + /* Truncation of high frequency coefficients */ + IF (lastnz > lastnz2) + { + basop_memset(&xq[lastnz2], 0, (lastnz - lastnz2) * sizeof(*xq)); + } + + /* Truncation of LSBs */ + test(); + IF (mode > 0 && sub(totBits, target) > 0) + { + *lsbMode = 1; + move16(); + } + ELSE + { + *lsbMode = 0; + move16(); + } + +# ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +# endif +} + +# else /* ENABLE_HR_MODE */ + +void processQuantizeSpec_fx(Word32 x[], Word16 x_e, Word16 gain, Word16 gain_e, Word16 xq[], Word16 nt, Word16 target, + Word16 totalBits, Word16 *nBits, Word16 *nBits2, Word16 fs_idx, Word16 *lastnzout, + Word16 *codingdata, Word16 *lsbMode, Word16 mode +) +{ + + Word16 a1, b1, a1_i, b1_i; + Word16 t, lev1; + Word16 lastnz, lastnz2; + Word16 rateFlag; + Word32 nbits32, nbits232, target32; + Word16 nt_half; + Word16 c, ab_max, msb, a1_msb, b1_msb, levmax; + Word16 s; + Word16 totBits, nbits_lsb; + Counter k, lev; + Word16 tmp16; + Word32 offs32; + Counter i; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processQuantizeSpec_fx", sizeof(struct { + Word16 a1, b1, a1_i, b1_i; + Word16 t, lev1; + Word16 lastnz, lastnz2; + Word16 rateFlag; + Word32 nbits32, nbits232; + Word16 nt_half; + Word16 c, ab_max, msb, a1_msb, b1_msb, levmax; + Counter k, lev, i; + Word16 s; + Word16 tmp16; + Word32 offs32, target32; + Word16 totBits, nbits_lsb; + })); +#endif + + /* Quantization */ + gain = Inv16_lc3plus(gain, &gain_e); + s = sub(add(x_e, gain_e), 15); + s = s_max(s_min(s, 15), -15); + + FOR (i = 0; i < nt; i++) + { + offs32 = Mpy_32_16_lc3plus(L_abs(x[i]), gain); /* multiply */ + offs32 = L_shl(offs32, s); /* convert to 15Q16 */ + tmp16 = extract_h(L_add(offs32, 0x00006000)); /* add offset and truncate */ + Word16 x_sign = (Word16) L_shr(x[i], 31); + xq[i] = sub(s_xor(tmp16, x_sign), x_sign); + move16(); + /* + Normal quantization: xq[i] = x[i] / gg + sign(x[i]) * 0.375 + -> 0.375 = 0x00006000 in 15Q16 + */ + } + + /* Rate flag */ + rateFlag = 0; + move16(); + if (sub(totalBits, add(160, DEPR_i_mult(fs_idx, 160))) > 0) + { + rateFlag = 2 << NBITS_CONTEXT; + move16(); + } + + /* Init */ + nt_half = shr_pos(nt, 1); + c = 0; + move16(); + t = 0; + move16(); + a1_i = 0; + move16(); + b1_i = 1; + move16(); + target32 = L_shl_pos(L_deposit_l(target), SYM_BITS_Q); + nbits32 = L_negate(target32); + nbits232 = 0; + move32(); + nbits_lsb = 0; + move16(); + IF (mode == 0 && sub(totalBits, add(480, DEPR_i_mult(fs_idx, 160))) >= 0) + { + mode = 1; + move16(); + } + + /* Find last non-zero tuple */ + lastnz = find_last_nz_pair(xq, nt); + IF (mode >= 0) + { + lastnz2 = 2; + } + ELSE + { + lastnz2 = lastnz; + } + + IF (mode < 0) + { + /* Main Loop through the 2-tuples */ + FOR (k = 0; k < lastnz; k += 2) + { + + /* Get context */ + t = add(c, rateFlag); + if (sub(k, nt_half) > 0) + { + t = add(t, 1 << NBITS_CONTEXT); + } + codingdata[0] = t; + move16(); + + /* Init current 2-tuple encoding */ + a1 = abs_s(xq[a1_i]); + b1 = abs_s(xq[b1_i]); + ab_max = s_max(a1, b1); + + IF (ab_max == 0) + { + codingdata[1] = -1; + move16(); + codingdata[2] = 0; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][0]); + c = add(shl_pos(s_and(c, 0xf), 4), 1); + } + ELSE IF (sub(ab_max, A_THRES) < 0) + { + codingdata[1] = 0; + move16(); + msb = add(a1, shl_pos(b1, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][msb]); + if (a1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + c = add(shl_pos(s_and(c, 0xf), 4), add(add(a1, b1), 1)); + } + ELSE IF (sub(ab_max, 2 * A_THRES) < 0) + { + codingdata[1] = 1; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][VAL_ESC]); + nbits32 = L_add(nbits32, 2 << SYM_BITS_Q); + a1_msb = shr_pos_pos(a1, 1); + b1_msb = shr_pos_pos(b1, 1); + msb = add(a1_msb, shl_pos(b1_msb, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[1]]][msb]); + if (a1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + c = add(shl_pos(s_and(c, 0xf), 4), add(shl_pos(add(a1_msb, b1_msb), 1), 1)); + } + ELSE + { + levmax = sub(13, norm_s(ab_max)); + codingdata[1] = levmax; + move16(); + FOR (lev = 0; lev < levmax; lev++) + { + lev1 = s_min(lev, 3); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[lev1]]][VAL_ESC]); + } + nbits32 = L_add(nbits32, L_shl_pos(L_deposit_l(levmax), SYM_BITS_Q + 1)); + a1_msb = shr(a1, levmax); + b1_msb = shr(b1, levmax); + msb = add(a1_msb, shl_pos(b1_msb, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + lev1 = s_min(levmax, 3); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[lev1]]][msb]); + if (a1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + c = add(shl_pos(s_and(c, 0xf), 4), add(12, s_min(levmax, 3))); + } + + a1_i += 2; + b1_i += 2; + codingdata += 3; + + } /* end of the 2-tuples loop */ + } + ELSE IF (mode == 0) + { + /* Main Loop through the 2-tuples */ + FOR (k = 0; k < lastnz; k += 2) + { + + /* Get context */ + t = add(c, rateFlag); + if (sub(k, nt_half) > 0) + { + t = add(t, 1 << NBITS_CONTEXT); + } + codingdata[0] = t; + move16(); + + /* Init current 2-tuple encoding */ + a1 = abs_s(xq[a1_i]); + b1 = abs_s(xq[b1_i]); + ab_max = s_max(a1, b1); + + IF (ab_max == 0) + { + codingdata[1] = -1; + move16(); + codingdata[2] = 0; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][0]); + c = add(shl_pos(s_and(c, 0xf), 4), 1); + } + ELSE IF (sub(ab_max, A_THRES) < 0) + { + codingdata[1] = 0; + move16(); + msb = add(a1, shl_pos(b1, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][msb]); + if (a1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (nbits32 <= 0) + { + lastnz2 = add(k, 2); + } + if (nbits32 <= 0) + { + nbits232 = nbits32; + move32(); + } + c = add(shl_pos(s_and(c, 0xf), 4), add(add(a1, b1), 1)); + } + ELSE IF (sub(ab_max, 2 * A_THRES) < 0) + { + codingdata[1] = 1; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][VAL_ESC]); + nbits32 = L_add(nbits32, 2 << SYM_BITS_Q); + a1_msb = shr_pos_pos(a1, 1); + b1_msb = shr_pos_pos(b1, 1); + msb = add(a1_msb, shl_pos(b1_msb, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[1]]][msb]); + if (a1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (nbits32 <= 0) + { + lastnz2 = add(k, 2); + } + if (nbits32 <= 0) + { + nbits232 = nbits32; + move32(); + } + c = add(shl_pos(s_and(c, 0xf), 4), add(shl_pos(add(a1_msb, b1_msb), 1), 1)); + } + ELSE + { + levmax = sub(13, norm_s(ab_max)); + codingdata[1] = levmax; + move16(); + FOR (lev = 0; lev < levmax; lev++) + { + lev1 = s_min(lev, 3); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[lev1]]][VAL_ESC]); + } + nbits32 = L_add(nbits32, L_shl_pos(L_deposit_l(levmax), SYM_BITS_Q + 1)); + a1_msb = shr(a1, levmax); + b1_msb = shr(b1, levmax); + msb = add(a1_msb, shl_pos(b1_msb, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + lev1 = s_min(levmax, 3); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[lev1]]][msb]); + if (a1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (nbits32 <= 0) + { + lastnz2 = add(k, 2); + } + if (nbits32 <= 0) + { + nbits232 = nbits32; + move32(); + } + c = add(shl_pos(s_and(c, 0xf), 4), add(12, s_min(levmax, 3))); + } + + a1_i += 2; + b1_i += 2; + codingdata += 3; + + } /* end of the 2-tuples loop */ + } + ELSE + { + /* Main Loop through the 2-tuples */ + FOR (k = 0; k < lastnz; k += 2) + { + + /* Get context */ + t = add(c, rateFlag); + if (sub(k, nt_half) > 0) + { + t = add(t, 1 << NBITS_CONTEXT); + } + codingdata[0] = t; + move16(); + + /* Init current 2-tuple encoding */ + a1 = abs_s(xq[a1_i]); + b1 = abs_s(xq[b1_i]); + ab_max = s_max(a1, b1); + + IF (ab_max == 0) + { + codingdata[1] = -1; + move16(); + codingdata[2] = 0; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][0]); + c = add(shl_pos(s_and(c, 0xf), 4), 1); + } + ELSE IF (sub(ab_max, A_THRES) < 0) + { + codingdata[1] = 0; + move16(); + msb = add(a1, shl_pos(b1, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][msb]); + if (a1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1 != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (nbits32 <= 0) + { + lastnz2 = add(k, 2); + } + if (nbits32 <= 0) + { + nbits232 = nbits32; + move32(); + } + c = add(shl_pos(s_and(c, 0xf), 4), add(add(a1, b1), 1)); + } + ELSE IF (sub(ab_max, 2 * A_THRES) < 0) + { + codingdata[1] = 1; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t]][VAL_ESC]); + a1_msb = shr_pos_pos(a1, 1); + b1_msb = shr_pos_pos(b1, 1); + msb = add(a1_msb, shl_pos(b1_msb, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[1]]][msb]); + if (a1_msb != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1_msb != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + nbits_lsb = add(nbits_lsb, 2); + if (sub(a1, 1) == 0) + { + nbits_lsb = add(nbits_lsb, 1); + } + if (sub(b1, 1) == 0) + { + nbits_lsb = add(nbits_lsb, 1); + } + if (nbits32 <= 0) + { + lastnz2 = add(k, 2); + } + if (nbits32 <= 0) + { + nbits232 = nbits32; + move32(); + } + c = add(shl_pos(s_and(c, 0xf), 4), add(shl_pos(add(a1_msb, b1_msb), 1), 1)); + } + ELSE + { + levmax = sub(13, norm_s(ab_max)); + codingdata[1] = levmax; + move16(); + FOR (lev = 0; lev < levmax; lev++) + { + lev1 = s_min(lev, 3); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[lev1]]][VAL_ESC]); + } + nbits32 = L_add(nbits32, L_shl_pos(L_deposit_l(sub(levmax, 1)), SYM_BITS_Q + 1)); + a1_msb = shr(a1, levmax); + b1_msb = shr(b1, levmax); + msb = add(a1_msb, shl_pos(b1_msb, A_THRES_SHIFT)); + codingdata[2] = msb; + move16(); + lev1 = s_min(levmax, 3); + nbits32 = L_add(nbits32, ari_spec_bits[ari_spec_lookup[t + Tab_esc_nb[lev1]]][msb]); + a1_msb = shr_pos(a1, 1); + b1_msb = shr_pos(b1, 1); + if (a1_msb != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + if (b1_msb != 0) + { + nbits32 = L_add(nbits32, 1 << SYM_BITS_Q); + } + nbits_lsb = add(nbits_lsb, 2); + if (sub(a1, 1) == 0) + { + nbits_lsb = add(nbits_lsb, 1); + } + if (sub(b1, 1) == 0) + { + nbits_lsb = add(nbits_lsb, 1); + } + if (nbits32 <= 0) + { + lastnz2 = add(k, 2); + } + if (nbits32 <= 0) + { + nbits232 = nbits32; + move32(); + } + c = add(shl_pos(s_and(c, 0xf), 4), add(12, s_min(levmax, 3))); + } + + a1_i += 2; + b1_i += 2; + codingdata += 3; + + } /* end of the 2-tuples loop */ + } + + /* Number of consumed bits */ + nbits32 = L_add(nbits32, target32); + totBits = add(extract_l(L_shr_pos_pos(L_sub(nbits32, 1), SYM_BITS_Q)), 1); + IF (mode > 0) + { + totBits = add(totBits, nbits_lsb); + } + IF (nBits != NULL) + { + *nBits = totBits; + } + IF (mode >= 0) + { + nbits232 = L_add(nbits232, target32); + *nBits2 = add(extract_l(L_shr_pos(L_sub(nbits232, 1), SYM_BITS_Q)), 1); + } + ELSE + { + *nBits2 = *nBits; + move16(); + } + IF (mode > 0) + { + *nBits2 = add(*nBits2, nbits_lsb); + } + *lastnzout = lastnz2; + + /* Truncation of high frequency coefficients */ + IF (lastnz > lastnz2) + { + basop_memset(&xq[lastnz2], 0, (lastnz - lastnz2) * sizeof(*xq)); + } + + /* Truncation of LSBs */ + test(); + IF (mode > 0 && sub(totBits, target) > 0) + { + *lsbMode = 1; + move16(); + } + ELSE + { + *lsbMode = 0; + move16(); + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +# endif /* ENABLE_HR_MODE */ diff --git a/lib_lc3plus/reorder_bitstream_fx.c b/lib_lc3plus/reorder_bitstream_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..281eef325c921bc0bea706bd50da2dcd83761437 --- /dev/null +++ b/lib_lc3plus/reorder_bitstream_fx.c @@ -0,0 +1,56 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "defines.h" + +#include "constants.h" +#include "functions.h" + + +void processReorderBitstream_fx(UWord8 *bytes, Word16 n_pccw, Word16 n_pc, Word16 b_left, Word8 *scratchBuffer) +{ + Word16 block_bytes; + UWord8 * bytes_tmp; + +#ifdef DYNMEM_COUNT + struct _dynmem + { + Word16 block_bits, block_bytes; + UWord8 * bytes_tmp; + }; + Dyn_Mem_In("processReorderBitstream_fx", sizeof(struct _dynmem)); +#endif + + bytes_tmp = (UWord8 *)scratchAlign(scratchBuffer, 0); /* Size = LC3PLUS_MAX_BYTES */ + + if (n_pccw == 0) + { +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif + return; + } + + assert(b_left >= 0); + + /* set block size in bits and full bytes */ + block_bytes = shr_sat(add(n_pc, 1), 1); + + /* rearrange bitstream */ + basop_memmove(&bytes_tmp[0], &bytes[b_left], block_bytes * sizeof(UWord8)); + basop_memmove(&bytes_tmp[block_bytes], &bytes[0], b_left * sizeof(UWord8)); + + basop_memmove(&bytes[0], &bytes_tmp[0], add(block_bytes, b_left) * sizeof(UWord8)); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + + diff --git a/lib_lc3plus/resamp12k8_fx.c b/lib_lc3plus/resamp12k8_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..a54f6bc292028066fc378cee596208282d02c88d --- /dev/null +++ b/lib_lc3plus/resamp12k8_fx.c @@ -0,0 +1,121 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +void process_resamp12k8_fx(Word16 x[], Word16 x_len, Word16 mem_in[], Word16 mem_in_len, Word32 mem_50[], + Word16 mem_out[], Word16 mem_out_len, Word16 y[], Word16 *y_len, Word16 fs_idx, + Word16 frame_dms, Word8 *scratchBuffer + , Word16 bps + ) +{ + Dyn_Mem_Deluxe_In( + Word16 * buf; + Word16 index_int, index_frac, len_12k8; + Word16 resamp_upfac, resamp_off_int, resamp_off_frac, resamp_delay; + const Word16 *resamp_filt; + const Word16 *filt_coeff; + Word16 * filt_input; + Word32 filt_output, mem_50_0, mem_50_1; + Counter n, m; + Word32 L_tmp; + ); + + buf = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * (MAX_LEN + MAX_LEN / 8) bytes */ + + /* resamp parameters : {upsample-factor, 120 / upsample-factor, down_sample_int_part, down_sample_frac_part } + upsample is to 384 kHz. upsample-facor = 192000 / samp-freq + Fractional downsample parameters are calculated from : downsample samp-freq to 128000 + At 48000 sampling frequency: + upsample-factor = 192000 / 48000 = 4 + 120 / upsample-factor = 120 / 4 = 30 + downsample-ratio = 48000 / 12800 = 3.75 + down_sample_int_part = 3 + down_sample_frac_part = int(0.75 * upsample-factor ) = 0.75 * 4 = 3 + */ + resamp_upfac = resamp_params[fs_idx][0]; move16(); + resamp_delay = resamp_params[fs_idx][1]; move16(); + resamp_off_int = resamp_params[fs_idx][2]; move16(); + resamp_off_frac = resamp_params[fs_idx][3]; move16(); + resamp_filt = resamp_filts[fs_idx]; move16(); + + len_12k8 = LEN_12K8 / 4 * (frame_dms / 25); move16(); + *y_len = len_12k8; move16(); + + /* Init Input Buffer */ + basop_memmove(buf, mem_in, mem_in_len * sizeof(Word16)); + basop_memmove(&buf[mem_in_len], x, x_len * sizeof(Word16)); + basop_memmove(mem_in, &buf[x_len], mem_in_len * sizeof(Word16)); + + /* Init Input Indices */ + index_int = 1; move16(); + index_frac = 0; move16(); + + /* Resampling */ + FOR (n = 0; n < len_12k8; n++) + { + /* Init Filtering */ + filt_input = &buf[index_int]; + filt_coeff = &resamp_filt[index_frac * resamp_delay * 2]; + +/* Perform Filtering */ + filt_output = L_mult0(*filt_input, *filt_coeff); + FOR (m = 1; m < resamp_delay * 2; m++) + { + filt_coeff++; + filt_input++; + if (*filt_coeff) + { + filt_output = L_mac0(filt_output, *filt_input, *filt_coeff); + } + } + y[n] = round_fx(filt_output); move16(); + + /* Update Input Indices */ + index_int = add(index_int, resamp_off_int); + index_frac = add(index_frac, resamp_off_frac); + IF (sub(resamp_upfac, index_frac) <= 0) + { + index_int = add(index_int, 1); + index_frac = sub(index_frac, resamp_upfac); + } + } + + /* High Pass Filtering (-3dB at 50Hz) */ + mem_50_0 = mem_50[0]; move32(); + mem_50_1 = mem_50[1]; move32(); + + FOR (n = 0; n < len_12k8; n++) + { + filt_output = L_mac0_sat(mem_50_0, highpass50_filt_num[0], y[n]); + L_tmp = L_mac0(Mpy_32_16_lc3plus(filt_output, highpass50_filt_den[0]), highpass50_filt_num[1], y[n]); + + IF (sub(bps, 24) == 0) + { + mem_50_0 = L_shl_sat(L_add_sat(L_shr_pos(mem_50_1,1), L_tmp), 1); + } ELSE + { + mem_50_0 = L_add_sat(mem_50_1, L_shl_sat(L_tmp, 1)); + } + + mem_50_1 = L_mac0(Mpy_32_16_lc3plus(filt_output, highpass50_filt_den[1]), highpass50_filt_num[2], y[n]); + y[n] = round_fx_sat(filt_output); move16(); + } + mem_50[0] = mem_50_0; move32(); + mem_50[1] = mem_50_1; move32(); + +/* Output Buffer */ + basop_memmove(buf, mem_out, mem_out_len * sizeof(Word16)); + basop_memmove(&buf[mem_out_len], y, len_12k8 * sizeof(Word16)); + basop_memmove(y, buf, (*y_len + 1) * sizeof(Word16)); + basop_memmove(mem_out, &buf[len_12k8], mem_out_len * sizeof(Word16)); + + Dyn_Mem_Deluxe_Out(); +} + diff --git a/lib_lc3plus/residual_coding_fx.c b/lib_lc3plus/residual_coding_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..2cb6c791f590f5d75300b52aa3d25cd92b78f5d7 --- /dev/null +++ b/lib_lc3plus/residual_coding_fx.c @@ -0,0 +1,238 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +#ifdef ENABLE_HR_MODE + +void processResidualCoding_fx(Word16 x_e, Word32 x[], + Word32 xq[], Word32 gain, + Word16 gain_e, Word16 L_spec, + Word16 targetBits, Word16 nBits, UWord8 *resBits, Word16 *numResBits + , Word16 hrmode +) +{ + + Counter i; + Word16 s, n, m; + Word32 L_tmp; + Word16 iter = 0; + Counter idx; + Word16 N_nz = 0; + Word16 n1, n2; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processResidualCoding_fx", sizeof(struct { + Counter i; + Word16 s, n, m; + Word32 L_tmp; + Word16 iter; + Counter idx; + Word16 N_nz; + Word16 *nz_idx; + Word16 n1, n2; + })); +#endif + + n = 0; + move16(); + + IF (hrmode) + { + m = add(sub(targetBits, nBits), 14); + assert(m <= (MAX_RESBITS_LEN << RESBITS_PACK_SHIFT)); + } + ELSE + { + m = add(sub(targetBits, nBits), 4); + if (m > L_spec) + { + m = L_spec; + } + } + + basop_memset(resBits, 0, sizeof(*resBits)*((m + RESBITS_PACK_MASK) >> RESBITS_PACK_SHIFT)); + + s = sub(add(15, gain_e), x_e); + + IF(hrmode) + { + /* + x = xval * 2^(31 - x_e) + gain = gainval * 2^(15 - gain_e) + + To bring gain to the same q of x : + + gain (in_Qx_e) = gain * 2^(16 + gain_e - x_e) + + gain*offset (in Qx_e) = gain (in_Qx_e) * 0.25 = gain (in_Qx_e) / 4 = gain * 2^(16 - 2 + gain_e - x_e) + */ + Word16 shift_val; + shift_val = sub(sub(gain_e, x_e), 2); + + Word32 gain_offset; + + IF (shift_val <= -32) + gain_offset = 0; + ELSE + { + gain_offset = L_shl_sat(gain, shift_val); + } + + Word16 exit_iter = 0; + + Word16 nz_idx[MAX_LEN]; + + /* enumerate non-zero coefficients */ + FOR (i = 0; i < L_spec; i++) + { + IF (xq[i]) + { + nz_idx[N_nz] = i; move16(); + N_nz = add(N_nz, 1); + } + } + + s = sub(31, sub(x_e, gain_e)); + FOR (iter = 0; iter < EXT_RES_ITER_MAX; iter++) + { + FOR (i = 0; i < N_nz; i++) + { + idx = nz_idx[i]; + + L_tmp = L_sub(x[idx], Mpy_32_32_lc3plus(L_shl(xq[idx], s), gain)); + + IF (L_tmp >= 0) + { + n1 = shr(n, RESBITS_PACK_SHIFT); + n2 = s_and(n, RESBITS_PACK_MASK); + resBits[n1] = (UWord8)s_or(resBits[n1], shl(1, n2)); + move16(); + x[idx] = L_sub(x[idx], gain_offset); + move16(); + } + ELSE + { + move16(); + x[idx] = L_add(x[idx], gain_offset); + move16(); + } + n = add(n, 1); + IF (sub(n, m) == 0) + { + exit_iter = 1; + BREAK; + } + } + gain_offset = L_shr(gain_offset, 1); /* offset *= 0.5 */ + + IF (exit_iter) + { + BREAK; + } + } + } + ELSE + { + s = add(s, 16); + gain = round_fx(gain); + + FOR (i = 0; i < L_spec; i++) + { + IF (xq[i] != 0) + { + L_tmp = L_sub(x[i], Mpy_32_16_lc3plus(L_shl(xq[i], s), gain)); + if (L_tmp >= 0) + { + n1 = shr(n, RESBITS_PACK_SHIFT); + n2 = s_and(n, RESBITS_PACK_MASK); + resBits[n1] = (UWord8) s_or(resBits[n1], shl(1, n2)); + move16(); + } + n = add(n, 1); + IF (sub(n, m) == 0) + { + BREAK; + } + } + } + } + *numResBits = n; + move16(); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +#else + +void processResidualCoding_fx(Word16 x_e, Word32 x[], + Word16 xq[], + Word16 gain, Word16 gain_e, Word16 L_spec, + Word16 targetBits, Word16 nBits, UWord8 *resBits, Word16 *numResBits +) +{ + + Counter i; + Word16 s, n, m; + Word32 L_tmp; +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processResidualCoding_fx", sizeof(struct { + Counter i; + Word16 s, n, m; + Word32 L_tmp; + })); +#endif + + n = 0; + move16(); + { + m = add(sub(targetBits, nBits), 4); + if (m > L_spec) + { + m = L_spec; + } + } + + + s = sub(add(15, gain_e), x_e); + { + FOR (i = 0; i < L_spec; i++) + { + IF (xq[i] != 0) + { + L_tmp = L_sub(x[i], L_shl(L_mult(xq[i], gain), s)); + if (L_tmp < 0) + { + resBits[n] = 0; + move16(); + } + if (L_tmp >= 0) + { + resBits[n] = 1; + move16(); + } + n = add(n, 1); + IF (sub(n, m) == 0) + { + BREAK; + } + } + } + } + *numResBits = n; + move16(); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +#endif diff --git a/lib_lc3plus/residual_decoding_fx.c b/lib_lc3plus/residual_decoding_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..686398cdd89fd16444127a86ff9a1b45e773854b --- /dev/null +++ b/lib_lc3plus/residual_decoding_fx.c @@ -0,0 +1,207 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +#ifdef ENABLE_HR_MODE /* HRMODE enables packing of residual bits */ + +void processResidualDecoding_fx(Word32 x[], Word16 x_e, Word16 L_spec, UWord8 prm[], Word16 resQBits +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +) +{ + + Counter i; + Word32 fac_m, fac_p; + Word16 s, bits; + Word32 tmp; + Counter idx; + Word16 N_nz = 0; + Word16 iter; + Word32 fac_hr; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processResidualDecoding_fx", sizeof(struct { + Counter i; + Word32 fac_m, fac_p; + Word16 s, bits; + Word32 tmp; + Counter idx; + Word16 N_nz; + Word16 *nz_idx; + Word16 iter; + })); +#endif + + tmp = 0; + s = sub(x_e, 1); + s = s_min(s, 31); + + IF (hrmode) + { + fac_hr = L_shr(0x10000000, s); /* 0.25 in 1Q30 */ + } + ELSE + { + fac_m = L_shr(0xC000000, s); /* 0.1875 in 1Q30 */ + fac_p = L_shr(0x14000000, s); /* 0.3125 in 1Q30 */ + } + + bits = 0; + move16(); + + Word16 nz_idx[MAX_LEN]; + + IF (hrmode) + { + FOR (i = 0; i < L_spec; i++) + { + IF (x[i]) + { + nz_idx[N_nz] = i; move16(); + N_nz = add(N_nz, 1); + } + } + FOR (iter = 0; iter < EXT_RES_ITER_MAX; iter++) + { + IF (sub(bits, resQBits) >= 0) + { + BREAK; + } + FOR (i = 0; i < N_nz; i++) + { + idx = nz_idx[i]; move16(); + + IF (sub(bits, resQBits) >= 0) + { + BREAK; + } + + IF (! (s_and(prm[shr(bits, RESBITS_PACK_SHIFT)], shl(1, s_and(bits, RESBITS_PACK_MASK))))) + { + tmp = L_sub_sat(x[idx], fac_hr); + } + ELSE + { + tmp = L_add_sat(x[idx], fac_hr); + } + x[idx] = tmp; + move32(); + bits = add(bits, 1); + } + fac_hr = L_shr(fac_hr, 1); + } + } + ELSE + { + FOR (i = 0; i < L_spec; i++) + { + IF (sub(bits, resQBits) >= 0) + { + BREAK; + } + + IF (x[i] != 0) + { + IF (! (s_and(prm[shr(bits, RESBITS_PACK_SHIFT)], shl(1, s_and(bits, RESBITS_PACK_MASK))))) + { + if (x[i] > 0) + tmp = L_sub(x[i], fac_m); + if (x[i] < 0) + tmp = L_sub(x[i], fac_p); + } + ELSE + { + if (x[i] > 0) + tmp = L_add(x[i], fac_p); + if (x[i] < 0) + tmp = L_add(x[i], fac_m); + } + x[i] = tmp; + move32(); + bits = add(bits, 1); + } + } + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +#else + +void processResidualDecoding_fx(Word32 x[], Word16 x_e, Word16 L_spec, UWord8 prm[], Word16 resQBits +) +{ + + Counter i; + Word32 fac_m, fac_p; + Word16 s, bits; + Word32 tmp; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processResidualDecoding_fx", sizeof(struct { + Counter i; + Word32 fac_m, fac_p; + Word16 s, bits; + Word32 tmp; + })); +#endif + + tmp = 0; + s = sub(x_e, 1); + s = s_min(s, 31); + + { + fac_m = L_shr(0xC000000, s); /* 0.1875 in 1Q30 */ + fac_p = L_shr(0x14000000, s); /* 0.3125 in 1Q30 */ + } + + bits = 0; + move16(); + + { + FOR (i = 0; i < L_spec; i++) + { + IF (sub(bits, resQBits) >= 0) + { + BREAK; + } + + IF (x[i] != 0) + { + IF (prm[bits] == 0) + { + if (x[i] > 0) + tmp = L_sub(x[i], fac_m); + if (x[i] < 0) + tmp = L_sub(x[i], fac_p); + } + ELSE + { + if (x[i] > 0) + tmp = L_add(x[i], fac_p); + if (x[i] < 0) + tmp = L_add(x[i], fac_m); + } + x[i] = tmp; + move32(); + bits = add(bits, 1); + } + } + } + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +#endif diff --git a/lib_lc3plus/rom_basop_util_lc3plus.c b/lib_lc3plus/rom_basop_util_lc3plus.c new file mode 100644 index 0000000000000000000000000000000000000000..45629965d87d48a7f2650b833b1d0d03cf123ac5 --- /dev/null +++ b/lib_lc3plus/rom_basop_util_lc3plus.c @@ -0,0 +1,2904 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "rom_basop_util_lc3plus.h" +#include "basop_util_lc3plus.h" +#include "functions.h" + + +/* clang-format off */ +# ifdef ENABLE_HR_MODE +# define STC(x) (x) +# define WTC(x) (x) +# define STCP(a, b) {{STC(a), STC(b)}} +# define WTCP(a, b) {{WTC(a), WTC(b)}} +# else +# define STC(x) WORD322WORD16(x) +# define WTC(x) WORD322WORD16(x) +# define STCP(a, b) {{STC(a), STC(b)}} +# define WTCP(a, b) {{WTC(a), WTC(b)}} +# endif +/* clang-format on */ + +/** + * \brief Lookup-Table for binary logarithm + */ +RAM_ALIGN const Word16 ldCoeff_lc3plus[7] = {-32768, -16384, -10923, -8192, -6554, -5461, -4681}; + +/** + \brief Lookup-Table for binary power algorithm + + This table is used for lookup 2^x with + x in range [0...1.0[ in steps of 1/32 +*/ +const UWord32 exp2_tab_long_lc3plus[32] = { + 0x40000000, 0x4166C34C, 0x42D561B4, 0x444C0740, 0x45CAE0F2, 0x47521CC6, 0x48E1E9BA, 0x4A7A77D4, + 0x4C1BF829, 0x4DC69CDD, 0x4F7A9930, 0x51382182, 0x52FF6B55, 0x54D0AD5A, 0x56AC1F75, 0x5891FAC1, + 0x5A82799A, 0x5C7DD7A4, 0x5E8451D0, 0x60962665, 0x62B39509, 0x64DCDEC3, 0x6712460B, 0x69540EC9, + 0x6BA27E65, 0x6DFDDBCC, 0x70666F76, 0x72DC8374, 0x75606374, 0x77F25CCE, 0x7A92BE8B, 0x7D41D96E, +}; + +/** + \brief Lookup-Table for binary power algorithm + + This table is used for lookup 2^x with + x in range [0...1/32[ in steps of 1/1024 +*/ +const UWord32 exp2w_tab_long_lc3plus[32] = { + 0x40000000, 0x400B1818, 0x4016321B, 0x40214E0C, 0x402C6BE9, 0x40378BB4, 0x4042AD6D, 0x404DD113, + 0x4058F6A8, 0x40641E2B, 0x406F479E, 0x407A7300, 0x4085A051, 0x4090CF92, 0x409C00C4, 0x40A733E6, + 0x40B268FA, 0x40BD9FFF, 0x40C8D8F5, 0x40D413DD, 0x40DF50B8, 0x40EA8F86, 0x40F5D046, 0x410112FA, + 0x410C57A2, 0x41179E3D, 0x4122E6CD, 0x412E3152, 0x41397DCC, 0x4144CC3B, 0x41501CA0, 0x415B6EFB, +}; + +/** + \brief Lookup-Table for binary power algorithm + + This table is used for lookup 2^x with + x in range [0...1/1024[ in steps of 1/32768 +*/ +const UWord32 exp2x_tab_long_lc3plus[32] = { + 0x40000000, 0x400058B9, 0x4000B173, 0x40010A2D, 0x400162E8, 0x4001BBA3, 0x4002145F, 0x40026D1B, + 0x4002C5D8, 0x40031E95, 0x40037752, 0x4003D011, 0x400428CF, 0x4004818E, 0x4004DA4E, 0x4005330E, + 0x40058BCE, 0x4005E48F, 0x40063D51, 0x40069613, 0x4006EED5, 0x40074798, 0x4007A05B, 0x4007F91F, + 0x400851E4, 0x4008AAA8, 0x4009036E, 0x40095C33, 0x4009B4FA, 0x400A0DC0, 0x400A6688, 0x400ABF4F, +}; + +/* square root tables */ +const Word32 SqrtTable_lc3plus[32] = { + /* Q31 */ + 0x5A82D429, 0x5BEA10FE, 0x5D4BE6E5, 0x5EA89270, 0x60004BE2, 0x615347A1, 0x62A1B68C, 0x63EBC651, + 0x6531A1B5, 0x667370D4, 0x67B1595F, 0x68EB7EC8, 0x6A220277, 0x6B5503F0, 0x6C84A0F9, 0x6DB0F5BD, + 0x6EDA1CE9, 0x70002FC7, 0x7123465A, 0x72437773, 0x7360D8C5, 0x747B7EFA, 0x75937DC4, 0x76A8E7EB, + 0x77BBCF60, 0x78CC4545, 0x79DA5A00, 0x7AE61D3E, 0x7BEF9E07, 0x7CF6EAC2, 0x7DFC113F, 0x7EFF1EC0, +}; + +const Word16 SqrtDiffTable_lc3plus[32] = { + /* Q21 */ + 0x59CF, 0x5875, 0x572B, 0x55EE, 0x54BF, 0x539C, 0x5284, 0x5177, 0x5074, 0x4F7A, 0x4E89, + 0x4DA1, 0x4CC0, 0x4BE7, 0x4B15, 0x4A4A, 0x4985, 0x48C6, 0x480C, 0x4758, 0x46AA, 0x4600, + 0x455B, 0x44BA, 0x441D, 0x4385, 0x42F1, 0x4260, 0x41D3, 0x414A, 0x40C3, 0x4040, +}; + +const Word32 ISqrtTable_lc3plus[32] = { + /* Q31 */ + 0x7FFE7F85, 0x7E0A4E25, 0x7C2C56C7, 0x7A63002C, 0x78ACD922, 0x7708939D, 0x75750088, 0x73F10C2D, + 0x727BBB1A, 0x71142774, 0x6FB97EA5, 0x6E6AFF54, 0x6D27F79D, 0x6BEFC388, 0x6AC1CBA4, 0x699D83DA, + 0x68826A53, 0x6770068E, 0x6665E882, 0x6563A7DF, 0x6468E364, 0x63754043, 0x62886999, 0x61A20FEE, + 0x60C1E8C8, 0x5FE7AE45, 0x5F131EBE, 0x5E43FC76, 0x5D7A0D4F, 0x5CB51A81, 0x5BF4F061, 0x5B395E26, +}; + +const Word16 ISqrtDiffTable_lc3plus[32] = { + /* Q21 */ + 0x7D0C, 0x777E, 0x7256, 0x6D8A, 0x6911, 0x64E5, 0x60FD, 0x5D54, 0x59E5, 0x56AA, 0x53A0, + 0x50C2, 0x4E0D, 0x4B7E, 0x4912, 0x46C6, 0x4499, 0x4288, 0x4090, 0x3EB1, 0x3CE9, 0x3B36, + 0x3996, 0x380A, 0x368F, 0x3524, 0x33C9, 0x327C, 0x313D, 0x300B, 0x2EE5, 0x2DCA, +}; + +/* 1/x tables */ +const Word32 InvTable_lc3plus[32] = { + /* Q31 */ + 0x7FFBFE40, 0x7C1B608E, 0x78752176, 0x750440BA, 0x71C44C49, 0x6EB14D0A, 0x6BC7B6B4, 0x69045A19, + 0x6664598A, 0x63E51EE2, 0x61845308, 0x5F3FD698, 0x5D15BB8E, 0x5B043FD0, 0x5909C861, 0x5724DD3C, + 0x555425B2, 0x53966532, 0x51EA787F, 0x504F5331, 0x4EC3FD84, 0x4D479267, 0x4BD93DBE, 0x4A783ADC, + 0x4923D31D, 0x47DB5CAE, 0x469E3974, 0x456BD608, 0x4443A8D9, 0x43253159, 0x420FF746, 0x41038A01, +}; + +#ifdef ENABLE_HR_MODE +const Word16 InvIntTable[74] = { + 32767, 32767, 16384, 10923, 8192, 6554, 5461, 4681, 4096, 3641, 3277, 2979, 2731, 2521, 2341, + 2185, 2048, 1928, 1820, 1725, 1638, 1560, 1489, 1425, 1365, 1311, 1260, 1214, 1170, 1130, + 1092, 1057, 1024, 993, 964, 936, 910, 886, 862, 840, 819, 799, 780, 762, 745, + 728, 712, 697, 683, 669, 655, 643, 630, 618, 607, 596, 585, 575, 565, 555, + 546, 537, 529, 520, 512, 504, 496, 489, 482, 475, 468, 462, 455, 449 +}; +#else +const Word16 InvIntTable[32] = { + 0x7FFF, 0x7FFF, 0x4000, 0x2AAB, 0x2000, 0x199A, 0x1555, 0x1249, 0x1000, 0x0E39, 0x0CCD, + 0x0BA3, 0x0AAB, 0x09D9, 0x0925, 0x0889, 0x0800, 0x0788, 0x071C, 0x06BD, 0x0666, 0x0618, + 0x05D1, 0x0591, 0x0555, 0x051F, 0x04EC, 0x04BE, 0x0492, 0x046A, 0x0444, 0x0421, +}; +#endif + +const Word16 InvDiffTable_lc3plus[32] = { + /* Q20 */ + 0x7C14, 0x74C8, 0x6E1C, 0x67FF, 0x6260, 0x5D33, 0x586C, 0x5400, 0x4FE7, 0x4C19, 0x4890, + 0x4543, 0x422F, 0x3F4F, 0x3C9D, 0x3A17, 0x37B8, 0x357E, 0x3365, 0x316B, 0x2F8D, 0x2DCB, + 0x2C20, 0x2A8D, 0x290F, 0x27A4, 0x264C, 0x2506, 0x23CF, 0x22A7, 0x218E, 0x2081, +}; + +/* + Sine tables + */ +# ifdef ENABLE_HR_MODE +const PWord32 SineTable480[] = { +# else +const PWord16 SineTable480[] = { +# endif + STCP(0x7fffffff, 0x00000000), STCP(0x7fffd315, 0x006b3b9b), STCP(0x7fff4c54, 0x00d676eb), + STCP(0x7ffe6bbf, 0x0141b1a5), STCP(0x7ffd3154, 0x01aceb7c), STCP(0x7ffb9d15, 0x02182427), + STCP(0x7ff9af04, 0x02835b5a), STCP(0x7ff76721, 0x02ee90c8), STCP(0x7ff4c56f, 0x0359c428), + STCP(0x7ff1c9ef, 0x03c4f52f), STCP(0x7fee74a2, 0x0430238f), STCP(0x7feac58d, 0x049b4f00), + STCP(0x7fe6bcb0, 0x05067734), STCP(0x7fe25a0f, 0x05719be2), STCP(0x7fdd9dad, 0x05dcbcbe), + STCP(0x7fd8878e, 0x0647d97c), STCP(0x7fd317b4, 0x06b2f1d2), STCP(0x7fcd4e24, 0x071e0575), + STCP(0x7fc72ae2, 0x07891418), STCP(0x7fc0adf2, 0x07f41d72), STCP(0x7fb9d759, 0x085f2137), + STCP(0x7fb2a71b, 0x08ca1f1b), STCP(0x7fab1d3d, 0x093516d4), STCP(0x7fa339c5, 0x09a00817), + STCP(0x7f9afcb9, 0x0a0af299), STCP(0x7f92661d, 0x0a75d60e), STCP(0x7f8975f9, 0x0ae0b22c), + STCP(0x7f802c52, 0x0b4b86a8), STCP(0x7f76892f, 0x0bb65336), STCP(0x7f6c8c96, 0x0c21178c), + STCP(0x7f62368f, 0x0c8bd35e), STCP(0x7f578721, 0x0cf68662), STCP(0x7f4c7e54, 0x0d61304e), + STCP(0x7f411c2f, 0x0dcbd0d5), STCP(0x7f3560b9, 0x0e3667ad), STCP(0x7f294bfd, 0x0ea0f48c), + STCP(0x7f1cde01, 0x0f0b7727), STCP(0x7f1016ce, 0x0f75ef33), STCP(0x7f02f66f, 0x0fe05c64), + STCP(0x7ef57cea, 0x104abe71), STCP(0x7ee7aa4c, 0x10b5150f), STCP(0x7ed97e9c, 0x111f5ff4), + STCP(0x7ecaf9e5, 0x11899ed3), STCP(0x7ebc1c31, 0x11f3d164), STCP(0x7eace58a, 0x125df75b), + STCP(0x7e9d55fc, 0x12c8106f), STCP(0x7e8d6d91, 0x13321c53), STCP(0x7e7d2c54, 0x139c1abf), + STCP(0x7e6c9251, 0x14060b68), STCP(0x7e5b9f93, 0x146fee03), STCP(0x7e4a5426, 0x14d9c245), + STCP(0x7e38b017, 0x154387e6), STCP(0x7e26b371, 0x15ad3e9a), STCP(0x7e145e42, 0x1616e618), + STCP(0x7e01b096, 0x16807e15), STCP(0x7deeaa7a, 0x16ea0646), STCP(0x7ddb4bfc, 0x17537e63), + STCP(0x7dc79529, 0x17bce621), STCP(0x7db3860f, 0x18263d36), STCP(0x7d9f1ebd, 0x188f8357), + STCP(0x7d8a5f40, 0x18f8b83c), STCP(0x7d7547a7, 0x1961db9b), STCP(0x7d5fd801, 0x19caed29), + STCP(0x7d4a105d, 0x1a33ec9c), STCP(0x7d33f0ca, 0x1a9cd9ac), STCP(0x7d1d7958, 0x1b05b40f), + STCP(0x7d06aa16, 0x1b6e7b7a), STCP(0x7cef8315, 0x1bd72fa4), STCP(0x7cd80464, 0x1c3fd045), + STCP(0x7cc02e15, 0x1ca85d12), STCP(0x7ca80038, 0x1d10d5c2), STCP(0x7c8f7ade, 0x1d793a0b), + STCP(0x7c769e18, 0x1de189a6), STCP(0x7c5d69f7, 0x1e49c447), STCP(0x7c43de8e, 0x1eb1e9a7), + STCP(0x7c29fbee, 0x1f19f97b), STCP(0x7c0fc22a, 0x1f81f37c), STCP(0x7bf53153, 0x1fe9d75f), + STCP(0x7bda497d, 0x2051a4dd), STCP(0x7bbf0aba, 0x20b95bac), STCP(0x7ba3751d, 0x2120fb83), + STCP(0x7b8788ba, 0x2188841a), STCP(0x7b6b45a5, 0x21eff528), STCP(0x7b4eabf1, 0x22574e65), + STCP(0x7b31bbb2, 0x22be8f87), STCP(0x7b1474fd, 0x2325b847), STCP(0x7af6d7e6, 0x238cc85d), + STCP(0x7ad8e482, 0x23f3bf7e), STCP(0x7aba9ae6, 0x245a9d65), STCP(0x7a9bfb27, 0x24c161c7), + STCP(0x7a7d055b, 0x25280c5e), STCP(0x7a5db997, 0x258e9ce0), STCP(0x7a3e17f2, 0x25f51307), + STCP(0x7a1e2082, 0x265b6e8a), STCP(0x79fdd35c, 0x26c1af22), STCP(0x79dd3098, 0x2727d486), + STCP(0x79bc384d, 0x278dde6e), STCP(0x799aea92, 0x27f3cc94), STCP(0x7979477d, 0x28599eb0), + STCP(0x79574f28, 0x28bf547b), STCP(0x793501a9, 0x2924edac), STCP(0x79125f19, 0x298a69fc), + STCP(0x78ef678f, 0x29efc925), STCP(0x78cc1b26, 0x2a550adf), STCP(0x78a879f4, 0x2aba2ee4), + STCP(0x78848414, 0x2b1f34eb), STCP(0x7860399e, 0x2b841caf), STCP(0x783b9aad, 0x2be8e5e8), + STCP(0x7816a759, 0x2c4d9050), STCP(0x77f15fbc, 0x2cb21ba0), STCP(0x77cbc3f2, 0x2d168792), + STCP(0x77a5d413, 0x2d7ad3de), STCP(0x777f903c, 0x2ddf0040), STCP(0x7758f886, 0x2e430c6f), + STCP(0x77320d0d, 0x2ea6f827), STCP(0x770acdec, 0x2f0ac320), STCP(0x76e33b3f, 0x2f6e6d16), + STCP(0x76bb5521, 0x2fd1f5c1), STCP(0x76931bae, 0x30355cdd), STCP(0x766a8f04, 0x3098a223), + STCP(0x7641af3d, 0x30fbc54d), STCP(0x76187c77, 0x315ec617), STCP(0x75eef6ce, 0x31c1a43b), + STCP(0x75c51e61, 0x32245f72), STCP(0x759af34c, 0x3286f779), STCP(0x757075ac, 0x32e96c09), + STCP(0x7545a5a0, 0x334bbcde), STCP(0x751a8346, 0x33ade9b3), STCP(0x74ef0ebc, 0x340ff242), + STCP(0x74c34820, 0x3471d647), STCP(0x74972f92, 0x34d3957e), STCP(0x746ac52f, 0x35352fa1), + STCP(0x743e0918, 0x3596a46c), STCP(0x7410fb6b, 0x35f7f39c), STCP(0x73e39c49, 0x36591cea), + STCP(0x73b5ebd1, 0x36ba2014), STCP(0x7387ea23, 0x371afcd5), STCP(0x73599760, 0x377bb2e9), + STCP(0x732af3a7, 0x37dc420c), STCP(0x72fbff1b, 0x383ca9fb), STCP(0x72ccb9db, 0x389cea72), + STCP(0x729d2409, 0x38fd032d), STCP(0x726d3dc6, 0x395cf3e9), STCP(0x723d0734, 0x39bcbc63), + STCP(0x720c8075, 0x3a1c5c57), STCP(0x71dba9ab, 0x3a7bd382), STCP(0x71aa82f7, 0x3adb21a1), + STCP(0x71790c7e, 0x3b3a4672), STCP(0x71474660, 0x3b9941b1), STCP(0x711530c2, 0x3bf8131c), + STCP(0x70e2cbc6, 0x3c56ba70), STCP(0x70b01790, 0x3cb5376b), STCP(0x707d1443, 0x3d1389cb), + STCP(0x7049c203, 0x3d71b14d), STCP(0x701620f5, 0x3dcfadb0), STCP(0x6fe2313c, 0x3e2d7eb1), + STCP(0x6fadf2fc, 0x3e8b240e), STCP(0x6f79665b, 0x3ee89d86), STCP(0x6f448b7e, 0x3f45ead8), + STCP(0x6f0f6289, 0x3fa30bc1), STCP(0x6ed9eba1, 0x40000000), STCP(0x6ea426ed, 0x405cc754), + STCP(0x6e6e1492, 0x40b9617d), STCP(0x6e37b4b6, 0x4115ce38), STCP(0x6e010780, 0x41720d46), + STCP(0x6dca0d14, 0x41ce1e65), STCP(0x6d92c59b, 0x422a0154), STCP(0x6d5b313b, 0x4285b5d4), + STCP(0x6d23501b, 0x42e13ba4), STCP(0x6ceb2261, 0x433c9283), STCP(0x6cb2a837, 0x4397ba32), + STCP(0x6c79e1c2, 0x43f2b271), STCP(0x6c40cf2c, 0x444d7aff), STCP(0x6c07709b, 0x44a8139e), + STCP(0x6bcdc639, 0x45027c0c), STCP(0x6b93d02e, 0x455cb40c), STCP(0x6b598ea3, 0x45b6bb5e), + STCP(0x6b1f01c0, 0x461091c2), STCP(0x6ae429ae, 0x466a36f9), STCP(0x6aa90697, 0x46c3aac5), + STCP(0x6a6d98a4, 0x471cece7), STCP(0x6a31e000, 0x4775fd1f), STCP(0x69f5dcd3, 0x47cedb31), + STCP(0x69b98f48, 0x482786dc), STCP(0x697cf78a, 0x487fffe4), STCP(0x694015c3, 0x48d84609), + STCP(0x6902ea1d, 0x4930590f), STCP(0x68c574c4, 0x498838b6), STCP(0x6887b5e2, 0x49dfe4c2), + STCP(0x6849ada3, 0x4a375cf5), STCP(0x680b5c33, 0x4a8ea111), STCP(0x67ccc1be, 0x4ae5b0da), + STCP(0x678dde6e, 0x4b3c8c12), STCP(0x674eb271, 0x4b93327c), STCP(0x670f3df3, 0x4be9a3db), + STCP(0x66cf8120, 0x4c3fdff4), STCP(0x668f7c25, 0x4c95e688), STCP(0x664f2f2e, 0x4cebb75c), + STCP(0x660e9a6a, 0x4d415234), STCP(0x65cdbe05, 0x4d96b6d3), STCP(0x658c9a2d, 0x4debe4fe), + STCP(0x654b2f10, 0x4e40dc79), STCP(0x65097cdb, 0x4e959d08), STCP(0x64c783bd, 0x4eea2670), + STCP(0x648543e4, 0x4f3e7875), STCP(0x6442bd7e, 0x4f9292dc), STCP(0x63fff0ba, 0x4fe6756a), + STCP(0x63bcddc7, 0x503a1fe5), STCP(0x637984d4, 0x508d9211), STCP(0x6335e611, 0x50e0cbb4), + STCP(0x62f201ac, 0x5133cc94), STCP(0x62add7d6, 0x51869476), STCP(0x626968be, 0x51d92321), + STCP(0x6224b495, 0x522b7859), STCP(0x61dfbb8a, 0x527d93e6), STCP(0x619a7dce, 0x52cf758f), + STCP(0x6154fb91, 0x53211d18), STCP(0x610f3505, 0x53728a4a), STCP(0x60c92a5a, 0x53c3bcea), + STCP(0x6082dbc1, 0x5414b4c1), STCP(0x603c496c, 0x54657194), STCP(0x5ff5738d, 0x54b5f32c), + STCP(0x5fae5a55, 0x55063951), STCP(0x5f66fdf5, 0x555643c8), STCP(0x5f1f5ea1, 0x55a6125c), + STCP(0x5ed77c8a, 0x55f5a4d2), STCP(0x5e8f57e2, 0x5644faf4), STCP(0x5e46f0dd, 0x5694148b), + STCP(0x5dfe47ad, 0x56e2f15d), STCP(0x5db55c86, 0x57319135), STCP(0x5d6c2f99, 0x577ff3da), + STCP(0x5d22c11c, 0x57ce1917), STCP(0x5cd91140, 0x581c00b3), STCP(0x5c8f203b, 0x5869aa79), + STCP(0x5c44ee40, 0x58b71632), STCP(0x5bfa7b82, 0x590443a7), STCP(0x5bafc837, 0x595132a2), + STCP(0x5b64d492, 0x599de2ee), STCP(0x5b19a0c8, 0x59ea5454), STCP(0x5ace2d0f, 0x5a36869f), + STCP(0x5a82799a, 0x5a82799a), +}; + +# ifdef ENABLE_HR_MODE +const PWord32 SineTable360[] = { +# else +const PWord16 SineTable360[] = { +# endif + STCP(0x7fffffff, 0x00000000), STCP(0x7fffb025, 0x008efa17), STCP(0x7ffec095, 0x011df37c), + STCP(0x7ffd3153, 0x01aceb7c), STCP(0x7ffb025f, 0x023be165), STCP(0x7ff833bc, 0x02cad485), + STCP(0x7ff4c56e, 0x0359c428), STCP(0x7ff0b779, 0x03e8af9e), STCP(0x7fec09e2, 0x04779632), + STCP(0x7fe6bcaf, 0x05067734), STCP(0x7fe0cfe6, 0x059551f1), STCP(0x7fda4390, 0x062425b6), + STCP(0x7fd317b3, 0x06b2f1d2), STCP(0x7fcb4c5a, 0x0741b592), STCP(0x7fc2e18d, 0x07d07044), + STCP(0x7fb9d758, 0x085f2136), STCP(0x7fb02dc5, 0x08edc7b7), STCP(0x7fa5e4e0, 0x097c6313), + STCP(0x7f9afcb8, 0x0a0af299), STCP(0x7f8f7558, 0x0a997597), STCP(0x7f834ecf, 0x0b27eb5c), + STCP(0x7f76892e, 0x0bb65336), STCP(0x7f692482, 0x0c44ac72), STCP(0x7f5b20de, 0x0cd2f660), + STCP(0x7f4c7e53, 0x0d61304e), STCP(0x7f3d3cf3, 0x0def5989), STCP(0x7f2d5cd0, 0x0e7d7162), + STCP(0x7f1cde00, 0x0f0b7727), STCP(0x7f0bc096, 0x0f996a26), STCP(0x7efa04a7, 0x102749ae), + STCP(0x7ee7aa4b, 0x10b5150f), STCP(0x7ed4b197, 0x1142cb98), STCP(0x7ec11aa4, 0x11d06c96), + STCP(0x7eace589, 0x125df75b), STCP(0x7e981261, 0x12eb6b35), STCP(0x7e82a145, 0x1378c774), + STCP(0x7e6c9250, 0x14060b68), STCP(0x7e55e59d, 0x1493365f), STCP(0x7e3e9b49, 0x152047ab), + STCP(0x7e26b370, 0x15ad3e9a), STCP(0x7e0e2e31, 0x163a1a7e), STCP(0x7df50baa, 0x16c6daa6), + STCP(0x7ddb4bfb, 0x17537e63), STCP(0x7dc0ef43, 0x17e00505), STCP(0x7da5f5a4, 0x186c6ddd), + STCP(0x7d8a5f3f, 0x18f8b83c), STCP(0x7d6e2c36, 0x1984e373), STCP(0x7d515cae, 0x1a10eed2), + STCP(0x7d33f0c9, 0x1a9cd9ac), STCP(0x7d15e8ac, 0x1b28a351), STCP(0x7cf7447e, 0x1bb44b13), + STCP(0x7cd80464, 0x1c3fd045), STCP(0x7cb82884, 0x1ccb3237), STCP(0x7c97b108, 0x1d56703b), + STCP(0x7c769e17, 0x1de189a5), STCP(0x7c54efdb, 0x1e6c7dc7), STCP(0x7c32a67d, 0x1ef74bf3), + STCP(0x7c0fc229, 0x1f81f37b), STCP(0x7bec430a, 0x200c73b4), STCP(0x7bc8294c, 0x2096cbf0), + STCP(0x7ba3751c, 0x2120fb83), STCP(0x7b7e26a9, 0x21ab01c0), STCP(0x7b583e20, 0x2234ddfa), + STCP(0x7b31bbb1, 0x22be8f87), STCP(0x7b0a9f8d, 0x234815ba), STCP(0x7ae2e9e3, 0x23d16fe8), + STCP(0x7aba9ae5, 0x245a9d64), STCP(0x7a91b2c6, 0x24e39d85), STCP(0x7a6831b9, 0x256c6f9f), + STCP(0x7a3e17f1, 0x25f51307), STCP(0x7a1365a4, 0x267d8713), STCP(0x79e81b05, 0x2705cb19), + STCP(0x79bc384c, 0x278dde6e), STCP(0x798fbdaf, 0x2815c069), STCP(0x7962ab66, 0x289d7061), + STCP(0x793501a8, 0x2924edab), STCP(0x7906c0af, 0x29ac37a0), STCP(0x78d7e8b5, 0x2a334d95), + STCP(0x78a879f3, 0x2aba2ee3), STCP(0x787874a6, 0x2b40dae2), STCP(0x7847d908, 0x2bc750e9), + STCP(0x7816a758, 0x2c4d9050), STCP(0x77e4dfd1, 0x2cd39870), STCP(0x77b282b3, 0x2d5968a2), + STCP(0x777f903b, 0x2ddf003f), STCP(0x774c08aa, 0x2e645ea0), STCP(0x7717ec40, 0x2ee9831f), + STCP(0x76e33b3e, 0x2f6e6d15), STCP(0x76adf5e5, 0x2ff31bdd), STCP(0x76781c79, 0x30778ed2), + STCP(0x7641af3c, 0x30fbc54d), STCP(0x760aae72, 0x317fbeaa), STCP(0x75d31a60, 0x32037a45), + STCP(0x759af34b, 0x3286f778), STCP(0x75623979, 0x330a35a1), STCP(0x7528ed31, 0x338d341a), + STCP(0x74ef0ebb, 0x340ff242), STCP(0x74b49e5f, 0x34926f74), STCP(0x74799c65, 0x3514ab0d), + STCP(0x743e0917, 0x3596a46c), STCP(0x7401e4c0, 0x36185aee), STCP(0x73c52faa, 0x3699cdf1), + STCP(0x7387ea22, 0x371afcd4), STCP(0x734a1474, 0x379be6f6), STCP(0x730baeec, 0x381c8bb5), + STCP(0x72ccb9da, 0x389cea71), STCP(0x728d358b, 0x391d028b), STCP(0x724d224e, 0x399cd362), + STCP(0x720c8074, 0x3a1c5c56), STCP(0x71cb504d, 0x3a9b9cc9), STCP(0x7189922b, 0x3b1a941c), + STCP(0x7147465f, 0x3b9941b0), STCP(0x71046d3d, 0x3c17a4e8), STCP(0x70c10717, 0x3c95bd25), + STCP(0x707d1442, 0x3d1389cb), STCP(0x70389513, 0x3d910a3c), STCP(0x6ff389de, 0x3e0e3ddb), + STCP(0x6fadf2fb, 0x3e8b240e), STCP(0x6f67d0c0, 0x3f07bc37), STCP(0x6f212384, 0x3f8405bb), + STCP(0x6ed9eba1, 0x3fffffff), STCP(0x6e92296d, 0x407baa69), STCP(0x6e49dd44, 0x40f7045f), + STCP(0x6e01077f, 0x41720d45), STCP(0x6db7a879, 0x41ecc483), STCP(0x6d6dc08e, 0x42672980), + STCP(0x6d23501a, 0x42e13ba3), STCP(0x6cd85779, 0x435afa54), STCP(0x6c8cd70a, 0x43d464fa), + STCP(0x6c40cf2b, 0x444d7aff), STCP(0x6bf4403a, 0x44c63bca), STCP(0x6ba72a97, 0x453ea6c7), + STCP(0x6b598ea2, 0x45b6bb5d), STCP(0x6b0b6cbc, 0x462e78f8), STCP(0x6abcc546, 0x46a5df02), + STCP(0x6a6d98a3, 0x471cece6), STCP(0x6a1de736, 0x4793a210), STCP(0x69cdb161, 0x4809fdeb), + STCP(0x697cf789, 0x487fffe3), STCP(0x692bba13, 0x48f5a767), STCP(0x68d9f964, 0x496af3e1), + STCP(0x6887b5e1, 0x49dfe4c2), STCP(0x6834eff2, 0x4a547975), STCP(0x67e1a7ff, 0x4ac8b16b), + STCP(0x678dde6e, 0x4b3c8c11), STCP(0x673993a8, 0x4bb008d8), STCP(0x66e4c817, 0x4c23272f), + STCP(0x668f7c24, 0x4c95e687), STCP(0x6639b03a, 0x4d084651), STCP(0x65e364c3, 0x4d7a45fd), + STCP(0x658c9a2d, 0x4debe4fe), STCP(0x653550e1, 0x4e5d22c5), STCP(0x64dd894f, 0x4ecdfec6), + STCP(0x648543e3, 0x4f3e7874), STCP(0x642c810b, 0x4fae8f42), STCP(0x63d34136, 0x501e42a5), + STCP(0x637984d4, 0x508d9211), STCP(0x631f4c54, 0x50fc7cfa), STCP(0x62c49826, 0x516b02d8), + STCP(0x626968be, 0x51d92320), STCP(0x620dbe8a, 0x5246dd48), STCP(0x61b19a00, 0x52b430c8), + STCP(0x6154fb90, 0x53211d17), STCP(0x60f7e3b0, 0x538da1ae), STCP(0x609a52d2, 0x53f9be04), + STCP(0x603c496c, 0x54657194), STCP(0x5fddc7f3, 0x54d0bbd6), STCP(0x5f7ecedd, 0x553b9c45), + STCP(0x5f1f5ea0, 0x55a6125b), STCP(0x5ebf77b4, 0x56101d94), STCP(0x5e5f1a90, 0x5679bd6b), + STCP(0x5dfe47ad, 0x56e2f15d), STCP(0x5d9cff82, 0x574bb8e6), STCP(0x5d3b428b, 0x57b41383), + STCP(0x5cd91140, 0x581c00b3), STCP(0x5c766c1c, 0x58837ff3), STCP(0x5c13539a, 0x58ea90c3), + STCP(0x5bafc836, 0x595132a2), STCP(0x5b4bca6c, 0x59b7650f), STCP(0x5ae75ab8, 0x5a1d278c), + STCP(0x5a827999, 0x5a827999), +}; + +# ifdef ENABLE_HR_MODE +const PWord32 SineTable320[] = { +# else +const PWord16 SineTable320[] = { +# endif + STCP(0x7fffffff, 0x00000000), STCP(0x7fff9aef, 0x00a0d951), STCP(0x7ffe6bbf, 0x0141b1a5), + STCP(0x7ffc726f, 0x01e287fc), STCP(0x7ff9af04, 0x02835b5a), STCP(0x7ff62182, 0x03242abf), + STCP(0x7ff1c9ef, 0x03c4f52f), STCP(0x7feca851, 0x0465b9aa), STCP(0x7fe6bcb0, 0x05067734), + STCP(0x7fe00716, 0x05a72ccf), STCP(0x7fd8878e, 0x0647d97c), STCP(0x7fd03e23, 0x06e87c3f), + STCP(0x7fc72ae2, 0x07891418), STCP(0x7fbd4dda, 0x0829a00c), STCP(0x7fb2a71b, 0x08ca1f1b), + STCP(0x7fa736b4, 0x096a9049), STCP(0x7f9afcb9, 0x0a0af299), STCP(0x7f8df93c, 0x0aab450d), + STCP(0x7f802c52, 0x0b4b86a8), STCP(0x7f719611, 0x0bebb66c), STCP(0x7f62368f, 0x0c8bd35e), + STCP(0x7f520de6, 0x0d2bdc80), STCP(0x7f411c2f, 0x0dcbd0d5), STCP(0x7f2f6183, 0x0e6baf61), + STCP(0x7f1cde01, 0x0f0b7727), STCP(0x7f0991c4, 0x0fab272b), STCP(0x7ef57cea, 0x104abe71), + STCP(0x7ee09f95, 0x10ea3bfd), STCP(0x7ecaf9e5, 0x11899ed3), STCP(0x7eb48bfb, 0x1228e5f8), + STCP(0x7e9d55fc, 0x12c8106f), STCP(0x7e85580c, 0x13671d3d), STCP(0x7e6c9251, 0x14060b68), + STCP(0x7e5304f2, 0x14a4d9f4), STCP(0x7e38b017, 0x154387e6), STCP(0x7e1d93ea, 0x15e21445), + STCP(0x7e01b096, 0x16807e15), STCP(0x7de50646, 0x171ec45c), STCP(0x7dc79529, 0x17bce621), + STCP(0x7da95d6c, 0x185ae269), STCP(0x7d8a5f40, 0x18f8b83c), STCP(0x7d6a9ad5, 0x199666a0), + STCP(0x7d4a105d, 0x1a33ec9c), STCP(0x7d28c00c, 0x1ad14938), STCP(0x7d06aa16, 0x1b6e7b7a), + STCP(0x7ce3ceb2, 0x1c0b826a), STCP(0x7cc02e15, 0x1ca85d12), STCP(0x7c9bc87a, 0x1d450a78), + STCP(0x7c769e18, 0x1de189a6), STCP(0x7c50af2b, 0x1e7dd9a4), STCP(0x7c29fbee, 0x1f19f97b), + STCP(0x7c02849f, 0x1fb5e836), STCP(0x7bda497d, 0x2051a4dd), STCP(0x7bb14ac5, 0x20ed2e7b), + STCP(0x7b8788ba, 0x2188841a), STCP(0x7b5d039e, 0x2223a4c5), STCP(0x7b31bbb2, 0x22be8f87), + STCP(0x7b05b13d, 0x2359436c), STCP(0x7ad8e482, 0x23f3bf7e), STCP(0x7aab55ca, 0x248e02cb), + STCP(0x7a7d055b, 0x25280c5e), STCP(0x7a4df380, 0x25c1db44), STCP(0x7a1e2082, 0x265b6e8a), + STCP(0x79ed8cad, 0x26f4c53e), STCP(0x79bc384d, 0x278dde6e), STCP(0x798a23b1, 0x2826b928), + STCP(0x79574f28, 0x28bf547b), STCP(0x7923bb01, 0x2957af74), STCP(0x78ef678f, 0x29efc925), + STCP(0x78ba5524, 0x2a87a09d), STCP(0x78848414, 0x2b1f34eb), STCP(0x784df4b3, 0x2bb68522), + STCP(0x7816a759, 0x2c4d9050), STCP(0x77de9c5b, 0x2ce45589), STCP(0x77a5d413, 0x2d7ad3de), + STCP(0x776c4edb, 0x2e110a62), STCP(0x77320d0d, 0x2ea6f827), STCP(0x76f70f05, 0x2f3c9c40), + STCP(0x76bb5521, 0x2fd1f5c1), STCP(0x767edfbe, 0x306703bf), STCP(0x7641af3d, 0x30fbc54d), + STCP(0x7603c3fd, 0x31903982), STCP(0x75c51e61, 0x32245f72), STCP(0x7585becb, 0x32b83634), + STCP(0x7545a5a0, 0x334bbcde), STCP(0x7504d345, 0x33def287), STCP(0x74c34820, 0x3471d647), + STCP(0x74810499, 0x35046736), STCP(0x743e0918, 0x3596a46c), STCP(0x73fa5607, 0x36288d03), + STCP(0x73b5ebd1, 0x36ba2014), STCP(0x7370cae2, 0x374b5cb9), STCP(0x732af3a7, 0x37dc420c), + STCP(0x72e4668f, 0x386ccf2a), STCP(0x729d2409, 0x38fd032d), STCP(0x72552c85, 0x398cdd32), + STCP(0x720c8075, 0x3a1c5c57), STCP(0x71c3204c, 0x3aab7fb7), STCP(0x71790c7e, 0x3b3a4672), + STCP(0x712e457f, 0x3bc8afa5), STCP(0x70e2cbc6, 0x3c56ba70), STCP(0x70969fca, 0x3ce465f3), + STCP(0x7049c203, 0x3d71b14d), STCP(0x6ffc32eb, 0x3dfe9ba1), STCP(0x6fadf2fc, 0x3e8b240e), + STCP(0x6f5f02b2, 0x3f1749b8), STCP(0x6f0f6289, 0x3fa30bc1), STCP(0x6ebf12ff, 0x402e694c), + STCP(0x6e6e1492, 0x40b9617d), STCP(0x6e1c67c4, 0x4143f379), STCP(0x6dca0d14, 0x41ce1e65), + STCP(0x6d770506, 0x4257e166), STCP(0x6d23501b, 0x42e13ba4), STCP(0x6cceeed8, 0x436a2c45), + STCP(0x6c79e1c2, 0x43f2b271), STCP(0x6c242960, 0x447acd50), STCP(0x6bcdc639, 0x45027c0c), + STCP(0x6b76b8d6, 0x4589bdcf), STCP(0x6b1f01c0, 0x461091c2), STCP(0x6ac6a180, 0x4696f710), + STCP(0x6a6d98a4, 0x471cece7), STCP(0x6a13e7b8, 0x47a27271), STCP(0x69b98f48, 0x482786dc), + STCP(0x695e8fe5, 0x48ac2957), STCP(0x6902ea1d, 0x4930590f), STCP(0x68a69e81, 0x49b41533), + STCP(0x6849ada3, 0x4a375cf5), STCP(0x67ec1817, 0x4aba2f84), STCP(0x678dde6e, 0x4b3c8c12), + STCP(0x672f013f, 0x4bbe71d1), STCP(0x66cf8120, 0x4c3fdff4), STCP(0x666f5ea6, 0x4cc0d5ae), + STCP(0x660e9a6a, 0x4d415234), STCP(0x65ad3505, 0x4dc154bb), STCP(0x654b2f10, 0x4e40dc79), + STCP(0x64e88926, 0x4ebfe8a5), STCP(0x648543e4, 0x4f3e7875), STCP(0x64215fe5, 0x4fbc8b22), + STCP(0x63bcddc7, 0x503a1fe5), STCP(0x6357be2a, 0x50b735f8), STCP(0x62f201ac, 0x5133cc94), + STCP(0x628ba8ef, 0x51afe2f6), STCP(0x6224b495, 0x522b7859), STCP(0x61bd253f, 0x52a68bfb), + STCP(0x6154fb91, 0x53211d18), STCP(0x60ec3830, 0x539b2af0), STCP(0x6082dbc1, 0x5414b4c1), + STCP(0x6018e6eb, 0x548db9cb), STCP(0x5fae5a55, 0x55063951), STCP(0x5f4336a7, 0x557e3292), + STCP(0x5ed77c8a, 0x55f5a4d2), STCP(0x5e6b2ca8, 0x566c8f55), STCP(0x5dfe47ad, 0x56e2f15d), + STCP(0x5d90ce45, 0x5758ca31), STCP(0x5d22c11c, 0x57ce1917), STCP(0x5cb420e0, 0x5842dd54), + STCP(0x5c44ee40, 0x58b71632), STCP(0x5bd529eb, 0x592ac2f7), STCP(0x5b64d492, 0x599de2ee), + STCP(0x5af3eee6, 0x5a107561), STCP(0x5a82799a, 0x5a82799a), +}; + + +# ifdef ENABLE_HR_MODE +#ifdef CR8_G_ADD_75MS + const PWord32 SineTable720[] = { + STCP(0x7fffffff, 0x00000000), STCP(0x7fffec08, 0x00477d17), STCP(0x7fffb025, 0x008efa17), + STCP(0x7fff4c53, 0x00d676eb), STCP(0x7ffec095, 0x011df37c), STCP(0x7ffe0cea, 0x01656fb4), + STCP(0x7ffd3153, 0x01aceb7c), STCP(0x7ffc2dcf, 0x01f466bf), STCP(0x7ffb025f, 0x023be165), + STCP(0x7ff9af03, 0x02835b59), STCP(0x7ff833bc, 0x02cad485), STCP(0x7ff6908a, 0x03124cd1), + STCP(0x7ff4c56e, 0x0359c428), STCP(0x7ff2d268, 0x03a13a74), STCP(0x7ff0b779, 0x03e8af9e), + STCP(0x7fee74a1, 0x0430238f), STCP(0x7fec09e2, 0x04779632), STCP(0x7fe9773c, 0x04bf0771), + STCP(0x7fe6bcaf, 0x05067734), STCP(0x7fe3da3d, 0x054de566), STCP(0x7fe0cfe6, 0x059551f1), + STCP(0x7fdd9dac, 0x05dcbcbe), STCP(0x7fda4390, 0x062425b6), STCP(0x7fd6c192, 0x066b8cc5), + STCP(0x7fd317b3, 0x06b2f1d2), STCP(0x7fcf45f6, 0x06fa54c9), STCP(0x7fcb4c5a, 0x0741b592), + STCP(0x7fc72ae1, 0x07891418), STCP(0x7fc2e18d, 0x07d07044), STCP(0x7fbe705f, 0x0817ca01), + STCP(0x7fb9d758, 0x085f2136), STCP(0x7fb51679, 0x08a675d0), STCP(0x7fb02dc5, 0x08edc7b7), + STCP(0x7fab1d3c, 0x093516d4), STCP(0x7fa5e4e0, 0x097c6313), STCP(0x7fa084b4, 0x09c3ac5c), + STCP(0x7f9afcb8, 0x0a0af299), STCP(0x7f954cee, 0x0a5235b4), STCP(0x7f8f7558, 0x0a997597), + STCP(0x7f8975f8, 0x0ae0b22c), STCP(0x7f834ecf, 0x0b27eb5c), STCP(0x7f7cffe1, 0x0b6f2112), + STCP(0x7f76892e, 0x0bb65336), STCP(0x7f6feab8, 0x0bfd81b3), STCP(0x7f692482, 0x0c44ac72), + STCP(0x7f62368e, 0x0c8bd35e), STCP(0x7f5b20de, 0x0cd2f660), STCP(0x7f53e374, 0x0d1a1562), + STCP(0x7f4c7e53, 0x0d61304e), STCP(0x7f44f17c, 0x0da8470d), STCP(0x7f3d3cf3, 0x0def5989), + STCP(0x7f3560b8, 0x0e3667ad), STCP(0x7f2d5cd0, 0x0e7d7162), STCP(0x7f25313c, 0x0ec47692), + STCP(0x7f1cde00, 0x0f0b7727), STCP(0x7f14631c, 0x0f52730a), STCP(0x7f0bc096, 0x0f996a26), + STCP(0x7f02f66e, 0x0fe05c64), STCP(0x7efa04a7, 0x102749ae), STCP(0x7ef0eb45, 0x106e31ef), + STCP(0x7ee7aa4b, 0x10b5150f), STCP(0x7ede41ba, 0x10fbf2fa), STCP(0x7ed4b197, 0x1142cb98), + STCP(0x7ecaf9e4, 0x11899ed3), STCP(0x7ec11aa4, 0x11d06c96), STCP(0x7eb713da, 0x121734cb), + STCP(0x7eace589, 0x125df75b), STCP(0x7ea28fb5, 0x12a4b431), STCP(0x7e981261, 0x12eb6b35), + STCP(0x7e8d6d90, 0x13321c53), STCP(0x7e82a145, 0x1378c774), STCP(0x7e77ad84, 0x13bf6c82), + STCP(0x7e6c9250, 0x14060b68), STCP(0x7e614fac, 0x144ca40e), STCP(0x7e55e59d, 0x1493365f), + STCP(0x7e4a5425, 0x14d9c245), STCP(0x7e3e9b49, 0x152047ab), STCP(0x7e32bb0b, 0x1566c679), + STCP(0x7e26b370, 0x15ad3e9a), STCP(0x7e1a847b, 0x15f3aff8), STCP(0x7e0e2e31, 0x163a1a7e), + STCP(0x7e01b095, 0x16807e14), STCP(0x7df50baa, 0x16c6daa6), STCP(0x7de83f76, 0x170d301d), + STCP(0x7ddb4bfb, 0x17537e63), STCP(0x7dce313e, 0x1799c562), STCP(0x7dc0ef43, 0x17e00505), + STCP(0x7db3860e, 0x18263d35), STCP(0x7da5f5a4, 0x186c6ddd), STCP(0x7d983e08, 0x18b296e7), + STCP(0x7d8a5f3f, 0x18f8b83c), STCP(0x7d7c594d, 0x193ed1c8), STCP(0x7d6e2c36, 0x1984e373), + STCP(0x7d5fd800, 0x19caed28), STCP(0x7d515cae, 0x1a10eed2), STCP(0x7d42ba45, 0x1a56e85b), + STCP(0x7d33f0c9, 0x1a9cd9ac), STCP(0x7d25003f, 0x1ae2c2b0), STCP(0x7d15e8ac, 0x1b28a351), + STCP(0x7d06aa15, 0x1b6e7b7a), STCP(0x7cf7447e, 0x1bb44b13), STCP(0x7ce7b7ec, 0x1bfa1209), + STCP(0x7cd80464, 0x1c3fd045), STCP(0x7cc829ea, 0x1c8585b0), STCP(0x7cb82884, 0x1ccb3237), + STCP(0x7ca80037, 0x1d10d5c1), STCP(0x7c97b108, 0x1d56703b), STCP(0x7c873afb, 0x1d9c018f), + STCP(0x7c769e17, 0x1de189a5), STCP(0x7c65da60, 0x1e27086a), STCP(0x7c54efdb, 0x1e6c7dc7), + STCP(0x7c43de8d, 0x1eb1e9a6), STCP(0x7c32a67d, 0x1ef74bf3), STCP(0x7c2147af, 0x1f3ca496), + STCP(0x7c0fc229, 0x1f81f37b), STCP(0x7bfe15f0, 0x1fc7388d), STCP(0x7bec430a, 0x200c73b4), + STCP(0x7bda497c, 0x2051a4dd), STCP(0x7bc8294c, 0x2096cbf0), STCP(0x7bb5e27f, 0x20dbe8da), + STCP(0x7ba3751c, 0x2120fb83), STCP(0x7b90e128, 0x216603d7), STCP(0x7b7e26a9, 0x21ab01c0), + STCP(0x7b6b45a4, 0x21eff528), STCP(0x7b583e20, 0x2234ddfa), STCP(0x7b451022, 0x2279bc21), + STCP(0x7b31bbb1, 0x22be8f87), STCP(0x7b1e40d3, 0x23035817), STCP(0x7b0a9f8d, 0x234815ba), + STCP(0x7af6d7e5, 0x238cc85c), STCP(0x7ae2e9e3, 0x23d16fe8), STCP(0x7aced58b, 0x24160c47), + STCP(0x7aba9ae5, 0x245a9d64), STCP(0x7aa639f7, 0x249f232b), STCP(0x7a91b2c6, 0x24e39d85), + STCP(0x7a7d055a, 0x25280c5d), STCP(0x7a6831b9, 0x256c6f9f), STCP(0x7a5337e9, 0x25b0c734), + STCP(0x7a3e17f1, 0x25f51307), STCP(0x7a28d1d8, 0x26395303), STCP(0x7a1365a4, 0x267d8713), + STCP(0x79fdd35b, 0x26c1af21), STCP(0x79e81b05, 0x2705cb19), STCP(0x79d23ca9, 0x2749dae4), + STCP(0x79bc384c, 0x278dde6e), STCP(0x79a60df7, 0x27d1d5a2), STCP(0x798fbdaf, 0x2815c069), + STCP(0x7979477c, 0x28599eb0), STCP(0x7962ab66, 0x289d7061), STCP(0x794be972, 0x28e13566), + STCP(0x793501a8, 0x2924edab), STCP(0x791df40f, 0x2968991b), STCP(0x7906c0af, 0x29ac37a0), + STCP(0x78ef678e, 0x29efc925), STCP(0x78d7e8b5, 0x2a334d95), STCP(0x78c04429, 0x2a76c4dc), + STCP(0x78a879f3, 0x2aba2ee3), STCP(0x78908a1a, 0x2afd8b97), STCP(0x787874a6, 0x2b40dae2), + STCP(0x7860399d, 0x2b841caf), STCP(0x7847d908, 0x2bc750e9), STCP(0x782f52ef, 0x2c0a777b), + STCP(0x7816a758, 0x2c4d9050), STCP(0x77fdd64b, 0x2c909b54), STCP(0x77e4dfd1, 0x2cd39870), + STCP(0x77cbc3f1, 0x2d168792), STCP(0x77b282b3, 0x2d5968a2), STCP(0x77991c1e, 0x2d9c3b8e), + STCP(0x777f903b, 0x2ddf003f), STCP(0x7765df12, 0x2e21b6a2), STCP(0x774c08aa, 0x2e645ea0), + STCP(0x77320d0c, 0x2ea6f826), STCP(0x7717ec40, 0x2ee9831f), STCP(0x76fda64e, 0x2f2bff76), + STCP(0x76e33b3e, 0x2f6e6d15), STCP(0x76c8ab18, 0x2fb0cbea), STCP(0x76adf5e5, 0x2ff31bdd), + STCP(0x76931bae, 0x30355cdc), STCP(0x76781c79, 0x30778ed2), STCP(0x765cf850, 0x30b9b1a9), + STCP(0x7641af3c, 0x30fbc54d), STCP(0x76264144, 0x313dc9aa), STCP(0x760aae72, 0x317fbeaa), + STCP(0x75eef6ce, 0x31c1a43a), STCP(0x75d31a60, 0x32037a45), STCP(0x75b71931, 0x324540b6), + STCP(0x759af34b, 0x3286f778), STCP(0x757ea8b5, 0x32c89e78), STCP(0x75623979, 0x330a35a1), + STCP(0x7545a59f, 0x334bbcde), STCP(0x7528ed31, 0x338d341a), STCP(0x750c1038, 0x33ce9b42), + STCP(0x74ef0ebb, 0x340ff242), STCP(0x74d1e8c5, 0x34513903), STCP(0x74b49e5f, 0x34926f74), + STCP(0x74972f91, 0x34d3957e), STCP(0x74799c65, 0x3514ab0d), STCP(0x745be4e4, 0x3555b00e), + STCP(0x743e0917, 0x3596a46c), STCP(0x74200908, 0x35d78813), STCP(0x7401e4c0, 0x36185aee), + STCP(0x73e39c48, 0x36591cea), STCP(0x73c52faa, 0x3699cdf1), STCP(0x73a69ef0, 0x36da6df1), + STCP(0x7387ea22, 0x371afcd4), STCP(0x7369114b, 0x375b7a87), STCP(0x734a1474, 0x379be6f6), + STCP(0x732af3a6, 0x37dc420c), STCP(0x730baeec, 0x381c8bb5), STCP(0x72ec4650, 0x385cc3de), + STCP(0x72ccb9da, 0x389cea71), STCP(0x72ad0995, 0x38dcff5d), STCP(0x728d358b, 0x391d028b), + STCP(0x726d3dc5, 0x395cf3e9), STCP(0x724d224e, 0x399cd362), STCP(0x722ce330, 0x39dca0e2), + STCP(0x720c8074, 0x3a1c5c56), STCP(0x71ebfa25, 0x3a5c05aa), STCP(0x71cb504d, 0x3a9b9cc9), + STCP(0x71aa82f6, 0x3adb21a0), STCP(0x7189922b, 0x3b1a941c), STCP(0x71687df5, 0x3b59f428), + STCP(0x7147465f, 0x3b9941b0), STCP(0x7125eb74, 0x3bd87ca1), STCP(0x71046d3d, 0x3c17a4e8), + STCP(0x70e2cbc5, 0x3c56ba70), STCP(0x70c10717, 0x3c95bd25), STCP(0x709f1f3d, 0x3cd4acf5), + STCP(0x707d1442, 0x3d1389cb), STCP(0x705ae630, 0x3d525394), STCP(0x70389513, 0x3d910a3c), + STCP(0x701620f4, 0x3dcfadaf), STCP(0x6ff389de, 0x3e0e3ddb), STCP(0x6fd0cfdd, 0x3e4cbaac), + STCP(0x6fadf2fb, 0x3e8b240e), STCP(0x6f8af343, 0x3ec979ed), STCP(0x6f67d0c0, 0x3f07bc37), + STCP(0x6f448b7d, 0x3f45ead7), STCP(0x6f212384, 0x3f8405bb), STCP(0x6efd98e2, 0x3fc20ccf), + STCP(0x6ed9eba1, 0x3fffffff), STCP(0x6eb61bcb, 0x403ddf39), STCP(0x6e92296d, 0x407baa69), + STCP(0x6e6e1492, 0x40b9617c), STCP(0x6e49dd44, 0x40f7045f), STCP(0x6e25838f, 0x413492fd), + STCP(0x6e01077f, 0x41720d45), STCP(0x6ddc691e, 0x41af7323), STCP(0x6db7a879, 0x41ecc483), + STCP(0x6d92c59a, 0x422a0154), STCP(0x6d6dc08e, 0x42672980), STCP(0x6d48995f, 0x42a43cf7), + STCP(0x6d23501a, 0x42e13ba3), STCP(0x6cfde4c9, 0x431e2573), STCP(0x6cd85779, 0x435afa54), + STCP(0x6cb2a836, 0x4397ba32), STCP(0x6c8cd70a, 0x43d464fa), STCP(0x6c66e403, 0x4410fa9a), + STCP(0x6c40cf2b, 0x444d7aff), STCP(0x6c1a988f, 0x4489e615), STCP(0x6bf4403a, 0x44c63bca), + STCP(0x6bcdc639, 0x45027c0c), STCP(0x6ba72a97, 0x453ea6c7), STCP(0x6b806d61, 0x457abbe8), + STCP(0x6b598ea2, 0x45b6bb5d), STCP(0x6b328e67, 0x45f2a513), STCP(0x6b0b6cbc, 0x462e78f8), + STCP(0x6ae429ad, 0x466a36f9), STCP(0x6abcc546, 0x46a5df02), STCP(0x6a953f94, 0x46e17102), + STCP(0x6a6d98a3, 0x471cece6), STCP(0x6a45d080, 0x4758529c), STCP(0x6a1de736, 0x4793a210), + STCP(0x69f5dcd2, 0x47cedb30), STCP(0x69cdb161, 0x4809fdeb), STCP(0x69a564ef, 0x48450a2d), + STCP(0x697cf789, 0x487fffe3), STCP(0x6954693b, 0x48badefd), STCP(0x692bba13, 0x48f5a767), + STCP(0x6902ea1c, 0x4930590e), STCP(0x68d9f964, 0x496af3e1), STCP(0x68b0e7f6, 0x49a577ce), + STCP(0x6887b5e1, 0x49dfe4c2), STCP(0x685e6331, 0x4a1a3aaa), STCP(0x6834eff2, 0x4a547975), + STCP(0x680b5c33, 0x4a8ea111), STCP(0x67e1a7ff, 0x4ac8b16b), STCP(0x67b7d363, 0x4b02aa71), + STCP(0x678dde6e, 0x4b3c8c11), STCP(0x6763c92b, 0x4b76563a), STCP(0x673993a8, 0x4bb008d8), + STCP(0x670f3df2, 0x4be9a3db), STCP(0x66e4c817, 0x4c23272f), STCP(0x66ba3223, 0x4c5c92c4), + STCP(0x668f7c24, 0x4c95e687), STCP(0x6664a627, 0x4ccf2267), STCP(0x6639b03a, 0x4d084651), + STCP(0x660e9a69, 0x4d415233), STCP(0x65e364c3, 0x4d7a45fd), STCP(0x65b80f55, 0x4db3219c), + STCP(0x658c9a2d, 0x4debe4fe), STCP(0x65610557, 0x4e249011), STCP(0x653550e1, 0x4e5d22c5), + STCP(0x65097cda, 0x4e959d07), STCP(0x64dd894f, 0x4ecdfec6), STCP(0x64b1764d, 0x4f0647f0), + STCP(0x648543e3, 0x4f3e7874), STCP(0x6458f21d, 0x4f769040), STCP(0x642c810b, 0x4fae8f42), + STCP(0x63fff0b9, 0x4fe6756a), STCP(0x63d34136, 0x501e42a5), STCP(0x63a6728f, 0x5055f6e2), + STCP(0x637984d4, 0x508d9211), STCP(0x634c7810, 0x50c5141e), STCP(0x631f4c54, 0x50fc7cfa), + STCP(0x62f201ac, 0x5133cc94), STCP(0x62c49826, 0x516b02d8), STCP(0x62970fd2, 0x51a21fb7), + STCP(0x626968be, 0x51d92320), STCP(0x623ba2f6, 0x52100d01), STCP(0x620dbe8a, 0x5246dd48), + STCP(0x61dfbb89, 0x527d93e6), STCP(0x61b19a00, 0x52b430c8), STCP(0x618359fd, 0x52eab3de), + STCP(0x6154fb90, 0x53211d17), STCP(0x61267ec7, 0x53576c62), STCP(0x60f7e3b0, 0x538da1ae), + STCP(0x60c92a59, 0x53c3bce9), STCP(0x609a52d2, 0x53f9be04), STCP(0x606b5d28, 0x542fa4ed), + STCP(0x603c496c, 0x54657194), STCP(0x600d17aa, 0x549b23e7), STCP(0x5fddc7f3, 0x54d0bbd6), + STCP(0x5fae5a54, 0x55063950), STCP(0x5f7ecedd, 0x553b9c45), STCP(0x5f4f259c, 0x5570e4a3), + STCP(0x5f1f5ea0, 0x55a6125b), STCP(0x5eef79f8, 0x55db255b), STCP(0x5ebf77b4, 0x56101d94), + STCP(0x5e8f57e2, 0x5644faf4), STCP(0x5e5f1a90, 0x5679bd6b), STCP(0x5e2ebfcf, 0x56ae64e9), + STCP(0x5dfe47ad, 0x56e2f15d), STCP(0x5dcdb239, 0x571762b6), STCP(0x5d9cff82, 0x574bb8e6), + STCP(0x5d6c2f99, 0x577ff3da), STCP(0x5d3b428b, 0x57b41383), STCP(0x5d0a3868, 0x57e817d1), + STCP(0x5cd91140, 0x581c00b3), STCP(0x5ca7cd21, 0x584fce19), STCP(0x5c766c1c, 0x58837ff3), + STCP(0x5c44ee3f, 0x58b71631), STCP(0x5c13539a, 0x58ea90c3), STCP(0x5be19c3c, 0x591def98), + STCP(0x5bafc836, 0x595132a2), STCP(0x5b7dd796, 0x598459ce), STCP(0x5b4bca6c, 0x59b7650f), + STCP(0x5b19a0c7, 0x59ea5454), STCP(0x5ae75ab8, 0x5a1d278c), STCP(0x5ab4f84f, 0x5a4fdea9), + STCP(0x5a827999, 0x5a827999) +}; +#endif +const PWord32 SineTable960[] = { + STCP(0x7fffffff, 0x00000000), STCP(0x7ffff4c4, 0x00359dd2), STCP(0x7fffd314, 0x006b3b9b), + STCP(0x7fff9aee, 0x00a0d951), STCP(0x7fff4c53, 0x00d676eb), STCP(0x7ffee743, 0x010c1460), + STCP(0x7ffe6bbe, 0x0141b1a5), STCP(0x7ffdd9c3, 0x01774eb2), STCP(0x7ffd3153, 0x01aceb7c), + STCP(0x7ffc726e, 0x01e287fc), STCP(0x7ffb9d14, 0x02182427), STCP(0x7ffab146, 0x024dbff4), + STCP(0x7ff9af03, 0x02835b59), STCP(0x7ff8964c, 0x02b8f64e), STCP(0x7ff76720, 0x02ee90c8), + STCP(0x7ff62181, 0x03242abf), STCP(0x7ff4c56e, 0x0359c428), STCP(0x7ff352e7, 0x038f5cfb), + STCP(0x7ff1c9ee, 0x03c4f52e), STCP(0x7ff02a81, 0x03fa8cb8), STCP(0x7fee74a1, 0x0430238f), + STCP(0x7feca850, 0x0465b9aa), STCP(0x7feac58c, 0x049b4f00), STCP(0x7fe8cc56, 0x04d0e386), + STCP(0x7fe6bcaf, 0x05067734), STCP(0x7fe49697, 0x053c0a01), STCP(0x7fe25a0e, 0x05719be2), + STCP(0x7fe00715, 0x05a72ccf), STCP(0x7fdd9dac, 0x05dcbcbe), STCP(0x7fdb1dd4, 0x06124ba5), + STCP(0x7fd8878d, 0x0647d97c), STCP(0x7fd5dad7, 0x067d6639), STCP(0x7fd317b3, 0x06b2f1d2), + STCP(0x7fd03e22, 0x06e87c3f), STCP(0x7fcd4e23, 0x071e0575), STCP(0x7fca47b8, 0x07538d6b), + STCP(0x7fc72ae1, 0x07891418), STCP(0x7fc3f79f, 0x07be9973), STCP(0x7fc0adf1, 0x07f41d72), + STCP(0x7fbd4dd9, 0x0829a00b), STCP(0x7fb9d758, 0x085f2136), STCP(0x7fb64a6d, 0x0894a0e9), + STCP(0x7fb2a71a, 0x08ca1f1b), STCP(0x7faeed5e, 0x08ff9bc2), STCP(0x7fab1d3c, 0x093516d4), + STCP(0x7fa736b3, 0x096a9049), STCP(0x7fa339c4, 0x09a00817), STCP(0x7f9f2670, 0x09d57e35), + STCP(0x7f9afcb8, 0x0a0af299), STCP(0x7f96bc9b, 0x0a40653a), STCP(0x7f92661c, 0x0a75d60e), + STCP(0x7f8df93b, 0x0aab450d), STCP(0x7f8975f8, 0x0ae0b22c), STCP(0x7f84dc54, 0x0b161d63), + STCP(0x7f802c51, 0x0b4b86a8), STCP(0x7f7b65ee, 0x0b80edf1), STCP(0x7f76892e, 0x0bb65336), + STCP(0x7f719610, 0x0bebb66c), STCP(0x7f6c8c95, 0x0c21178c), STCP(0x7f676cbf, 0x0c56768a), + STCP(0x7f62368e, 0x0c8bd35e), STCP(0x7f5cea04, 0x0cc12dff), STCP(0x7f578720, 0x0cf68662), + STCP(0x7f520de5, 0x0d2bdc80), STCP(0x7f4c7e53, 0x0d61304e), STCP(0x7f46d86b, 0x0d9681c2), + STCP(0x7f411c2e, 0x0dcbd0d5), STCP(0x7f3b499c, 0x0e011d7c), STCP(0x7f3560b8, 0x0e3667ad), + STCP(0x7f2f6182, 0x0e6baf61), STCP(0x7f294bfc, 0x0ea0f48c), STCP(0x7f232025, 0x0ed63727), + STCP(0x7f1cde00, 0x0f0b7727), STCP(0x7f16858d, 0x0f40b483), STCP(0x7f1016cd, 0x0f75ef32), + STCP(0x7f0991c3, 0x0fab272b), STCP(0x7f02f66e, 0x0fe05c64), STCP(0x7efc44cf, 0x10158ed4), + STCP(0x7ef57cea, 0x104abe71), STCP(0x7eee9ebd, 0x107feb33), STCP(0x7ee7aa4b, 0x10b5150f), + STCP(0x7ee09f94, 0x10ea3bfd), STCP(0x7ed97e9b, 0x111f5ff3), STCP(0x7ed24760, 0x115480e9), + STCP(0x7ecaf9e4, 0x11899ed3), STCP(0x7ec39629, 0x11beb9aa), STCP(0x7ebc1c30, 0x11f3d164), + STCP(0x7eb48bfa, 0x1228e5f7), STCP(0x7eace589, 0x125df75b), STCP(0x7ea528df, 0x12930586), + STCP(0x7e9d55fb, 0x12c8106e), STCP(0x7e956ce0, 0x12fd180b), STCP(0x7e8d6d90, 0x13321c53), + STCP(0x7e85580b, 0x13671d3d), STCP(0x7e7d2c53, 0x139c1abf), STCP(0x7e74ea69, 0x13d114d0), + STCP(0x7e6c9250, 0x14060b68), STCP(0x7e642407, 0x143afe7b), STCP(0x7e5b9f92, 0x146fee02), + STCP(0x7e5304f1, 0x14a4d9f3), STCP(0x7e4a5425, 0x14d9c245), STCP(0x7e418d31, 0x150ea6ef), + STCP(0x7e38b016, 0x154387e6), STCP(0x7e2fbcd5, 0x15786522), STCP(0x7e26b370, 0x15ad3e9a), + STCP(0x7e1d93e9, 0x15e21444), STCP(0x7e145e41, 0x1616e618), STCP(0x7e0b1279, 0x164bb40b), + STCP(0x7e01b095, 0x16807e14), STCP(0x7df83894, 0x16b5442b), STCP(0x7deeaa79, 0x16ea0646), + STCP(0x7de50645, 0x171ec45c), STCP(0x7ddb4bfb, 0x17537e63), STCP(0x7dd17b9b, 0x17883452), + STCP(0x7dc79528, 0x17bce621), STCP(0x7dbd98a3, 0x17f193c5), STCP(0x7db3860e, 0x18263d35), + STCP(0x7da95d6b, 0x185ae269), STCP(0x7d9f1ebc, 0x188f8357), STCP(0x7d94ca02, 0x18c41ff6), + STCP(0x7d8a5f3f, 0x18f8b83c), STCP(0x7d7fde75, 0x192d4c21), STCP(0x7d7547a6, 0x1961db9b), + STCP(0x7d6a9ad4, 0x199666a0), STCP(0x7d5fd800, 0x19caed28), STCP(0x7d54ff2d, 0x19ff6f2a), + STCP(0x7d4a105c, 0x1a33ec9c), STCP(0x7d3f0b8f, 0x1a686575), STCP(0x7d33f0c9, 0x1a9cd9ac), + STCP(0x7d28c00b, 0x1ad14938), STCP(0x7d1d7957, 0x1b05b40e), STCP(0x7d121caf, 0x1b3a1a27), + STCP(0x7d06aa15, 0x1b6e7b7a), STCP(0x7cfb218b, 0x1ba2d7fc), STCP(0x7cef8314, 0x1bd72fa4), + STCP(0x7ce3ceb1, 0x1c0b826a), STCP(0x7cd80464, 0x1c3fd045), STCP(0x7ccc242f, 0x1c74192a), + STCP(0x7cc02e14, 0x1ca85d12), STCP(0x7cb42216, 0x1cdc9bf2), STCP(0x7ca80037, 0x1d10d5c1), + STCP(0x7c9bc879, 0x1d450a78), STCP(0x7c8f7add, 0x1d793a0b), STCP(0x7c831766, 0x1dad6473), + STCP(0x7c769e17, 0x1de189a5), STCP(0x7c6a0ef1, 0x1e15a99a), STCP(0x7c5d69f6, 0x1e49c447), + STCP(0x7c50af2a, 0x1e7dd9a3), STCP(0x7c43de8d, 0x1eb1e9a6), STCP(0x7c36f823, 0x1ee5f447), + STCP(0x7c29fbed, 0x1f19f97b), STCP(0x7c1ce9ee, 0x1f4df93a), STCP(0x7c0fc229, 0x1f81f37b), + STCP(0x7c02849f, 0x1fb5e835), STCP(0x7bf53152, 0x1fe9d75f), STCP(0x7be7c846, 0x201dc0ef), + STCP(0x7bda497c, 0x2051a4dd), STCP(0x7bccb4f7, 0x2085831e), STCP(0x7bbf0ab9, 0x20b95bac), + STCP(0x7bb14ac4, 0x20ed2e7b), STCP(0x7ba3751c, 0x2120fb83), STCP(0x7b9589c2, 0x2154c2bb), + STCP(0x7b8788b9, 0x2188841a), STCP(0x7b797204, 0x21bc3f97), STCP(0x7b6b45a4, 0x21eff528), + STCP(0x7b5d039d, 0x2223a4c5), STCP(0x7b4eabf0, 0x22574e65), STCP(0x7b403ea1, 0x228af1fe), + STCP(0x7b31bbb1, 0x22be8f87), STCP(0x7b232324, 0x22f226f8), STCP(0x7b1474fc, 0x2325b847), + STCP(0x7b05b13c, 0x2359436c), STCP(0x7af6d7e5, 0x238cc85c), STCP(0x7ae7e8fb, 0x23c04710), + STCP(0x7ad8e481, 0x23f3bf7e), STCP(0x7ac9ca79, 0x2427319d), STCP(0x7aba9ae5, 0x245a9d64), + STCP(0x7aab55c9, 0x248e02ca), STCP(0x7a9bfb26, 0x24c161c7), STCP(0x7a8c8b00, 0x24f4ba50), + STCP(0x7a7d055a, 0x25280c5d), STCP(0x7a6d6a36, 0x255b57e6), STCP(0x7a5db997, 0x258e9ce0), + STCP(0x7a4df37f, 0x25c1db43), STCP(0x7a3e17f1, 0x25f51307), STCP(0x7a2e26f1, 0x26284421), + STCP(0x7a1e2081, 0x265b6e8a), STCP(0x7a0e04a3, 0x268e9238), STCP(0x79fdd35b, 0x26c1af21), + STCP(0x79ed8cac, 0x26f4c53e), STCP(0x79dd3097, 0x2727d485), STCP(0x79ccbf21, 0x275adcee), + STCP(0x79bc384c, 0x278dde6e), STCP(0x79ab9c1b, 0x27c0d8fe), STCP(0x799aea91, 0x27f3cc94), + STCP(0x798a23b0, 0x2826b928), STCP(0x7979477c, 0x28599eb0), STCP(0x796855f8, 0x288c7d24), + STCP(0x79574f27, 0x28bf547a), STCP(0x7946330b, 0x28f224aa), STCP(0x793501a8, 0x2924edab), + STCP(0x7923bb00, 0x2957af74), STCP(0x79125f18, 0x298a69fc), STCP(0x7900edf1, 0x29bd1d3a), + STCP(0x78ef678e, 0x29efc925), STCP(0x78ddcbf4, 0x2a226db4), STCP(0x78cc1b25, 0x2a550adf), + STCP(0x78ba5523, 0x2a87a09c), STCP(0x78a879f3, 0x2aba2ee3), STCP(0x78968997, 0x2aecb5ab), + STCP(0x78848413, 0x2b1f34eb), STCP(0x78726969, 0x2b51ac9a), STCP(0x7860399d, 0x2b841caf), + STCP(0x784df4b2, 0x2bb68521), STCP(0x783b9aac, 0x2be8e5e8), STCP(0x78292b8c, 0x2c1b3efb), + STCP(0x7816a758, 0x2c4d9050), STCP(0x78040e11, 0x2c7fd9df), STCP(0x77f15fbb, 0x2cb21ba0), + STCP(0x77de9c5a, 0x2ce45589), STCP(0x77cbc3f1, 0x2d168792), STCP(0x77b8d683, 0x2d48b1b1), + STCP(0x77a5d413, 0x2d7ad3de), STCP(0x7792bca4, 0x2dacee10), STCP(0x777f903b, 0x2ddf003f), + STCP(0x776c4eda, 0x2e110a62), STCP(0x7758f885, 0x2e430c6f), STCP(0x77458d3f, 0x2e75065e), + STCP(0x77320d0c, 0x2ea6f826), STCP(0x771e77ef, 0x2ed8e1bf), STCP(0x770acdeb, 0x2f0ac320), + STCP(0x76f70f04, 0x2f3c9c3f), STCP(0x76e33b3e, 0x2f6e6d15), STCP(0x76cf529b, 0x2fa03599), + STCP(0x76bb5520, 0x2fd1f5c1), STCP(0x76a742d0, 0x3003ad85), STCP(0x76931bae, 0x30355cdc), + STCP(0x767edfbd, 0x306703be), STCP(0x766a8f03, 0x3098a222), STCP(0x76562981, 0x30ca37ff), + STCP(0x7641af3c, 0x30fbc54d), STCP(0x762d2037, 0x312d4a02), STCP(0x76187c76, 0x315ec617), + STCP(0x7603c3fc, 0x31903982), STCP(0x75eef6ce, 0x31c1a43a), STCP(0x75da14ee, 0x31f30638), + STCP(0x75c51e60, 0x32245f72), STCP(0x75b01329, 0x3255afe0), STCP(0x759af34b, 0x3286f778), + STCP(0x7585beca, 0x32b83634), STCP(0x757075ab, 0x32e96c09), STCP(0x755b17f1, 0x331a98ef), + STCP(0x7545a59f, 0x334bbcde), STCP(0x75301eba, 0x337cd7cc), STCP(0x751a8345, 0x33ade9b2), + STCP(0x7504d344, 0x33def287), STCP(0x74ef0ebb, 0x340ff242), STCP(0x74d935ad, 0x3440e8da), + STCP(0x74c3481f, 0x3471d647), STCP(0x74ad4614, 0x34a2ba80), STCP(0x74972f91, 0x34d3957e), + STCP(0x74810498, 0x35046736), STCP(0x746ac52e, 0x35352fa1), STCP(0x74547157, 0x3565eeb6), + STCP(0x743e0917, 0x3596a46c), STCP(0x74278c71, 0x35c750bb), STCP(0x7410fb6a, 0x35f7f39b), + STCP(0x73fa5606, 0x36288d03), STCP(0x73e39c48, 0x36591cea), STCP(0x73ccce35, 0x3689a347), + STCP(0x73b5ebd0, 0x36ba2013), STCP(0x739ef51e, 0x36ea9345), STCP(0x7387ea22, 0x371afcd4), + STCP(0x7370cae1, 0x374b5cb8), STCP(0x7359975f, 0x377bb2e8), STCP(0x73424f9f, 0x37abff5c), + STCP(0x732af3a6, 0x37dc420c), STCP(0x73138379, 0x380c7aee), STCP(0x72fbff1a, 0x383ca9fb), + STCP(0x72e4668e, 0x386ccf29), STCP(0x72ccb9da, 0x389cea71), STCP(0x72b4f901, 0x38ccfbcb), + STCP(0x729d2408, 0x38fd032d), STCP(0x72853af2, 0x392d008f), STCP(0x726d3dc5, 0x395cf3e9), + STCP(0x72552c84, 0x398cdd32), STCP(0x723d0733, 0x39bcbc62), STCP(0x7224cdd7, 0x39ec9171), + STCP(0x720c8074, 0x3a1c5c56), STCP(0x71f41f0e, 0x3a4c1d09), STCP(0x71dba9aa, 0x3a7bd381), + STCP(0x71c3204b, 0x3aab7fb6), STCP(0x71aa82f6, 0x3adb21a0), STCP(0x7191d1b0, 0x3b0ab937), + STCP(0x71790c7d, 0x3b3a4671), STCP(0x71603360, 0x3b69c947), STCP(0x7147465f, 0x3b9941b0), + STCP(0x712e457e, 0x3bc8afa4), STCP(0x711530c1, 0x3bf8131b), STCP(0x70fc082d, 0x3c276c0c), + STCP(0x70e2cbc5, 0x3c56ba70), STCP(0x70c97b8f, 0x3c85fe3c), STCP(0x70b0178f, 0x3cb5376b), + STCP(0x70969fc9, 0x3ce465f2), STCP(0x707d1442, 0x3d1389cb), STCP(0x706374fe, 0x3d42a2ec), + STCP(0x7049c202, 0x3d71b14d), STCP(0x702ffb53, 0x3da0b4e6), STCP(0x701620f4, 0x3dcfadaf), + STCP(0x6ffc32ea, 0x3dfe9ba0), STCP(0x6fe2313b, 0x3e2d7eb0), STCP(0x6fc81be9, 0x3e5c56d8), + STCP(0x6fadf2fb, 0x3e8b240e), STCP(0x6f93b675, 0x3eb9e64b), STCP(0x6f79665a, 0x3ee89d86), + STCP(0x6f5f02b1, 0x3f1749b7), STCP(0x6f448b7d, 0x3f45ead7), STCP(0x6f2a00c3, 0x3f7480dd), + STCP(0x6f0f6288, 0x3fa30bc0), STCP(0x6ef4b0d0, 0x3fd18b79), STCP(0x6ed9eba1, 0x3fffffff), + STCP(0x6ebf12fe, 0x402e694b), STCP(0x6ea426ed, 0x405cc754), STCP(0x6e892772, 0x408b1a12), + STCP(0x6e6e1492, 0x40b9617c), STCP(0x6e52ee51, 0x40e79d8c), STCP(0x6e37b4b6, 0x4115ce38), + STCP(0x6e1c67c3, 0x4143f378), STCP(0x6e01077f, 0x41720d45), STCP(0x6de593ed, 0x41a01b96), + STCP(0x6dca0d14, 0x41ce1e64), STCP(0x6dae72f6, 0x41fc15a6), STCP(0x6d92c59a, 0x422a0154), + STCP(0x6d770505, 0x4257e166), STCP(0x6d5b313a, 0x4285b5d4), STCP(0x6d3f4a3f, 0x42b37e95), + STCP(0x6d23501a, 0x42e13ba3), STCP(0x6d0742ce, 0x430eecf5), STCP(0x6ceb2260, 0x433c9283), + STCP(0x6cceeed7, 0x436a2c44), STCP(0x6cb2a836, 0x4397ba32), STCP(0x6c964e82, 0x43c53c43), + STCP(0x6c79e1c1, 0x43f2b270), STCP(0x6c5d61f8, 0x44201cb2), STCP(0x6c40cf2b, 0x444d7aff), + STCP(0x6c24295f, 0x447acd50), STCP(0x6c07709b, 0x44a8139d), STCP(0x6beaa4e1, 0x44d54dde), + STCP(0x6bcdc639, 0x45027c0c), STCP(0x6bb0d4a6, 0x452f9e1e), STCP(0x6b93d02d, 0x455cb40c), + STCP(0x6b76b8d5, 0x4589bdce), STCP(0x6b598ea2, 0x45b6bb5d), STCP(0x6b3c5199, 0x45e3acb1), + STCP(0x6b1f01bf, 0x461091c1), STCP(0x6b019f19, 0x463d6a86), STCP(0x6ae429ad, 0x466a36f9), + STCP(0x6ac6a180, 0x4696f710), STCP(0x6aa90696, 0x46c3aac5), STCP(0x6a8b58f6, 0x46f0520f), + STCP(0x6a6d98a3, 0x471cece6), STCP(0x6a4fc5a5, 0x47497b44), STCP(0x6a31dfff, 0x4775fd1f), + STCP(0x6a13e7b7, 0x47a27270), STCP(0x69f5dcd2, 0x47cedb30), STCP(0x69d7bf56, 0x47fb3757), + STCP(0x69b98f47, 0x482786dc), STCP(0x699b4cac, 0x4853c9b8), STCP(0x697cf789, 0x487fffe3), + STCP(0x695e8fe4, 0x48ac2956), STCP(0x694015c2, 0x48d84609), STCP(0x69218928, 0x490455f3), + STCP(0x6902ea1c, 0x4930590e), STCP(0x68e438a3, 0x495c4f51), STCP(0x68c574c3, 0x498838b6), + STCP(0x68a69e80, 0x49b41533), STCP(0x6887b5e1, 0x49dfe4c2), STCP(0x6868baeb, 0x4a0ba75a), + STCP(0x6849ada3, 0x4a375cf4), STCP(0x682a8e0e, 0x4a630589), STCP(0x680b5c33, 0x4a8ea111), + STCP(0x67ec1816, 0x4aba2f83), STCP(0x67ccc1bd, 0x4ae5b0d9), STCP(0x67ad592e, 0x4b11250b), + STCP(0x678dde6e, 0x4b3c8c11), STCP(0x676e5182, 0x4b67e5e4), STCP(0x674eb270, 0x4b93327b), + STCP(0x672f013f, 0x4bbe71d0), STCP(0x670f3df2, 0x4be9a3db), STCP(0x66ef6890, 0x4c14c894), + STCP(0x66cf811f, 0x4c3fdff3), STCP(0x66af87a4, 0x4c6ae9f1), STCP(0x668f7c24, 0x4c95e687), + STCP(0x666f5ea5, 0x4cc0d5ad), STCP(0x664f2f2e, 0x4cebb75c), STCP(0x662eedc2, 0x4d168b8b), + STCP(0x660e9a69, 0x4d415233), STCP(0x65ee3528, 0x4d6c0b4e), STCP(0x65cdbe05, 0x4d96b6d3), + STCP(0x65ad3504, 0x4dc154bb), STCP(0x658c9a2d, 0x4debe4fe), STCP(0x656bed84, 0x4e166795), + STCP(0x654b2f0f, 0x4e40dc78), STCP(0x652a5ed5, 0x4e6b43a1), STCP(0x65097cda, 0x4e959d07), + STCP(0x64e88925, 0x4ebfe8a4), STCP(0x64c783bc, 0x4eea266f), STCP(0x64a66ca4, 0x4f145662), + STCP(0x648543e3, 0x4f3e7874), STCP(0x6464097e, 0x4f688c9f), STCP(0x6442bd7d, 0x4f9292db), + STCP(0x64215fe4, 0x4fbc8b21), STCP(0x63fff0b9, 0x4fe6756a), STCP(0x63de7003, 0x501051ad), + STCP(0x63bcddc6, 0x503a1fe4), STCP(0x639b3a0a, 0x5063e008), STCP(0x637984d4, 0x508d9211), + STCP(0x6357be29, 0x50b735f7), STCP(0x6335e610, 0x50e0cbb4), STCP(0x6313fc8f, 0x510a5340), + STCP(0x62f201ac, 0x5133cc94), STCP(0x62cff56c, 0x515d37a8), STCP(0x62add7d5, 0x51869476), + STCP(0x628ba8ef, 0x51afe2f5), STCP(0x626968be, 0x51d92320), STCP(0x62471748, 0x520254ee), + STCP(0x6224b494, 0x522b7859), STCP(0x620240a8, 0x52548d58), STCP(0x61dfbb89, 0x527d93e6), + STCP(0x61bd253e, 0x52a68bfa), STCP(0x619a7dcd, 0x52cf758e), STCP(0x6177c53c, 0x52f8509a), + STCP(0x6154fb90, 0x53211d17), STCP(0x613220d1, 0x5349daff), STCP(0x610f3504, 0x53728a49), + STCP(0x60ec382f, 0x539b2aef), STCP(0x60c92a59, 0x53c3bce9), STCP(0x60a60b87, 0x53ec4032), + STCP(0x6082dbc0, 0x5414b4c0), STCP(0x605f9b0b, 0x543d1a8e), STCP(0x603c496c, 0x54657194), + STCP(0x6018e6ea, 0x548db9cb), STCP(0x5ff5738c, 0x54b5f32c), STCP(0x5fd1ef58, 0x54de1db0), + STCP(0x5fae5a54, 0x55063950), STCP(0x5f8ab486, 0x552e4605), STCP(0x5f66fdf4, 0x555643c8), + STCP(0x5f4336a6, 0x557e3291), STCP(0x5f1f5ea0, 0x55a6125b), STCP(0x5efb75ea, 0x55cde31d), + STCP(0x5ed77c89, 0x55f5a4d2), STCP(0x5eb37284, 0x561d5771), STCP(0x5e8f57e2, 0x5644faf4), + STCP(0x5e6b2ca8, 0x566c8f54), STCP(0x5e46f0dc, 0x5694148a), STCP(0x5e22a487, 0x56bb8a8f), + STCP(0x5dfe47ad, 0x56e2f15d), STCP(0x5dd9da55, 0x570a48eb), STCP(0x5db55c85, 0x57319134), + STCP(0x5d90ce44, 0x5758ca31), STCP(0x5d6c2f99, 0x577ff3da), STCP(0x5d478089, 0x57a70e29), + STCP(0x5d22c11b, 0x57ce1916), STCP(0x5cfdf156, 0x57f5149c), STCP(0x5cd91140, 0x581c00b3), + STCP(0x5cb420df, 0x5842dd54), STCP(0x5c8f203a, 0x5869aa78), STCP(0x5c6a0f58, 0x5890681a), + STCP(0x5c44ee3f, 0x58b71631), STCP(0x5c1fbcf5, 0x58ddb4b7), STCP(0x5bfa7b81, 0x590443a6), + STCP(0x5bd529ea, 0x592ac2f6), STCP(0x5bafc836, 0x595132a2), STCP(0x5b8a566b, 0x597792a1), + STCP(0x5b64d491, 0x599de2ed), STCP(0x5b3f42ae, 0x59c42380), STCP(0x5b19a0c7, 0x59ea5454), + STCP(0x5af3eee5, 0x5a107560), STCP(0x5ace2d0e, 0x5a36869f), STCP(0x5aa85b48, 0x5a5c8809), + STCP(0x5a827999, 0x5a827999), +}; +# endif + +/* + Sine windows + */ + +# ifdef ENABLE_HR_MODE +const PWord32 SineWindow20[10] = { +# else +const PWord16 SineWindow20[10] = { +# endif + WTCP(0x7fe6bcaf, 0x5067734), WTCP(0x7f1cde00, 0xf0b7727), WTCP(0x7d8a5f3f, 0x18f8b83c), + WTCP(0x7b31bbb1, 0x22be8f87), WTCP(0x7816a758, 0x2c4d9050), WTCP(0x743e0917, 0x3596a46c), + WTCP(0x6fadf2fb, 0x3e8b240e), WTCP(0x6a6d98a3, 0x471cece6), WTCP(0x648543e3, 0x4f3e7874), + WTCP(0x5dfe47ad, 0x56e2f15d), +}; + +# ifdef ENABLE_HR_MODE +const PWord32 SineWindow40[20] = { +# else +const PWord16 SineWindow40[20] = { +# endif + WTCP(0x7ff9af04, 0x02835b5a), WTCP(0x7fc72ae2, 0x07891418), WTCP(0x7f62368f, 0x0c8bd35e), + WTCP(0x7ecaf9e5, 0x11899ed3), WTCP(0x7e01b096, 0x16807e15), WTCP(0x7d06aa16, 0x1b6e7b7a), + WTCP(0x7bda497d, 0x2051a4dd), WTCP(0x7a7d055b, 0x25280c5e), WTCP(0x78ef678f, 0x29efc925), + WTCP(0x77320d0d, 0x2ea6f827), WTCP(0x7545a5a0, 0x334bbcde), WTCP(0x732af3a7, 0x37dc420c), + WTCP(0x70e2cbc6, 0x3c56ba70), WTCP(0x6e6e1492, 0x40b9617d), WTCP(0x6bcdc639, 0x45027c0c), + WTCP(0x6902ea1d, 0x4930590f), WTCP(0x660e9a6a, 0x4d415234), WTCP(0x62f201ac, 0x5133cc94), + WTCP(0x5fae5a55, 0x55063951), WTCP(0x5c44ee40, 0x58b71632), +}; + +# ifdef ENABLE_HR_MODE +const PWord32 SineWindow60[30] = { +# else +const PWord16 SineWindow60[30] = { +# endif + WTCP(0x7ffd3153, 0x1aceb7c), WTCP(0x7fe6bcaf, 0x5067734), WTCP(0x7fb9d758, 0x85f2136), + WTCP(0x7f76892e, 0xbb65336), WTCP(0x7f1cde00, 0xf0b7727), WTCP(0x7eace589, 0x125df75b), + WTCP(0x7e26b370, 0x15ad3e9a), WTCP(0x7d8a5f3f, 0x18f8b83c), WTCP(0x7cd80464, 0x1c3fd045), + WTCP(0x7c0fc229, 0x1f81f37b), WTCP(0x7b31bbb1, 0x22be8f87), WTCP(0x7a3e17f1, 0x25f51307), + WTCP(0x793501a8, 0x2924edab), WTCP(0x7816a758, 0x2c4d9050), WTCP(0x76e33b3e, 0x2f6e6d15), + WTCP(0x759af34b, 0x3286f778), WTCP(0x743e0917, 0x3596a46c), WTCP(0x72ccb9da, 0x389cea71), + WTCP(0x7147465f, 0x3b9941b0), WTCP(0x6fadf2fb, 0x3e8b240e), WTCP(0x6e01077f, 0x41720d45), + WTCP(0x6c40cf2b, 0x444d7aff), WTCP(0x6a6d98a3, 0x471cece6), WTCP(0x6887b5e1, 0x49dfe4c2), + WTCP(0x668f7c24, 0x4c95e687), WTCP(0x648543e3, 0x4f3e7874), WTCP(0x626968be, 0x51d92320), + WTCP(0x603c496c, 0x54657194), WTCP(0x5dfe47ad, 0x56e2f15d), WTCP(0x5bafc836, 0x595132a2), +}; + +# ifdef ENABLE_HR_MODE +const PWord32 SineWindow80[40] = { +# else +const PWord16 SineWindow80[40] = { +# endif + WTCP(0x7ffe6bbf, 0x0141b1a5), WTCP(0x7ff1c9ef, 0x03c4f52f), WTCP(0x7fd8878e, 0x0647d97c), + WTCP(0x7fb2a71b, 0x08ca1f1b), WTCP(0x7f802c52, 0x0b4b86a8), WTCP(0x7f411c2f, 0x0dcbd0d5), + WTCP(0x7ef57cea, 0x104abe71), WTCP(0x7e9d55fc, 0x12c8106f), WTCP(0x7e38b017, 0x154387e6), + WTCP(0x7dc79529, 0x17bce621), WTCP(0x7d4a105d, 0x1a33ec9c), WTCP(0x7cc02e15, 0x1ca85d12), + WTCP(0x7c29fbee, 0x1f19f97b), WTCP(0x7b8788ba, 0x2188841a), WTCP(0x7ad8e482, 0x23f3bf7e), + WTCP(0x7a1e2082, 0x265b6e8a), WTCP(0x79574f28, 0x28bf547b), WTCP(0x78848414, 0x2b1f34eb), + WTCP(0x77a5d413, 0x2d7ad3de), WTCP(0x76bb5521, 0x2fd1f5c1), WTCP(0x75c51e61, 0x32245f72), + WTCP(0x74c34820, 0x3471d647), WTCP(0x73b5ebd1, 0x36ba2014), WTCP(0x729d2409, 0x38fd032d), + WTCP(0x71790c7e, 0x3b3a4672), WTCP(0x7049c203, 0x3d71b14d), WTCP(0x6f0f6289, 0x3fa30bc1), + WTCP(0x6dca0d14, 0x41ce1e65), WTCP(0x6c79e1c2, 0x43f2b271), WTCP(0x6b1f01c0, 0x461091c2), + WTCP(0x69b98f48, 0x482786dc), WTCP(0x6849ada3, 0x4a375cf5), WTCP(0x66cf8120, 0x4c3fdff4), + WTCP(0x654b2f10, 0x4e40dc79), WTCP(0x63bcddc7, 0x503a1fe5), WTCP(0x6224b495, 0x522b7859), + WTCP(0x6082dbc1, 0x5414b4c1), WTCP(0x5ed77c8a, 0x55f5a4d2), WTCP(0x5d22c11c, 0x57ce1917), + WTCP(0x5b64d492, 0x599de2ee), +}; + +# ifdef ENABLE_HR_MODE +const PWord32 SineWindow120[60] = { +# else +const PWord16 SineWindow120[60] = { +# endif + WTCP(0x7fff4c54, 0x00d676eb), WTCP(0x7ff9af04, 0x02835b5a), WTCP(0x7fee74a2, 0x0430238f), + WTCP(0x7fdd9dad, 0x05dcbcbe), WTCP(0x7fc72ae2, 0x07891418), WTCP(0x7fab1d3d, 0x093516d4), + WTCP(0x7f8975f9, 0x0ae0b22c), WTCP(0x7f62368f, 0x0c8bd35e), WTCP(0x7f3560b9, 0x0e3667ad), + WTCP(0x7f02f66f, 0x0fe05c64), WTCP(0x7ecaf9e5, 0x11899ed3), WTCP(0x7e8d6d91, 0x13321c53), + WTCP(0x7e4a5426, 0x14d9c245), WTCP(0x7e01b096, 0x16807e15), WTCP(0x7db3860f, 0x18263d36), + WTCP(0x7d5fd801, 0x19caed29), WTCP(0x7d06aa16, 0x1b6e7b7a), WTCP(0x7ca80038, 0x1d10d5c2), + WTCP(0x7c43de8e, 0x1eb1e9a7), WTCP(0x7bda497d, 0x2051a4dd), WTCP(0x7b6b45a5, 0x21eff528), + WTCP(0x7af6d7e6, 0x238cc85d), WTCP(0x7a7d055b, 0x25280c5e), WTCP(0x79fdd35c, 0x26c1af22), + WTCP(0x7979477d, 0x28599eb0), WTCP(0x78ef678f, 0x29efc925), WTCP(0x7860399e, 0x2b841caf), + WTCP(0x77cbc3f2, 0x2d168792), WTCP(0x77320d0d, 0x2ea6f827), WTCP(0x76931bae, 0x30355cdd), + WTCP(0x75eef6ce, 0x31c1a43b), WTCP(0x7545a5a0, 0x334bbcde), WTCP(0x74972f92, 0x34d3957e), + WTCP(0x73e39c49, 0x36591cea), WTCP(0x732af3a7, 0x37dc420c), WTCP(0x726d3dc6, 0x395cf3e9), + WTCP(0x71aa82f7, 0x3adb21a1), WTCP(0x70e2cbc6, 0x3c56ba70), WTCP(0x701620f5, 0x3dcfadb0), + WTCP(0x6f448b7e, 0x3f45ead8), WTCP(0x6e6e1492, 0x40b9617d), WTCP(0x6d92c59b, 0x422a0154), + WTCP(0x6cb2a837, 0x4397ba32), WTCP(0x6bcdc639, 0x45027c0c), WTCP(0x6ae429ae, 0x466a36f9), + WTCP(0x69f5dcd3, 0x47cedb31), WTCP(0x6902ea1d, 0x4930590f), WTCP(0x680b5c33, 0x4a8ea111), + WTCP(0x670f3df3, 0x4be9a3db), WTCP(0x660e9a6a, 0x4d415234), WTCP(0x65097cdb, 0x4e959d08), + WTCP(0x63fff0ba, 0x4fe6756a), WTCP(0x62f201ac, 0x5133cc94), WTCP(0x61dfbb8a, 0x527d93e6), + WTCP(0x60c92a5a, 0x53c3bcea), WTCP(0x5fae5a55, 0x55063951), WTCP(0x5e8f57e2, 0x5644faf4), + WTCP(0x5d6c2f99, 0x577ff3da), WTCP(0x5c44ee40, 0x58b71632), WTCP(0x5b19a0c8, 0x59ea5454), +}; + +# ifdef ENABLE_HR_MODE +const PWord32 SineWindow160[80] = { +# else +const PWord16 SineWindow160[80] = { +# endif + WTCP(0x7fff9aef, 0x00a0d951), WTCP(0x7ffc726f, 0x01e287fc), WTCP(0x7ff62182, 0x03242abf), + WTCP(0x7feca851, 0x0465b9aa), WTCP(0x7fe00716, 0x05a72ccf), WTCP(0x7fd03e23, 0x06e87c3f), + WTCP(0x7fbd4dda, 0x0829a00c), WTCP(0x7fa736b4, 0x096a9049), WTCP(0x7f8df93c, 0x0aab450d), + WTCP(0x7f719611, 0x0bebb66c), WTCP(0x7f520de6, 0x0d2bdc80), WTCP(0x7f2f6183, 0x0e6baf61), + WTCP(0x7f0991c4, 0x0fab272b), WTCP(0x7ee09f95, 0x10ea3bfd), WTCP(0x7eb48bfb, 0x1228e5f8), + WTCP(0x7e85580c, 0x13671d3d), WTCP(0x7e5304f2, 0x14a4d9f4), WTCP(0x7e1d93ea, 0x15e21445), + WTCP(0x7de50646, 0x171ec45c), WTCP(0x7da95d6c, 0x185ae269), WTCP(0x7d6a9ad5, 0x199666a0), + WTCP(0x7d28c00c, 0x1ad14938), WTCP(0x7ce3ceb2, 0x1c0b826a), WTCP(0x7c9bc87a, 0x1d450a78), + WTCP(0x7c50af2b, 0x1e7dd9a4), WTCP(0x7c02849f, 0x1fb5e836), WTCP(0x7bb14ac5, 0x20ed2e7b), + WTCP(0x7b5d039e, 0x2223a4c5), WTCP(0x7b05b13d, 0x2359436c), WTCP(0x7aab55ca, 0x248e02cb), + WTCP(0x7a4df380, 0x25c1db44), WTCP(0x79ed8cad, 0x26f4c53e), WTCP(0x798a23b1, 0x2826b928), + WTCP(0x7923bb01, 0x2957af74), WTCP(0x78ba5524, 0x2a87a09d), WTCP(0x784df4b3, 0x2bb68522), + WTCP(0x77de9c5b, 0x2ce45589), WTCP(0x776c4edb, 0x2e110a62), WTCP(0x76f70f05, 0x2f3c9c40), + WTCP(0x767edfbe, 0x306703bf), WTCP(0x7603c3fd, 0x31903982), WTCP(0x7585becb, 0x32b83634), + WTCP(0x7504d345, 0x33def287), WTCP(0x74810499, 0x35046736), WTCP(0x73fa5607, 0x36288d03), + WTCP(0x7370cae2, 0x374b5cb9), WTCP(0x72e4668f, 0x386ccf2a), WTCP(0x72552c85, 0x398cdd32), + WTCP(0x71c3204c, 0x3aab7fb7), WTCP(0x712e457f, 0x3bc8afa5), WTCP(0x70969fca, 0x3ce465f3), + WTCP(0x6ffc32eb, 0x3dfe9ba1), WTCP(0x6f5f02b2, 0x3f1749b8), WTCP(0x6ebf12ff, 0x402e694c), + WTCP(0x6e1c67c4, 0x4143f379), WTCP(0x6d770506, 0x4257e166), WTCP(0x6cceeed8, 0x436a2c45), + WTCP(0x6c242960, 0x447acd50), WTCP(0x6b76b8d6, 0x4589bdcf), WTCP(0x6ac6a180, 0x4696f710), + WTCP(0x6a13e7b8, 0x47a27271), WTCP(0x695e8fe5, 0x48ac2957), WTCP(0x68a69e81, 0x49b41533), + WTCP(0x67ec1817, 0x4aba2f84), WTCP(0x672f013f, 0x4bbe71d1), WTCP(0x666f5ea6, 0x4cc0d5ae), + WTCP(0x65ad3505, 0x4dc154bb), WTCP(0x64e88926, 0x4ebfe8a5), WTCP(0x64215fe5, 0x4fbc8b22), + WTCP(0x6357be2a, 0x50b735f8), WTCP(0x628ba8ef, 0x51afe2f6), WTCP(0x61bd253f, 0x52a68bfb), + WTCP(0x60ec3830, 0x539b2af0), WTCP(0x6018e6eb, 0x548db9cb), WTCP(0x5f4336a7, 0x557e3292), + WTCP(0x5e6b2ca8, 0x566c8f55), WTCP(0x5d90ce45, 0x5758ca31), WTCP(0x5cb420e0, 0x5842dd54), + WTCP(0x5bd529eb, 0x592ac2f7), WTCP(0x5af3eee6, 0x5a107561), +}; + +# ifdef ENABLE_HR_MODE +const PWord32 SineWindow180[90] = { +# else +const PWord16 SineWindow180[90] = { +# endif + WTCP(0x7fffb025, 0x008efa17), WTCP(0x7ffd3153, 0x01aceb7c), WTCP(0x7ff833bc, 0x02cad485), + WTCP(0x7ff0b779, 0x03e8af9e), WTCP(0x7fe6bcaf, 0x05067734), WTCP(0x7fda4390, 0x062425b6), + WTCP(0x7fcb4c5a, 0x0741b592), WTCP(0x7fb9d758, 0x085f2136), WTCP(0x7fa5e4e0, 0x097c6313), + WTCP(0x7f8f7558, 0x0a997597), WTCP(0x7f76892e, 0x0bb65336), WTCP(0x7f5b20de, 0x0cd2f660), + WTCP(0x7f3d3cf3, 0x0def5989), WTCP(0x7f1cde00, 0x0f0b7727), WTCP(0x7efa04a7, 0x102749ae), + WTCP(0x7ed4b197, 0x1142cb98), WTCP(0x7eace589, 0x125df75b), WTCP(0x7e82a145, 0x1378c774), + WTCP(0x7e55e59d, 0x1493365f), WTCP(0x7e26b370, 0x15ad3e9a), WTCP(0x7df50baa, 0x16c6daa6), + WTCP(0x7dc0ef43, 0x17e00505), WTCP(0x7d8a5f3f, 0x18f8b83c), WTCP(0x7d515cae, 0x1a10eed2), + WTCP(0x7d15e8ac, 0x1b28a351), WTCP(0x7cd80464, 0x1c3fd045), WTCP(0x7c97b108, 0x1d56703b), + WTCP(0x7c54efdb, 0x1e6c7dc7), WTCP(0x7c0fc229, 0x1f81f37b), WTCP(0x7bc8294c, 0x2096cbf0), + WTCP(0x7b7e26a9, 0x21ab01c0), WTCP(0x7b31bbb1, 0x22be8f87), WTCP(0x7ae2e9e3, 0x23d16fe8), + WTCP(0x7a91b2c6, 0x24e39d85), WTCP(0x7a3e17f1, 0x25f51307), WTCP(0x79e81b05, 0x2705cb19), + WTCP(0x798fbdaf, 0x2815c069), WTCP(0x793501a8, 0x2924edab), WTCP(0x78d7e8b5, 0x2a334d95), + WTCP(0x787874a6, 0x2b40dae2), WTCP(0x7816a758, 0x2c4d9050), WTCP(0x77b282b3, 0x2d5968a2), + WTCP(0x774c08aa, 0x2e645ea0), WTCP(0x76e33b3e, 0x2f6e6d15), WTCP(0x76781c79, 0x30778ed2), + WTCP(0x760aae72, 0x317fbeaa), WTCP(0x759af34b, 0x3286f778), WTCP(0x7528ed31, 0x338d341a), + WTCP(0x74b49e5f, 0x34926f74), WTCP(0x743e0917, 0x3596a46c), WTCP(0x73c52faa, 0x3699cdf1), + WTCP(0x734a1474, 0x379be6f6), WTCP(0x72ccb9da, 0x389cea71), WTCP(0x724d224e, 0x399cd362), + WTCP(0x71cb504d, 0x3a9b9cc9), WTCP(0x7147465f, 0x3b9941b0), WTCP(0x70c10717, 0x3c95bd25), + WTCP(0x70389513, 0x3d910a3c), WTCP(0x6fadf2fb, 0x3e8b240e), WTCP(0x6f212384, 0x3f8405bb), + WTCP(0x6e92296d, 0x407baa69), WTCP(0x6e01077f, 0x41720d45), WTCP(0x6d6dc08e, 0x42672980), + WTCP(0x6cd85779, 0x435afa54), WTCP(0x6c40cf2b, 0x444d7aff), WTCP(0x6ba72a97, 0x453ea6c7), + WTCP(0x6b0b6cbc, 0x462e78f8), WTCP(0x6a6d98a3, 0x471cece6), WTCP(0x69cdb161, 0x4809fdeb), + WTCP(0x692bba13, 0x48f5a767), WTCP(0x6887b5e1, 0x49dfe4c2), WTCP(0x67e1a7ff, 0x4ac8b16b), + WTCP(0x673993a8, 0x4bb008d8), WTCP(0x668f7c24, 0x4c95e687), WTCP(0x65e364c3, 0x4d7a45fd), + WTCP(0x653550e1, 0x4e5d22c5), WTCP(0x648543e3, 0x4f3e7874), WTCP(0x63d34136, 0x501e42a5), + WTCP(0x631f4c54, 0x50fc7cfa), WTCP(0x626968be, 0x51d92320), WTCP(0x61b19a00, 0x52b430c8), + WTCP(0x60f7e3b0, 0x538da1ae), WTCP(0x603c496c, 0x54657194), WTCP(0x5f7ecedd, 0x553b9c45), + WTCP(0x5ebf77b4, 0x56101d94), WTCP(0x5dfe47ad, 0x56e2f15d), WTCP(0x5d3b428b, 0x57b41383), + WTCP(0x5c766c1c, 0x58837ff3), WTCP(0x5bafc836, 0x595132a2), WTCP(0x5ae75ab8, 0x5a1d278c), +}; + +# ifdef ENABLE_HR_MODE +const PWord32 SineWindow240[120] = { +# else +const PWord16 SineWindow240[120] = { +# endif + WTCP(0x7fffd315, 0x006b3b9b), WTCP(0x7ffe6bbf, 0x0141b1a5), WTCP(0x7ffb9d15, 0x02182427), + WTCP(0x7ff76721, 0x02ee90c8), WTCP(0x7ff1c9ef, 0x03c4f52f), WTCP(0x7feac58d, 0x049b4f00), + WTCP(0x7fe25a0f, 0x05719be2), WTCP(0x7fd8878e, 0x0647d97c), WTCP(0x7fcd4e24, 0x071e0575), + WTCP(0x7fc0adf2, 0x07f41d72), WTCP(0x7fb2a71b, 0x08ca1f1b), WTCP(0x7fa339c5, 0x09a00817), + WTCP(0x7f92661d, 0x0a75d60e), WTCP(0x7f802c52, 0x0b4b86a8), WTCP(0x7f6c8c96, 0x0c21178c), + WTCP(0x7f578721, 0x0cf68662), WTCP(0x7f411c2f, 0x0dcbd0d5), WTCP(0x7f294bfd, 0x0ea0f48c), + WTCP(0x7f1016ce, 0x0f75ef33), WTCP(0x7ef57cea, 0x104abe71), WTCP(0x7ed97e9c, 0x111f5ff4), + WTCP(0x7ebc1c31, 0x11f3d164), WTCP(0x7e9d55fc, 0x12c8106f), WTCP(0x7e7d2c54, 0x139c1abf), + WTCP(0x7e5b9f93, 0x146fee03), WTCP(0x7e38b017, 0x154387e6), WTCP(0x7e145e42, 0x1616e618), + WTCP(0x7deeaa7a, 0x16ea0646), WTCP(0x7dc79529, 0x17bce621), WTCP(0x7d9f1ebd, 0x188f8357), + WTCP(0x7d7547a7, 0x1961db9b), WTCP(0x7d4a105d, 0x1a33ec9c), WTCP(0x7d1d7958, 0x1b05b40f), + WTCP(0x7cef8315, 0x1bd72fa4), WTCP(0x7cc02e15, 0x1ca85d12), WTCP(0x7c8f7ade, 0x1d793a0b), + WTCP(0x7c5d69f7, 0x1e49c447), WTCP(0x7c29fbee, 0x1f19f97b), WTCP(0x7bf53153, 0x1fe9d75f), + WTCP(0x7bbf0aba, 0x20b95bac), WTCP(0x7b8788ba, 0x2188841a), WTCP(0x7b4eabf1, 0x22574e65), + WTCP(0x7b1474fd, 0x2325b847), WTCP(0x7ad8e482, 0x23f3bf7e), WTCP(0x7a9bfb27, 0x24c161c7), + WTCP(0x7a5db997, 0x258e9ce0), WTCP(0x7a1e2082, 0x265b6e8a), WTCP(0x79dd3098, 0x2727d486), + WTCP(0x799aea92, 0x27f3cc94), WTCP(0x79574f28, 0x28bf547b), WTCP(0x79125f19, 0x298a69fc), + WTCP(0x78cc1b26, 0x2a550adf), WTCP(0x78848414, 0x2b1f34eb), WTCP(0x783b9aad, 0x2be8e5e8), + WTCP(0x77f15fbc, 0x2cb21ba0), WTCP(0x77a5d413, 0x2d7ad3de), WTCP(0x7758f886, 0x2e430c6f), + WTCP(0x770acdec, 0x2f0ac320), WTCP(0x76bb5521, 0x2fd1f5c1), WTCP(0x766a8f04, 0x3098a223), + WTCP(0x76187c77, 0x315ec617), WTCP(0x75c51e61, 0x32245f72), WTCP(0x757075ac, 0x32e96c09), + WTCP(0x751a8346, 0x33ade9b3), WTCP(0x74c34820, 0x3471d647), WTCP(0x746ac52f, 0x35352fa1), + WTCP(0x7410fb6b, 0x35f7f39c), WTCP(0x73b5ebd1, 0x36ba2014), WTCP(0x73599760, 0x377bb2e9), + WTCP(0x72fbff1b, 0x383ca9fb), WTCP(0x729d2409, 0x38fd032d), WTCP(0x723d0734, 0x39bcbc63), + WTCP(0x71dba9ab, 0x3a7bd382), WTCP(0x71790c7e, 0x3b3a4672), WTCP(0x711530c2, 0x3bf8131c), + WTCP(0x70b01790, 0x3cb5376b), WTCP(0x7049c203, 0x3d71b14d), WTCP(0x6fe2313c, 0x3e2d7eb1), + WTCP(0x6f79665b, 0x3ee89d86), WTCP(0x6f0f6289, 0x3fa30bc1), WTCP(0x6ea426ed, 0x405cc754), + WTCP(0x6e37b4b6, 0x4115ce38), WTCP(0x6dca0d14, 0x41ce1e65), WTCP(0x6d5b313b, 0x4285b5d4), + WTCP(0x6ceb2261, 0x433c9283), WTCP(0x6c79e1c2, 0x43f2b271), WTCP(0x6c07709b, 0x44a8139e), + WTCP(0x6b93d02e, 0x455cb40c), WTCP(0x6b1f01c0, 0x461091c2), WTCP(0x6aa90697, 0x46c3aac5), + WTCP(0x6a31e000, 0x4775fd1f), WTCP(0x69b98f48, 0x482786dc), WTCP(0x694015c3, 0x48d84609), + WTCP(0x68c574c4, 0x498838b6), WTCP(0x6849ada3, 0x4a375cf5), WTCP(0x67ccc1be, 0x4ae5b0da), + WTCP(0x674eb271, 0x4b93327c), WTCP(0x66cf8120, 0x4c3fdff4), WTCP(0x664f2f2e, 0x4cebb75c), + WTCP(0x65cdbe05, 0x4d96b6d3), WTCP(0x654b2f10, 0x4e40dc79), WTCP(0x64c783bd, 0x4eea2670), + WTCP(0x6442bd7e, 0x4f9292dc), WTCP(0x63bcddc7, 0x503a1fe5), WTCP(0x6335e611, 0x50e0cbb4), + WTCP(0x62add7d6, 0x51869476), WTCP(0x6224b495, 0x522b7859), WTCP(0x619a7dce, 0x52cf758f), + WTCP(0x610f3505, 0x53728a4a), WTCP(0x6082dbc1, 0x5414b4c1), WTCP(0x5ff5738d, 0x54b5f32c), + WTCP(0x5f66fdf5, 0x555643c8), WTCP(0x5ed77c8a, 0x55f5a4d2), WTCP(0x5e46f0dd, 0x5694148b), + WTCP(0x5db55c86, 0x57319135), WTCP(0x5d22c11c, 0x57ce1917), WTCP(0x5c8f203b, 0x5869aa79), + WTCP(0x5bfa7b82, 0x590443a7), WTCP(0x5b64d492, 0x599de2ee), WTCP(0x5ace2d0f, 0x5a36869f), +}; + +# ifdef ENABLE_HR_MODE +const PWord32 SineWindow320[160] = { +# else +const PWord16 SineWindow320[160] = { +# endif + WTCP(0x7fffe6bc, 0x00506cb9), WTCP(0x7fff1c9b, 0x00f145ab), WTCP(0x7ffd885a, 0x01921d20), + WTCP(0x7ffb29fd, 0x0232f21a), WTCP(0x7ff80186, 0x02d3c39b), WTCP(0x7ff40efa, 0x037490a5), + WTCP(0x7fef5260, 0x0415583b), WTCP(0x7fe9cbc0, 0x04b6195d), WTCP(0x7fe37b22, 0x0556d30f), + WTCP(0x7fdc608f, 0x05f78453), WTCP(0x7fd47c14, 0x06982c2b), WTCP(0x7fcbcdbc, 0x0738c998), + WTCP(0x7fc25596, 0x07d95b9e), WTCP(0x7fb813b0, 0x0879e140), WTCP(0x7fad081b, 0x091a597e), + WTCP(0x7fa132e8, 0x09bac35d), WTCP(0x7f949429, 0x0a5b1dde), WTCP(0x7f872bf3, 0x0afb6805), + WTCP(0x7f78fa5b, 0x0b9ba0d5), WTCP(0x7f69ff76, 0x0c3bc74f), WTCP(0x7f5a3b5e, 0x0cdbda79), + WTCP(0x7f49ae2a, 0x0d7bd954), WTCP(0x7f3857f6, 0x0e1bc2e4), WTCP(0x7f2638db, 0x0ebb962c), + WTCP(0x7f1350f8, 0x0f5b5231), WTCP(0x7effa069, 0x0ffaf5f6), WTCP(0x7eeb274d, 0x109a807e), + WTCP(0x7ed5e5c6, 0x1139f0cf), WTCP(0x7ebfdbf5, 0x11d945eb), WTCP(0x7ea909fc, 0x12787ed8), + WTCP(0x7e917000, 0x13179a9b), WTCP(0x7e790e25, 0x13b69836), WTCP(0x7e5fe493, 0x145576b1), + WTCP(0x7e45f371, 0x14f43510), WTCP(0x7e2b3ae8, 0x1592d257), WTCP(0x7e0fbb22, 0x16314d8e), + WTCP(0x7df3744b, 0x16cfa5b9), WTCP(0x7dd6668f, 0x176dd9de), WTCP(0x7db8921c, 0x180be904), + WTCP(0x7d99f721, 0x18a9d231), WTCP(0x7d7a95cf, 0x1947946c), WTCP(0x7d5a6e57, 0x19e52ebb), + WTCP(0x7d3980ec, 0x1a82a026), WTCP(0x7d17cdc2, 0x1b1fe7b3), WTCP(0x7cf5550e, 0x1bbd046c), + WTCP(0x7cd21707, 0x1c59f557), WTCP(0x7cae13e4, 0x1cf6b97c), WTCP(0x7c894bde, 0x1d934fe5), + WTCP(0x7c63bf2f, 0x1e2fb79a), WTCP(0x7c3d6e13, 0x1ecbefa4), WTCP(0x7c1658c5, 0x1f67f70b), + WTCP(0x7bee7f85, 0x2003ccdb), WTCP(0x7bc5e290, 0x209f701c), WTCP(0x7b9c8226, 0x213adfda), + WTCP(0x7b725e8a, 0x21d61b1e), WTCP(0x7b4777fe, 0x227120f3), WTCP(0x7b1bcec4, 0x230bf065), + WTCP(0x7aef6323, 0x23a6887f), WTCP(0x7ac23561, 0x2440e84d), WTCP(0x7a9445c5, 0x24db0edb), + WTCP(0x7a659496, 0x2574fb36), WTCP(0x7a362220, 0x260eac6a), WTCP(0x7a05eead, 0x26a82186), + WTCP(0x79d4fa89, 0x27415996), WTCP(0x79a34602, 0x27da53a9), WTCP(0x7970d165, 0x28730ecd), + WTCP(0x793d9d03, 0x290b8a12), WTCP(0x7909a92d, 0x29a3c485), WTCP(0x78d4f634, 0x2a3bbd37), + WTCP(0x789f846b, 0x2ad37338), WTCP(0x78695428, 0x2b6ae598), WTCP(0x783265c0, 0x2c021369), + WTCP(0x77fab989, 0x2c98fbba), WTCP(0x77c24fdb, 0x2d2f9d9f), WTCP(0x77892910, 0x2dc5f829), + WTCP(0x774f4581, 0x2e5c0a6b), WTCP(0x7714a58b, 0x2ef1d377), WTCP(0x76d94989, 0x2f875262), + WTCP(0x769d31d9, 0x301c863f), WTCP(0x76605edb, 0x30b16e23), WTCP(0x7622d0ef, 0x31460922), + WTCP(0x75e48874, 0x31da5651), WTCP(0x75a585cf, 0x326e54c7), WTCP(0x7565c962, 0x3302039b), + WTCP(0x75255392, 0x339561e1), WTCP(0x74e424c5, 0x34286eb3), WTCP(0x74a23d62, 0x34bb2927), + WTCP(0x745f9dd1, 0x354d9057), WTCP(0x741c467b, 0x35dfa35a), WTCP(0x73d837ca, 0x3671614b), + WTCP(0x7393722a, 0x3702c942), WTCP(0x734df607, 0x3793da5b), WTCP(0x7307c3d0, 0x382493b0), + WTCP(0x72c0dbf3, 0x38b4f45d), WTCP(0x72793edf, 0x3944fb7e), WTCP(0x7230ed07, 0x39d4a82f), + WTCP(0x71e7e6dc, 0x3a63f98d), WTCP(0x719e2cd2, 0x3af2eeb7), WTCP(0x7153bf5d, 0x3b8186ca), + WTCP(0x71089ef2, 0x3c0fc0e6), WTCP(0x70bccc09, 0x3c9d9c28), WTCP(0x70704718, 0x3d2b17b3), + WTCP(0x7023109a, 0x3db832a6), WTCP(0x6fd52907, 0x3e44ec22), WTCP(0x6f8690db, 0x3ed14349), + WTCP(0x6f374891, 0x3f5d373e), WTCP(0x6ee750a8, 0x3fe8c724), WTCP(0x6e96a99d, 0x4073f21d), + WTCP(0x6e4553ef, 0x40feb74f), WTCP(0x6df35020, 0x418915de), WTCP(0x6da09eb1, 0x42130cf0), + WTCP(0x6d4d4023, 0x429c9bab), WTCP(0x6cf934fc, 0x4325c135), WTCP(0x6ca47dbf, 0x43ae7cb7), + WTCP(0x6c4f1af2, 0x4436cd58), WTCP(0x6bf90d1d, 0x44beb240), WTCP(0x6ba254c7, 0x45462a9a), + WTCP(0x6b4af279, 0x45cd358f), WTCP(0x6af2e6bc, 0x4653d24b), WTCP(0x6a9a321d, 0x46d9fff8), + WTCP(0x6a40d527, 0x475fbdc3), WTCP(0x69e6d067, 0x47e50ad8), WTCP(0x698c246c, 0x4869e665), + WTCP(0x6930d1c4, 0x48ee4f98), WTCP(0x68d4d900, 0x497245a1), WTCP(0x68783ab1, 0x49f5c7ae), + WTCP(0x681af76a, 0x4a78d4f0), WTCP(0x67bd0fbd, 0x4afb6c98), WTCP(0x675e843e, 0x4b7d8dd8), + WTCP(0x66ff5584, 0x4bff37e2), WTCP(0x669f8425, 0x4c8069ea), WTCP(0x663f10b7, 0x4d012324), + WTCP(0x65ddfbd3, 0x4d8162c4), WTCP(0x657c4613, 0x4e012800), WTCP(0x6519f010, 0x4e80720e), + WTCP(0x64b6fa66, 0x4eff4025), WTCP(0x645365b2, 0x4f7d917c), WTCP(0x63ef3290, 0x4ffb654d), + WTCP(0x638a619e, 0x5078bad1), WTCP(0x6324f37d, 0x50f59141), WTCP(0x62bee8cc, 0x5171e7d9), + WTCP(0x6258422c, 0x51edbdd4), WTCP(0x61f1003f, 0x5269126e), WTCP(0x618923a9, 0x52e3e4e6), + WTCP(0x6120ad0d, 0x535e3479), WTCP(0x60b79d10, 0x53d80065), WTCP(0x604df459, 0x545147eb), + WTCP(0x5fe3b38d, 0x54ca0a4b), WTCP(0x5f78db56, 0x554246c6), WTCP(0x5f0d6c5b, 0x55b9fc9e), + WTCP(0x5ea16747, 0x56312b17), WTCP(0x5e34ccc3, 0x56a7d174), WTCP(0x5dc79d7c, 0x571deefa), + WTCP(0x5d59da1e, 0x579382ee), WTCP(0x5ceb8355, 0x58088c96), WTCP(0x5c7c99d1, 0x587d0b3b), + WTCP(0x5c0d1e41, 0x58f0fe23), WTCP(0x5b9d1154, 0x59646498), WTCP(0x5b2c73bb, 0x59d73de3), + WTCP(0x5abb4629, 0x5a498950), +}; + +# ifdef ENABLE_HR_MODE +const PWord32 SineWindow360[180] = { +# else +const PWord16 SineWindow360[180] = { +# endif + WTCP(0x7fffec08, 0x00477d17), WTCP(0x7fff4c53, 0x00d676eb), WTCP(0x7ffe0cea, 0x01656fb4), + WTCP(0x7ffc2dcf, 0x01f466bf), WTCP(0x7ff9af03, 0x02835b59), WTCP(0x7ff6908a, 0x03124cd1), + WTCP(0x7ff2d268, 0x03a13a74), WTCP(0x7fee74a1, 0x0430238f), WTCP(0x7fe9773c, 0x04bf0771), + WTCP(0x7fe3da3d, 0x054de566), WTCP(0x7fdd9dac, 0x05dcbcbe), WTCP(0x7fd6c192, 0x066b8cc5), + WTCP(0x7fcf45f6, 0x06fa54c9), WTCP(0x7fc72ae1, 0x07891418), WTCP(0x7fbe705f, 0x0817ca01), + WTCP(0x7fb51679, 0x08a675d0), WTCP(0x7fab1d3c, 0x093516d4), WTCP(0x7fa084b4, 0x09c3ac5c), + WTCP(0x7f954cee, 0x0a5235b4), WTCP(0x7f8975f8, 0x0ae0b22c), WTCP(0x7f7cffe1, 0x0b6f2112), + WTCP(0x7f6feab8, 0x0bfd81b3), WTCP(0x7f62368e, 0x0c8bd35e), WTCP(0x7f53e374, 0x0d1a1562), + WTCP(0x7f44f17c, 0x0da8470d), WTCP(0x7f3560b8, 0x0e3667ad), WTCP(0x7f25313c, 0x0ec47692), + WTCP(0x7f14631c, 0x0f52730a), WTCP(0x7f02f66e, 0x0fe05c64), WTCP(0x7ef0eb45, 0x106e31ef), + WTCP(0x7ede41ba, 0x10fbf2fa), WTCP(0x7ecaf9e4, 0x11899ed3), WTCP(0x7eb713da, 0x121734cb), + WTCP(0x7ea28fb5, 0x12a4b431), WTCP(0x7e8d6d90, 0x13321c53), WTCP(0x7e77ad84, 0x13bf6c82), + WTCP(0x7e614fac, 0x144ca40e), WTCP(0x7e4a5425, 0x14d9c245), WTCP(0x7e32bb0b, 0x1566c679), + WTCP(0x7e1a847b, 0x15f3aff8), WTCP(0x7e01b095, 0x16807e14), WTCP(0x7de83f76, 0x170d301d), + WTCP(0x7dce313e, 0x1799c562), WTCP(0x7db3860e, 0x18263d35), WTCP(0x7d983e08, 0x18b296e7), + WTCP(0x7d7c594d, 0x193ed1c8), WTCP(0x7d5fd800, 0x19caed28), WTCP(0x7d42ba45, 0x1a56e85b), + WTCP(0x7d25003f, 0x1ae2c2b0), WTCP(0x7d06aa15, 0x1b6e7b7a), WTCP(0x7ce7b7ec, 0x1bfa1209), + WTCP(0x7cc829ea, 0x1c8585b0), WTCP(0x7ca80037, 0x1d10d5c1), WTCP(0x7c873afb, 0x1d9c018f), + WTCP(0x7c65da60, 0x1e27086a), WTCP(0x7c43de8d, 0x1eb1e9a6), WTCP(0x7c2147af, 0x1f3ca496), + WTCP(0x7bfe15f0, 0x1fc7388d), WTCP(0x7bda497c, 0x2051a4dd), WTCP(0x7bb5e27f, 0x20dbe8da), + WTCP(0x7b90e128, 0x216603d7), WTCP(0x7b6b45a4, 0x21eff528), WTCP(0x7b451022, 0x2279bc21), + WTCP(0x7b1e40d3, 0x23035817), WTCP(0x7af6d7e5, 0x238cc85c), WTCP(0x7aced58b, 0x24160c47), + WTCP(0x7aa639f7, 0x249f232b), WTCP(0x7a7d055a, 0x25280c5d), WTCP(0x7a5337e9, 0x25b0c734), + WTCP(0x7a28d1d8, 0x26395303), WTCP(0x79fdd35b, 0x26c1af21), WTCP(0x79d23ca9, 0x2749dae4), + WTCP(0x79a60df7, 0x27d1d5a2), WTCP(0x7979477c, 0x28599eb0), WTCP(0x794be972, 0x28e13566), + WTCP(0x791df40f, 0x2968991b), WTCP(0x78ef678e, 0x29efc925), WTCP(0x78c04429, 0x2a76c4dc), + WTCP(0x78908a1a, 0x2afd8b97), WTCP(0x7860399d, 0x2b841caf), WTCP(0x782f52ef, 0x2c0a777b), + WTCP(0x77fdd64b, 0x2c909b54), WTCP(0x77cbc3f1, 0x2d168792), WTCP(0x77991c1e, 0x2d9c3b8e), + WTCP(0x7765df12, 0x2e21b6a2), WTCP(0x77320d0c, 0x2ea6f826), WTCP(0x76fda64e, 0x2f2bff76), + WTCP(0x76c8ab18, 0x2fb0cbea), WTCP(0x76931bae, 0x30355cdc), WTCP(0x765cf850, 0x30b9b1a9), + WTCP(0x76264144, 0x313dc9aa), WTCP(0x75eef6ce, 0x31c1a43a), WTCP(0x75b71931, 0x324540b6), + WTCP(0x757ea8b5, 0x32c89e78), WTCP(0x7545a59f, 0x334bbcde), WTCP(0x750c1038, 0x33ce9b42), + WTCP(0x74d1e8c5, 0x34513903), WTCP(0x74972f91, 0x34d3957e), WTCP(0x745be4e4, 0x3555b00e), + WTCP(0x74200908, 0x35d78813), WTCP(0x73e39c48, 0x36591cea), WTCP(0x73a69ef0, 0x36da6df1), + WTCP(0x7369114b, 0x375b7a87), WTCP(0x732af3a6, 0x37dc420c), WTCP(0x72ec4650, 0x385cc3de), + WTCP(0x72ad0995, 0x38dcff5d), WTCP(0x726d3dc5, 0x395cf3e9), WTCP(0x722ce330, 0x39dca0e2), + WTCP(0x71ebfa25, 0x3a5c05aa), WTCP(0x71aa82f6, 0x3adb21a0), WTCP(0x71687df5, 0x3b59f428), + WTCP(0x7125eb74, 0x3bd87ca1), WTCP(0x70e2cbc5, 0x3c56ba70), WTCP(0x709f1f3d, 0x3cd4acf5), + WTCP(0x705ae630, 0x3d525394), WTCP(0x701620f4, 0x3dcfadaf), WTCP(0x6fd0cfdd, 0x3e4cbaac), + WTCP(0x6f8af343, 0x3ec979ed), WTCP(0x6f448b7d, 0x3f45ead7), WTCP(0x6efd98e2, 0x3fc20ccf), + WTCP(0x6eb61bcb, 0x403ddf39), WTCP(0x6e6e1492, 0x40b9617c), WTCP(0x6e25838f, 0x413492fd), + WTCP(0x6ddc691e, 0x41af7323), WTCP(0x6d92c59a, 0x422a0154), WTCP(0x6d48995f, 0x42a43cf7), + WTCP(0x6cfde4c9, 0x431e2573), WTCP(0x6cb2a836, 0x4397ba32), WTCP(0x6c66e403, 0x4410fa9a), + WTCP(0x6c1a988f, 0x4489e615), WTCP(0x6bcdc639, 0x45027c0c), WTCP(0x6b806d61, 0x457abbe8), + WTCP(0x6b328e67, 0x45f2a513), WTCP(0x6ae429ad, 0x466a36f9), WTCP(0x6a953f94, 0x46e17102), + WTCP(0x6a45d080, 0x4758529c), WTCP(0x69f5dcd2, 0x47cedb30), WTCP(0x69a564ef, 0x48450a2d), + WTCP(0x6954693b, 0x48badefd), WTCP(0x6902ea1c, 0x4930590e), WTCP(0x68b0e7f6, 0x49a577ce), + WTCP(0x685e6331, 0x4a1a3aaa), WTCP(0x680b5c33, 0x4a8ea111), WTCP(0x67b7d363, 0x4b02aa71), + WTCP(0x6763c92b, 0x4b76563a), WTCP(0x670f3df2, 0x4be9a3db), WTCP(0x66ba3223, 0x4c5c92c4), + WTCP(0x6664a627, 0x4ccf2267), WTCP(0x660e9a69, 0x4d415233), WTCP(0x65b80f55, 0x4db3219c), + WTCP(0x65610557, 0x4e249011), WTCP(0x65097cda, 0x4e959d07), WTCP(0x64b1764d, 0x4f0647f0), + WTCP(0x6458f21d, 0x4f769040), WTCP(0x63fff0b9, 0x4fe6756a), WTCP(0x63a6728f, 0x5055f6e2), + WTCP(0x634c7810, 0x50c5141e), WTCP(0x62f201ac, 0x5133cc94), WTCP(0x62970fd2, 0x51a21fb7), + WTCP(0x623ba2f6, 0x52100d01), WTCP(0x61dfbb89, 0x527d93e6), WTCP(0x618359fd, 0x52eab3de), + WTCP(0x61267ec7, 0x53576c62), WTCP(0x60c92a59, 0x53c3bce9), WTCP(0x606b5d28, 0x542fa4ed), + WTCP(0x600d17aa, 0x549b23e7), WTCP(0x5fae5a54, 0x55063950), WTCP(0x5f4f259c, 0x5570e4a3), + WTCP(0x5eef79f8, 0x55db255b), WTCP(0x5e8f57e2, 0x5644faf4), WTCP(0x5e2ebfcf, 0x56ae64e9), + WTCP(0x5dcdb239, 0x571762b6), WTCP(0x5d6c2f99, 0x577ff3da), WTCP(0x5d0a3868, 0x57e817d1), + WTCP(0x5ca7cd21, 0x584fce19), WTCP(0x5c44ee3f, 0x58b71631), WTCP(0x5be19c3c, 0x591def98), + WTCP(0x5b7dd796, 0x598459ce), WTCP(0x5b19a0c7, 0x59ea5454), WTCP(0x5ab4f84f, 0x5a4fdea9), +}; + +# ifdef ENABLE_HR_MODE +const PWord32 SineWindow480[240] = { +# else +const PWord16 SineWindow480[240] = { +# endif + WTCP(0x7ffff4c5, 0x00359dd2), WTCP(0x7fff9aef, 0x00a0d951), WTCP(0x7ffee744, 0x010c1460), + WTCP(0x7ffdd9c4, 0x01774eb2), WTCP(0x7ffc726f, 0x01e287fc), WTCP(0x7ffab147, 0x024dbff4), + WTCP(0x7ff8964d, 0x02b8f64e), WTCP(0x7ff62182, 0x03242abf), WTCP(0x7ff352e8, 0x038f5cfb), + WTCP(0x7ff02a82, 0x03fa8cb8), WTCP(0x7feca851, 0x0465b9aa), WTCP(0x7fe8cc57, 0x04d0e386), + WTCP(0x7fe49698, 0x053c0a01), WTCP(0x7fe00716, 0x05a72ccf), WTCP(0x7fdb1dd5, 0x06124ba5), + WTCP(0x7fd5dad8, 0x067d6639), WTCP(0x7fd03e23, 0x06e87c3f), WTCP(0x7fca47b9, 0x07538d6b), + WTCP(0x7fc3f7a0, 0x07be9973), WTCP(0x7fbd4dda, 0x0829a00c), WTCP(0x7fb64a6e, 0x0894a0ea), + WTCP(0x7faeed5f, 0x08ff9bc2), WTCP(0x7fa736b4, 0x096a9049), WTCP(0x7f9f2671, 0x09d57e35), + WTCP(0x7f96bc9c, 0x0a40653a), WTCP(0x7f8df93c, 0x0aab450d), WTCP(0x7f84dc55, 0x0b161d63), + WTCP(0x7f7b65ef, 0x0b80edf1), WTCP(0x7f719611, 0x0bebb66c), WTCP(0x7f676cc0, 0x0c56768a), + WTCP(0x7f5cea05, 0x0cc12dff), WTCP(0x7f520de6, 0x0d2bdc80), WTCP(0x7f46d86c, 0x0d9681c2), + WTCP(0x7f3b499d, 0x0e011d7c), WTCP(0x7f2f6183, 0x0e6baf61), WTCP(0x7f232026, 0x0ed63727), + WTCP(0x7f16858e, 0x0f40b483), WTCP(0x7f0991c4, 0x0fab272b), WTCP(0x7efc44d0, 0x10158ed4), + WTCP(0x7eee9ebe, 0x107feb33), WTCP(0x7ee09f95, 0x10ea3bfd), WTCP(0x7ed24761, 0x115480e9), + WTCP(0x7ec3962a, 0x11beb9aa), WTCP(0x7eb48bfb, 0x1228e5f8), WTCP(0x7ea528e0, 0x12930586), + WTCP(0x7e956ce1, 0x12fd180b), WTCP(0x7e85580c, 0x13671d3d), WTCP(0x7e74ea6a, 0x13d114d0), + WTCP(0x7e642408, 0x143afe7b), WTCP(0x7e5304f2, 0x14a4d9f4), WTCP(0x7e418d32, 0x150ea6ef), + WTCP(0x7e2fbcd6, 0x15786522), WTCP(0x7e1d93ea, 0x15e21445), WTCP(0x7e0b127a, 0x164bb40b), + WTCP(0x7df83895, 0x16b5442b), WTCP(0x7de50646, 0x171ec45c), WTCP(0x7dd17b9c, 0x17883452), + WTCP(0x7dbd98a4, 0x17f193c5), WTCP(0x7da95d6c, 0x185ae269), WTCP(0x7d94ca03, 0x18c41ff6), + WTCP(0x7d7fde76, 0x192d4c21), WTCP(0x7d6a9ad5, 0x199666a0), WTCP(0x7d54ff2e, 0x19ff6f2a), + WTCP(0x7d3f0b90, 0x1a686575), WTCP(0x7d28c00c, 0x1ad14938), WTCP(0x7d121cb0, 0x1b3a1a28), + WTCP(0x7cfb218c, 0x1ba2d7fc), WTCP(0x7ce3ceb2, 0x1c0b826a), WTCP(0x7ccc2430, 0x1c74192a), + WTCP(0x7cb42217, 0x1cdc9bf2), WTCP(0x7c9bc87a, 0x1d450a78), WTCP(0x7c831767, 0x1dad6473), + WTCP(0x7c6a0ef2, 0x1e15a99a), WTCP(0x7c50af2b, 0x1e7dd9a4), WTCP(0x7c36f824, 0x1ee5f447), + WTCP(0x7c1ce9ef, 0x1f4df93a), WTCP(0x7c02849f, 0x1fb5e836), WTCP(0x7be7c847, 0x201dc0ef), + WTCP(0x7bccb4f8, 0x2085831f), WTCP(0x7bb14ac5, 0x20ed2e7b), WTCP(0x7b9589c3, 0x2154c2bb), + WTCP(0x7b797205, 0x21bc3f97), WTCP(0x7b5d039e, 0x2223a4c5), WTCP(0x7b403ea2, 0x228af1fe), + WTCP(0x7b232325, 0x22f226f8), WTCP(0x7b05b13d, 0x2359436c), WTCP(0x7ae7e8fc, 0x23c04710), + WTCP(0x7ac9ca7a, 0x2427319d), WTCP(0x7aab55ca, 0x248e02cb), WTCP(0x7a8c8b01, 0x24f4ba50), + WTCP(0x7a6d6a37, 0x255b57e6), WTCP(0x7a4df380, 0x25c1db44), WTCP(0x7a2e26f2, 0x26284422), + WTCP(0x7a0e04a4, 0x268e9238), WTCP(0x79ed8cad, 0x26f4c53e), WTCP(0x79ccbf22, 0x275adcee), + WTCP(0x79ab9c1c, 0x27c0d8fe), WTCP(0x798a23b1, 0x2826b928), WTCP(0x796855f9, 0x288c7d24), + WTCP(0x7946330c, 0x28f224ab), WTCP(0x7923bb01, 0x2957af74), WTCP(0x7900edf2, 0x29bd1d3a), + WTCP(0x78ddcbf5, 0x2a226db5), WTCP(0x78ba5524, 0x2a87a09d), WTCP(0x78968998, 0x2aecb5ac), + WTCP(0x7872696a, 0x2b51ac9a), WTCP(0x784df4b3, 0x2bb68522), WTCP(0x78292b8d, 0x2c1b3efb), + WTCP(0x78040e12, 0x2c7fd9e0), WTCP(0x77de9c5b, 0x2ce45589), WTCP(0x77b8d683, 0x2d48b1b1), + WTCP(0x7792bca5, 0x2dacee11), WTCP(0x776c4edb, 0x2e110a62), WTCP(0x77458d40, 0x2e75065e), + WTCP(0x771e77f0, 0x2ed8e1c0), WTCP(0x76f70f05, 0x2f3c9c40), WTCP(0x76cf529c, 0x2fa03599), + WTCP(0x76a742d1, 0x3003ad85), WTCP(0x767edfbe, 0x306703bf), WTCP(0x76562982, 0x30ca3800), + WTCP(0x762d2038, 0x312d4a03), WTCP(0x7603c3fd, 0x31903982), WTCP(0x75da14ef, 0x31f30638), + WTCP(0x75b01329, 0x3255afe0), WTCP(0x7585becb, 0x32b83634), WTCP(0x755b17f2, 0x331a98ef), + WTCP(0x75301ebb, 0x337cd7cd), WTCP(0x7504d345, 0x33def287), WTCP(0x74d935ae, 0x3440e8da), + WTCP(0x74ad4615, 0x34a2ba81), WTCP(0x74810499, 0x35046736), WTCP(0x74547158, 0x3565eeb6), + WTCP(0x74278c72, 0x35c750bc), WTCP(0x73fa5607, 0x36288d03), WTCP(0x73ccce36, 0x3689a348), + WTCP(0x739ef51f, 0x36ea9346), WTCP(0x7370cae2, 0x374b5cb9), WTCP(0x73424fa0, 0x37abff5d), + WTCP(0x73138379, 0x380c7aee), WTCP(0x72e4668f, 0x386ccf2a), WTCP(0x72b4f902, 0x38ccfbcb), + WTCP(0x72853af3, 0x392d008f), WTCP(0x72552c85, 0x398cdd32), WTCP(0x7224cdd8, 0x39ec9172), + WTCP(0x71f41f0f, 0x3a4c1d09), WTCP(0x71c3204c, 0x3aab7fb7), WTCP(0x7191d1b1, 0x3b0ab937), + WTCP(0x71603361, 0x3b69c947), WTCP(0x712e457f, 0x3bc8afa5), WTCP(0x70fc082d, 0x3c276c0d), + WTCP(0x70c97b90, 0x3c85fe3d), WTCP(0x70969fca, 0x3ce465f3), WTCP(0x706374ff, 0x3d42a2ec), + WTCP(0x702ffb54, 0x3da0b4e7), WTCP(0x6ffc32eb, 0x3dfe9ba1), WTCP(0x6fc81bea, 0x3e5c56d8), + WTCP(0x6f93b676, 0x3eb9e64b), WTCP(0x6f5f02b2, 0x3f1749b8), WTCP(0x6f2a00c4, 0x3f7480dd), + WTCP(0x6ef4b0d1, 0x3fd18b7a), WTCP(0x6ebf12ff, 0x402e694c), WTCP(0x6e892772, 0x408b1a12), + WTCP(0x6e52ee52, 0x40e79d8c), WTCP(0x6e1c67c4, 0x4143f379), WTCP(0x6de593ee, 0x41a01b97), + WTCP(0x6dae72f7, 0x41fc15a6), WTCP(0x6d770506, 0x4257e166), WTCP(0x6d3f4a40, 0x42b37e96), + WTCP(0x6d0742cf, 0x430eecf6), WTCP(0x6cceeed8, 0x436a2c45), WTCP(0x6c964e83, 0x43c53c44), + WTCP(0x6c5d61f9, 0x44201cb2), WTCP(0x6c242960, 0x447acd50), WTCP(0x6beaa4e2, 0x44d54ddf), + WTCP(0x6bb0d4a7, 0x452f9e1e), WTCP(0x6b76b8d6, 0x4589bdcf), WTCP(0x6b3c519a, 0x45e3acb1), + WTCP(0x6b019f1a, 0x463d6a87), WTCP(0x6ac6a180, 0x4696f710), WTCP(0x6a8b58f6, 0x46f0520f), + WTCP(0x6a4fc5a6, 0x47497b44), WTCP(0x6a13e7b8, 0x47a27271), WTCP(0x69d7bf57, 0x47fb3757), + WTCP(0x699b4cad, 0x4853c9b9), WTCP(0x695e8fe5, 0x48ac2957), WTCP(0x69218929, 0x490455f4), + WTCP(0x68e438a4, 0x495c4f52), WTCP(0x68a69e81, 0x49b41533), WTCP(0x6868baec, 0x4a0ba75b), + WTCP(0x682a8e0f, 0x4a63058a), WTCP(0x67ec1817, 0x4aba2f84), WTCP(0x67ad592f, 0x4b11250c), + WTCP(0x676e5183, 0x4b67e5e4), WTCP(0x672f013f, 0x4bbe71d1), WTCP(0x66ef6891, 0x4c14c894), + WTCP(0x66af87a4, 0x4c6ae9f2), WTCP(0x666f5ea6, 0x4cc0d5ae), WTCP(0x662eedc3, 0x4d168b8b), + WTCP(0x65ee3529, 0x4d6c0b4e), WTCP(0x65ad3505, 0x4dc154bb), WTCP(0x656bed84, 0x4e166795), + WTCP(0x652a5ed6, 0x4e6b43a2), WTCP(0x64e88926, 0x4ebfe8a5), WTCP(0x64a66ca5, 0x4f145662), + WTCP(0x6464097f, 0x4f688ca0), WTCP(0x64215fe5, 0x4fbc8b22), WTCP(0x63de7003, 0x501051ae), + WTCP(0x639b3a0b, 0x5063e008), WTCP(0x6357be2a, 0x50b735f8), WTCP(0x6313fc90, 0x510a5340), + WTCP(0x62cff56c, 0x515d37a9), WTCP(0x628ba8ef, 0x51afe2f6), WTCP(0x62471749, 0x520254ef), + WTCP(0x620240a8, 0x52548d59), WTCP(0x61bd253f, 0x52a68bfb), WTCP(0x6177c53c, 0x52f8509b), + WTCP(0x613220d2, 0x5349daff), WTCP(0x60ec3830, 0x539b2af0), WTCP(0x60a60b88, 0x53ec4032), + WTCP(0x605f9b0b, 0x543d1a8e), WTCP(0x6018e6eb, 0x548db9cb), WTCP(0x5fd1ef59, 0x54de1db1), + WTCP(0x5f8ab487, 0x552e4605), WTCP(0x5f4336a7, 0x557e3292), WTCP(0x5efb75ea, 0x55cde31e), + WTCP(0x5eb37285, 0x561d5771), WTCP(0x5e6b2ca8, 0x566c8f55), WTCP(0x5e22a487, 0x56bb8a90), + WTCP(0x5dd9da55, 0x570a48ec), WTCP(0x5d90ce45, 0x5758ca31), WTCP(0x5d47808a, 0x57a70e29), + WTCP(0x5cfdf157, 0x57f5149d), WTCP(0x5cb420e0, 0x5842dd54), WTCP(0x5c6a0f59, 0x5890681a), + WTCP(0x5c1fbcf6, 0x58ddb4b8), WTCP(0x5bd529eb, 0x592ac2f7), WTCP(0x5b8a566c, 0x597792a1), + WTCP(0x5b3f42ae, 0x59c42381), WTCP(0x5af3eee6, 0x5a107561), WTCP(0x5aa85b48, 0x5a5c880a), +}; + +# ifdef ENABLE_HR_MODE +#ifdef CR8_G_ADD_75MS +const PWord32 SineWindow720[360] = { + WTCP(0x7ffffb01, 0x0023be8d), WTCP(0x7fffd314, 0x006b3b9b), WTCP(0x7fff833a, 0x00b2b888), + WTCP(0x7fff0b72, 0x00fa353e), WTCP(0x7ffe6bbe, 0x0141b1a5), WTCP(0x7ffda41c, 0x01892da8), + WTCP(0x7ffcb48e, 0x01d0a930), WTCP(0x7ffb9d14, 0x02182427), WTCP(0x7ffa5dae, 0x025f9e77), + WTCP(0x7ff8f65d, 0x02a7180a), WTCP(0x7ff76720, 0x02ee90c8), WTCP(0x7ff5aff9, 0x0336089d), + WTCP(0x7ff3d0e8, 0x037d7f71), WTCP(0x7ff1c9ee, 0x03c4f52e), WTCP(0x7fef9b0a, 0x040c69bf), + WTCP(0x7fed443f, 0x0453dd0c), WTCP(0x7feac58c, 0x049b4f00), WTCP(0x7fe81ef2, 0x04e2bf83), + WTCP(0x7fe55073, 0x052a2e81), WTCP(0x7fe25a0e, 0x05719be2), WTCP(0x7fdf3bc6, 0x05b90791), + WTCP(0x7fdbf59a, 0x06007176), WTCP(0x7fd8878d, 0x0647d97c), WTCP(0x7fd4f19f, 0x068f3f8d), + WTCP(0x7fd133d0, 0x06d6a392), WTCP(0x7fcd4e23, 0x071e0575), WTCP(0x7fc94099, 0x0765651f), + WTCP(0x7fc50b33, 0x07acc27b), WTCP(0x7fc0adf1, 0x07f41d72), WTCP(0x7fbc28d6, 0x083b75ee), + WTCP(0x7fb77be3, 0x0882cbd8), WTCP(0x7fb2a71a, 0x08ca1f1b), WTCP(0x7fadaa7b, 0x09116fa0), + WTCP(0x7fa88608, 0x0958bd51), WTCP(0x7fa339c4, 0x09a00817), WTCP(0x7f9dc5b0, 0x09e74fdd), + WTCP(0x7f9829cc, 0x0a2e948c), WTCP(0x7f92661c, 0x0a75d60e), WTCP(0x7f8c7aa1, 0x0abd144d), + WTCP(0x7f86675c, 0x0b044f32), WTCP(0x7f802c51, 0x0b4b86a8), WTCP(0x7f79c980, 0x0b92ba97), + WTCP(0x7f733eeb, 0x0bd9eaeb), WTCP(0x7f6c8c95, 0x0c21178c), WTCP(0x7f65b280, 0x0c684064), + WTCP(0x7f5eb0ae, 0x0caf655e), WTCP(0x7f578720, 0x0cf68662), WTCP(0x7f5035da, 0x0d3da35c), + WTCP(0x7f48bcde, 0x0d84bc34), WTCP(0x7f411c2e, 0x0dcbd0d5), WTCP(0x7f3953cb, 0x0e12e128), + WTCP(0x7f3163ba, 0x0e59ed17), WTCP(0x7f294bfc, 0x0ea0f48c), WTCP(0x7f210c93, 0x0ee7f771), + WTCP(0x7f18a583, 0x0f2ef5b0), WTCP(0x7f1016cd, 0x0f75ef32), WTCP(0x7f076075, 0x0fbce3e2), + WTCP(0x7efe827e, 0x1003d3a9), WTCP(0x7ef57cea, 0x104abe71), WTCP(0x7eec4fbb, 0x1091a424), + WTCP(0x7ee2faf5, 0x10d884ad), WTCP(0x7ed97e9b, 0x111f5ff3), WTCP(0x7ecfdaaf, 0x116635e3), + WTCP(0x7ec60f35, 0x11ad0665), WTCP(0x7ebc1c30, 0x11f3d164), WTCP(0x7eb201a2, 0x123a96c9), + WTCP(0x7ea7bf90, 0x1281567f), WTCP(0x7e9d55fb, 0x12c8106e), WTCP(0x7e92c4e8, 0x130ec482), + WTCP(0x7e880c5a, 0x135572a5), WTCP(0x7e7d2c53, 0x139c1abf), WTCP(0x7e7224d8, 0x13e2bcbb), + WTCP(0x7e66f5ec, 0x14295884), WTCP(0x7e5b9f92, 0x146fee02), WTCP(0x7e5021ce, 0x14b67d21), + WTCP(0x7e447ca3, 0x14fd05c9), WTCP(0x7e38b016, 0x154387e6), WTCP(0x7e2cbc29, 0x158a0360), + WTCP(0x7e20a0e1, 0x15d07823), WTCP(0x7e145e41, 0x1616e618), WTCP(0x7e07f44d, 0x165d4d28), + WTCP(0x7dfb6309, 0x16a3ad3f), WTCP(0x7deeaa79, 0x16ea0646), WTCP(0x7de1caa1, 0x17305827), + WTCP(0x7dd4c384, 0x1776a2cd), WTCP(0x7dc79528, 0x17bce621), WTCP(0x7dba3f90, 0x1803220d), + WTCP(0x7dacc2c0, 0x1849567c), WTCP(0x7d9f1ebc, 0x188f8357), WTCP(0x7d915389, 0x18d5a889), + WTCP(0x7d83612b, 0x191bc5fc), WTCP(0x7d7547a6, 0x1961db9b), WTCP(0x7d6706ff, 0x19a7e94e), + WTCP(0x7d589f3a, 0x19edef00), WTCP(0x7d4a105c, 0x1a33ec9c), WTCP(0x7d3b5a69, 0x1a79e20c), + WTCP(0x7d2c7d66, 0x1abfcf39), WTCP(0x7d1d7957, 0x1b05b40e), WTCP(0x7d0e4e41, 0x1b4b9076), + WTCP(0x7cfefc29, 0x1b91645a), WTCP(0x7cef8314, 0x1bd72fa4), WTCP(0x7cdfe306, 0x1c1cf23f), + WTCP(0x7cd01c05, 0x1c62ac16), WTCP(0x7cc02e14, 0x1ca85d12), WTCP(0x7cb0193a, 0x1cee051d), + WTCP(0x7c9fdd7b, 0x1d33a422), WTCP(0x7c8f7add, 0x1d793a0b), WTCP(0x7c7ef164, 0x1dbec6c3), + WTCP(0x7c6e4115, 0x1e044a33), WTCP(0x7c5d69f6, 0x1e49c447), WTCP(0x7c4c6c0d, 0x1e8f34e8), + WTCP(0x7c3b475d, 0x1ed49c00), WTCP(0x7c29fbed, 0x1f19f97b), WTCP(0x7c1889c3, 0x1f5f4d42), + WTCP(0x7c06f0e2, 0x1fa49740), WTCP(0x7bf53152, 0x1fe9d75f), WTCP(0x7be34b17, 0x202f0d8a), + WTCP(0x7bd13e38, 0x207439aa), WTCP(0x7bbf0ab9, 0x20b95bac), WTCP(0x7bacb0a0, 0x20fe7378), + WTCP(0x7b9a2ff4, 0x214380f9), WTCP(0x7b8788b9, 0x2188841a), WTCP(0x7b74baf7, 0x21cd7cc5), + WTCP(0x7b61c6b2, 0x22126ae5), WTCP(0x7b4eabf0, 0x22574e65), WTCP(0x7b3b6ab8, 0x229c272e), + WTCP(0x7b28030f, 0x22e0f52b), WTCP(0x7b1474fc, 0x2325b847), WTCP(0x7b00c085, 0x236a706d), + WTCP(0x7aece5af, 0x23af1d86), WTCP(0x7ad8e481, 0x23f3bf7e), WTCP(0x7ac4bd02, 0x2438563f), + WTCP(0x7ab06f36, 0x247ce1b4), WTCP(0x7a9bfb26, 0x24c161c7), WTCP(0x7a8760d7, 0x2505d663), + WTCP(0x7a72a050, 0x254a3f72), WTCP(0x7a5db997, 0x258e9ce0), WTCP(0x7a48acb2, 0x25d2ee97), + WTCP(0x7a3379a8, 0x26173481), WTCP(0x7a1e2081, 0x265b6e8a), WTCP(0x7a08a141, 0x269f9c9c), + WTCP(0x79f2fbf1, 0x26e3bea1), WTCP(0x79dd3097, 0x2727d485), WTCP(0x79c73f3a, 0x276bde33), + WTCP(0x79b127e0, 0x27afdb94), WTCP(0x799aea91, 0x27f3cc94), WTCP(0x79848753, 0x2837b11e), + WTCP(0x796dfe2d, 0x287b891c), WTCP(0x79574f27, 0x28bf547a), WTCP(0x79407a47, 0x29031322), + WTCP(0x79297f95, 0x2946c4ff), WTCP(0x79125f18, 0x298a69fc), WTCP(0x78fb18d6, 0x29ce0204), + WTCP(0x78e3acd8, 0x2a118d01), WTCP(0x78cc1b25, 0x2a550adf), WTCP(0x78b463c3, 0x2a987b89), + WTCP(0x789c86bb, 0x2adbdee9), WTCP(0x78848413, 0x2b1f34eb), WTCP(0x786c5bd4, 0x2b627d79), + WTCP(0x78540e04, 0x2ba5b87f), WTCP(0x783b9aac, 0x2be8e5e8), WTCP(0x782301d2, 0x2c2c059e), + WTCP(0x780a4380, 0x2c6f178d), WTCP(0x77f15fbb, 0x2cb21ba0), WTCP(0x77d8568d, 0x2cf511c2), + WTCP(0x77bf27fd, 0x2d37f9dd), WTCP(0x77a5d413, 0x2d7ad3de), WTCP(0x778c5ad6, 0x2dbd9faf), + WTCP(0x7772bc4f, 0x2e005d3c), WTCP(0x7758f885, 0x2e430c6f), WTCP(0x773f0f81, 0x2e85ad34), + WTCP(0x7725014b, 0x2ec83f76), WTCP(0x770acdeb, 0x2f0ac320), WTCP(0x76f07569, 0x2f4d381e), + WTCP(0x76d5f7cd, 0x2f8f9e5a), WTCP(0x76bb5520, 0x2fd1f5c1), WTCP(0x76a08d6a, 0x30143e3d), + WTCP(0x7685a0b2, 0x305677ba), WTCP(0x766a8f03, 0x3098a222), WTCP(0x764f5863, 0x30dabd63), + WTCP(0x7633fcdc, 0x311cc966), WTCP(0x76187c76, 0x315ec617), WTCP(0x75fcd739, 0x31a0b362), + WTCP(0x75e10d2f, 0x31e29131), WTCP(0x75c51e60, 0x32245f72), WTCP(0x75a90ad4, 0x32661e0e), + WTCP(0x758cd295, 0x32a7ccf2), WTCP(0x757075ab, 0x32e96c09), WTCP(0x7553f41f, 0x332afb3e), + WTCP(0x75374dfa, 0x336c7a7d), WTCP(0x751a8345, 0x33ade9b2), WTCP(0x74fd9409, 0x33ef48c8), + WTCP(0x74e0804f, 0x343097ab), WTCP(0x74c3481f, 0x3471d647), WTCP(0x74a5eb84, 0x34b30487), + WTCP(0x74886a86, 0x34f42256), WTCP(0x746ac52e, 0x35352fa1), WTCP(0x744cfb86, 0x35762c53), + WTCP(0x742f0d97, 0x35b71858), WTCP(0x7410fb6a, 0x35f7f39b), WTCP(0x73f2c509, 0x3638be09), + WTCP(0x73d46a7d, 0x3679778d), WTCP(0x73b5ebd0, 0x36ba2013), WTCP(0x7397490b, 0x36fab787), + WTCP(0x73788237, 0x373b3dd5), WTCP(0x7359975f, 0x377bb2e8), WTCP(0x733a888b, 0x37bc16ad), + WTCP(0x731b55c6, 0x37fc690f), WTCP(0x72fbff1a, 0x383ca9fb), WTCP(0x72dc848f, 0x387cd95b), + WTCP(0x72bce631, 0x38bcf71d), WTCP(0x729d2408, 0x38fd032d), WTCP(0x727d3e1f, 0x393cfd75), + WTCP(0x725d347f, 0x397ce5e3), WTCP(0x723d0733, 0x39bcbc62), WTCP(0x721cb645, 0x39fc80df), + WTCP(0x71fc41be, 0x3a3c3345), WTCP(0x71dba9aa, 0x3a7bd381), WTCP(0x71baee11, 0x3abb617f), + WTCP(0x719a0eff, 0x3afadd2b), WTCP(0x71790c7d, 0x3b3a4671), WTCP(0x7157e696, 0x3b799d3e), + WTCP(0x71369d54, 0x3bb8e17d), WTCP(0x711530c1, 0x3bf8131b), WTCP(0x70f3a0e8, 0x3c373205), + WTCP(0x70d1edd4, 0x3c763e26), WTCP(0x70b0178f, 0x3cb5376b), WTCP(0x708e1e23, 0x3cf41dc0), + WTCP(0x706c019b, 0x3d32f112), WTCP(0x7049c202, 0x3d71b14d), WTCP(0x70275f63, 0x3db05e5d), + WTCP(0x7004d9c7, 0x3deef830), WTCP(0x6fe2313b, 0x3e2d7eb0), WTCP(0x6fbf65c8, 0x3e6bf1cc), + WTCP(0x6f9c7779, 0x3eaa516f), WTCP(0x6f79665a, 0x3ee89d86), WTCP(0x6f563276, 0x3f26d5fd), + WTCP(0x6f32dbd7, 0x3f64fac2), WTCP(0x6f0f6288, 0x3fa30bc0), WTCP(0x6eebc694, 0x3fe108e5), + WTCP(0x6ec80808, 0x401ef21d), WTCP(0x6ea426ed, 0x405cc754), WTCP(0x6e80234e, 0x409a8878), + WTCP(0x6e5bfd38, 0x40d83575), WTCP(0x6e37b4b6, 0x4115ce38), WTCP(0x6e1349d2, 0x415352ad), + WTCP(0x6deebc98, 0x4190c2c3), WTCP(0x6dca0d14, 0x41ce1e64), WTCP(0x6da53b50, 0x420b657f), + WTCP(0x6d804759, 0x42489800), WTCP(0x6d5b313a, 0x4285b5d4), WTCP(0x6d35f8ff, 0x42c2bee7), + WTCP(0x6d109eb2, 0x42ffb328), WTCP(0x6ceb2260, 0x433c9283), WTCP(0x6cc58415, 0x43795ce4), + WTCP(0x6c9fc3dc, 0x43b6123a), WTCP(0x6c79e1c1, 0x43f2b270), WTCP(0x6c53ddd0, 0x442f3d75), + WTCP(0x6c2db815, 0x446bb335), WTCP(0x6c07709b, 0x44a8139d), WTCP(0x6be1076e, 0x44e45e9b), + WTCP(0x6bba7c9b, 0x4520941b), WTCP(0x6b93d02d, 0x455cb40c), WTCP(0x6b6d0232, 0x4598be59), + WTCP(0x6b4612b3, 0x45d4b2f1), WTCP(0x6b1f01bf, 0x461091c1), WTCP(0x6af7cf60, 0x464c5ab6), + WTCP(0x6ad07ba4, 0x46880dbd), WTCP(0x6aa90696, 0x46c3aac5), WTCP(0x6a817043, 0x46ff31b9), + WTCP(0x6a59b8b7, 0x473aa288), WTCP(0x6a31dfff, 0x4775fd1f), WTCP(0x6a09e626, 0x47b1416c), + WTCP(0x69e1cb3a, 0x47ec6f5b), WTCP(0x69b98f47, 0x482786dc), WTCP(0x6991325a, 0x486287da), + WTCP(0x6968b47e, 0x489d7245), WTCP(0x694015c2, 0x48d84609), WTCP(0x69175630, 0x49130314), + WTCP(0x68ee75d7, 0x494da953), WTCP(0x68c574c3, 0x498838b6), WTCP(0x689c5300, 0x49c2b128), + WTCP(0x6873109c, 0x49fd1298), WTCP(0x6849ada3, 0x4a375cf4), WTCP(0x68202a22, 0x4a71902a), + WTCP(0x67f68626, 0x4aabac27), WTCP(0x67ccc1bd, 0x4ae5b0d9), WTCP(0x67a2dcf3, 0x4b1f9e2f), + WTCP(0x6778d7d5, 0x4b597416), WTCP(0x674eb270, 0x4b93327b), WTCP(0x67246cd3, 0x4bccd94e), + WTCP(0x66fa0708, 0x4c06687c), WTCP(0x66cf811f, 0x4c3fdff3), WTCP(0x66a4db24, 0x4c793fa1), + WTCP(0x667a1524, 0x4cb28775), WTCP(0x664f2f2e, 0x4cebb75c), WTCP(0x6624294d, 0x4d24cf44), + WTCP(0x65f90390, 0x4d5dcf1c), WTCP(0x65cdbe05, 0x4d96b6d3), WTCP(0x65a258b7, 0x4dcf8655), + WTCP(0x6576d3b6, 0x4e083d93), WTCP(0x654b2f0f, 0x4e40dc78), WTCP(0x651f6acf, 0x4e7962f6), + WTCP(0x64f38704, 0x4eb1d0f8), WTCP(0x64c783bc, 0x4eea266f), WTCP(0x649b6104, 0x4f226348), + WTCP(0x646f1eeb, 0x4f5a8772), WTCP(0x6442bd7d, 0x4f9292db), WTCP(0x64163cc9, 0x4fca8572), + WTCP(0x63e99cdd, 0x50025f26), WTCP(0x63bcddc6, 0x503a1fe4), WTCP(0x638fff93, 0x5071c79c), + WTCP(0x63630252, 0x50a9563d), WTCP(0x6335e610, 0x50e0cbb4), WTCP(0x6308aadc, 0x511827f0), + WTCP(0x62db50c4, 0x514f6ae1), WTCP(0x62add7d5, 0x51869476), WTCP(0x6280401f, 0x51bda49c), + WTCP(0x625289af, 0x51f49b42), WTCP(0x6224b494, 0x522b7859), WTCP(0x61f6c0dc, 0x52623bcd), + WTCP(0x61c8ae94, 0x5298e58f), WTCP(0x619a7dcd, 0x52cf758e), WTCP(0x616c2e93, 0x5305ebb8), + WTCP(0x613dc0f6, 0x533c47fc), WTCP(0x610f3504, 0x53728a49), WTCP(0x60e08acb, 0x53a8b28f), + WTCP(0x60b1c25b, 0x53dec0bc), WTCP(0x6082dbc0, 0x5414b4c0), WTCP(0x6053d70c, 0x544a8e8a), + WTCP(0x6024b44b, 0x54804e09), WTCP(0x5ff5738c, 0x54b5f32c), WTCP(0x5fc614df, 0x54eb7de2), + WTCP(0x5f969852, 0x5520ee1c), WTCP(0x5f66fdf4, 0x555643c8), WTCP(0x5f3745d4, 0x558b7ed5), + WTCP(0x5f077001, 0x55c09f33), WTCP(0x5ed77c89, 0x55f5a4d2), WTCP(0x5ea76b7c, 0x562a8fa0), + WTCP(0x5e773ce8, 0x565f5f8e), WTCP(0x5e46f0dc, 0x5694148a), WTCP(0x5e168769, 0x56c8ae85), + WTCP(0x5de6009c, 0x56fd2d6e), WTCP(0x5db55c85, 0x57319134), WTCP(0x5d849b33, 0x5765d9c8), + WTCP(0x5d53bcb5, 0x579a0719), WTCP(0x5d22c11b, 0x57ce1916), WTCP(0x5cf1a874, 0x58020fb0), + WTCP(0x5cc072ce, 0x5835ead6), WTCP(0x5c8f203a, 0x5869aa78), WTCP(0x5c5db0c7, 0x589d4e87), + WTCP(0x5c2c2484, 0x58d0d6f0), WTCP(0x5bfa7b81, 0x590443a6), WTCP(0x5bc8b5cd, 0x59379497), + WTCP(0x5b96d378, 0x596ac9b5), WTCP(0x5b64d491, 0x599de2ed), WTCP(0x5b32b928, 0x59d0e032), + WTCP(0x5b00814c, 0x5a03c172), WTCP(0x5ace2d0e, 0x5a36869f), WTCP(0x5a9bbc7c, 0x5a692fa7) +}; +#endif + +const PWord32 SineWindow960[480] = { + WTCP(0x7ffffd30, 0x001aceea), WTCP(0x7fffe6bb, 0x00506cb9), WTCP(0x7fffb9d0, 0x00860a79), + WTCP(0x7fff7670, 0x00bba822), WTCP(0x7fff1c9a, 0x00f145ab), WTCP(0x7ffeac4f, 0x0126e309), + WTCP(0x7ffe258f, 0x015c8033), WTCP(0x7ffd8859, 0x01921d20), WTCP(0x7ffcd4af, 0x01c7b9c6), + WTCP(0x7ffc0a90, 0x01fd561d), WTCP(0x7ffb29fc, 0x0232f21a), WTCP(0x7ffa32f3, 0x02688db4), + WTCP(0x7ff92576, 0x029e28e2), WTCP(0x7ff80185, 0x02d3c39b), WTCP(0x7ff6c71f, 0x03095dd5), + WTCP(0x7ff57646, 0x033ef786), WTCP(0x7ff40ef9, 0x037490a5), WTCP(0x7ff29139, 0x03aa292a), + WTCP(0x7ff0fd06, 0x03dfc109), WTCP(0x7fef525f, 0x0415583b), WTCP(0x7fed9147, 0x044aeeb5), + WTCP(0x7febb9bc, 0x0480846e), WTCP(0x7fe9cbbf, 0x04b6195d), WTCP(0x7fe7c751, 0x04ebad79), + WTCP(0x7fe5ac71, 0x052140b7), WTCP(0x7fe37b21, 0x0556d30f), WTCP(0x7fe13360, 0x058c6478), + WTCP(0x7fded52f, 0x05c1f4e7), WTCP(0x7fdc608e, 0x05f78453), WTCP(0x7fd9d57e, 0x062d12b3), + WTCP(0x7fd73400, 0x06629ffe), WTCP(0x7fd47c13, 0x06982c2b), WTCP(0x7fd1adb8, 0x06cdb72f), + WTCP(0x7fcec8f0, 0x07034101), WTCP(0x7fcbcdbb, 0x0738c998), WTCP(0x7fc8bc1a, 0x076e50eb), + WTCP(0x7fc5940d, 0x07a3d6f0), WTCP(0x7fc25595, 0x07d95b9e), WTCP(0x7fbf00b2, 0x080edeec), + WTCP(0x7fbb9566, 0x084460cf), WTCP(0x7fb813af, 0x0879e140), WTCP(0x7fb47b90, 0x08af6033), + WTCP(0x7fb0cd09, 0x08e4dda0), WTCP(0x7fad081a, 0x091a597e), WTCP(0x7fa92cc4, 0x094fd3c3), + WTCP(0x7fa53b08, 0x09854c66), WTCP(0x7fa132e7, 0x09bac35d), WTCP(0x7f9d1460, 0x09f0389f), + WTCP(0x7f98df76, 0x0a25ac22), WTCP(0x7f949428, 0x0a5b1dde), WTCP(0x7f903278, 0x0a908dc9), + WTCP(0x7f8bba65, 0x0ac5fbd9), WTCP(0x7f872bf2, 0x0afb6805), WTCP(0x7f82871e, 0x0b30d244), + WTCP(0x7f7dcbeb, 0x0b663a8c), WTCP(0x7f78fa5a, 0x0b9ba0d5), WTCP(0x7f74126a, 0x0bd10513), + WTCP(0x7f6f141e, 0x0c06673f), WTCP(0x7f69ff75, 0x0c3bc74f), WTCP(0x7f64d472, 0x0c71253a), + WTCP(0x7f5f9314, 0x0ca680f5), WTCP(0x7f5a3b5d, 0x0cdbda79), WTCP(0x7f54cd4e, 0x0d1131ba), + WTCP(0x7f4f48e7, 0x0d4686b1), WTCP(0x7f49ae29, 0x0d7bd954), WTCP(0x7f43fd17, 0x0db12998), + WTCP(0x7f3e35af, 0x0de67776), WTCP(0x7f3857f5, 0x0e1bc2e4), WTCP(0x7f3263e8, 0x0e510bd7), + WTCP(0x7f2c5989, 0x0e865248), WTCP(0x7f2638da, 0x0ebb962c), WTCP(0x7f2001dc, 0x0ef0d77b), + WTCP(0x7f19b490, 0x0f26162a), WTCP(0x7f1350f7, 0x0f5b5231), WTCP(0x7f0cd711, 0x0f908b86), + WTCP(0x7f0646e1, 0x0fc5c220), WTCP(0x7effa068, 0x0ffaf5f6), WTCP(0x7ef8e3a5, 0x103026fe), + WTCP(0x7ef2109c, 0x1065552e), WTCP(0x7eeb274c, 0x109a807e), WTCP(0x7ee427b8, 0x10cfa8e5), + WTCP(0x7edd11e0, 0x1104ce58), WTCP(0x7ed5e5c5, 0x1139f0cf), WTCP(0x7ecea36a, 0x116f1040), + WTCP(0x7ec74ace, 0x11a42ca2), WTCP(0x7ebfdbf4, 0x11d945eb), WTCP(0x7eb856dd, 0x120e5c13), + WTCP(0x7eb0bb89, 0x12436f10), WTCP(0x7ea909fb, 0x12787ed8), WTCP(0x7ea14234, 0x12ad8b63), + WTCP(0x7e996435, 0x12e294a7), WTCP(0x7e916fff, 0x13179a9a), WTCP(0x7e896594, 0x134c9d34), + WTCP(0x7e8144f5, 0x13819c6b), WTCP(0x7e790e24, 0x13b69836), WTCP(0x7e70c123, 0x13eb908c), + WTCP(0x7e685df1, 0x14208562), WTCP(0x7e5fe492, 0x145576b1), WTCP(0x7e575507, 0x148a646e), + WTCP(0x7e4eaf50, 0x14bf4e91), WTCP(0x7e45f370, 0x14f43510), WTCP(0x7e3d2168, 0x152917e1), + WTCP(0x7e34393a, 0x155df6fc), WTCP(0x7e2b3ae7, 0x1592d257), WTCP(0x7e222671, 0x15c7a9ea), + WTCP(0x7e18fbd9, 0x15fc7da9), WTCP(0x7e0fbb21, 0x16314d8e), WTCP(0x7e06644b, 0x1666198d), + WTCP(0x7dfcf758, 0x169ae19f), WTCP(0x7df3744a, 0x16cfa5b9), WTCP(0x7de9db22, 0x170465d2), + WTCP(0x7de02be3, 0x173921e2), WTCP(0x7dd6668e, 0x176dd9de), WTCP(0x7dcc8b24, 0x17a28dbe), + WTCP(0x7dc299a8, 0x17d73d79), WTCP(0x7db8921b, 0x180be904), WTCP(0x7dae747f, 0x18409058), + WTCP(0x7da440d5, 0x1875336a), WTCP(0x7d99f720, 0x18a9d231), WTCP(0x7d8f9761, 0x18de6ca5), + WTCP(0x7d85219b, 0x191302bb), WTCP(0x7d7a95ce, 0x1947946c), WTCP(0x7d6ff3fd, 0x197c21ac), + WTCP(0x7d653c2a, 0x19b0aa75), WTCP(0x7d5a6e56, 0x19e52ebb), WTCP(0x7d4f8a84, 0x1a19ae76), + WTCP(0x7d4490b5, 0x1a4e299c), WTCP(0x7d3980eb, 0x1a82a025), WTCP(0x7d2e5b29, 0x1ab71208), + WTCP(0x7d231f6f, 0x1aeb7f3a), WTCP(0x7d17cdc1, 0x1b1fe7b3), WTCP(0x7d0c6620, 0x1b544b6a), + WTCP(0x7d00e88e, 0x1b88aa55), WTCP(0x7cf5550d, 0x1bbd046c), WTCP(0x7ce9aba0, 0x1bf159a4), + WTCP(0x7cddec47, 0x1c25a9f5), WTCP(0x7cd21706, 0x1c59f557), WTCP(0x7cc62bde, 0x1c8e3bbe), + WTCP(0x7cba2ad2, 0x1cc27d23), WTCP(0x7cae13e3, 0x1cf6b97c), WTCP(0x7ca1e714, 0x1d2af0c0), + WTCP(0x7c95a466, 0x1d5f22e6), WTCP(0x7c894bdd, 0x1d934fe5), WTCP(0x7c7cdd7a, 0x1dc777b3), + WTCP(0x7c70593f, 0x1dfb9a48), WTCP(0x7c63bf2e, 0x1e2fb79a), WTCP(0x7c570f4a, 0x1e63cfa0), + WTCP(0x7c4a4995, 0x1e97e251), WTCP(0x7c3d6e12, 0x1ecbefa3), WTCP(0x7c307cc1, 0x1efff78f), + WTCP(0x7c2375a7, 0x1f33fa0a), WTCP(0x7c1658c4, 0x1f67f70b), WTCP(0x7c09261c, 0x1f9bee8a), + WTCP(0x7bfbddb0, 0x1fcfe07d), WTCP(0x7bee7f84, 0x2003ccdb), WTCP(0x7be10b98, 0x2037b39b), + WTCP(0x7bd381f0, 0x206b94b4), WTCP(0x7bc5e28f, 0x209f701c), WTCP(0x7bb82d75, 0x20d345cb), + WTCP(0x7baa62a7, 0x210715b8), WTCP(0x7b9c8225, 0x213adfda), WTCP(0x7b8e8bf4, 0x216ea426), + WTCP(0x7b808014, 0x21a26295), WTCP(0x7b725e89, 0x21d61b1d), WTCP(0x7b642755, 0x2209cdb6), + WTCP(0x7b55da7b, 0x223d7a55), WTCP(0x7b4777fd, 0x227120f3), WTCP(0x7b38ffdd, 0x22a4c185), + WTCP(0x7b2a721e, 0x22d85c03), WTCP(0x7b1bcec3, 0x230bf064), WTCP(0x7b0d15cf, 0x233f7e9f), + WTCP(0x7afe4743, 0x237306ab), WTCP(0x7aef6323, 0x23a6887e), WTCP(0x7ae06970, 0x23da0410), + WTCP(0x7ad15a2f, 0x240d7958), WTCP(0x7ac23560, 0x2440e84c), WTCP(0x7ab2fb08, 0x247450e4), + WTCP(0x7aa3ab28, 0x24a7b316), WTCP(0x7a9445c4, 0x24db0eda), WTCP(0x7a84cadd, 0x250e6427), + WTCP(0x7a753a78, 0x2541b2f3), WTCP(0x7a659495, 0x2574fb35), WTCP(0x7a55d939, 0x25a83ce5), + WTCP(0x7a460867, 0x25db77fa), WTCP(0x7a36221f, 0x260eac6a), WTCP(0x7a262667, 0x2641da2c), + WTCP(0x7a16153f, 0x26750139), WTCP(0x7a05eeac, 0x26a82185), WTCP(0x79f5b2b0, 0x26db3b0a), + WTCP(0x79e5614e, 0x270e4dbd), WTCP(0x79d4fa88, 0x27415996), WTCP(0x79c47e62, 0x27745e8b), + WTCP(0x79b3ecdf, 0x27a75c95), WTCP(0x79a34601, 0x27da53a9), WTCP(0x799289cb, 0x280d43bf), + WTCP(0x7981b841, 0x28402cce), WTCP(0x7970d164, 0x28730ecd), WTCP(0x795fd539, 0x28a5e9b3), + WTCP(0x794ec3c2, 0x28d8bd78), WTCP(0x793d9d02, 0x290b8a11), WTCP(0x792c60fd, 0x293e4f77), + WTCP(0x791b0fb4, 0x29710da1), WTCP(0x7909a92c, 0x29a3c485), WTCP(0x78f82d67, 0x29d6741a), + WTCP(0x78e69c68, 0x2a091c59), WTCP(0x78d4f633, 0x2a3bbd37), WTCP(0x78c33aca, 0x2a6e56ac), + WTCP(0x78b16a31, 0x2aa0e8af), WTCP(0x789f846a, 0x2ad37338), WTCP(0x788d897a, 0x2b05f63d), + WTCP(0x787b7963, 0x2b3871b5), WTCP(0x78695427, 0x2b6ae598), WTCP(0x785719cb, 0x2b9d51dd), + WTCP(0x7844ca52, 0x2bcfb67b), WTCP(0x783265bf, 0x2c021368), WTCP(0x781fec14, 0x2c34689e), + WTCP(0x780d5d56, 0x2c66b611), WTCP(0x77fab988, 0x2c98fbba), WTCP(0x77e800ac, 0x2ccb3990), + WTCP(0x77d532c6, 0x2cfd6f8a), WTCP(0x77c24fda, 0x2d2f9d9f), WTCP(0x77af57eb, 0x2d61c3c6), + WTCP(0x779c4afb, 0x2d93e1f7), WTCP(0x7789290f, 0x2dc5f829), WTCP(0x7775f229, 0x2df80653), + WTCP(0x7762a64e, 0x2e2a0c6b), WTCP(0x774f4580, 0x2e5c0a6b), WTCP(0x773bcfc3, 0x2e8e0047), + WTCP(0x7728451b, 0x2ebfedf9), WTCP(0x7714a58a, 0x2ef1d377), WTCP(0x7700f114, 0x2f23b0b8), + WTCP(0x76ed27bd, 0x2f5585b4), WTCP(0x76d94988, 0x2f875262), WTCP(0x76c55679, 0x2fb916b9), + WTCP(0x76b14e92, 0x2fead2b0), WTCP(0x769d31d9, 0x301c863f), WTCP(0x7689004f, 0x304e315d), + WTCP(0x7674b9f9, 0x307fd401), WTCP(0x76605eda, 0x30b16e22), WTCP(0x764beef7, 0x30e2ffb9), + WTCP(0x76376a51, 0x311488bb), WTCP(0x7622d0ee, 0x31460921), WTCP(0x760e22d0, 0x317780e2), + WTCP(0x75f95ffb, 0x31a8eff5), WTCP(0x75e48874, 0x31da5651), WTCP(0x75cf9c3c, 0x320bb3ee), + WTCP(0x75ba9b59, 0x323d08c3), WTCP(0x75a585ce, 0x326e54c7), WTCP(0x75905b9f, 0x329f97f2), + WTCP(0x757b1ccf, 0x32d0d23b), WTCP(0x7565c961, 0x3302039a), WTCP(0x7550615b, 0x33332c06), + WTCP(0x753ae4bf, 0x33644b76), WTCP(0x75255392, 0x339561e1), WTCP(0x750fadd6, 0x33c66f3f), + WTCP(0x74f9f390, 0x33f77388), WTCP(0x74e424c5, 0x34286eb3), WTCP(0x74ce4176, 0x345960b6), + WTCP(0x74b849a9, 0x348a498b), WTCP(0x74a23d61, 0x34bb2927), WTCP(0x748c1ca3, 0x34ebff83), + WTCP(0x7475e771, 0x351ccc95), WTCP(0x745f9dd0, 0x354d9056), WTCP(0x74493fc4, 0x357e4abd), + WTCP(0x7432cd51, 0x35aefbc1), WTCP(0x741c467a, 0x35dfa35a), WTCP(0x7405ab44, 0x3610417e), + WTCP(0x73eefbb2, 0x3640d627), WTCP(0x73d837c9, 0x3671614a), WTCP(0x73c15f8c, 0x36a1e2e0), + WTCP(0x73aa7300, 0x36d25ae0), WTCP(0x73937229, 0x3702c942), WTCP(0x737c5d0a, 0x37332dfc), + WTCP(0x736533a8, 0x37638907), WTCP(0x734df606, 0x3793da5a), WTCP(0x7336a42a, 0x37c421ed), + WTCP(0x731f3e16, 0x37f45fb7), WTCP(0x7307c3cf, 0x382493b0), WTCP(0x72f03559, 0x3854bdce), + WTCP(0x72d892b9, 0x3884de0b), WTCP(0x72c0dbf2, 0x38b4f45d), WTCP(0x72a91108, 0x38e500bb), + WTCP(0x72913200, 0x3915031e), WTCP(0x72793edf, 0x3944fb7d), WTCP(0x726137a7, 0x3974e9d0), + WTCP(0x72491c5d, 0x39a4ce0e), WTCP(0x7230ed06, 0x39d4a82e), WTCP(0x7218a9a6, 0x3a047829), + WTCP(0x72005241, 0x3a343df6), WTCP(0x71e7e6db, 0x3a63f98d), WTCP(0x71cf6779, 0x3a93aae5), + WTCP(0x71b6d41f, 0x3ac351f5), WTCP(0x719e2cd1, 0x3af2eeb7), WTCP(0x71857194, 0x3b228120), + WTCP(0x716ca26b, 0x3b520929), WTCP(0x7153bf5c, 0x3b8186ca), WTCP(0x713ac86a, 0x3bb0f9f9), + WTCP(0x7121bd9b, 0x3be062b0), WTCP(0x71089ef1, 0x3c0fc0e5), WTCP(0x70ef6c73, 0x3c3f1490), + WTCP(0x70d62624, 0x3c6e5da9), WTCP(0x70bccc08, 0x3c9d9c28), WTCP(0x70a35e25, 0x3cccd004), + WTCP(0x7089dc7e, 0x3cfbf935), WTCP(0x70704718, 0x3d2b17b3), WTCP(0x70569df7, 0x3d5a2b75), + WTCP(0x703ce121, 0x3d893473), WTCP(0x70231099, 0x3db832a5), WTCP(0x70092c64, 0x3de72603), + WTCP(0x6fef3487, 0x3e160e85), WTCP(0x6fd52906, 0x3e44ec22), WTCP(0x6fbb09e6, 0x3e73bed1), + WTCP(0x6fa0d72b, 0x3ea2868c), WTCP(0x6f8690da, 0x3ed14349), WTCP(0x6f6c36f7, 0x3efff500), + WTCP(0x6f51c988, 0x3f2e9baa), WTCP(0x6f374890, 0x3f5d373e), WTCP(0x6f1cb415, 0x3f8bc7b3), + WTCP(0x6f020c1b, 0x3fba4d02), WTCP(0x6ee750a7, 0x3fe8c723), WTCP(0x6ecc81bd, 0x4017360d), + WTCP(0x6eb19f63, 0x404599b8), WTCP(0x6e96a99c, 0x4073f21d), WTCP(0x6e7ba06e, 0x40a23f32), + WTCP(0x6e6083dd, 0x40d080f0), WTCP(0x6e4553ef, 0x40feb74f), WTCP(0x6e2a10a7, 0x412ce246), + WTCP(0x6e0eba0b, 0x415b01ce), WTCP(0x6df3501f, 0x418915de), WTCP(0x6dd7d2e9, 0x41b71e6e), + WTCP(0x6dbc426d, 0x41e51b77), WTCP(0x6da09eb0, 0x42130cf0), WTCP(0x6d84e7b6, 0x4240f2d1), + WTCP(0x6d691d86, 0x426ecd12), WTCP(0x6d4d4022, 0x429c9baa), WTCP(0x6d314f92, 0x42ca5e93), + WTCP(0x6d154bd8, 0x42f815c4), WTCP(0x6cf934fb, 0x4325c135), WTCP(0x6cdd0aff, 0x435360de), + WTCP(0x6cc0cde9, 0x4380f4b6), WTCP(0x6ca47dbe, 0x43ae7cb6), WTCP(0x6c881a83, 0x43dbf8d7), + WTCP(0x6c6ba43d, 0x4409690f), WTCP(0x6c4f1af2, 0x4436cd57), WTCP(0x6c327ea5, 0x446425a7), + WTCP(0x6c15cf5c, 0x449171f7), WTCP(0x6bf90d1c, 0x44beb240), WTCP(0x6bdc37eb, 0x44ebe678), + WTCP(0x6bbf4fcc, 0x45190e99), WTCP(0x6ba254c6, 0x45462a9a), WTCP(0x6b8546dd, 0x45733a73), + WTCP(0x6b682617, 0x45a03e1d), WTCP(0x6b4af278, 0x45cd358f), WTCP(0x6b2dac05, 0x45fa20c2), + WTCP(0x6b1052c5, 0x4626ffae), WTCP(0x6af2e6bb, 0x4653d24a), WTCP(0x6ad567ee, 0x46809890), + WTCP(0x6ab7d662, 0x46ad5277), WTCP(0x6a9a321c, 0x46d9fff7), WTCP(0x6a7c7b22, 0x4706a109), + WTCP(0x6a5eb179, 0x473335a5), WTCP(0x6a40d526, 0x475fbdc2), WTCP(0x6a22e62f, 0x478c3959), + WTCP(0x6a04e498, 0x47b8a863), WTCP(0x69e6d067, 0x47e50ad7), WTCP(0x69c8a9a1, 0x481160ae), + WTCP(0x69aa704b, 0x483da9e0), WTCP(0x698c246b, 0x4869e664), WTCP(0x696dc606, 0x48961634), + WTCP(0x694f5522, 0x48c23948), WTCP(0x6930d1c3, 0x48ee4f98), WTCP(0x69123bf0, 0x491a591b), + WTCP(0x68f393ad, 0x494655cb), WTCP(0x68d4d8ff, 0x497245a0), WTCP(0x68b60bed, 0x499e2892), + WTCP(0x68972c7c, 0x49c9fe99), WTCP(0x68783ab1, 0x49f5c7ad), WTCP(0x68593691, 0x4a2183c7), + WTCP(0x683a2022, 0x4a4d32e0), WTCP(0x681af769, 0x4a78d4ef), WTCP(0x67fbbc6c, 0x4aa469ed), + WTCP(0x67dc6f31, 0x4acff1d2), WTCP(0x67bd0fbc, 0x4afb6c97), WTCP(0x679d9e13, 0x4b26da34), + WTCP(0x677e1a3d, 0x4b523aa1), WTCP(0x675e843e, 0x4b7d8dd7), WTCP(0x673edc1b, 0x4ba8d3cf), + WTCP(0x671f21db, 0x4bd40c7f), WTCP(0x66ff5584, 0x4bff37e2), WTCP(0x66df7719, 0x4c2a55ef), + WTCP(0x66bf86a2, 0x4c55669f), WTCP(0x669f8424, 0x4c8069ea), WTCP(0x667f6fa4, 0x4cab5fc9), + WTCP(0x665f4928, 0x4cd64834), WTCP(0x663f10b6, 0x4d012324), WTCP(0x661ec653, 0x4d2bf090), + WTCP(0x65fe6a05, 0x4d56b073), WTCP(0x65ddfbd2, 0x4d8162c3), WTCP(0x65bd7bc0, 0x4dac077b), + WTCP(0x659ce9d3, 0x4dd69e91), WTCP(0x657c4612, 0x4e0127ff), WTCP(0x655b9083, 0x4e2ba3be), + WTCP(0x653ac92a, 0x4e5611c5), WTCP(0x6519f00f, 0x4e80720d), WTCP(0x64f90537, 0x4eaac48f), + WTCP(0x64d808a7, 0x4ed50944), WTCP(0x64b6fa65, 0x4eff4024), WTCP(0x6495da78, 0x4f296927), + WTCP(0x6474a8e5, 0x4f538447), WTCP(0x645365b1, 0x4f7d917c), WTCP(0x643210e3, 0x4fa790be), + WTCP(0x6410aa80, 0x4fd18206), WTCP(0x63ef328f, 0x4ffb654c), WTCP(0x63cda915, 0x50253a8b), + WTCP(0x63ac0e18, 0x504f01b9), WTCP(0x638a619e, 0x5078bad0), WTCP(0x6368a3ac, 0x50a265c8), + WTCP(0x6346d44a, 0x50cc029b), WTCP(0x6324f37c, 0x50f59140), WTCP(0x63030149, 0x511f11b1), + WTCP(0x62e0fdb7, 0x514883e6), WTCP(0x62bee8cb, 0x5171e7d8), WTCP(0x629cc28c, 0x519b3d80), + WTCP(0x627a8aff, 0x51c484d6), WTCP(0x6258422b, 0x51edbdd3), WTCP(0x6235e815, 0x5216e870), + WTCP(0x62137cc4, 0x524004a6), WTCP(0x61f1003e, 0x5269126e), WTCP(0x61ce7289, 0x529211c0), + WTCP(0x61abd3aa, 0x52bb0295), WTCP(0x618923a8, 0x52e3e4e5), WTCP(0x61666289, 0x530cb8ab), + WTCP(0x61439053, 0x53357dde), WTCP(0x6120ad0c, 0x535e3478), WTCP(0x60fdb8ba, 0x5386dc71), + WTCP(0x60dab364, 0x53af75c2), WTCP(0x60b79d0f, 0x53d80064), WTCP(0x609475c2, 0x54007c50), + WTCP(0x60713d83, 0x5428e97f), WTCP(0x604df458, 0x545147ea), WTCP(0x602a9a47, 0x54799789), + WTCP(0x60072f56, 0x54a1d856), WTCP(0x5fe3b38d, 0x54ca0a4a), WTCP(0x5fc026f0, 0x54f22d5d), + WTCP(0x5f9c8986, 0x551a4188), WTCP(0x5f78db55, 0x554246c5), WTCP(0x5f551c64, 0x556a3d0c), + WTCP(0x5f314cb9, 0x55922457), WTCP(0x5f0d6c5b, 0x55b9fc9d), WTCP(0x5ee97b4e, 0x55e1c5da), + WTCP(0x5ec5799b, 0x56098004), WTCP(0x5ea16746, 0x56312b16), WTCP(0x5e7d4457, 0x5658c709), + WTCP(0x5e5910d4, 0x568053d5), WTCP(0x5e34ccc3, 0x56a7d173), WTCP(0x5e10782a, 0x56cf3fdd), + WTCP(0x5dec1310, 0x56f69f0c), WTCP(0x5dc79d7b, 0x571deef9), WTCP(0x5da31772, 0x57452f9d), + WTCP(0x5d7e80fb, 0x576c60f0), WTCP(0x5d59da1d, 0x579382ed), WTCP(0x5d3522dd, 0x57ba958c), + WTCP(0x5d105b43, 0x57e198c6), WTCP(0x5ceb8355, 0x58088c96), WTCP(0x5cc69b18, 0x582f70f2), + WTCP(0x5ca1a295, 0x585645d6), WTCP(0x5c7c99d0, 0x587d0b3a), WTCP(0x5c5780d2, 0x58a3c117), + WTCP(0x5c3257a0, 0x58ca6767), WTCP(0x5c0d1e40, 0x58f0fe22), WTCP(0x5be7d4ba, 0x59178542), + WTCP(0x5bc27b13, 0x593dfcc1), WTCP(0x5b9d1153, 0x59646497), WTCP(0x5b779780, 0x598abcbe), + WTCP(0x5b520da0, 0x59b1052e), WTCP(0x5b2c73ba, 0x59d73de2), WTCP(0x5b06c9d6, 0x59fd66d3), + WTCP(0x5ae10ff8, 0x5a237ff9), WTCP(0x5abb4628, 0x5a49894f), WTCP(0x5a956c6d, 0x5a6f82cd), +}; +# endif + +// fs 48 32 24 16 8 +// ms +-------------------- +// 10.0 | 480 320 240 160 80 +// 7.5 | 360 240 180 120 60 +// 5.0 | 240 160 120 80 40 +// 2.5 | 120 80 60 40 20 + +void BASOP_getTables( +#ifdef ENABLE_HR_MODE + const PWord32 **twiddle, const PWord32 **sin, +#else + const PWord16 **twiddle, const PWord16 **sin, +#endif + Word16 *sin_step, Word16 length) +{ + SWITCH (length) + { + case 20: + *sin = SineTable320; + move16(); + *sin_step = 32; + move16(); + *twiddle = SineWindow20; + move16(); + BREAK; + case 40: + *sin = SineTable320; + move16(); + *sin_step = 16; + move16(); + *twiddle = SineWindow40; + move16(); + BREAK; + case 60: + *sin = SineTable480; + move16(); + *sin_step = 16; + move16(); + *twiddle = SineWindow60; + move16(); + BREAK; + case 80: + *sin = SineTable320; + move16(); + *sin_step = 8; + move16(); + *twiddle = SineWindow80; + move16(); + BREAK; + case 120: + *sin = SineTable480; + move16(); + *sin_step = 8; + move16(); + *twiddle = SineWindow120; + move16(); + BREAK; + case 160: + *sin = SineTable320; + move16(); + *sin_step = 4; + move16(); + *twiddle = SineWindow160; + move16(); + BREAK; + case 180: + *sin = SineTable360; + move16(); + *sin_step = 4; + move16(); + *twiddle = SineWindow180; + move16(); + BREAK; + case 240: + *sin = SineTable480; + move16(); + *sin_step = 4; + move16(); + *twiddle = SineWindow240; + move16(); + BREAK; + case 320: + *sin = SineTable320; + move16(); + *sin_step = 2; + move16(); + *twiddle = SineWindow320; + move16(); + BREAK; + case 360: + *sin = SineTable360; + move16(); + *sin_step = 2; + move16(); + *twiddle = SineWindow360; + move16(); + BREAK; + case 480: + *sin = SineTable480; + move16(); + *sin_step = 2; + move16(); + *twiddle = SineWindow480; + move16(); + BREAK; +#ifdef ENABLE_HR_MODE +# ifdef CR8_G_ADD_75MS + case 720: + *sin = SineTable720; + move16(); + *sin_step = 2; + move16(); + *twiddle = SineWindow720; + move16(); + break; +# endif + case 960: + *sin = SineTable960; + move16(); + *sin_step = 2; + move16(); + *twiddle = SineWindow960; + move16(); + break; +#endif + default: ASSERT(0); + } +} + +const Word32 RealFFT32_twid[10] = { + 0x7fffffff, 0x00000000, 0x7d8a5f40, 0x18f8b83c, 0x7641af3d, + 0x30fbc54d, 0x6a6d98a4, 0x471cece7, 0x5a82799a, 0x5a82799a, +}; + +const Word32 RealFFT40_twid[12] = { + 0x7fffffff, 0x00000000, 0x7e6c9251, 0x14060b68, 0x79bc384d, 0x278dde6e, + 0x720c8075, 0x3a1c5c57, 0x678dde6e, 0x4b3c8c12, 0x5a82799a, 0x5a82799a, +}; + +const Word32 RealFFT64_twid[18] = { + 0x7fffffff, 0x00000000, 0x7f62368f, 0x0c8bd35e, 0x7d8a5f40, 0x18f8b83c, 0x7a7d055b, 0x25280c5e, 0x7641af3d, + 0x30fbc54d, 0x70e2cbc6, 0x3c56ba70, 0x6a6d98a4, 0x471cece7, 0x62f201ac, 0x5133cc94, 0x5a82799a, 0x5a82799a, +}; + +const Word32 RealFFT80_twid[22] = { + 0x7fffffff, 0x00000000, 0x7f9afcb9, 0x0a0af299, 0x7e6c9251, 0x14060b68, 0x7c769e18, 0x1de189a6, + 0x79bc384d, 0x278dde6e, 0x7641af3d, 0x30fbc54d, 0x720c8075, 0x3a1c5c57, 0x6d23501b, 0x42e13ba4, + 0x678dde6e, 0x4b3c8c12, 0x6154fb91, 0x53211d18, 0x5a82799a, 0x5a82799a, +}; + +const Word32 RealFFT96_twid[26] = { + 0x7fffffff, 0x00000000, 0x7fb9d759, 0x085f2137, 0x7ee7aa4c, 0x10b5150f, 0x7d8a5f40, 0x18f8b83c, 0x7ba3751d, + 0x2120fb83, 0x793501a9, 0x2924edac, 0x7641af3d, 0x30fbc54d, 0x72ccb9db, 0x389cea72, 0x6ed9eba1, 0x40000000, + 0x6a6d98a4, 0x471cece7, 0x658c9a2d, 0x4debe4fe, 0x603c496c, 0x54657194, 0x5a82799a, 0x5a82799a, +}; + +const Word32 RealFFT128_twid[34] = { + 0x7fffffff, 0x00000000, 0x7fd8878e, 0x0647d97c, 0x7f62368f, 0x0c8bd35e, 0x7e9d55fc, 0x12c8106f, 0x7d8a5f40, + 0x18f8b83c, 0x7c29fbee, 0x1f19f97b, 0x7a7d055b, 0x25280c5e, 0x78848414, 0x2b1f34eb, 0x7641af3d, 0x30fbc54d, + 0x73b5ebd1, 0x36ba2014, 0x70e2cbc6, 0x3c56ba70, 0x6dca0d14, 0x41ce1e65, 0x6a6d98a4, 0x471cece7, 0x66cf8120, + 0x4c3fdff4, 0x62f201ac, 0x5133cc94, 0x5ed77c8a, 0x55f5a4d2, 0x5a82799a, 0x5a82799a, +}; + +const Word32 RealFFT192_twid[50] = { + 0x7fffffff, 0x00000000, 0x7fee74a2, 0x0430238f, 0x7fb9d759, 0x085f2137, 0x7f62368f, 0x0c8bd35e, 0x7ee7aa4c, + 0x10b5150f, 0x7e4a5426, 0x14d9c245, 0x7d8a5f40, 0x18f8b83c, 0x7ca80038, 0x1d10d5c2, 0x7ba3751d, 0x2120fb83, + 0x7a7d055b, 0x25280c5e, 0x793501a9, 0x2924edac, 0x77cbc3f2, 0x2d168792, 0x7641af3d, 0x30fbc54d, 0x74972f92, + 0x34d3957e, 0x72ccb9db, 0x389cea72, 0x70e2cbc6, 0x3c56ba70, 0x6ed9eba1, 0x40000000, 0x6cb2a837, 0x4397ba32, + 0x6a6d98a4, 0x471cece7, 0x680b5c33, 0x4a8ea111, 0x658c9a2d, 0x4debe4fe, 0x62f201ac, 0x5133cc94, 0x603c496c, + 0x54657194, 0x5d6c2f99, 0x577ff3da, 0x5a82799a, 0x5a82799a, +}; + +const Word32 RealFFT256_twid[66] = { + 0x7fffffff, 0x00000000, 0x7ff62182, 0x03242abf, 0x7fd8878e, 0x0647d97c, 0x7fa736b4, 0x096a9049, 0x7f62368f, + 0x0c8bd35e, 0x7f0991c4, 0x0fab272b, 0x7e9d55fc, 0x12c8106f, 0x7e1d93ea, 0x15e21445, 0x7d8a5f40, 0x18f8b83c, + 0x7ce3ceb2, 0x1c0b826a, 0x7c29fbee, 0x1f19f97b, 0x7b5d039e, 0x2223a4c5, 0x7a7d055b, 0x25280c5e, 0x798a23b1, + 0x2826b928, 0x78848414, 0x2b1f34eb, 0x776c4edb, 0x2e110a62, 0x7641af3d, 0x30fbc54d, 0x7504d345, 0x33def287, + 0x73b5ebd1, 0x36ba2014, 0x72552c85, 0x398cdd32, 0x70e2cbc6, 0x3c56ba70, 0x6f5f02b2, 0x3f1749b8, 0x6dca0d14, + 0x41ce1e65, 0x6c242960, 0x447acd50, 0x6a6d98a4, 0x471cece7, 0x68a69e81, 0x49b41533, 0x66cf8120, 0x4c3fdff4, + 0x64e88926, 0x4ebfe8a5, 0x62f201ac, 0x5133cc94, 0x60ec3830, 0x539b2af0, 0x5ed77c8a, 0x55f5a4d2, 0x5cb420e0, + 0x5842dd54, 0x5a82799a, 0x5a82799a, +}; + +const Word32 RealFFT384_twid[98] = { + 0x7fffffff, 0x00000000, 0x7ffb9d15, 0x02182427, 0x7fee74a2, 0x0430238f, 0x7fd8878e, 0x0647d97c, 0x7fb9d759, + 0x085f2137, 0x7f92661d, 0x0a75d60e, 0x7f62368f, 0x0c8bd35e, 0x7f294bfd, 0x0ea0f48c, 0x7ee7aa4c, 0x10b5150f, + 0x7e9d55fc, 0x12c8106f, 0x7e4a5426, 0x14d9c245, 0x7deeaa7a, 0x16ea0646, 0x7d8a5f40, 0x18f8b83c, 0x7d1d7958, + 0x1b05b40f, 0x7ca80038, 0x1d10d5c2, 0x7c29fbee, 0x1f19f97b, 0x7ba3751d, 0x2120fb83, 0x7b1474fd, 0x2325b847, + 0x7a7d055b, 0x25280c5e, 0x79dd3098, 0x2727d486, 0x793501a9, 0x2924edac, 0x78848414, 0x2b1f34eb, 0x77cbc3f2, + 0x2d168792, 0x770acdec, 0x2f0ac320, 0x7641af3d, 0x30fbc54d, 0x757075ac, 0x32e96c09, 0x74972f92, 0x34d3957e, + 0x73b5ebd1, 0x36ba2014, 0x72ccb9db, 0x389cea72, 0x71dba9ab, 0x3a7bd382, 0x70e2cbc6, 0x3c56ba70, 0x6fe2313c, + 0x3e2d7eb1, 0x6ed9eba1, 0x40000000, 0x6dca0d14, 0x41ce1e65, 0x6cb2a837, 0x4397ba32, 0x6b93d02e, 0x455cb40c, + 0x6a6d98a4, 0x471cece7, 0x694015c3, 0x48d84609, 0x680b5c33, 0x4a8ea111, 0x66cf8120, 0x4c3fdff4, 0x658c9a2d, + 0x4debe4fe, 0x6442bd7e, 0x4f9292dc, 0x62f201ac, 0x5133cc94, 0x619a7dce, 0x52cf758f, 0x603c496c, 0x54657194, + 0x5ed77c8a, 0x55f5a4d2, 0x5d6c2f99, 0x577ff3da, 0x5bfa7b82, 0x590443a7, 0x5a82799a, 0x5a82799a, +}; + +const Word32 RealFFT512_twid[130] = { + 0x7fffffff, 0x00000000, 0x7ffd885a, 0x01921d20, 0x7ff62182, 0x03242abf, 0x7fe9cbc0, 0x04b6195d, 0x7fd8878e, + 0x0647d97c, 0x7fc25596, 0x07d95b9e, 0x7fa736b4, 0x096a9049, 0x7f872bf3, 0x0afb6805, 0x7f62368f, 0x0c8bd35e, + 0x7f3857f6, 0x0e1bc2e4, 0x7f0991c4, 0x0fab272b, 0x7ed5e5c6, 0x1139f0cf, 0x7e9d55fc, 0x12c8106f, 0x7e5fe493, + 0x145576b1, 0x7e1d93ea, 0x15e21445, 0x7dd6668f, 0x176dd9de, 0x7d8a5f40, 0x18f8b83c, 0x7d3980ec, 0x1a82a026, + 0x7ce3ceb2, 0x1c0b826a, 0x7c894bde, 0x1d934fe5, 0x7c29fbee, 0x1f19f97b, 0x7bc5e290, 0x209f701c, 0x7b5d039e, + 0x2223a4c5, 0x7aef6323, 0x23a6887f, 0x7a7d055b, 0x25280c5e, 0x7a05eead, 0x26a82186, 0x798a23b1, 0x2826b928, + 0x7909a92d, 0x29a3c485, 0x78848414, 0x2b1f34eb, 0x77fab989, 0x2c98fbba, 0x776c4edb, 0x2e110a62, 0x76d94989, + 0x2f875262, 0x7641af3d, 0x30fbc54d, 0x75a585cf, 0x326e54c7, 0x7504d345, 0x33def287, 0x745f9dd1, 0x354d9057, + 0x73b5ebd1, 0x36ba2014, 0x7307c3d0, 0x382493b0, 0x72552c85, 0x398cdd32, 0x719e2cd2, 0x3af2eeb7, 0x70e2cbc6, + 0x3c56ba70, 0x7023109a, 0x3db832a6, 0x6f5f02b2, 0x3f1749b8, 0x6e96a99d, 0x4073f21d, 0x6dca0d14, 0x41ce1e65, + 0x6cf934fc, 0x4325c135, 0x6c242960, 0x447acd50, 0x6b4af279, 0x45cd358f, 0x6a6d98a4, 0x471cece7, 0x698c246c, + 0x4869e665, 0x68a69e81, 0x49b41533, 0x67bd0fbd, 0x4afb6c98, 0x66cf8120, 0x4c3fdff4, 0x65ddfbd3, 0x4d8162c4, + 0x64e88926, 0x4ebfe8a5, 0x63ef3290, 0x4ffb654d, 0x62f201ac, 0x5133cc94, 0x61f1003f, 0x5269126e, 0x60ec3830, + 0x539b2af0, 0x5fe3b38d, 0x54ca0a4b, 0x5ed77c8a, 0x55f5a4d2, 0x5dc79d7c, 0x571deefa, 0x5cb420e0, 0x5842dd54, + 0x5b9d1154, 0x59646498, 0x5a82799a, 0x5a82799a, +}; + +const Word32 RealFFT768_twid[194] = { + 0x7fffffff, 0x00000000, 0x7ffee744, 0x010c1460, 0x7ffb9d15, 0x02182427, 0x7ff62182, 0x03242abf, 0x7fee74a2, + 0x0430238f, 0x7fe49698, 0x053c0a01, 0x7fd8878e, 0x0647d97c, 0x7fca47b9, 0x07538d6b, 0x7fb9d759, 0x085f2137, + 0x7fa736b4, 0x096a9049, 0x7f92661d, 0x0a75d60e, 0x7f7b65ef, 0x0b80edf1, 0x7f62368f, 0x0c8bd35e, 0x7f46d86c, + 0x0d9681c2, 0x7f294bfd, 0x0ea0f48c, 0x7f0991c4, 0x0fab272b, 0x7ee7aa4c, 0x10b5150f, 0x7ec3962a, 0x11beb9aa, + 0x7e9d55fc, 0x12c8106f, 0x7e74ea6a, 0x13d114d0, 0x7e4a5426, 0x14d9c245, 0x7e1d93ea, 0x15e21445, 0x7deeaa7a, + 0x16ea0646, 0x7dbd98a4, 0x17f193c5, 0x7d8a5f40, 0x18f8b83c, 0x7d54ff2e, 0x19ff6f2a, 0x7d1d7958, 0x1b05b40f, + 0x7ce3ceb2, 0x1c0b826a, 0x7ca80038, 0x1d10d5c2, 0x7c6a0ef2, 0x1e15a99a, 0x7c29fbee, 0x1f19f97b, 0x7be7c847, + 0x201dc0ef, 0x7ba3751d, 0x2120fb83, 0x7b5d039e, 0x2223a4c5, 0x7b1474fd, 0x2325b847, 0x7ac9ca7a, 0x2427319d, + 0x7a7d055b, 0x25280c5e, 0x7a2e26f2, 0x26284422, 0x79dd3098, 0x2727d486, 0x798a23b1, 0x2826b928, 0x793501a9, + 0x2924edac, 0x78ddcbf5, 0x2a226db5, 0x78848414, 0x2b1f34eb, 0x78292b8d, 0x2c1b3efb, 0x77cbc3f2, 0x2d168792, + 0x776c4edb, 0x2e110a62, 0x770acdec, 0x2f0ac320, 0x76a742d1, 0x3003ad85, 0x7641af3d, 0x30fbc54d, 0x75da14ef, + 0x31f30638, 0x757075ac, 0x32e96c09, 0x7504d345, 0x33def287, 0x74972f92, 0x34d3957e, 0x74278c72, 0x35c750bc, + 0x73b5ebd1, 0x36ba2014, 0x73424fa0, 0x37abff5d, 0x72ccb9db, 0x389cea72, 0x72552c85, 0x398cdd32, 0x71dba9ab, + 0x3a7bd382, 0x71603361, 0x3b69c947, 0x70e2cbc6, 0x3c56ba70, 0x706374ff, 0x3d42a2ec, 0x6fe2313c, 0x3e2d7eb1, + 0x6f5f02b2, 0x3f1749b8, 0x6ed9eba1, 0x40000000, 0x6e52ee52, 0x40e79d8c, 0x6dca0d14, 0x41ce1e65, 0x6d3f4a40, + 0x42b37e96, 0x6cb2a837, 0x4397ba32, 0x6c242960, 0x447acd50, 0x6b93d02e, 0x455cb40c, 0x6b019f1a, 0x463d6a87, + 0x6a6d98a4, 0x471cece7, 0x69d7bf57, 0x47fb3757, 0x694015c3, 0x48d84609, 0x68a69e81, 0x49b41533, 0x680b5c33, + 0x4a8ea111, 0x676e5183, 0x4b67e5e4, 0x66cf8120, 0x4c3fdff4, 0x662eedc3, 0x4d168b8b, 0x658c9a2d, 0x4debe4fe, + 0x64e88926, 0x4ebfe8a5, 0x6442bd7e, 0x4f9292dc, 0x639b3a0b, 0x5063e008, 0x62f201ac, 0x5133cc94, 0x62471749, + 0x520254ef, 0x619a7dce, 0x52cf758f, 0x60ec3830, 0x539b2af0, 0x603c496c, 0x54657194, 0x5f8ab487, 0x552e4605, + 0x5ed77c8a, 0x55f5a4d2, 0x5e22a487, 0x56bb8a90, 0x5d6c2f99, 0x577ff3da, 0x5cb420e0, 0x5842dd54, 0x5bfa7b82, + 0x590443a7, 0x5b3f42ae, 0x59c42381, 0x5a82799a, 0x5a82799a, +}; + +const Word32 RotVector_32_32[2 * 20] = { + 0x7d8a5f00, 0xe70747c0, 0x7641b000, 0xcf043ac0, 0x6a6d9900, 0xb8e31300, 0x5a827980, 0xa57d8680, + 0x471ced80, 0x95926780, 0x30fbc600, 0x89be5100, 0x18f8b800, 0x8275a100, 0x7641b000, 0xcf043ac0, + 0x5a827980, 0xa57d8680, 0x30fbc600, 0x89be5100, 0xcf043b00, 0x89be5100, 0xa57d8680, 0xa57d8680, + 0x89be5100, 0xcf043ac0, 0x6a6d9900, 0xb8e31300, 0x30fbc600, 0x89be5100, 0xe7074800, 0x8275a100, + 0xa57d8680, 0xa57d8680, 0x8275a100, 0xe70747c0, 0x89be5000, 0x30fbc540, 0xb8e31280, 0x6a6d9880, +}; + +const Word32 RotVector_40_32[2 * 28] = { + 0x7e6c9251, 0x14060b68, 0x79bc384d, 0x278dde6e, 0x720c8075, 0x3a1c5c57, 0x678dde6e, 0x4b3c8c12, + 0x79bc384d, 0x278dde6e, 0x678dde6e, 0x4b3c8c12, 0x4b3c8c12, 0x678dde6e, 0x278dde6e, 0x79bc384d, + 0x720c8075, 0x3a1c5c57, 0x4b3c8c12, 0x678dde6e, 0x14060b68, 0x7e6c9251, 0xd8722192, 0x79bc384d, + 0x678dde6e, 0x4b3c8c12, 0x278dde6e, 0x79bc384d, 0xd8722192, 0x79bc384d, 0x98722192, 0x4b3c8c12, + 0x5a82799a, 0x5a82799a, 0x00000000, 0x7fffffff, 0xa57d8666, 0x5a82799a, 0x80000000, 0x00000000, + 0x4b3c8c12, 0x678dde6e, 0xd8722192, 0x79bc384d, 0x8643c7b3, 0x278dde6e, 0x98722192, 0xb4c373ee, + 0x3a1c5c57, 0x720c8075, 0xb4c373ee, 0x678dde6e, 0x81936daf, 0xebf9f498, 0xd8722192, 0x8643c7b3, +}; + +# ifdef ENABLE_HR_MODE +const Word32 RotVector_480[2 * (480 - 30)] = { +# else +const Word16 RotVector_480[2 * (480 - 30)] = { +# endif + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ff4c56f), SHC(0xfca63bd8), SHC(0x7fd317b4), SHC(0xf94d0e2e), + SHC(0x7f9afcb9), SHC(0xf5f50d67), SHC(0x7f4c7e54), SHC(0xf29ecfb2), SHC(0x7ee7aa4c), SHC(0xef4aeaf1), + SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7ddb4bfc), SHC(0xe8ac819d), SHC(0x7d33f0ca), SHC(0xe5632654), + SHC(0x7c769e18), SHC(0xe21e765a), SHC(0x7ba3751d), SHC(0xdedf047d), SHC(0x7aba9ae6), SHC(0xdba5629b), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x78a879f4), SHC(0xd545d11c), SHC(0x777f903c), SHC(0xd220ffc0), + SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x7387ea23), SHC(0xc8e5032b), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x707d1443), SHC(0xc2ec7635), SHC(0x6ed9eba1), SHC(0xc0000000), + SHC(0x6d23501b), SHC(0xbd1ec45c), SHC(0x6b598ea3), SHC(0xba4944a2), SHC(0x697cf78a), SHC(0xb780001c), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x658c9a2d), SHC(0xb2141b02), SHC(0x637984d4), SHC(0xaf726def), + SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x5f1f5ea1), SHC(0xaa59eda4), SHC(0x5cd91140), SHC(0xa7e3ff4d), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fd317b4), SHC(0xf94d0e2e), SHC(0x7f4c7e54), SHC(0xf29ecfb2), + SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x7ba3751d), SHC(0xdedf047d), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x777f903c), SHC(0xd220ffc0), SHC(0x74ef0ebc), SHC(0xcbf00dbe), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x6b598ea3), SHC(0xba4944a2), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x637984d4), SHC(0xaf726def), SHC(0x5f1f5ea1), SHC(0xaa59eda4), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x55a6125c), SHC(0xa0e0a15f), SHC(0x508d9211), SHC(0x9c867b2c), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x45b6bb5e), SHC(0x94a6715d), SHC(0x40000000), SHC(0x9126145f), + SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x340ff242), SHC(0x8b10f144), SHC(0x2ddf0040), SHC(0x88806fc4), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x2120fb83), SHC(0x845c8ae3), SHC(0x1a9cd9ac), SHC(0x82cc0f36), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x0d61304e), SHC(0x80b381ac), SHC(0x06b2f1d2), SHC(0x802ce84c), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f9afcb9), SHC(0xf5f50d67), SHC(0x7e6c9251), SHC(0xebf9f498), + SHC(0x7c769e18), SHC(0xe21e765a), SHC(0x79bc384d), SHC(0xd8722192), SHC(0x7641af3d), SHC(0xcf043ab3), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6d23501b), SHC(0xbd1ec45c), SHC(0x678dde6e), SHC(0xb4c373ee), + SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x53211d18), SHC(0x9eab046f), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x42e13ba4), SHC(0x92dcafe5), SHC(0x3a1c5c57), SHC(0x8df37f8b), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x1de189a6), SHC(0x838961e8), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x0a0af299), SHC(0x80650347), SHC(0x00000000), SHC(0x80000000), + SHC(0xf5f50d67), SHC(0x80650347), SHC(0xebf9f498), SHC(0x81936daf), SHC(0xe21e765a), SHC(0x838961e8), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xcf043ab3), SHC(0x89be50c3), SHC(0xc5e3a3a9), SHC(0x8df37f8b), + SHC(0xbd1ec45c), SHC(0x92dcafe5), SHC(0xb4c373ee), SHC(0x98722192), SHC(0xacdee2e8), SHC(0x9eab046f), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f4c7e54), SHC(0xf29ecfb2), SHC(0x7d33f0ca), SHC(0xe5632654), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x6ed9eba1), SHC(0xc0000000), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x5f1f5ea1), SHC(0xaa59eda4), SHC(0x55a6125c), SHC(0xa0e0a15f), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x40000000), SHC(0x9126145f), SHC(0x340ff242), SHC(0x8b10f144), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x1a9cd9ac), SHC(0x82cc0f36), SHC(0x0d61304e), SHC(0x80b381ac), + SHC(0x00000000), SHC(0x80000000), SHC(0xf29ecfb2), SHC(0x80b381ac), SHC(0xe5632654), SHC(0x82cc0f36), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xcbf00dbe), SHC(0x8b10f144), SHC(0xc0000000), SHC(0x9126145f), + SHC(0xb4c373ee), SHC(0x98722192), SHC(0xaa59eda4), SHC(0xa0e0a15f), SHC(0xa0e0a15f), SHC(0xaa59eda4), + SHC(0x98722192), SHC(0xb4c373ee), SHC(0x9126145f), SHC(0xc0000000), SHC(0x8b10f144), SHC(0xcbf00dbe), + SHC(0x8643c7b3), SHC(0xd8722192), SHC(0x82cc0f36), SHC(0xe5632654), SHC(0x80b381ac), SHC(0xf29ecfb2), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ee7aa4c), SHC(0xef4aeaf1), SHC(0x7ba3751d), SHC(0xdedf047d), + SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x658c9a2d), SHC(0xb2141b02), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x4debe4fe), SHC(0x9a7365d3), SHC(0x40000000), SHC(0x9126145f), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x2120fb83), SHC(0x845c8ae3), SHC(0x10b5150f), SHC(0x811855b4), + SHC(0x00000000), SHC(0x80000000), SHC(0xef4aeaf1), SHC(0x811855b4), SHC(0xdedf047d), SHC(0x845c8ae3), + SHC(0xcf043ab3), SHC(0x89be50c3), SHC(0xc0000000), SHC(0x9126145f), SHC(0xb2141b02), SHC(0x9a7365d3), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x9a7365d3), SHC(0xb2141b02), SHC(0x9126145f), SHC(0xc0000000), + SHC(0x89be50c3), SHC(0xcf043ab3), SHC(0x845c8ae3), SHC(0xdedf047d), SHC(0x811855b4), SHC(0xef4aeaf1), + SHC(0x80000000), SHC(0x00000000), SHC(0x811855b4), SHC(0x10b5150f), SHC(0x845c8ae3), SHC(0x2120fb83), + SHC(0x89be50c3), SHC(0x30fbc54d), SHC(0x9126145f), SHC(0x40000000), SHC(0x9a7365d3), SHC(0x4debe4fe), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x79bc384d), SHC(0xd8722192), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x5a82799a), SHC(0xa57d8666), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x278dde6e), SHC(0x8643c7b3), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x00000000), SHC(0x80000000), SHC(0xebf9f498), SHC(0x81936daf), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xc5e3a3a9), SHC(0x8df37f8b), SHC(0xb4c373ee), SHC(0x98722192), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x98722192), SHC(0xb4c373ee), SHC(0x8df37f8b), SHC(0xc5e3a3a9), + SHC(0x8643c7b3), SHC(0xd8722192), SHC(0x81936daf), SHC(0xebf9f498), SHC(0x80000000), SHC(0x00000000), + SHC(0x81936daf), SHC(0x14060b68), SHC(0x8643c7b3), SHC(0x278dde6e), SHC(0x8df37f8b), SHC(0x3a1c5c57), + SHC(0x98722192), SHC(0x4b3c8c12), SHC(0xa57d8666), SHC(0x5a82799a), SHC(0xb4c373ee), SHC(0x678dde6e), + SHC(0xc5e3a3a9), SHC(0x720c8075), SHC(0xd8722192), SHC(0x79bc384d), SHC(0xebf9f498), SHC(0x7e6c9251), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ddb4bfc), SHC(0xe8ac819d), SHC(0x777f903c), SHC(0xd220ffc0), + SHC(0x6d23501b), SHC(0xbd1ec45c), SHC(0x5f1f5ea1), SHC(0xaa59eda4), SHC(0x4debe4fe), SHC(0x9a7365d3), + SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x245a9d65), SHC(0x8545651a), SHC(0x0d61304e), SHC(0x80b381ac), + SHC(0xf5f50d67), SHC(0x80650347), SHC(0xdedf047d), SHC(0x845c8ae3), SHC(0xc8e5032b), SHC(0x8c7815dd), + SHC(0xb4c373ee), SHC(0x98722192), SHC(0xa326eec0), SHC(0xa7e3ff4d), SHC(0x94a6715d), SHC(0xba4944a2), + SHC(0x89be50c3), SHC(0xcf043ab3), SHC(0x82cc0f36), SHC(0xe5632654), SHC(0x800b3a91), SHC(0xfca63bd8), + SHC(0x81936daf), SHC(0x14060b68), SHC(0x8757860c), SHC(0x2aba2ee4), SHC(0x9126145f), SHC(0x40000000), + SHC(0x9eab046f), SHC(0x53211d18), SHC(0xaf726def), SHC(0x637984d4), SHC(0xc2ec7635), SHC(0x707d1443), + SHC(0xd8722192), SHC(0x79bc384d), SHC(0xef4aeaf1), SHC(0x7ee7aa4c), SHC(0x06b2f1d2), SHC(0x7fd317b4), + SHC(0x1de189a6), SHC(0x7c769e18), SHC(0x340ff242), SHC(0x74ef0ebc), SHC(0x487fffe4), SHC(0x697cf78a), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ffd3154), SHC(0xfe531484), SHC(0x7ff4c56f), SHC(0xfca63bd8), + SHC(0x7fe6bcb0), SHC(0xfaf988cc), SHC(0x7fd317b4), SHC(0xf94d0e2e), SHC(0x7fb9d759), SHC(0xf7a0dec9), + SHC(0x7f9afcb9), SHC(0xf5f50d67), SHC(0x7f76892f), SHC(0xf449acca), SHC(0x7f4c7e54), SHC(0xf29ecfb2), + SHC(0x7f1cde01), SHC(0xf0f488d9), SHC(0x7ee7aa4c), SHC(0xef4aeaf1), SHC(0x7eace58a), SHC(0xeda208a5), + SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7e26b371), SHC(0xea52c166), SHC(0x7ddb4bfc), SHC(0xe8ac819d), + SHC(0x7d8a5f40), SHC(0xe70747c4), SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x7cd80464), SHC(0xe3c02fbb), + SHC(0x7c769e18), SHC(0xe21e765a), SHC(0x7c0fc22a), SHC(0xe07e0c84), SHC(0x7ba3751d), SHC(0xdedf047d), + SHC(0x7b31bbb2), SHC(0xdd417079), SHC(0x7aba9ae6), SHC(0xdba5629b), SHC(0x7a3e17f2), SHC(0xda0aecf9), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x793501a9), SHC(0xd6db1254), SHC(0x78a879f4), SHC(0xd545d11c), + SHC(0x7816a759), SHC(0xd3b26fb0), SHC(0x777f903c), SHC(0xd220ffc0), SHC(0x76e33b3f), SHC(0xd09192ea), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fe6bcb0), SHC(0xfaf988cc), SHC(0x7f9afcb9), SHC(0xf5f50d67), + SHC(0x7f1cde01), SHC(0xf0f488d9), SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7d8a5f40), SHC(0xe70747c4), + SHC(0x7c769e18), SHC(0xe21e765a), SHC(0x7b31bbb2), SHC(0xdd417079), SHC(0x79bc384d), SHC(0xd8722192), + SHC(0x7816a759), SHC(0xd3b26fb0), SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x743e0918), SHC(0xca695b94), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6fadf2fc), SHC(0xc174dbf2), SHC(0x6d23501b), SHC(0xbd1ec45c), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x648543e4), SHC(0xb0c1878b), + SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x5dfe47ad), SHC(0xa91d0ea3), SHC(0x5a82799a), SHC(0xa57d8666), + SHC(0x56e2f15d), SHC(0xa201b853), SHC(0x53211d18), SHC(0x9eab046f), SHC(0x4f3e7875), SHC(0x9b7abc1c), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x471cece7), SHC(0x9592675c), SHC(0x42e13ba4), SHC(0x92dcafe5), + SHC(0x3e8b240e), SHC(0x90520d04), SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x3596a46c), SHC(0x8bc1f6e8), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fb9d759), SHC(0xf7a0dec9), SHC(0x7ee7aa4c), SHC(0xef4aeaf1), + SHC(0x7d8a5f40), SHC(0xe70747c4), SHC(0x7ba3751d), SHC(0xdedf047d), SHC(0x793501a9), SHC(0xd6db1254), + SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x72ccb9db), SHC(0xc763158e), SHC(0x6ed9eba1), SHC(0xc0000000), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x658c9a2d), SHC(0xb2141b02), SHC(0x603c496c), SHC(0xab9a8e6c), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x54657194), SHC(0x9fc3b694), SHC(0x4debe4fe), SHC(0x9a7365d3), + SHC(0x471cece7), SHC(0x9592675c), SHC(0x40000000), SHC(0x9126145f), SHC(0x389cea72), SHC(0x8d334625), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x2924edac), SHC(0x86cafe57), SHC(0x2120fb83), SHC(0x845c8ae3), + SHC(0x18f8b83c), SHC(0x8275a0c0), SHC(0x10b5150f), SHC(0x811855b4), SHC(0x085f2137), SHC(0x804628a7), + SHC(0x00000000), SHC(0x80000000), SHC(0xf7a0dec9), SHC(0x804628a7), SHC(0xef4aeaf1), SHC(0x811855b4), + SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xdedf047d), SHC(0x845c8ae3), SHC(0xd6db1254), SHC(0x86cafe57), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f76892f), SHC(0xf449acca), SHC(0x7ddb4bfc), SHC(0xe8ac819d), + SHC(0x7b31bbb2), SHC(0xdd417079), SHC(0x777f903c), SHC(0xd220ffc0), SHC(0x72ccb9db), SHC(0xc763158e), + SHC(0x6d23501b), SHC(0xbd1ec45c), SHC(0x668f7c25), SHC(0xb36a1978), SHC(0x5f1f5ea1), SHC(0xaa59eda4), + SHC(0x56e2f15d), SHC(0xa201b853), SHC(0x4debe4fe), SHC(0x9a7365d3), SHC(0x444d7aff), SHC(0x93bf30d4), + SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x2f6e6d16), SHC(0x891cc4c1), SHC(0x245a9d65), SHC(0x8545651a), + SHC(0x18f8b83c), SHC(0x8275a0c0), SHC(0x0d61304e), SHC(0x80b381ac), SHC(0x01aceb7c), SHC(0x8002ceac), + SHC(0xf5f50d67), SHC(0x80650347), SHC(0xea52c166), SHC(0x81d94c8f), SHC(0xdedf047d), SHC(0x845c8ae3), + SHC(0xd3b26fb0), SHC(0x87e958a7), SHC(0xc8e5032b), SHC(0x8c7815dd), SHC(0xbe8df2ba), SHC(0x91fef880), + SHC(0xb4c373ee), SHC(0x98722192), SHC(0xab9a8e6c), SHC(0x9fc3b694), SHC(0xa326eec0), SHC(0xa7e3ff4d), + SHC(0x9b7abc1c), SHC(0xb0c1878b), SHC(0x94a6715d), SHC(0xba4944a2), SHC(0x8eb8b9a0), SHC(0xc466be4f), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f1cde01), SHC(0xf0f488d9), SHC(0x7c769e18), SHC(0xe21e765a), + SHC(0x7816a759), SHC(0xd3b26fb0), SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6a6d98a4), SHC(0xb8e31319), + SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x56e2f15d), SHC(0xa201b853), SHC(0x4b3c8c12), SHC(0x98722192), + SHC(0x3e8b240e), SHC(0x90520d04), SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x22be8f87), SHC(0x84ce444e), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x05067734), SHC(0x80194350), SHC(0xf5f50d67), SHC(0x80650347), + SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xca695b94), SHC(0x8bc1f6e8), + SHC(0xbd1ec45c), SHC(0x92dcafe5), SHC(0xb0c1878b), SHC(0x9b7abc1c), SHC(0xa57d8666), SHC(0xa57d8666), + SHC(0x9b7abc1c), SHC(0xb0c1878b), SHC(0x92dcafe5), SHC(0xbd1ec45c), SHC(0x8bc1f6e8), SHC(0xca695b94), + SHC(0x8643c7b3), SHC(0xd8722192), SHC(0x8275a0c0), SHC(0xe70747c4), SHC(0x80650347), SHC(0xf5f50d67), + SHC(0x80194350), SHC(0x05067734), SHC(0x81936daf), SHC(0x14060b68), SHC(0x84ce444e), SHC(0x22be8f87), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7eace58a), SHC(0xeda208a5), SHC(0x7aba9ae6), SHC(0xdba5629b), + SHC(0x743e0918), SHC(0xca695b94), SHC(0x6b598ea3), SHC(0xba4944a2), SHC(0x603c496c), SHC(0xab9a8e6c), + SHC(0x53211d18), SHC(0x9eab046f), SHC(0x444d7aff), SHC(0x93bf30d4), SHC(0x340ff242), SHC(0x8b10f144), + SHC(0x22be8f87), SHC(0x84ce444e), SHC(0x10b5150f), SHC(0x811855b4), SHC(0xfe531484), SHC(0x8002ceac), + SHC(0xebf9f498), SHC(0x81936daf), SHC(0xda0aecf9), SHC(0x85c1e80e), SHC(0xc8e5032b), SHC(0x8c7815dd), + SHC(0xb8e31319), SHC(0x9592675c), SHC(0xaa59eda4), SHC(0xa0e0a15f), SHC(0x9d969742), SHC(0xae26dcdf), + SHC(0x92dcafe5), SHC(0xbd1ec45c), SHC(0x8a650cb4), SHC(0xcd790887), SHC(0x845c8ae3), SHC(0xdedf047d), + SHC(0x80e321ff), SHC(0xf0f488d9), SHC(0x800b3a91), SHC(0x0359c428), SHC(0x81d94c8f), SHC(0x15ad3e9a), + SHC(0x8643c7b3), SHC(0x278dde6e), SHC(0x8d334625), SHC(0x389cea72), SHC(0x96830876), SHC(0x487fffe4), + SHC(0xa201b853), SHC(0x56e2f15d), SHC(0xaf726def), SHC(0x637984d4), SHC(0xbe8df2ba), SHC(0x6e010780), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7e26b371), SHC(0xea52c166), SHC(0x78a879f4), SHC(0xd545d11c), + SHC(0x6fadf2fc), SHC(0xc174dbf2), SHC(0x637984d4), SHC(0xaf726def), SHC(0x54657194), SHC(0x9fc3b694), + SHC(0x42e13ba4), SHC(0x92dcafe5), SHC(0x2f6e6d16), SHC(0x891cc4c1), SHC(0x1a9cd9ac), SHC(0x82cc0f36), + SHC(0x05067734), SHC(0x80194350), SHC(0xef4aeaf1), SHC(0x811855b4), SHC(0xda0aecf9), SHC(0x85c1e80e), + SHC(0xc5e3a3a9), SHC(0x8df37f8b), SHC(0xb36a1978), SHC(0x997083db), SHC(0xa326eec0), SHC(0xa7e3ff4d), + SHC(0x9592675c), SHC(0xb8e31319), SHC(0x8b10f144), SHC(0xcbf00dbe), SHC(0x83f03dd6), SHC(0xe07e0c84), + SHC(0x80650347), SHC(0xf5f50d67), SHC(0x808976d1), SHC(0x0bb65336), SHC(0x845c8ae3), SHC(0x2120fb83), + SHC(0x8bc1f6e8), SHC(0x3596a46c), SHC(0x96830876), SHC(0x487fffe4), SHC(0xa45037c9), SHC(0x595132a2), + SHC(0xb4c373ee), SHC(0x678dde6e), SHC(0xc763158e), SHC(0x72ccb9db), SHC(0xdba5629b), SHC(0x7aba9ae6), + SHC(0xf0f488d9), SHC(0x7f1cde01), SHC(0x06b2f1d2), SHC(0x7fd317b4), SHC(0x1c3fd045), SHC(0x7cd80464), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7d8a5f40), SHC(0xe70747c4), SHC(0x7641af3d), SHC(0xcf043ab3), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x471cece7), SHC(0x9592675c), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x18f8b83c), SHC(0x8275a0c0), SHC(0x00000000), SHC(0x80000000), + SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xcf043ab3), SHC(0x89be50c3), SHC(0xb8e31319), SHC(0x9592675c), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x9592675c), SHC(0xb8e31319), SHC(0x89be50c3), SHC(0xcf043ab3), + SHC(0x8275a0c0), SHC(0xe70747c4), SHC(0x80000000), SHC(0x00000000), SHC(0x8275a0c0), SHC(0x18f8b83c), + SHC(0x89be50c3), SHC(0x30fbc54d), SHC(0x9592675c), SHC(0x471cece7), SHC(0xa57d8666), SHC(0x5a82799a), + SHC(0xb8e31319), SHC(0x6a6d98a4), SHC(0xcf043ab3), SHC(0x7641af3d), SHC(0xe70747c4), SHC(0x7d8a5f40), + SHC(0x00000000), SHC(0x7fffffff), SHC(0x18f8b83c), SHC(0x7d8a5f40), SHC(0x30fbc54d), SHC(0x7641af3d), + SHC(0x471cece7), SHC(0x6a6d98a4), SHC(0x5a82799a), SHC(0x5a82799a), SHC(0x6a6d98a4), SHC(0x471cece7)}; + +# ifdef ENABLE_HR_MODE +#ifdef CR8_G_ADD_75MS +const Word32 RotVector_720[2 * (720 - 30)] = { + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ffb0260), SHC(0xfdc41e9b), SHC(0x7fec09e3), SHC(0xfb8869ce), + SHC(0x7fd317b4), SHC(0xf94d0e2e), SHC(0x7fb02dc6), SHC(0xf7123849), SHC(0x7f834ed0), SHC(0xf4d814a4), + SHC(0x7f4c7e54), SHC(0xf29ecfb2), SHC(0x7f0bc097), SHC(0xf06695da), SHC(0x7ec11aa5), SHC(0xee2f9369), + SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7e0e2e32), SHC(0xe9c5e582), SHC(0x7da5f5a5), SHC(0xe7939223), + SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x7cb82885), SHC(0xe334cdc9), SHC(0x7c32a67e), SHC(0xe108b40d), + SHC(0x7ba3751d), SHC(0xdedf047d), SHC(0x7b0a9f8d), SHC(0xdcb7ea46), SHC(0x7a6831ba), SHC(0xda939061), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x7906c0b0), SHC(0xd653c860), SHC(0x7847d909), SHC(0xd438af17), + SHC(0x777f903c), SHC(0xd220ffc0), SHC(0x76adf5e6), SHC(0xd00ce422), SHC(0x75d31a61), SHC(0xcdfc85bb), + SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x7401e4c1), SHC(0xc9e7a512), SHC(0x730baeed), SHC(0xc7e3744b), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x71046d3e), SHC(0xc3e85b18), SHC(0x6ff389df), SHC(0xc1f1c224), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fec09e3), SHC(0xfb8869ce), SHC(0x7fb02dc6), SHC(0xf7123849), + SHC(0x7f4c7e54), SHC(0xf29ecfb2), SHC(0x7ec11aa5), SHC(0xee2f9369), SHC(0x7e0e2e32), SHC(0xe9c5e582), + SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x7c32a67e), SHC(0xe108b40d), SHC(0x7b0a9f8d), SHC(0xdcb7ea46), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x7847d909), SHC(0xd438af17), SHC(0x76adf5e6), SHC(0xd00ce422), + SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x730baeed), SHC(0xc7e3744b), SHC(0x71046d3e), SHC(0xc3e85b18), + SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x6c8cd70b), SHC(0xbc2b9b05), SHC(0x6a1de737), SHC(0xb86c5df0), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x64dd8950), SHC(0xb1320139), SHC(0x620dbe8b), SHC(0xadb922b7), + SHC(0x5f1f5ea1), SHC(0xaa59eda4), SHC(0x5c13539b), SHC(0xa7156f3c), SHC(0x58ea90c4), SHC(0xa3ecac65), + SHC(0x55a6125c), SHC(0xa0e0a15f), SHC(0x5246dd49), SHC(0x9df24175), SHC(0x4ecdfec7), SHC(0x9b2276b0), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x4793a210), SHC(0x95e218c9), SHC(0x43d464fb), SHC(0x937328f5), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fd317b4), SHC(0xf94d0e2e), SHC(0x7f4c7e54), SHC(0xf29ecfb2), + SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x7ba3751d), SHC(0xdedf047d), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x777f903c), SHC(0xd220ffc0), SHC(0x74ef0ebc), SHC(0xcbf00dbe), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x6b598ea3), SHC(0xba4944a2), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x637984d4), SHC(0xaf726def), SHC(0x5f1f5ea1), SHC(0xaa59eda4), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x55a6125c), SHC(0xa0e0a15f), SHC(0x508d9211), SHC(0x9c867b2c), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x45b6bb5e), SHC(0x94a6715d), SHC(0x40000000), SHC(0x9126145f), + SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x340ff242), SHC(0x8b10f144), SHC(0x2ddf0040), SHC(0x88806fc4), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x2120fb83), SHC(0x845c8ae3), SHC(0x1a9cd9ac), SHC(0x82cc0f36), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x0d61304e), SHC(0x80b381ac), SHC(0x06b2f1d2), SHC(0x802ce84c), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fb02dc6), SHC(0xf7123849), SHC(0x7ec11aa5), SHC(0xee2f9369), + SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x7b0a9f8d), SHC(0xdcb7ea46), SHC(0x7847d909), SHC(0xd438af17), + SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x71046d3e), SHC(0xc3e85b18), SHC(0x6c8cd70b), SHC(0xbc2b9b05), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x620dbe8b), SHC(0xadb922b7), SHC(0x5c13539b), SHC(0xa7156f3c), + SHC(0x55a6125c), SHC(0xa0e0a15f), SHC(0x4ecdfec7), SHC(0x9b2276b0), SHC(0x4793a210), SHC(0x95e218c9), + SHC(0x40000000), SHC(0x9126145f), SHC(0x381c8bb5), SHC(0x8cf45113), SHC(0x2ff31bde), SHC(0x89520a1a), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x1ef74bf3), SHC(0x83cd5982), SHC(0x163a1a7e), SHC(0x81f1d1ce), + SHC(0x0d61304e), SHC(0x80b381ac), SHC(0x04779632), SHC(0x8013f61d), SHC(0xfb8869ce), SHC(0x8013f61d), + SHC(0xf29ecfb2), SHC(0x80b381ac), SHC(0xe9c5e582), SHC(0x81f1d1ce), SHC(0xe108b40d), SHC(0x83cd5982), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xd00ce422), SHC(0x89520a1a), SHC(0xc7e3744b), SHC(0x8cf45113), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f834ed0), SHC(0xf4d814a4), SHC(0x7e0e2e32), SHC(0xe9c5e582), + SHC(0x7ba3751d), SHC(0xdedf047d), SHC(0x7847d909), SHC(0xd438af17), SHC(0x7401e4c1), SHC(0xc9e7a512), + SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x68d9f964), SHC(0xb6950c1e), SHC(0x620dbe8b), SHC(0xadb922b7), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x5246dd49), SHC(0x9df24175), SHC(0x496af3e2), SHC(0x9726069c), + SHC(0x40000000), SHC(0x9126145f), SHC(0x36185aee), SHC(0x8bfe1b3f), SHC(0x2bc750e9), SHC(0x87b826f7), + SHC(0x2120fb83), SHC(0x845c8ae3), SHC(0x163a1a7e), SHC(0x81f1d1ce), SHC(0x0b27eb5c), SHC(0x807cb130), + SHC(0x00000000), SHC(0x80000000), SHC(0xf4d814a4), SHC(0x807cb130), SHC(0xe9c5e582), SHC(0x81f1d1ce), + SHC(0xdedf047d), SHC(0x845c8ae3), SHC(0xd438af17), SHC(0x87b826f7), SHC(0xc9e7a512), SHC(0x8bfe1b3f), + SHC(0xc0000000), SHC(0x9126145f), SHC(0xb6950c1e), SHC(0x9726069c), SHC(0xadb922b7), SHC(0x9df24175), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x9df24175), SHC(0xadb922b7), SHC(0x9726069c), SHC(0xb6950c1e), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f4c7e54), SHC(0xf29ecfb2), SHC(0x7d33f0ca), SHC(0xe5632654), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x6ed9eba1), SHC(0xc0000000), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x5f1f5ea1), SHC(0xaa59eda4), SHC(0x55a6125c), SHC(0xa0e0a15f), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x40000000), SHC(0x9126145f), SHC(0x340ff242), SHC(0x8b10f144), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x1a9cd9ac), SHC(0x82cc0f36), SHC(0x0d61304e), SHC(0x80b381ac), + SHC(0x00000000), SHC(0x80000000), SHC(0xf29ecfb2), SHC(0x80b381ac), SHC(0xe5632654), SHC(0x82cc0f36), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xcbf00dbe), SHC(0x8b10f144), SHC(0xc0000000), SHC(0x9126145f), + SHC(0xb4c373ee), SHC(0x98722192), SHC(0xaa59eda4), SHC(0xa0e0a15f), SHC(0xa0e0a15f), SHC(0xaa59eda4), + SHC(0x98722192), SHC(0xb4c373ee), SHC(0x9126145f), SHC(0xc0000000), SHC(0x8b10f144), SHC(0xcbf00dbe), + SHC(0x8643c7b3), SHC(0xd8722192), SHC(0x82cc0f36), SHC(0xe5632654), SHC(0x80b381ac), SHC(0xf29ecfb2), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f0bc097), SHC(0xf06695da), SHC(0x7c32a67e), SHC(0xe108b40d), + SHC(0x777f903c), SHC(0xd220ffc0), SHC(0x71046d3e), SHC(0xc3e85b18), SHC(0x68d9f964), SHC(0xb6950c1e), + SHC(0x5f1f5ea1), SHC(0xaa59eda4), SHC(0x53f9be05), SHC(0x9f65ad2d), SHC(0x4793a210), SHC(0x95e218c9), + SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x2bc750e9), SHC(0x87b826f7), SHC(0x1ccb3237), SHC(0x8347d77b), + SHC(0x0d61304e), SHC(0x80b381ac), SHC(0xfdc41e9b), SHC(0x8004fda0), SHC(0xee2f9369), SHC(0x813ee55b), + SHC(0xdedf047d), SHC(0x845c8ae3), SHC(0xd00ce422), SHC(0x89520a1a), SHC(0xc1f1c224), SHC(0x900c7621), + SHC(0xb4c373ee), SHC(0x98722192), SHC(0xa8b4471a), SHC(0xa263007d), SHC(0x9df24175), SHC(0xadb922b7), + SHC(0x94a6715d), SHC(0xba4944a2), SHC(0x8cf45113), SHC(0xc7e3744b), SHC(0x86f93f50), SHC(0xd653c860), + SHC(0x82cc0f36), SHC(0xe5632654), SHC(0x807cb130), SHC(0xf4d814a4), SHC(0x8013f61d), SHC(0x04779632), + SHC(0x81936daf), SHC(0x14060b68), SHC(0x84f56073), SHC(0x234815ba), SHC(0x8a2ce59f), SHC(0x32037a45), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ec11aa5), SHC(0xee2f9369), SHC(0x7b0a9f8d), SHC(0xdcb7ea46), + SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x6c8cd70b), SHC(0xbc2b9b05), SHC(0x620dbe8b), SHC(0xadb922b7), + SHC(0x55a6125c), SHC(0xa0e0a15f), SHC(0x4793a210), SHC(0x95e218c9), SHC(0x381c8bb5), SHC(0x8cf45113), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x163a1a7e), SHC(0x81f1d1ce), SHC(0x04779632), SHC(0x8013f61d), + SHC(0xf29ecfb2), SHC(0x80b381ac), SHC(0xe108b40d), SHC(0x83cd5982), SHC(0xd00ce422), SHC(0x89520a1a), + SHC(0xc0000000), SHC(0x9126145f), SHC(0xb1320139), SHC(0x9b2276b0), SHC(0xa3ecac65), SHC(0xa7156f3c), + SHC(0x98722192), SHC(0xb4c373ee), SHC(0x8efb92c2), SHC(0xc3e85b18), SHC(0x87b826f7), SHC(0xd438af17), + SHC(0x82cc0f36), SHC(0xe5632654), SHC(0x804fd23a), SHC(0xf7123849), SHC(0x804fd23a), SHC(0x08edc7b7), + SHC(0x82cc0f36), SHC(0x1a9cd9ac), SHC(0x87b826f7), SHC(0x2bc750e9), SHC(0x8efb92c2), SHC(0x3c17a4e8), + SHC(0x98722192), SHC(0x4b3c8c12), SHC(0xa3ecac65), SHC(0x58ea90c4), SHC(0xb1320139), SHC(0x64dd8950), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x79bc384d), SHC(0xd8722192), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x5a82799a), SHC(0xa57d8666), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x278dde6e), SHC(0x8643c7b3), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x00000000), SHC(0x80000000), SHC(0xebf9f498), SHC(0x81936daf), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xc5e3a3a9), SHC(0x8df37f8b), SHC(0xb4c373ee), SHC(0x98722192), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x98722192), SHC(0xb4c373ee), SHC(0x8df37f8b), SHC(0xc5e3a3a9), + SHC(0x8643c7b3), SHC(0xd8722192), SHC(0x81936daf), SHC(0xebf9f498), SHC(0x80000000), SHC(0x00000000), + SHC(0x81936daf), SHC(0x14060b68), SHC(0x8643c7b3), SHC(0x278dde6e), SHC(0x8df37f8b), SHC(0x3a1c5c57), + SHC(0x98722192), SHC(0x4b3c8c12), SHC(0xa57d8666), SHC(0x5a82799a), SHC(0xb4c373ee), SHC(0x678dde6e), + SHC(0xc5e3a3a9), SHC(0x720c8075), SHC(0xd8722192), SHC(0x79bc384d), SHC(0xebf9f498), SHC(0x7e6c9251), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7e0e2e32), SHC(0xe9c5e582), SHC(0x7847d909), SHC(0xd438af17), + SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x620dbe8b), SHC(0xadb922b7), SHC(0x5246dd49), SHC(0x9df24175), + SHC(0x40000000), SHC(0x9126145f), SHC(0x2bc750e9), SHC(0x87b826f7), SHC(0x163a1a7e), SHC(0x81f1d1ce), + SHC(0x00000000), SHC(0x80000000), SHC(0xe9c5e582), SHC(0x81f1d1ce), SHC(0xd438af17), SHC(0x87b826f7), + SHC(0xc0000000), SHC(0x9126145f), SHC(0xadb922b7), SHC(0x9df24175), SHC(0x9df24175), SHC(0xadb922b7), + SHC(0x9126145f), SHC(0xc0000000), SHC(0x87b826f7), SHC(0xd438af17), SHC(0x81f1d1ce), SHC(0xe9c5e582), + SHC(0x80000000), SHC(0x00000000), SHC(0x81f1d1ce), SHC(0x163a1a7e), SHC(0x87b826f7), SHC(0x2bc750e9), + SHC(0x9126145f), SHC(0x40000000), SHC(0x9df24175), SHC(0x5246dd49), SHC(0xadb922b7), SHC(0x620dbe8b), + SHC(0xc0000000), SHC(0x6ed9eba1), SHC(0xd438af17), SHC(0x7847d909), SHC(0xe9c5e582), SHC(0x7e0e2e32), + SHC(0x00000000), SHC(0x7fffffff), SHC(0x163a1a7e), SHC(0x7e0e2e32), SHC(0x2bc750e9), SHC(0x7847d909), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7da5f5a5), SHC(0xe7939223), SHC(0x76adf5e6), SHC(0xd00ce422), + SHC(0x6b598ea3), SHC(0xba4944a2), SHC(0x5c13539b), SHC(0xa7156f3c), SHC(0x496af3e2), SHC(0x9726069c), + SHC(0x340ff242), SHC(0x8b10f144), SHC(0x1ccb3237), SHC(0x8347d77b), SHC(0x04779632), SHC(0x8013f61d), + SHC(0xebf9f498), SHC(0x81936daf), SHC(0xd438af17), SHC(0x87b826f7), SHC(0xbe133b7c), SHC(0x92485786), + SHC(0xaa59eda4), SHC(0xa0e0a15f), SHC(0x99c64fc5), SHC(0xb2f7b9af), SHC(0x8cf45113), SHC(0xc7e3744b), + SHC(0x845c8ae3), SHC(0xdedf047d), SHC(0x804fd23a), SHC(0xf7123849), SHC(0x80f43f69), SHC(0x0f996a26), + SHC(0x8643c7b3), SHC(0x278dde6e), SHC(0x900c7621), SHC(0x3e0e3ddc), SHC(0x9df24175), SHC(0x5246dd49), + SHC(0xaf726def), SHC(0x637984d4), SHC(0xc3e85b18), SHC(0x71046d3e), SHC(0xda939061), SHC(0x7a6831ba), + SHC(0xf29ecfb2), SHC(0x7f4c7e54), SHC(0x0b27eb5c), SHC(0x7f834ed0), SHC(0x234815ba), SHC(0x7b0a9f8d), + SHC(0x3a1c5c57), SHC(0x720c8075), SHC(0x4ecdfec7), SHC(0x64dd8950), SHC(0x609a52d3), SHC(0x53f9be05), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f1cde01), SHC(0xf0f488d9), SHC(0x7c769e18), SHC(0xe21e765a), + SHC(0x7816a759), SHC(0xd3b26fb0), SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6a6d98a4), SHC(0xb8e31319), + SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x56e2f15d), SHC(0xa201b853), SHC(0x4b3c8c12), SHC(0x98722192), + SHC(0x3e8b240e), SHC(0x90520d04), SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x22be8f87), SHC(0x84ce444e), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x05067734), SHC(0x80194350), SHC(0xf5f50d67), SHC(0x80650347), + SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xca695b94), SHC(0x8bc1f6e8), + SHC(0xbd1ec45c), SHC(0x92dcafe5), SHC(0xb0c1878b), SHC(0x9b7abc1c), SHC(0xa57d8666), SHC(0xa57d8666), + SHC(0x9b7abc1c), SHC(0xb0c1878b), SHC(0x92dcafe5), SHC(0xbd1ec45c), SHC(0x8bc1f6e8), SHC(0xca695b94), + SHC(0x8643c7b3), SHC(0xd8722192), SHC(0x8275a0c0), SHC(0xe70747c4), SHC(0x80650347), SHC(0xf5f50d67), + SHC(0x80194350), SHC(0x05067734), SHC(0x81936daf), SHC(0x14060b68), SHC(0x84ce444e), SHC(0x22be8f87), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7eace58a), SHC(0xeda208a5), SHC(0x7aba9ae6), SHC(0xdba5629b), + SHC(0x743e0918), SHC(0xca695b94), SHC(0x6b598ea3), SHC(0xba4944a2), SHC(0x603c496c), SHC(0xab9a8e6c), + SHC(0x53211d18), SHC(0x9eab046f), SHC(0x444d7aff), SHC(0x93bf30d4), SHC(0x340ff242), SHC(0x8b10f144), + SHC(0x22be8f87), SHC(0x84ce444e), SHC(0x10b5150f), SHC(0x811855b4), SHC(0xfe531484), SHC(0x8002ceac), + SHC(0xebf9f498), SHC(0x81936daf), SHC(0xda0aecf9), SHC(0x85c1e80e), SHC(0xc8e5032b), SHC(0x8c7815dd), + SHC(0xb8e31319), SHC(0x9592675c), SHC(0xaa59eda4), SHC(0xa0e0a15f), SHC(0x9d969742), SHC(0xae26dcdf), + SHC(0x92dcafe5), SHC(0xbd1ec45c), SHC(0x8a650cb4), SHC(0xcd790887), SHC(0x845c8ae3), SHC(0xdedf047d), + SHC(0x80e321ff), SHC(0xf0f488d9), SHC(0x800b3a91), SHC(0x0359c428), SHC(0x81d94c8f), SHC(0x15ad3e9a), + SHC(0x8643c7b3), SHC(0x278dde6e), SHC(0x8d334625), SHC(0x389cea72), SHC(0x96830876), SHC(0x487fffe4), + SHC(0xa201b853), SHC(0x56e2f15d), SHC(0xaf726def), SHC(0x637984d4), SHC(0xbe8df2ba), SHC(0x6e010780), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7e26b371), SHC(0xea52c166), SHC(0x78a879f4), SHC(0xd545d11c), + SHC(0x6fadf2fc), SHC(0xc174dbf2), SHC(0x637984d4), SHC(0xaf726def), SHC(0x54657194), SHC(0x9fc3b694), + SHC(0x42e13ba4), SHC(0x92dcafe5), SHC(0x2f6e6d16), SHC(0x891cc4c1), SHC(0x1a9cd9ac), SHC(0x82cc0f36), + SHC(0x05067734), SHC(0x80194350), SHC(0xef4aeaf1), SHC(0x811855b4), SHC(0xda0aecf9), SHC(0x85c1e80e), + SHC(0xc5e3a3a9), SHC(0x8df37f8b), SHC(0xb36a1978), SHC(0x997083db), SHC(0xa326eec0), SHC(0xa7e3ff4d), + SHC(0x9592675c), SHC(0xb8e31319), SHC(0x8b10f144), SHC(0xcbf00dbe), SHC(0x83f03dd6), SHC(0xe07e0c84), + SHC(0x80650347), SHC(0xf5f50d67), SHC(0x808976d1), SHC(0x0bb65336), SHC(0x845c8ae3), SHC(0x2120fb83), + SHC(0x8bc1f6e8), SHC(0x3596a46c), SHC(0x96830876), SHC(0x487fffe4), SHC(0xa45037c9), SHC(0x595132a2), + SHC(0xb4c373ee), SHC(0x678dde6e), SHC(0xc763158e), SHC(0x72ccb9db), SHC(0xdba5629b), SHC(0x7aba9ae6), + SHC(0xf0f488d9), SHC(0x7f1cde01), SHC(0x06b2f1d2), SHC(0x7fd317b4), SHC(0x1c3fd045), SHC(0x7cd80464), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7d8a5f40), SHC(0xe70747c4), SHC(0x7641af3d), SHC(0xcf043ab3), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x471cece7), SHC(0x9592675c), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x18f8b83c), SHC(0x8275a0c0), SHC(0x00000000), SHC(0x80000000), + SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xcf043ab3), SHC(0x89be50c3), SHC(0xb8e31319), SHC(0x9592675c), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x9592675c), SHC(0xb8e31319), SHC(0x89be50c3), SHC(0xcf043ab3), + SHC(0x8275a0c0), SHC(0xe70747c4), SHC(0x80000000), SHC(0x00000000), SHC(0x8275a0c0), SHC(0x18f8b83c), + SHC(0x89be50c3), SHC(0x30fbc54d), SHC(0x9592675c), SHC(0x471cece7), SHC(0xa57d8666), SHC(0x5a82799a), + SHC(0xb8e31319), SHC(0x6a6d98a4), SHC(0xcf043ab3), SHC(0x7641af3d), SHC(0xe70747c4), SHC(0x7d8a5f40), + SHC(0x00000000), SHC(0x7fffffff), SHC(0x18f8b83c), SHC(0x7d8a5f40), SHC(0x30fbc54d), SHC(0x7641af3d), + SHC(0x471cece7), SHC(0x6a6d98a4), SHC(0x5a82799a), SHC(0x5a82799a), SHC(0x6a6d98a4), SHC(0x471cece7), + SHC(0x00007fff), SHC(0x00007fff), SHC(0x00007fff), SHC(0x00007fff), SHC(0x00007fff), SHC(0x00007fff), + SHC(0x00007fff), SHC(0x00007fff), SHC(0x00007fff), SHC(0x00007fff), SHC(0x00007fff), SHC(0x00007fff), + SHC(0x00007fff), SHC(0x00007fff), SHC(0x00007fff), SHC(0x00007fff), SHC(0xfb887fec), SHC(0xf7127fb0), + SHC(0xf29f7f4c), SHC(0xee307ec1), SHC(0xe9c67e0e), SHC(0xe5637d34), SHC(0xe1097c33), SHC(0xdcb87b0b), + SHC(0xd87279bc), SHC(0xd4397848), SHC(0xd00d76ae), SHC(0xcbf074ef), SHC(0xc7e3730c), SHC(0xc3e87104), + SHC(0x00007fff), SHC(0xf7127fb0), SHC(0xee307ec1), SHC(0xe5637d34), SHC(0xdcb87b0b), SHC(0xd4397848), + SHC(0xcbf074ef), SHC(0xc3e87104), SHC(0xbc2c6c8d), SHC(0xb4c3678e), SHC(0xadb9620e), SHC(0xa7155c13), + SHC(0xa0e155a6), SHC(0x9b224ece), SHC(0x95e24794), SHC(0x00007fff), SHC(0xf29f7f4c), SHC(0xe5637d34), + SHC(0xd87279bc), SHC(0xcbf074ef), SHC(0xc0006eda), SHC(0xb4c3678e), SHC(0xaa5a5f1f), SHC(0xa0e155a6), + SHC(0x98724b3d), SHC(0x91264000), SHC(0x8b113410), SHC(0x8644278e), SHC(0x82cc1a9d), SHC(0x80b40d61), + SHC(0x00007fff), SHC(0xee307ec1), SHC(0xdcb87b0b), SHC(0xcbf074ef), SHC(0xbc2c6c8d), SHC(0xadb9620e), + SHC(0xa0e155a6), SHC(0x95e24794), SHC(0x8cf4381d), SHC(0x8644278e), SHC(0x81f2163a), SHC(0x80140478), + SHC(0x80b4f29f), SHC(0x83cde109), SHC(0x8952d00d), SHC(0x00007fff), SHC(0xe9c67e0e), SHC(0xd4397848), + SHC(0xc0006eda), SHC(0xadb9620e), SHC(0x9df25247), SHC(0x91264000), SHC(0x87b82bc7), SHC(0x81f2163a), + SHC(0x80000000), SHC(0x81f2e9c6), SHC(0x87b8d439), SHC(0x9126c000), SHC(0x9df2adb9), SHC(0xadb99df2), + SHC(0x00007fff), SHC(0xe5637d34), SHC(0xcbf074ef), SHC(0xb4c3678e), SHC(0xa0e155a6), SHC(0x91264000), + SHC(0x8644278e), SHC(0x80b40d61), SHC(0x80b4f29f), SHC(0x8644d872), SHC(0x9126c000), SHC(0xa0e1aa5a), + SHC(0xb4c39872), SHC(0xcbf08b11), SHC(0xe56382cc), SHC(0x00007fff), SHC(0xe1097c33), SHC(0xc3e87104), + SHC(0xaa5a5f1f), SHC(0x95e24794), SHC(0x87b82bc7), SHC(0x80b40d61), SHC(0x813fee30), SHC(0x8952d00d), + SHC(0x9872b4c3), SHC(0xadb99df2), SHC(0xc7e38cf4), SHC(0xe56382cc), SHC(0x04788014), SHC(0x234884f5), + SHC(0x00007fff), SHC(0xdcb87b0b), SHC(0xbc2c6c8d), SHC(0xa0e155a6), SHC(0x8cf4381d), SHC(0x81f2163a), + SHC(0x80b4f29f), SHC(0x8952d00d), SHC(0x9b22b132), SHC(0xb4c39872), SHC(0xd43987b8), SHC(0xf7128050), + SHC(0x1a9d82cc), SHC(0x3c188efc), SHC(0x58eba3ed), SHC(0x00007fff), SHC(0xd87279bc), SHC(0xb4c3678e), + SHC(0x98724b3d), SHC(0x8644278e), SHC(0x80000000), SHC(0x8644d872), SHC(0x9872b4c3), SHC(0xb4c39872), + SHC(0xd8728644), SHC(0x00008000), SHC(0x278e8644), SHC(0x4b3d9872), SHC(0x678eb4c3), SHC(0x79bcd872), + SHC(0x00007fff), SHC(0xd4397848), SHC(0xadb9620e), SHC(0x91264000), SHC(0x81f2163a), SHC(0x81f2e9c6), + SHC(0x9126c000), SHC(0xadb99df2), SHC(0xd43987b8), SHC(0x00008000), SHC(0x2bc787b8), SHC(0x52479df2), + SHC(0x6edac000), SHC(0x7e0ee9c6), SHC(0x7e0e163a), SHC(0x00007fff), SHC(0xd00d76ae), SHC(0xa7155c13), + SHC(0x8b113410), SHC(0x80140478), SHC(0x87b8d439), SHC(0xa0e1aa5a), SHC(0xc7e38cf4), SHC(0xf7128050), + SHC(0x278e8644), SHC(0x52479df2), SHC(0x7104c3e8), SHC(0x7f4cf29f), SHC(0x7b0b2348), SHC(0x64de4ece), + SHC(0x00007fff), SHC(0xe21e7c77), SHC(0xc5e4720d), SHC(0xacdf6155), SHC(0x98724b3d), SHC(0x89be30fc), + SHC(0x81931406), SHC(0x8065f5f5), SHC(0x8644d872), SHC(0x92ddbd1f), SHC(0xa57ea57e), SHC(0xbd1f92dd), + SHC(0xd8728644), SHC(0xf5f58065), SHC(0x14068193), SHC(0x00007fff), SHC(0xdba57abb), SHC(0xba496b5a), + SHC(0x9eab5321), SHC(0x8b113410), SHC(0x811810b5), SHC(0x8193ebfa), SHC(0x8c78c8e5), SHC(0xa0e1aa5a), + SHC(0xbd1f92dd), SHC(0xdedf845d), SHC(0x035a800b), SHC(0x278e8644), SHC(0x48809683), SHC(0x637aaf72), + SHC(0x00007fff), SHC(0xd54678a8), SHC(0xaf72637a), SHC(0x92dd42e1), SHC(0x82cc1a9d), SHC(0x8118ef4b), + SHC(0x8df3c5e4), SHC(0xa7e4a327), SHC(0xcbf08b11), SHC(0xf5f58065), SHC(0x2121845d), SHC(0x48809683), + SHC(0x678eb4c3), SHC(0x7abbdba5), SHC(0x7fd306b3), SHC(0x00007fff), SHC(0xcf047642), SHC(0xa57e5a82), + SHC(0x89be30fc), SHC(0x80000000), SHC(0x89becf04), SHC(0xa57ea57e), SHC(0xcf0489be), SHC(0x00008000), + SHC(0x30fc89be), SHC(0x5a82a57e), SHC(0x7642cf04), SHC(0x7fff0000), SHC(0x764230fc), SHC(0x5a825a82), + SHC(0xe2e1004b), SHC(0x00000000), SHC(0x00000000), SHC(0x6fb076e0), SHC(0x002fba9c), SHC(0x6fb079d0), + SHC(0x8d92be50), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), + SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0xffffffff), + SHC(0x00010000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), + SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0xffffffff), SHC(0x00010000), SHC(0x00000000), + SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0xeabee318), SHC(0x00000000), SHC(0x4d55545a), + SHC(0000000000), SHC(0000000000), SHC(0x00000000), SHC(0x00000000), SHC(0xffffffff), SHC(0x904f882f), + SHC(0x4d55545a), SHC(0x00000000), SHC(0x00000000), SHC(0x006f5dd8), SHC(0x40000000), SHC(0x00666004), + SHC(0x006ec0b0), SHC(0x00660000), SHC(0x006f5dd8), SHC(0x42000000), SHC(0x00665fa0), SHC(0x006ec080), + SHC(0x6fb07880), SHC(0x00660000), SHC(0x00660000), SHC(0x00309ca0), SHC(0x00000000), SHC(0x00000000), + SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), + SHC(0xffffffff), SHC(0x00010000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), + SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x0d888000), SHC(0x00000000), + SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), + SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), SHC(0x00000000), + SHC(0x00000170), SHC(0x00000000), SHC(0x00000000), SHC(0x6fb07880), SHC(0x6fb078a8), SHC(0x8d926000), + SHC(0x0d888000), SHC(0x8d888000), SHC(0x6fb079e0), SHC(0x00000000), SHC(0000000000), SHC(0x002f8000), + SHC(0x00000001), SHC(0x6fb07b40), SHC(0x00000000), SHC(0x6fb07b54), SHC(0x6fb07b70), SHC(0x6fb07b80), + SHC(0x6fb07b94), SHC(0x6fb07bcd), SHC(0x6fb07be6), SHC(0x6fb07c0e), SHC(0x6fb07c43), SHC(0x6fb07c4d), + SHC(0x6fb07c8f), SHC(0x6fb07d49), SHC(0x6fb07d71), SHC(0x6fb07d9e), SHC(0x6fb07daf), SHC(0x6fb07dbd), + SHC(0x6fb07dcc), SHC(0x6fb07ddf), SHC(0x6fb07de7), SHC(0x6fb07df8), SHC(0x6fb07e05), SHC(0x6fb07e45), + SHC(0x00000000), SHC(0x6fb07b18), SHC(0x6fb07e60), SHC(0x6fb07e70), SHC(0x6fb07e8f), SHC(0x6fb07ec4), + SHC(0x6fb07ee1), SHC(0x6fb07f17), SHC(0x6fb07f3e), SHC(0x6fb07f67), SHC(0x6fb07fa2), SHC(0x6fb07fdf), + SHC(0x6fb07fed), SHC(0x00000000), SHC(0x63657865), SHC(0x705f656c), SHC(0x65672f2e), SHC(0x6f526574), + SHC(0x00726f74), SHC(0x65672f2e), SHC(0x6f526574), SHC(0x00726f74), SHC(0x4f52505f), SHC(0x7070413d), + SHC(0x696d7265), SHC(0x4c454853), SHC(0x622f6e69), SHC(0x4d524554), SHC(0x322d6d72), SHC(0x00726f6c), + SHC(0x2f3d5249), SHC(0x646c6f66), SHC(0x6e2f3238), SHC(0x36737636), SHC(0x78663431), SHC(0x3031785f), + SHC(0x2f542f33), SHC(0x52505f4d), SHC(0x45565f4d), SHC(0x34343d4e), SHC(0x44575044), SHC(0x2f737265), + SHC(0x636f442f), SHC(0x6c2f7374), SHC(0x65747361), SHC(0x535f4d52), SHC(0x495f4e4f), SHC(0x34323939), + SHC(0x2d364133), SHC(0x4345382d), SHC(0x43344233), SHC(0x55003845), SHC(0x6d676c73), SHC(0x5455415f), + SHC(0x2f3d4b43), SHC(0x2f657461), SHC(0x2e6d6f63), SHC(0x616c2e65), SHC(0x64722e64), SHC(0x4b776b7a), + SHC(0x656e6574), SHC(0x3d485441), SHC(0x6d6f682f), SHC(0x69622f77), SHC(0x6c2f7273), SHC(0x6e69622f), + SHC(0x69622f72), SHC(0x2f3a6e69), SHC(0x6e696273), SHC(0x2f3a6e69), SHC(0x656d6f68), SHC(0x6e69622f), + SHC(0x31582f74), SHC(0x4c2f3a6e), SHC(0x412f7972), SHC(0x7273752f), SHC(0x70412f3a), SHC(0x6f697461), + SHC(0x61757369), SHC(0x6f696475), SHC(0x70612e65), SHC(0x6e65746e), SHC(0x756f7365), SHC(0x7070612f), + SHC(0x435f5f00), SHC(0x49656c64), SHC(0x65696669), SHC(0x70612e6d), SHC(0x6d726554), SHC(0x44575000), + SHC(0x2f737265), SHC(0x636f442f), SHC(0x6c2f7374), SHC(0x65747361), SHC(0x74706972), SHC(0x643d474e), + SHC(0x4654552e), SHC(0x465f4350), SHC(0x3078303d), SHC(0x40755c3d), SHC(0x00202477), SHC(0x56524553), + SHC(0x454d414e), SHC(0x4c564c48), SHC(0x3d454d4f), SHC(0x732f7372), SHC(0x4e474f4c), SHC(0x6d676c73), + SHC(0x59414c50), SHC(0x74617669), SHC(0x6f632f70), SHC(0x2e656c70), SHC(0x2e646863), SHC(0x53386438) + }; +#endif +const Word32 RotVector_960[2 * (480 - 60)] = { + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ffd3154), SHC(0xfe531484), SHC(0x7ff4c56f), SHC(0xfca63bd8), + SHC(0x7fe6bcb0), SHC(0xfaf988cc), SHC(0x7fd317b4), SHC(0xf94d0e2e), SHC(0x7fb9d759), SHC(0xf7a0dec9), + SHC(0x7f9afcb9), SHC(0xf5f50d67), SHC(0x7f76892f), SHC(0xf449acca), SHC(0x7f4c7e54), SHC(0xf29ecfb2), + SHC(0x7f1cde01), SHC(0xf0f488d9), SHC(0x7ee7aa4c), SHC(0xef4aeaf1), SHC(0x7eace58a), SHC(0xeda208a5), + SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7e26b371), SHC(0xea52c166), SHC(0x7ddb4bfc), SHC(0xe8ac819d), + SHC(0x7d8a5f40), SHC(0xe70747c4), SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x7cd80464), SHC(0xe3c02fbb), + SHC(0x7c769e18), SHC(0xe21e765a), SHC(0x7c0fc22a), SHC(0xe07e0c84), SHC(0x7ba3751d), SHC(0xdedf047d), + SHC(0x7b31bbb2), SHC(0xdd417079), SHC(0x7aba9ae6), SHC(0xdba5629b), SHC(0x7a3e17f2), SHC(0xda0aecf9), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x793501a9), SHC(0xd6db1254), SHC(0x78a879f4), SHC(0xd545d11c), + SHC(0x7816a759), SHC(0xd3b26fb0), SHC(0x777f903c), SHC(0xd220ffc0), SHC(0x76e33b3f), SHC(0xd09192ea), + SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x759af34c), SHC(0xcd790887), SHC(0x74ef0ebc), SHC(0xcbf00dbe), + SHC(0x743e0918), SHC(0xca695b94), SHC(0x7387ea23), SHC(0xc8e5032b), SHC(0x72ccb9db), SHC(0xc763158e), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x71474660), SHC(0xc466be4f), SHC(0x707d1443), SHC(0xc2ec7635), + SHC(0x6fadf2fc), SHC(0xc174dbf2), SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x6e010780), SHC(0xbe8df2ba), + SHC(0x6d23501b), SHC(0xbd1ec45c), SHC(0x6c40cf2c), SHC(0xbbb28501), SHC(0x6b598ea3), SHC(0xba4944a2), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x697cf78a), SHC(0xb780001c), SHC(0x6887b5e2), SHC(0xb6201b3e), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x668f7c25), SHC(0xb36a1978), SHC(0x658c9a2d), SHC(0xb2141b02), + SHC(0x648543e4), SHC(0xb0c1878b), SHC(0x637984d4), SHC(0xaf726def), SHC(0x626968be), SHC(0xae26dcdf), + SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x603c496c), SHC(0xab9a8e6c), SHC(0x5f1f5ea1), SHC(0xaa59eda4), + SHC(0x5dfe47ad), SHC(0xa91d0ea3), SHC(0x5cd91140), SHC(0xa7e3ff4d), SHC(0x5bafc837), SHC(0xa6aecd5e), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ff4c56f), SHC(0xfca63bd8), SHC(0x7fd317b4), SHC(0xf94d0e2e), + SHC(0x7f9afcb9), SHC(0xf5f50d67), SHC(0x7f4c7e54), SHC(0xf29ecfb2), SHC(0x7ee7aa4c), SHC(0xef4aeaf1), + SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7ddb4bfc), SHC(0xe8ac819d), SHC(0x7d33f0ca), SHC(0xe5632654), + SHC(0x7c769e18), SHC(0xe21e765a), SHC(0x7ba3751d), SHC(0xdedf047d), SHC(0x7aba9ae6), SHC(0xdba5629b), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x78a879f4), SHC(0xd545d11c), SHC(0x777f903c), SHC(0xd220ffc0), + SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x7387ea23), SHC(0xc8e5032b), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x707d1443), SHC(0xc2ec7635), SHC(0x6ed9eba1), SHC(0xc0000000), + SHC(0x6d23501b), SHC(0xbd1ec45c), SHC(0x6b598ea3), SHC(0xba4944a2), SHC(0x697cf78a), SHC(0xb780001c), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x658c9a2d), SHC(0xb2141b02), SHC(0x637984d4), SHC(0xaf726def), + SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x5f1f5ea1), SHC(0xaa59eda4), SHC(0x5cd91140), SHC(0xa7e3ff4d), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x581c00b3), SHC(0xa326eec0), SHC(0x55a6125c), SHC(0xa0e0a15f), + SHC(0x53211d18), SHC(0x9eab046f), SHC(0x508d9211), SHC(0x9c867b2c), SHC(0x4debe4fe), SHC(0x9a7365d3), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x487fffe4), SHC(0x96830876), SHC(0x45b6bb5e), SHC(0x94a6715d), + SHC(0x42e13ba4), SHC(0x92dcafe5), SHC(0x40000000), SHC(0x9126145f), SHC(0x3d1389cb), SHC(0x8f82ebbd), + SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x371afcd5), SHC(0x8c7815dd), SHC(0x340ff242), SHC(0x8b10f144), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x2ddf0040), SHC(0x88806fc4), SHC(0x2aba2ee4), SHC(0x8757860c), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x245a9d65), SHC(0x8545651a), SHC(0x2120fb83), SHC(0x845c8ae3), + SHC(0x1de189a6), SHC(0x838961e8), SHC(0x1a9cd9ac), SHC(0x82cc0f36), SHC(0x17537e63), SHC(0x8224b404), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x10b5150f), SHC(0x811855b4), SHC(0x0d61304e), SHC(0x80b381ac), + SHC(0x0a0af299), SHC(0x80650347), SHC(0x06b2f1d2), SHC(0x802ce84c), SHC(0x0359c428), SHC(0x800b3a91), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fe6bcb0), SHC(0xfaf988cc), SHC(0x7f9afcb9), SHC(0xf5f50d67), + SHC(0x7f1cde01), SHC(0xf0f488d9), SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7d8a5f40), SHC(0xe70747c4), + SHC(0x7c769e18), SHC(0xe21e765a), SHC(0x7b31bbb2), SHC(0xdd417079), SHC(0x79bc384d), SHC(0xd8722192), + SHC(0x7816a759), SHC(0xd3b26fb0), SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x743e0918), SHC(0xca695b94), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6fadf2fc), SHC(0xc174dbf2), SHC(0x6d23501b), SHC(0xbd1ec45c), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x648543e4), SHC(0xb0c1878b), + SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x5dfe47ad), SHC(0xa91d0ea3), SHC(0x5a82799a), SHC(0xa57d8666), + SHC(0x56e2f15d), SHC(0xa201b853), SHC(0x53211d18), SHC(0x9eab046f), SHC(0x4f3e7875), SHC(0x9b7abc1c), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x471cece7), SHC(0x9592675c), SHC(0x42e13ba4), SHC(0x92dcafe5), + SHC(0x3e8b240e), SHC(0x90520d04), SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x3596a46c), SHC(0x8bc1f6e8), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x2c4d9050), SHC(0x87e958a7), SHC(0x278dde6e), SHC(0x8643c7b3), + SHC(0x22be8f87), SHC(0x84ce444e), SHC(0x1de189a6), SHC(0x838961e8), SHC(0x18f8b83c), SHC(0x8275a0c0), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x0f0b7727), SHC(0x80e321ff), SHC(0x0a0af299), SHC(0x80650347), + SHC(0x05067734), SHC(0x80194350), SHC(0x00000000), SHC(0x80000000), SHC(0xfaf988cc), SHC(0x80194350), + SHC(0xf5f50d67), SHC(0x80650347), SHC(0xf0f488d9), SHC(0x80e321ff), SHC(0xebf9f498), SHC(0x81936daf), + SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xe21e765a), SHC(0x838961e8), SHC(0xdd417079), SHC(0x84ce444e), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xd3b26fb0), SHC(0x87e958a7), SHC(0xcf043ab3), SHC(0x89be50c3), + SHC(0xca695b94), SHC(0x8bc1f6e8), SHC(0xc5e3a3a9), SHC(0x8df37f8b), SHC(0xc174dbf2), SHC(0x90520d04), + SHC(0xbd1ec45c), SHC(0x92dcafe5), SHC(0xb8e31319), SHC(0x9592675c), SHC(0xb4c373ee), SHC(0x98722192), + SHC(0xb0c1878b), SHC(0x9b7abc1c), SHC(0xacdee2e8), SHC(0x9eab046f), SHC(0xa91d0ea3), SHC(0xa201b853), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fd317b4), SHC(0xf94d0e2e), SHC(0x7f4c7e54), SHC(0xf29ecfb2), + SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x7ba3751d), SHC(0xdedf047d), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x777f903c), SHC(0xd220ffc0), SHC(0x74ef0ebc), SHC(0xcbf00dbe), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x6b598ea3), SHC(0xba4944a2), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x637984d4), SHC(0xaf726def), SHC(0x5f1f5ea1), SHC(0xaa59eda4), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x55a6125c), SHC(0xa0e0a15f), SHC(0x508d9211), SHC(0x9c867b2c), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x45b6bb5e), SHC(0x94a6715d), SHC(0x40000000), SHC(0x9126145f), + SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x340ff242), SHC(0x8b10f144), SHC(0x2ddf0040), SHC(0x88806fc4), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x2120fb83), SHC(0x845c8ae3), SHC(0x1a9cd9ac), SHC(0x82cc0f36), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x0d61304e), SHC(0x80b381ac), SHC(0x06b2f1d2), SHC(0x802ce84c), + SHC(0x00000000), SHC(0x80000000), SHC(0xf94d0e2e), SHC(0x802ce84c), SHC(0xf29ecfb2), SHC(0x80b381ac), + SHC(0xebf9f498), SHC(0x81936daf), SHC(0xe5632654), SHC(0x82cc0f36), SHC(0xdedf047d), SHC(0x845c8ae3), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xd220ffc0), SHC(0x88806fc4), SHC(0xcbf00dbe), SHC(0x8b10f144), + SHC(0xc5e3a3a9), SHC(0x8df37f8b), SHC(0xc0000000), SHC(0x9126145f), SHC(0xba4944a2), SHC(0x94a6715d), + SHC(0xb4c373ee), SHC(0x98722192), SHC(0xaf726def), SHC(0x9c867b2c), SHC(0xaa59eda4), SHC(0xa0e0a15f), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0xa0e0a15f), SHC(0xaa59eda4), SHC(0x9c867b2c), SHC(0xaf726def), + SHC(0x98722192), SHC(0xb4c373ee), SHC(0x94a6715d), SHC(0xba4944a2), SHC(0x9126145f), SHC(0xc0000000), + SHC(0x8df37f8b), SHC(0xc5e3a3a9), SHC(0x8b10f144), SHC(0xcbf00dbe), SHC(0x88806fc4), SHC(0xd220ffc0), + SHC(0x8643c7b3), SHC(0xd8722192), SHC(0x845c8ae3), SHC(0xdedf047d), SHC(0x82cc0f36), SHC(0xe5632654), + SHC(0x81936daf), SHC(0xebf9f498), SHC(0x80b381ac), SHC(0xf29ecfb2), SHC(0x802ce84c), SHC(0xf94d0e2e), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fb9d759), SHC(0xf7a0dec9), SHC(0x7ee7aa4c), SHC(0xef4aeaf1), + SHC(0x7d8a5f40), SHC(0xe70747c4), SHC(0x7ba3751d), SHC(0xdedf047d), SHC(0x793501a9), SHC(0xd6db1254), + SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x72ccb9db), SHC(0xc763158e), SHC(0x6ed9eba1), SHC(0xc0000000), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x658c9a2d), SHC(0xb2141b02), SHC(0x603c496c), SHC(0xab9a8e6c), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x54657194), SHC(0x9fc3b694), SHC(0x4debe4fe), SHC(0x9a7365d3), + SHC(0x471cece7), SHC(0x9592675c), SHC(0x40000000), SHC(0x9126145f), SHC(0x389cea72), SHC(0x8d334625), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x2924edac), SHC(0x86cafe57), SHC(0x2120fb83), SHC(0x845c8ae3), + SHC(0x18f8b83c), SHC(0x8275a0c0), SHC(0x10b5150f), SHC(0x811855b4), SHC(0x085f2137), SHC(0x804628a7), + SHC(0x00000000), SHC(0x80000000), SHC(0xf7a0dec9), SHC(0x804628a7), SHC(0xef4aeaf1), SHC(0x811855b4), + SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xdedf047d), SHC(0x845c8ae3), SHC(0xd6db1254), SHC(0x86cafe57), + SHC(0xcf043ab3), SHC(0x89be50c3), SHC(0xc763158e), SHC(0x8d334625), SHC(0xc0000000), SHC(0x9126145f), + SHC(0xb8e31319), SHC(0x9592675c), SHC(0xb2141b02), SHC(0x9a7365d3), SHC(0xab9a8e6c), SHC(0x9fc3b694), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x9fc3b694), SHC(0xab9a8e6c), SHC(0x9a7365d3), SHC(0xb2141b02), + SHC(0x9592675c), SHC(0xb8e31319), SHC(0x9126145f), SHC(0xc0000000), SHC(0x8d334625), SHC(0xc763158e), + SHC(0x89be50c3), SHC(0xcf043ab3), SHC(0x86cafe57), SHC(0xd6db1254), SHC(0x845c8ae3), SHC(0xdedf047d), + SHC(0x8275a0c0), SHC(0xe70747c4), SHC(0x811855b4), SHC(0xef4aeaf1), SHC(0x804628a7), SHC(0xf7a0dec9), + SHC(0x80000000), SHC(0x00000000), SHC(0x804628a7), SHC(0x085f2137), SHC(0x811855b4), SHC(0x10b5150f), + SHC(0x8275a0c0), SHC(0x18f8b83c), SHC(0x845c8ae3), SHC(0x2120fb83), SHC(0x86cafe57), SHC(0x2924edac), + SHC(0x89be50c3), SHC(0x30fbc54d), SHC(0x8d334625), SHC(0x389cea72), SHC(0x9126145f), SHC(0x40000000), + SHC(0x9592675c), SHC(0x471cece7), SHC(0x9a7365d3), SHC(0x4debe4fe), SHC(0x9fc3b694), SHC(0x54657194), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f9afcb9), SHC(0xf5f50d67), SHC(0x7e6c9251), SHC(0xebf9f498), + SHC(0x7c769e18), SHC(0xe21e765a), SHC(0x79bc384d), SHC(0xd8722192), SHC(0x7641af3d), SHC(0xcf043ab3), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6d23501b), SHC(0xbd1ec45c), SHC(0x678dde6e), SHC(0xb4c373ee), + SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x53211d18), SHC(0x9eab046f), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x42e13ba4), SHC(0x92dcafe5), SHC(0x3a1c5c57), SHC(0x8df37f8b), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x1de189a6), SHC(0x838961e8), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x0a0af299), SHC(0x80650347), SHC(0x00000000), SHC(0x80000000), + SHC(0xf5f50d67), SHC(0x80650347), SHC(0xebf9f498), SHC(0x81936daf), SHC(0xe21e765a), SHC(0x838961e8), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xcf043ab3), SHC(0x89be50c3), SHC(0xc5e3a3a9), SHC(0x8df37f8b), + SHC(0xbd1ec45c), SHC(0x92dcafe5), SHC(0xb4c373ee), SHC(0x98722192), SHC(0xacdee2e8), SHC(0x9eab046f), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x9eab046f), SHC(0xacdee2e8), SHC(0x98722192), SHC(0xb4c373ee), + SHC(0x92dcafe5), SHC(0xbd1ec45c), SHC(0x8df37f8b), SHC(0xc5e3a3a9), SHC(0x89be50c3), SHC(0xcf043ab3), + SHC(0x8643c7b3), SHC(0xd8722192), SHC(0x838961e8), SHC(0xe21e765a), SHC(0x81936daf), SHC(0xebf9f498), + SHC(0x80650347), SHC(0xf5f50d67), SHC(0x80000000), SHC(0x00000000), SHC(0x80650347), SHC(0x0a0af299), + SHC(0x81936daf), SHC(0x14060b68), SHC(0x838961e8), SHC(0x1de189a6), SHC(0x8643c7b3), SHC(0x278dde6e), + SHC(0x89be50c3), SHC(0x30fbc54d), SHC(0x8df37f8b), SHC(0x3a1c5c57), SHC(0x92dcafe5), SHC(0x42e13ba4), + SHC(0x98722192), SHC(0x4b3c8c12), SHC(0x9eab046f), SHC(0x53211d18), SHC(0xa57d8666), SHC(0x5a82799a), + SHC(0xacdee2e8), SHC(0x6154fb91), SHC(0xb4c373ee), SHC(0x678dde6e), SHC(0xbd1ec45c), SHC(0x6d23501b), + SHC(0xc5e3a3a9), SHC(0x720c8075), SHC(0xcf043ab3), SHC(0x7641af3d), SHC(0xd8722192), SHC(0x79bc384d), + SHC(0xe21e765a), SHC(0x7c769e18), SHC(0xebf9f498), SHC(0x7e6c9251), SHC(0xf5f50d67), SHC(0x7f9afcb9), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f76892f), SHC(0xf449acca), SHC(0x7ddb4bfc), SHC(0xe8ac819d), + SHC(0x7b31bbb2), SHC(0xdd417079), SHC(0x777f903c), SHC(0xd220ffc0), SHC(0x72ccb9db), SHC(0xc763158e), + SHC(0x6d23501b), SHC(0xbd1ec45c), SHC(0x668f7c25), SHC(0xb36a1978), SHC(0x5f1f5ea1), SHC(0xaa59eda4), + SHC(0x56e2f15d), SHC(0xa201b853), SHC(0x4debe4fe), SHC(0x9a7365d3), SHC(0x444d7aff), SHC(0x93bf30d4), + SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x2f6e6d16), SHC(0x891cc4c1), SHC(0x245a9d65), SHC(0x8545651a), + SHC(0x18f8b83c), SHC(0x8275a0c0), SHC(0x0d61304e), SHC(0x80b381ac), SHC(0x01aceb7c), SHC(0x8002ceac), + SHC(0xf5f50d67), SHC(0x80650347), SHC(0xea52c166), SHC(0x81d94c8f), SHC(0xdedf047d), SHC(0x845c8ae3), + SHC(0xd3b26fb0), SHC(0x87e958a7), SHC(0xc8e5032b), SHC(0x8c7815dd), SHC(0xbe8df2ba), SHC(0x91fef880), + SHC(0xb4c373ee), SHC(0x98722192), SHC(0xab9a8e6c), SHC(0x9fc3b694), SHC(0xa326eec0), SHC(0xa7e3ff4d), + SHC(0x9b7abc1c), SHC(0xb0c1878b), SHC(0x94a6715d), SHC(0xba4944a2), SHC(0x8eb8b9a0), SHC(0xc466be4f), + SHC(0x89be50c3), SHC(0xcf043ab3), SHC(0x85c1e80e), SHC(0xda0aecf9), SHC(0x82cc0f36), SHC(0xe5632654), + SHC(0x80e321ff), SHC(0xf0f488d9), SHC(0x800b3a91), SHC(0xfca63bd8), SHC(0x804628a7), SHC(0x085f2137), + SHC(0x81936daf), SHC(0x14060b68), SHC(0x83f03dd6), SHC(0x1f81f37c), SHC(0x8757860c), SHC(0x2aba2ee4), + SHC(0x8bc1f6e8), SHC(0x3596a46c), SHC(0x9126145f), SHC(0x40000000), SHC(0x97784a1e), SHC(0x49dfe4c2), + SHC(0x9eab046f), SHC(0x53211d18), SHC(0xa6aecd5e), SHC(0x5bafc837), SHC(0xaf726def), SHC(0x637984d4), + SHC(0xb8e31319), SHC(0x6a6d98a4), SHC(0xc2ec7635), SHC(0x707d1443), SHC(0xcd790887), SHC(0x759af34c), + SHC(0xd8722192), SHC(0x79bc384d), SHC(0xe3c02fbb), SHC(0x7cd80464), SHC(0xef4aeaf1), SHC(0x7ee7aa4c), + SHC(0xfaf988cc), SHC(0x7fe6bcb0), SHC(0x06b2f1d2), SHC(0x7fd317b4), SHC(0x125df75b), SHC(0x7eace58a), + SHC(0x1de189a6), SHC(0x7c769e18), SHC(0x2924edac), SHC(0x793501a9), SHC(0x340ff242), SHC(0x74ef0ebc), + SHC(0x3e8b240e), SHC(0x6fadf2fc), SHC(0x487fffe4), SHC(0x697cf78a), SHC(0x51d92321), SHC(0x626968be)}; +# endif + +#ifdef ENABLE_FFT_30X16 +/* Twiddle coefficients for 30x16 FFTs, generated by fft_tables.py */ +# ifdef ENABLE_HR_MODE +const Word32 RotVector_30_16[2 * (480 - 30)] = { + + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ffd3154), SHC(0xfe531484), SHC(0x7ff4c56f), SHC(0xfca63bd8), + SHC(0x7fe6bcb0), SHC(0xfaf988cc), SHC(0x7fd317b4), SHC(0xf94d0e2e), SHC(0x7fb9d759), SHC(0xf7a0dec9), + SHC(0x7f9afcb9), SHC(0xf5f50d67), SHC(0x7f76892f), SHC(0xf449acca), SHC(0x7f4c7e54), SHC(0xf29ecfb2), + SHC(0x7f1cde01), SHC(0xf0f488d9), SHC(0x7ee7aa4c), SHC(0xef4aeaf1), SHC(0x7eace58a), SHC(0xeda208a5), + SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7e26b371), SHC(0xea52c166), SHC(0x7ddb4bfc), SHC(0xe8ac819d), + SHC(0x7d8a5f40), SHC(0xe70747c4), SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x7cd80464), SHC(0xe3c02fbb), + SHC(0x7c769e18), SHC(0xe21e765a), SHC(0x7c0fc22a), SHC(0xe07e0c84), SHC(0x7ba3751d), SHC(0xdedf047d), + SHC(0x7b31bbb2), SHC(0xdd417079), SHC(0x7aba9ae6), SHC(0xdba5629b), SHC(0x7a3e17f2), SHC(0xda0aecf9), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x793501a9), SHC(0xd6db1254), SHC(0x78a879f4), SHC(0xd545d11c), + SHC(0x7816a759), SHC(0xd3b26fb0), SHC(0x777f903c), SHC(0xd220ffc0), SHC(0x76e33b3f), SHC(0xd09192ea), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ff4c56f), SHC(0xfca63bd8), SHC(0x7fd317b4), SHC(0xf94d0e2e), + SHC(0x7f9afcb9), SHC(0xf5f50d67), SHC(0x7f4c7e54), SHC(0xf29ecfb2), SHC(0x7ee7aa4c), SHC(0xef4aeaf1), + SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7ddb4bfc), SHC(0xe8ac819d), SHC(0x7d33f0ca), SHC(0xe5632654), + SHC(0x7c769e18), SHC(0xe21e765a), SHC(0x7ba3751d), SHC(0xdedf047d), SHC(0x7aba9ae6), SHC(0xdba5629b), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x78a879f4), SHC(0xd545d11c), SHC(0x777f903c), SHC(0xd220ffc0), + SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x7387ea23), SHC(0xc8e5032b), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x707d1443), SHC(0xc2ec7635), SHC(0x6ed9eba1), SHC(0xc0000000), + SHC(0x6d23501b), SHC(0xbd1ec45c), SHC(0x6b598ea3), SHC(0xba4944a2), SHC(0x697cf78a), SHC(0xb780001c), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x658c9a2d), SHC(0xb2141b02), SHC(0x637984d4), SHC(0xaf726def), + SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x5f1f5ea1), SHC(0xaa59eda4), SHC(0x5cd91140), SHC(0xa7e3ff4d), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fe6bcb0), SHC(0xfaf988cc), SHC(0x7f9afcb9), SHC(0xf5f50d67), + SHC(0x7f1cde01), SHC(0xf0f488d9), SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7d8a5f40), SHC(0xe70747c4), + SHC(0x7c769e18), SHC(0xe21e765a), SHC(0x7b31bbb2), SHC(0xdd417079), SHC(0x79bc384d), SHC(0xd8722192), + SHC(0x7816a759), SHC(0xd3b26fb0), SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x743e0918), SHC(0xca695b94), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6fadf2fc), SHC(0xc174dbf2), SHC(0x6d23501b), SHC(0xbd1ec45c), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x648543e4), SHC(0xb0c1878b), + SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x5dfe47ad), SHC(0xa91d0ea3), SHC(0x5a82799a), SHC(0xa57d8666), + SHC(0x56e2f15d), SHC(0xa201b853), SHC(0x53211d18), SHC(0x9eab046f), SHC(0x4f3e7875), SHC(0x9b7abc1c), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x471cece7), SHC(0x9592675c), SHC(0x42e13ba4), SHC(0x92dcafe5), + SHC(0x3e8b240e), SHC(0x90520d04), SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x3596a46c), SHC(0x8bc1f6e8), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fd317b4), SHC(0xf94d0e2e), SHC(0x7f4c7e54), SHC(0xf29ecfb2), + SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x7ba3751d), SHC(0xdedf047d), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x777f903c), SHC(0xd220ffc0), SHC(0x74ef0ebc), SHC(0xcbf00dbe), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x6b598ea3), SHC(0xba4944a2), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x637984d4), SHC(0xaf726def), SHC(0x5f1f5ea1), SHC(0xaa59eda4), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x55a6125c), SHC(0xa0e0a15f), SHC(0x508d9211), SHC(0x9c867b2c), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x45b6bb5e), SHC(0x94a6715d), SHC(0x40000000), SHC(0x9126145f), + SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x340ff242), SHC(0x8b10f144), SHC(0x2ddf0040), SHC(0x88806fc4), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x2120fb83), SHC(0x845c8ae3), SHC(0x1a9cd9ac), SHC(0x82cc0f36), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x0d61304e), SHC(0x80b381ac), SHC(0x06b2f1d2), SHC(0x802ce84c), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fb9d759), SHC(0xf7a0dec9), SHC(0x7ee7aa4c), SHC(0xef4aeaf1), + SHC(0x7d8a5f40), SHC(0xe70747c4), SHC(0x7ba3751d), SHC(0xdedf047d), SHC(0x793501a9), SHC(0xd6db1254), + SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x72ccb9db), SHC(0xc763158e), SHC(0x6ed9eba1), SHC(0xc0000000), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x658c9a2d), SHC(0xb2141b02), SHC(0x603c496c), SHC(0xab9a8e6c), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x54657194), SHC(0x9fc3b694), SHC(0x4debe4fe), SHC(0x9a7365d3), + SHC(0x471cece7), SHC(0x9592675c), SHC(0x40000000), SHC(0x9126145f), SHC(0x389cea72), SHC(0x8d334625), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x2924edac), SHC(0x86cafe57), SHC(0x2120fb83), SHC(0x845c8ae3), + SHC(0x18f8b83c), SHC(0x8275a0c0), SHC(0x10b5150f), SHC(0x811855b4), SHC(0x085f2137), SHC(0x804628a7), + SHC(0x00000000), SHC(0x80000000), SHC(0xf7a0dec9), SHC(0x804628a7), SHC(0xef4aeaf1), SHC(0x811855b4), + SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xdedf047d), SHC(0x845c8ae3), SHC(0xd6db1254), SHC(0x86cafe57), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f9afcb9), SHC(0xf5f50d67), SHC(0x7e6c9251), SHC(0xebf9f498), + SHC(0x7c769e18), SHC(0xe21e765a), SHC(0x79bc384d), SHC(0xd8722192), SHC(0x7641af3d), SHC(0xcf043ab3), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6d23501b), SHC(0xbd1ec45c), SHC(0x678dde6e), SHC(0xb4c373ee), + SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x53211d18), SHC(0x9eab046f), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x42e13ba4), SHC(0x92dcafe5), SHC(0x3a1c5c57), SHC(0x8df37f8b), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x1de189a6), SHC(0x838961e8), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x0a0af299), SHC(0x80650347), SHC(0x00000000), SHC(0x80000000), + SHC(0xf5f50d67), SHC(0x80650347), SHC(0xebf9f498), SHC(0x81936daf), SHC(0xe21e765a), SHC(0x838961e8), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xcf043ab3), SHC(0x89be50c3), SHC(0xc5e3a3a9), SHC(0x8df37f8b), + SHC(0xbd1ec45c), SHC(0x92dcafe5), SHC(0xb4c373ee), SHC(0x98722192), SHC(0xacdee2e8), SHC(0x9eab046f), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f76892f), SHC(0xf449acca), SHC(0x7ddb4bfc), SHC(0xe8ac819d), + SHC(0x7b31bbb2), SHC(0xdd417079), SHC(0x777f903c), SHC(0xd220ffc0), SHC(0x72ccb9db), SHC(0xc763158e), + SHC(0x6d23501b), SHC(0xbd1ec45c), SHC(0x668f7c25), SHC(0xb36a1978), SHC(0x5f1f5ea1), SHC(0xaa59eda4), + SHC(0x56e2f15d), SHC(0xa201b853), SHC(0x4debe4fe), SHC(0x9a7365d3), SHC(0x444d7aff), SHC(0x93bf30d4), + SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x2f6e6d16), SHC(0x891cc4c1), SHC(0x245a9d65), SHC(0x8545651a), + SHC(0x18f8b83c), SHC(0x8275a0c0), SHC(0x0d61304e), SHC(0x80b381ac), SHC(0x01aceb7c), SHC(0x8002ceac), + SHC(0xf5f50d67), SHC(0x80650347), SHC(0xea52c166), SHC(0x81d94c8f), SHC(0xdedf047d), SHC(0x845c8ae3), + SHC(0xd3b26fb0), SHC(0x87e958a7), SHC(0xc8e5032b), SHC(0x8c7815dd), SHC(0xbe8df2ba), SHC(0x91fef880), + SHC(0xb4c373ee), SHC(0x98722192), SHC(0xab9a8e6c), SHC(0x9fc3b694), SHC(0xa326eec0), SHC(0xa7e3ff4d), + SHC(0x9b7abc1c), SHC(0xb0c1878b), SHC(0x94a6715d), SHC(0xba4944a2), SHC(0x8eb8b9a0), SHC(0xc466be4f), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f4c7e54), SHC(0xf29ecfb2), SHC(0x7d33f0ca), SHC(0xe5632654), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x6ed9eba1), SHC(0xc0000000), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x5f1f5ea1), SHC(0xaa59eda4), SHC(0x55a6125c), SHC(0xa0e0a15f), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x40000000), SHC(0x9126145f), SHC(0x340ff242), SHC(0x8b10f144), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x1a9cd9ac), SHC(0x82cc0f36), SHC(0x0d61304e), SHC(0x80b381ac), + SHC(0x00000000), SHC(0x80000000), SHC(0xf29ecfb2), SHC(0x80b381ac), SHC(0xe5632654), SHC(0x82cc0f36), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xcbf00dbe), SHC(0x8b10f144), SHC(0xc0000000), SHC(0x9126145f), + SHC(0xb4c373ee), SHC(0x98722192), SHC(0xaa59eda4), SHC(0xa0e0a15f), SHC(0xa0e0a15f), SHC(0xaa59eda4), + SHC(0x98722192), SHC(0xb4c373ee), SHC(0x9126145f), SHC(0xc0000000), SHC(0x8b10f144), SHC(0xcbf00dbe), + SHC(0x8643c7b3), SHC(0xd8722192), SHC(0x82cc0f36), SHC(0xe5632654), SHC(0x80b381ac), SHC(0xf29ecfb2), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f1cde01), SHC(0xf0f488d9), SHC(0x7c769e18), SHC(0xe21e765a), + SHC(0x7816a759), SHC(0xd3b26fb0), SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6a6d98a4), SHC(0xb8e31319), + SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x56e2f15d), SHC(0xa201b853), SHC(0x4b3c8c12), SHC(0x98722192), + SHC(0x3e8b240e), SHC(0x90520d04), SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x22be8f87), SHC(0x84ce444e), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x05067734), SHC(0x80194350), SHC(0xf5f50d67), SHC(0x80650347), + SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xca695b94), SHC(0x8bc1f6e8), + SHC(0xbd1ec45c), SHC(0x92dcafe5), SHC(0xb0c1878b), SHC(0x9b7abc1c), SHC(0xa57d8666), SHC(0xa57d8666), + SHC(0x9b7abc1c), SHC(0xb0c1878b), SHC(0x92dcafe5), SHC(0xbd1ec45c), SHC(0x8bc1f6e8), SHC(0xca695b94), + SHC(0x8643c7b3), SHC(0xd8722192), SHC(0x8275a0c0), SHC(0xe70747c4), SHC(0x80650347), SHC(0xf5f50d67), + SHC(0x80194350), SHC(0x05067734), SHC(0x81936daf), SHC(0x14060b68), SHC(0x84ce444e), SHC(0x22be8f87), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ee7aa4c), SHC(0xef4aeaf1), SHC(0x7ba3751d), SHC(0xdedf047d), + SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x658c9a2d), SHC(0xb2141b02), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x4debe4fe), SHC(0x9a7365d3), SHC(0x40000000), SHC(0x9126145f), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x2120fb83), SHC(0x845c8ae3), SHC(0x10b5150f), SHC(0x811855b4), + SHC(0x00000000), SHC(0x80000000), SHC(0xef4aeaf1), SHC(0x811855b4), SHC(0xdedf047d), SHC(0x845c8ae3), + SHC(0xcf043ab3), SHC(0x89be50c3), SHC(0xc0000000), SHC(0x9126145f), SHC(0xb2141b02), SHC(0x9a7365d3), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x9a7365d3), SHC(0xb2141b02), SHC(0x9126145f), SHC(0xc0000000), + SHC(0x89be50c3), SHC(0xcf043ab3), SHC(0x845c8ae3), SHC(0xdedf047d), SHC(0x811855b4), SHC(0xef4aeaf1), + SHC(0x80000000), SHC(0x00000000), SHC(0x811855b4), SHC(0x10b5150f), SHC(0x845c8ae3), SHC(0x2120fb83), + SHC(0x89be50c3), SHC(0x30fbc54d), SHC(0x9126145f), SHC(0x40000000), SHC(0x9a7365d3), SHC(0x4debe4fe), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7eace58a), SHC(0xeda208a5), SHC(0x7aba9ae6), SHC(0xdba5629b), + SHC(0x743e0918), SHC(0xca695b94), SHC(0x6b598ea3), SHC(0xba4944a2), SHC(0x603c496c), SHC(0xab9a8e6c), + SHC(0x53211d18), SHC(0x9eab046f), SHC(0x444d7aff), SHC(0x93bf30d4), SHC(0x340ff242), SHC(0x8b10f144), + SHC(0x22be8f87), SHC(0x84ce444e), SHC(0x10b5150f), SHC(0x811855b4), SHC(0xfe531484), SHC(0x8002ceac), + SHC(0xebf9f498), SHC(0x81936daf), SHC(0xda0aecf9), SHC(0x85c1e80e), SHC(0xc8e5032b), SHC(0x8c7815dd), + SHC(0xb8e31319), SHC(0x9592675c), SHC(0xaa59eda4), SHC(0xa0e0a15f), SHC(0x9d969742), SHC(0xae26dcdf), + SHC(0x92dcafe5), SHC(0xbd1ec45c), SHC(0x8a650cb4), SHC(0xcd790887), SHC(0x845c8ae3), SHC(0xdedf047d), + SHC(0x80e321ff), SHC(0xf0f488d9), SHC(0x800b3a91), SHC(0x0359c428), SHC(0x81d94c8f), SHC(0x15ad3e9a), + SHC(0x8643c7b3), SHC(0x278dde6e), SHC(0x8d334625), SHC(0x389cea72), SHC(0x96830876), SHC(0x487fffe4), + SHC(0xa201b853), SHC(0x56e2f15d), SHC(0xaf726def), SHC(0x637984d4), SHC(0xbe8df2ba), SHC(0x6e010780), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x79bc384d), SHC(0xd8722192), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x5a82799a), SHC(0xa57d8666), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x278dde6e), SHC(0x8643c7b3), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x00000000), SHC(0x80000000), SHC(0xebf9f498), SHC(0x81936daf), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xc5e3a3a9), SHC(0x8df37f8b), SHC(0xb4c373ee), SHC(0x98722192), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x98722192), SHC(0xb4c373ee), SHC(0x8df37f8b), SHC(0xc5e3a3a9), + SHC(0x8643c7b3), SHC(0xd8722192), SHC(0x81936daf), SHC(0xebf9f498), SHC(0x80000000), SHC(0x00000000), + SHC(0x81936daf), SHC(0x14060b68), SHC(0x8643c7b3), SHC(0x278dde6e), SHC(0x8df37f8b), SHC(0x3a1c5c57), + SHC(0x98722192), SHC(0x4b3c8c12), SHC(0xa57d8666), SHC(0x5a82799a), SHC(0xb4c373ee), SHC(0x678dde6e), + SHC(0xc5e3a3a9), SHC(0x720c8075), SHC(0xd8722192), SHC(0x79bc384d), SHC(0xebf9f498), SHC(0x7e6c9251), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7e26b371), SHC(0xea52c166), SHC(0x78a879f4), SHC(0xd545d11c), + SHC(0x6fadf2fc), SHC(0xc174dbf2), SHC(0x637984d4), SHC(0xaf726def), SHC(0x54657194), SHC(0x9fc3b694), + SHC(0x42e13ba4), SHC(0x92dcafe5), SHC(0x2f6e6d16), SHC(0x891cc4c1), SHC(0x1a9cd9ac), SHC(0x82cc0f36), + SHC(0x05067734), SHC(0x80194350), SHC(0xef4aeaf1), SHC(0x811855b4), SHC(0xda0aecf9), SHC(0x85c1e80e), + SHC(0xc5e3a3a9), SHC(0x8df37f8b), SHC(0xb36a1978), SHC(0x997083db), SHC(0xa326eec0), SHC(0xa7e3ff4d), + SHC(0x9592675c), SHC(0xb8e31319), SHC(0x8b10f144), SHC(0xcbf00dbe), SHC(0x83f03dd6), SHC(0xe07e0c84), + SHC(0x80650347), SHC(0xf5f50d67), SHC(0x808976d1), SHC(0x0bb65336), SHC(0x845c8ae3), SHC(0x2120fb83), + SHC(0x8bc1f6e8), SHC(0x3596a46c), SHC(0x96830876), SHC(0x487fffe4), SHC(0xa45037c9), SHC(0x595132a2), + SHC(0xb4c373ee), SHC(0x678dde6e), SHC(0xc763158e), SHC(0x72ccb9db), SHC(0xdba5629b), SHC(0x7aba9ae6), + SHC(0xf0f488d9), SHC(0x7f1cde01), SHC(0x06b2f1d2), SHC(0x7fd317b4), SHC(0x1c3fd045), SHC(0x7cd80464), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ddb4bfc), SHC(0xe8ac819d), SHC(0x777f903c), SHC(0xd220ffc0), + SHC(0x6d23501b), SHC(0xbd1ec45c), SHC(0x5f1f5ea1), SHC(0xaa59eda4), SHC(0x4debe4fe), SHC(0x9a7365d3), + SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x245a9d65), SHC(0x8545651a), SHC(0x0d61304e), SHC(0x80b381ac), + SHC(0xf5f50d67), SHC(0x80650347), SHC(0xdedf047d), SHC(0x845c8ae3), SHC(0xc8e5032b), SHC(0x8c7815dd), + SHC(0xb4c373ee), SHC(0x98722192), SHC(0xa326eec0), SHC(0xa7e3ff4d), SHC(0x94a6715d), SHC(0xba4944a2), + SHC(0x89be50c3), SHC(0xcf043ab3), SHC(0x82cc0f36), SHC(0xe5632654), SHC(0x800b3a91), SHC(0xfca63bd8), + SHC(0x81936daf), SHC(0x14060b68), SHC(0x8757860c), SHC(0x2aba2ee4), SHC(0x9126145f), SHC(0x40000000), + SHC(0x9eab046f), SHC(0x53211d18), SHC(0xaf726def), SHC(0x637984d4), SHC(0xc2ec7635), SHC(0x707d1443), + SHC(0xd8722192), SHC(0x79bc384d), SHC(0xef4aeaf1), SHC(0x7ee7aa4c), SHC(0x06b2f1d2), SHC(0x7fd317b4), + SHC(0x1de189a6), SHC(0x7c769e18), SHC(0x340ff242), SHC(0x74ef0ebc), SHC(0x487fffe4), SHC(0x697cf78a), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7d8a5f40), SHC(0xe70747c4), SHC(0x7641af3d), SHC(0xcf043ab3), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x471cece7), SHC(0x9592675c), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x18f8b83c), SHC(0x8275a0c0), SHC(0x00000000), SHC(0x80000000), + SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xcf043ab3), SHC(0x89be50c3), SHC(0xb8e31319), SHC(0x9592675c), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x9592675c), SHC(0xb8e31319), SHC(0x89be50c3), SHC(0xcf043ab3), + SHC(0x8275a0c0), SHC(0xe70747c4), SHC(0x80000000), SHC(0x00000000), SHC(0x8275a0c0), SHC(0x18f8b83c), + SHC(0x89be50c3), SHC(0x30fbc54d), SHC(0x9592675c), SHC(0x471cece7), SHC(0xa57d8666), SHC(0x5a82799a), + SHC(0xb8e31319), SHC(0x6a6d98a4), SHC(0xcf043ab3), SHC(0x7641af3d), SHC(0xe70747c4), SHC(0x7d8a5f40), + SHC(0x00000000), SHC(0x7fffffff), SHC(0x18f8b83c), SHC(0x7d8a5f40), SHC(0x30fbc54d), SHC(0x7641af3d), + SHC(0x471cece7), SHC(0x6a6d98a4), SHC(0x5a82799a), SHC(0x5a82799a), SHC(0x6a6d98a4), SHC(0x471cece7)}; +# endif +#endif + +# ifdef ENABLE_HR_MODE +const Word32 RotVector_360[2 * (360 - 30)] = { +# else +const Word16 RotVector_360[2 * (360 - 30)] = { +# endif + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ffb0260), SHC(0xfdc41e9b), SHC(0x7fec09e3), SHC(0xfb8869ce), + SHC(0x7fd317b4), SHC(0xf94d0e2e), SHC(0x7fb02dc6), SHC(0xf7123849), SHC(0x7f834ed0), SHC(0xf4d814a4), + SHC(0x7f4c7e54), SHC(0xf29ecfb2), SHC(0x7f0bc097), SHC(0xf06695da), SHC(0x7ec11aa5), SHC(0xee2f9369), + SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7e0e2e32), SHC(0xe9c5e582), SHC(0x7da5f5a5), SHC(0xe7939223), + SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x7cb82885), SHC(0xe334cdc9), SHC(0x7c32a67e), SHC(0xe108b40d), + SHC(0x7ba3751d), SHC(0xdedf047d), SHC(0x7b0a9f8d), SHC(0xdcb7ea46), SHC(0x7a6831ba), SHC(0xda939061), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x7906c0b0), SHC(0xd653c860), SHC(0x7847d909), SHC(0xd438af17), + SHC(0x777f903c), SHC(0xd220ffc0), SHC(0x76adf5e6), SHC(0xd00ce422), SHC(0x75d31a61), SHC(0xcdfc85bb), + SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x7401e4c1), SHC(0xc9e7a512), SHC(0x730baeed), SHC(0xc7e3744b), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x71046d3e), SHC(0xc3e85b18), SHC(0x6ff389df), SHC(0xc1f1c224), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fec09e3), SHC(0xfb8869ce), SHC(0x7fb02dc6), SHC(0xf7123849), + SHC(0x7f4c7e54), SHC(0xf29ecfb2), SHC(0x7ec11aa5), SHC(0xee2f9369), SHC(0x7e0e2e32), SHC(0xe9c5e582), + SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x7c32a67e), SHC(0xe108b40d), SHC(0x7b0a9f8d), SHC(0xdcb7ea46), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x7847d909), SHC(0xd438af17), SHC(0x76adf5e6), SHC(0xd00ce422), + SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x730baeed), SHC(0xc7e3744b), SHC(0x71046d3e), SHC(0xc3e85b18), + SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x6c8cd70b), SHC(0xbc2b9b05), SHC(0x6a1de737), SHC(0xb86c5df0), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x64dd8950), SHC(0xb1320139), SHC(0x620dbe8b), SHC(0xadb922b7), + SHC(0x5f1f5ea1), SHC(0xaa59eda4), SHC(0x5c13539b), SHC(0xa7156f3c), SHC(0x58ea90c4), SHC(0xa3ecac65), + SHC(0x55a6125c), SHC(0xa0e0a15f), SHC(0x5246dd49), SHC(0x9df24175), SHC(0x4ecdfec7), SHC(0x9b2276b0), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x4793a210), SHC(0x95e218c9), SHC(0x43d464fb), SHC(0x937328f5), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fd317b4), SHC(0xf94d0e2e), SHC(0x7f4c7e54), SHC(0xf29ecfb2), + SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x7ba3751d), SHC(0xdedf047d), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x777f903c), SHC(0xd220ffc0), SHC(0x74ef0ebc), SHC(0xcbf00dbe), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x6b598ea3), SHC(0xba4944a2), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x637984d4), SHC(0xaf726def), SHC(0x5f1f5ea1), SHC(0xaa59eda4), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x55a6125c), SHC(0xa0e0a15f), SHC(0x508d9211), SHC(0x9c867b2c), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x45b6bb5e), SHC(0x94a6715d), SHC(0x40000000), SHC(0x9126145f), + SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x340ff242), SHC(0x8b10f144), SHC(0x2ddf0040), SHC(0x88806fc4), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x2120fb83), SHC(0x845c8ae3), SHC(0x1a9cd9ac), SHC(0x82cc0f36), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x0d61304e), SHC(0x80b381ac), SHC(0x06b2f1d2), SHC(0x802ce84c), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fb02dc6), SHC(0xf7123849), SHC(0x7ec11aa5), SHC(0xee2f9369), + SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x7b0a9f8d), SHC(0xdcb7ea46), SHC(0x7847d909), SHC(0xd438af17), + SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x71046d3e), SHC(0xc3e85b18), SHC(0x6c8cd70b), SHC(0xbc2b9b05), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x620dbe8b), SHC(0xadb922b7), SHC(0x5c13539b), SHC(0xa7156f3c), + SHC(0x55a6125c), SHC(0xa0e0a15f), SHC(0x4ecdfec7), SHC(0x9b2276b0), SHC(0x4793a210), SHC(0x95e218c9), + SHC(0x40000000), SHC(0x9126145f), SHC(0x381c8bb5), SHC(0x8cf45113), SHC(0x2ff31bde), SHC(0x89520a1a), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x1ef74bf3), SHC(0x83cd5982), SHC(0x163a1a7e), SHC(0x81f1d1ce), + SHC(0x0d61304e), SHC(0x80b381ac), SHC(0x04779632), SHC(0x8013f61d), SHC(0xfb8869ce), SHC(0x8013f61d), + SHC(0xf29ecfb2), SHC(0x80b381ac), SHC(0xe9c5e582), SHC(0x81f1d1ce), SHC(0xe108b40d), SHC(0x83cd5982), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xd00ce422), SHC(0x89520a1a), SHC(0xc7e3744b), SHC(0x8cf45113), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f834ed0), SHC(0xf4d814a4), SHC(0x7e0e2e32), SHC(0xe9c5e582), + SHC(0x7ba3751d), SHC(0xdedf047d), SHC(0x7847d909), SHC(0xd438af17), SHC(0x7401e4c1), SHC(0xc9e7a512), + SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x68d9f964), SHC(0xb6950c1e), SHC(0x620dbe8b), SHC(0xadb922b7), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x5246dd49), SHC(0x9df24175), SHC(0x496af3e2), SHC(0x9726069c), + SHC(0x40000000), SHC(0x9126145f), SHC(0x36185aee), SHC(0x8bfe1b3f), SHC(0x2bc750e9), SHC(0x87b826f7), + SHC(0x2120fb83), SHC(0x845c8ae3), SHC(0x163a1a7e), SHC(0x81f1d1ce), SHC(0x0b27eb5c), SHC(0x807cb130), + SHC(0x00000000), SHC(0x80000000), SHC(0xf4d814a4), SHC(0x807cb130), SHC(0xe9c5e582), SHC(0x81f1d1ce), + SHC(0xdedf047d), SHC(0x845c8ae3), SHC(0xd438af17), SHC(0x87b826f7), SHC(0xc9e7a512), SHC(0x8bfe1b3f), + SHC(0xc0000000), SHC(0x9126145f), SHC(0xb6950c1e), SHC(0x9726069c), SHC(0xadb922b7), SHC(0x9df24175), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x9df24175), SHC(0xadb922b7), SHC(0x9726069c), SHC(0xb6950c1e), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f4c7e54), SHC(0xf29ecfb2), SHC(0x7d33f0ca), SHC(0xe5632654), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x6ed9eba1), SHC(0xc0000000), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x5f1f5ea1), SHC(0xaa59eda4), SHC(0x55a6125c), SHC(0xa0e0a15f), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x40000000), SHC(0x9126145f), SHC(0x340ff242), SHC(0x8b10f144), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x1a9cd9ac), SHC(0x82cc0f36), SHC(0x0d61304e), SHC(0x80b381ac), + SHC(0x00000000), SHC(0x80000000), SHC(0xf29ecfb2), SHC(0x80b381ac), SHC(0xe5632654), SHC(0x82cc0f36), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xcbf00dbe), SHC(0x8b10f144), SHC(0xc0000000), SHC(0x9126145f), + SHC(0xb4c373ee), SHC(0x98722192), SHC(0xaa59eda4), SHC(0xa0e0a15f), SHC(0xa0e0a15f), SHC(0xaa59eda4), + SHC(0x98722192), SHC(0xb4c373ee), SHC(0x9126145f), SHC(0xc0000000), SHC(0x8b10f144), SHC(0xcbf00dbe), + SHC(0x8643c7b3), SHC(0xd8722192), SHC(0x82cc0f36), SHC(0xe5632654), SHC(0x80b381ac), SHC(0xf29ecfb2), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f0bc097), SHC(0xf06695da), SHC(0x7c32a67e), SHC(0xe108b40d), + SHC(0x777f903c), SHC(0xd220ffc0), SHC(0x71046d3e), SHC(0xc3e85b18), SHC(0x68d9f964), SHC(0xb6950c1e), + SHC(0x5f1f5ea1), SHC(0xaa59eda4), SHC(0x53f9be05), SHC(0x9f65ad2d), SHC(0x4793a210), SHC(0x95e218c9), + SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x2bc750e9), SHC(0x87b826f7), SHC(0x1ccb3237), SHC(0x8347d77b), + SHC(0x0d61304e), SHC(0x80b381ac), SHC(0xfdc41e9b), SHC(0x8004fda0), SHC(0xee2f9369), SHC(0x813ee55b), + SHC(0xdedf047d), SHC(0x845c8ae3), SHC(0xd00ce422), SHC(0x89520a1a), SHC(0xc1f1c224), SHC(0x900c7621), + SHC(0xb4c373ee), SHC(0x98722192), SHC(0xa8b4471a), SHC(0xa263007d), SHC(0x9df24175), SHC(0xadb922b7), + SHC(0x94a6715d), SHC(0xba4944a2), SHC(0x8cf45113), SHC(0xc7e3744b), SHC(0x86f93f50), SHC(0xd653c860), + SHC(0x82cc0f36), SHC(0xe5632654), SHC(0x807cb130), SHC(0xf4d814a4), SHC(0x8013f61d), SHC(0x04779632), + SHC(0x81936daf), SHC(0x14060b68), SHC(0x84f56073), SHC(0x234815ba), SHC(0x8a2ce59f), SHC(0x32037a45), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ec11aa5), SHC(0xee2f9369), SHC(0x7b0a9f8d), SHC(0xdcb7ea46), + SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x6c8cd70b), SHC(0xbc2b9b05), SHC(0x620dbe8b), SHC(0xadb922b7), + SHC(0x55a6125c), SHC(0xa0e0a15f), SHC(0x4793a210), SHC(0x95e218c9), SHC(0x381c8bb5), SHC(0x8cf45113), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x163a1a7e), SHC(0x81f1d1ce), SHC(0x04779632), SHC(0x8013f61d), + SHC(0xf29ecfb2), SHC(0x80b381ac), SHC(0xe108b40d), SHC(0x83cd5982), SHC(0xd00ce422), SHC(0x89520a1a), + SHC(0xc0000000), SHC(0x9126145f), SHC(0xb1320139), SHC(0x9b2276b0), SHC(0xa3ecac65), SHC(0xa7156f3c), + SHC(0x98722192), SHC(0xb4c373ee), SHC(0x8efb92c2), SHC(0xc3e85b18), SHC(0x87b826f7), SHC(0xd438af17), + SHC(0x82cc0f36), SHC(0xe5632654), SHC(0x804fd23a), SHC(0xf7123849), SHC(0x804fd23a), SHC(0x08edc7b7), + SHC(0x82cc0f36), SHC(0x1a9cd9ac), SHC(0x87b826f7), SHC(0x2bc750e9), SHC(0x8efb92c2), SHC(0x3c17a4e8), + SHC(0x98722192), SHC(0x4b3c8c12), SHC(0xa3ecac65), SHC(0x58ea90c4), SHC(0xb1320139), SHC(0x64dd8950), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x79bc384d), SHC(0xd8722192), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x5a82799a), SHC(0xa57d8666), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x278dde6e), SHC(0x8643c7b3), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x00000000), SHC(0x80000000), SHC(0xebf9f498), SHC(0x81936daf), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xc5e3a3a9), SHC(0x8df37f8b), SHC(0xb4c373ee), SHC(0x98722192), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x98722192), SHC(0xb4c373ee), SHC(0x8df37f8b), SHC(0xc5e3a3a9), + SHC(0x8643c7b3), SHC(0xd8722192), SHC(0x81936daf), SHC(0xebf9f498), SHC(0x80000000), SHC(0x00000000), + SHC(0x81936daf), SHC(0x14060b68), SHC(0x8643c7b3), SHC(0x278dde6e), SHC(0x8df37f8b), SHC(0x3a1c5c57), + SHC(0x98722192), SHC(0x4b3c8c12), SHC(0xa57d8666), SHC(0x5a82799a), SHC(0xb4c373ee), SHC(0x678dde6e), + SHC(0xc5e3a3a9), SHC(0x720c8075), SHC(0xd8722192), SHC(0x79bc384d), SHC(0xebf9f498), SHC(0x7e6c9251), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7e0e2e32), SHC(0xe9c5e582), SHC(0x7847d909), SHC(0xd438af17), + SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x620dbe8b), SHC(0xadb922b7), SHC(0x5246dd49), SHC(0x9df24175), + SHC(0x40000000), SHC(0x9126145f), SHC(0x2bc750e9), SHC(0x87b826f7), SHC(0x163a1a7e), SHC(0x81f1d1ce), + SHC(0x00000000), SHC(0x80000000), SHC(0xe9c5e582), SHC(0x81f1d1ce), SHC(0xd438af17), SHC(0x87b826f7), + SHC(0xc0000000), SHC(0x9126145f), SHC(0xadb922b7), SHC(0x9df24175), SHC(0x9df24175), SHC(0xadb922b7), + SHC(0x9126145f), SHC(0xc0000000), SHC(0x87b826f7), SHC(0xd438af17), SHC(0x81f1d1ce), SHC(0xe9c5e582), + SHC(0x80000000), SHC(0x00000000), SHC(0x81f1d1ce), SHC(0x163a1a7e), SHC(0x87b826f7), SHC(0x2bc750e9), + SHC(0x9126145f), SHC(0x40000000), SHC(0x9df24175), SHC(0x5246dd49), SHC(0xadb922b7), SHC(0x620dbe8b), + SHC(0xc0000000), SHC(0x6ed9eba1), SHC(0xd438af17), SHC(0x7847d909), SHC(0xe9c5e582), SHC(0x7e0e2e32), + SHC(0x00000000), SHC(0x7fffffff), SHC(0x163a1a7e), SHC(0x7e0e2e32), SHC(0x2bc750e9), SHC(0x7847d909), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7da5f5a5), SHC(0xe7939223), SHC(0x76adf5e6), SHC(0xd00ce422), + SHC(0x6b598ea3), SHC(0xba4944a2), SHC(0x5c13539b), SHC(0xa7156f3c), SHC(0x496af3e2), SHC(0x9726069c), + SHC(0x340ff242), SHC(0x8b10f144), SHC(0x1ccb3237), SHC(0x8347d77b), SHC(0x04779632), SHC(0x8013f61d), + SHC(0xebf9f498), SHC(0x81936daf), SHC(0xd438af17), SHC(0x87b826f7), SHC(0xbe133b7c), SHC(0x92485786), + SHC(0xaa59eda4), SHC(0xa0e0a15f), SHC(0x99c64fc5), SHC(0xb2f7b9af), SHC(0x8cf45113), SHC(0xc7e3744b), + SHC(0x845c8ae3), SHC(0xdedf047d), SHC(0x804fd23a), SHC(0xf7123849), SHC(0x80f43f69), SHC(0x0f996a26), + SHC(0x8643c7b3), SHC(0x278dde6e), SHC(0x900c7621), SHC(0x3e0e3ddc), SHC(0x9df24175), SHC(0x5246dd49), + SHC(0xaf726def), SHC(0x637984d4), SHC(0xc3e85b18), SHC(0x71046d3e), SHC(0xda939061), SHC(0x7a6831ba), + SHC(0xf29ecfb2), SHC(0x7f4c7e54), SHC(0x0b27eb5c), SHC(0x7f834ed0), SHC(0x234815ba), SHC(0x7b0a9f8d), + SHC(0x3a1c5c57), SHC(0x720c8075), SHC(0x4ecdfec7), SHC(0x64dd8950), SHC(0x609a52d3), SHC(0x53f9be05)}; + +# ifdef ENABLE_HR_MODE +const Word32 RotVector_320[2 * (320 - 20)] = { +# else +const Word16 RotVector_320[2 * (320 - 20)] = { +# endif + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fe6bcb0), SHC(0xfaf988cc), SHC(0x7f9afcb9), SHC(0xf5f50d67), + SHC(0x7f1cde01), SHC(0xf0f488d9), SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7d8a5f40), SHC(0xe70747c4), + SHC(0x7c769e18), SHC(0xe21e765a), SHC(0x7b31bbb2), SHC(0xdd417079), SHC(0x79bc384d), SHC(0xd8722192), + SHC(0x7816a759), SHC(0xd3b26fb0), SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x743e0918), SHC(0xca695b94), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6fadf2fc), SHC(0xc174dbf2), SHC(0x6d23501b), SHC(0xbd1ec45c), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x648543e4), SHC(0xb0c1878b), + SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x5dfe47ad), SHC(0xa91d0ea3), SHC(0x7fffffff), SHC(0x00000000), + SHC(0x7f9afcb9), SHC(0xf5f50d67), SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7c769e18), SHC(0xe21e765a), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x720c8075), SHC(0xc5e3a3a9), + SHC(0x6d23501b), SHC(0xbd1ec45c), SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x6154fb91), SHC(0xacdee2e8), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x53211d18), SHC(0x9eab046f), SHC(0x4b3c8c12), SHC(0x98722192), + SHC(0x42e13ba4), SHC(0x92dcafe5), SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x30fbc54d), SHC(0x89be50c3), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x1de189a6), SHC(0x838961e8), SHC(0x14060b68), SHC(0x81936daf), + SHC(0x0a0af299), SHC(0x80650347), SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f1cde01), SHC(0xf0f488d9), + SHC(0x7c769e18), SHC(0xe21e765a), SHC(0x7816a759), SHC(0xd3b26fb0), SHC(0x720c8075), SHC(0xc5e3a3a9), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x56e2f15d), SHC(0xa201b853), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x3e8b240e), SHC(0x90520d04), SHC(0x30fbc54d), SHC(0x89be50c3), + SHC(0x22be8f87), SHC(0x84ce444e), SHC(0x14060b68), SHC(0x81936daf), SHC(0x05067734), SHC(0x80194350), + SHC(0xf5f50d67), SHC(0x80650347), SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xd8722192), SHC(0x8643c7b3), + SHC(0xca695b94), SHC(0x8bc1f6e8), SHC(0xbd1ec45c), SHC(0x92dcafe5), SHC(0xb0c1878b), SHC(0x9b7abc1c), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x79bc384d), SHC(0xd8722192), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x5a82799a), SHC(0xa57d8666), + SHC(0x4b3c8c12), SHC(0x98722192), SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x278dde6e), SHC(0x8643c7b3), + SHC(0x14060b68), SHC(0x81936daf), SHC(0x00000000), SHC(0x80000000), SHC(0xebf9f498), SHC(0x81936daf), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xc5e3a3a9), SHC(0x8df37f8b), SHC(0xb4c373ee), SHC(0x98722192), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x98722192), SHC(0xb4c373ee), SHC(0x8df37f8b), SHC(0xc5e3a3a9), + SHC(0x8643c7b3), SHC(0xd8722192), SHC(0x81936daf), SHC(0xebf9f498), SHC(0x7fffffff), SHC(0x00000000), + SHC(0x7d8a5f40), SHC(0xe70747c4), SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x6a6d98a4), SHC(0xb8e31319), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x471cece7), SHC(0x9592675c), SHC(0x30fbc54d), SHC(0x89be50c3), + SHC(0x18f8b83c), SHC(0x8275a0c0), SHC(0x00000000), SHC(0x80000000), SHC(0xe70747c4), SHC(0x8275a0c0), + SHC(0xcf043ab3), SHC(0x89be50c3), SHC(0xb8e31319), SHC(0x9592675c), SHC(0xa57d8666), SHC(0xa57d8666), + SHC(0x9592675c), SHC(0xb8e31319), SHC(0x89be50c3), SHC(0xcf043ab3), SHC(0x8275a0c0), SHC(0xe70747c4), + SHC(0x80000000), SHC(0x00000000), SHC(0x8275a0c0), SHC(0x18f8b83c), SHC(0x89be50c3), SHC(0x30fbc54d), + SHC(0x9592675c), SHC(0x471cece7), SHC(0x7fffffff), SHC(0x00000000), SHC(0x7c769e18), SHC(0xe21e765a), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x4b3c8c12), SHC(0x98722192), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x14060b68), SHC(0x81936daf), SHC(0xf5f50d67), SHC(0x80650347), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xbd1ec45c), SHC(0x92dcafe5), SHC(0xa57d8666), SHC(0xa57d8666), + SHC(0x92dcafe5), SHC(0xbd1ec45c), SHC(0x8643c7b3), SHC(0xd8722192), SHC(0x80650347), SHC(0xf5f50d67), + SHC(0x81936daf), SHC(0x14060b68), SHC(0x89be50c3), SHC(0x30fbc54d), SHC(0x98722192), SHC(0x4b3c8c12), + SHC(0xacdee2e8), SHC(0x6154fb91), SHC(0xc5e3a3a9), SHC(0x720c8075), SHC(0xe21e765a), SHC(0x7c769e18), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7b31bbb2), SHC(0xdd417079), SHC(0x6d23501b), SHC(0xbd1ec45c), + SHC(0x56e2f15d), SHC(0xa201b853), SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x18f8b83c), SHC(0x8275a0c0), + SHC(0xf5f50d67), SHC(0x80650347), SHC(0xd3b26fb0), SHC(0x87e958a7), SHC(0xb4c373ee), SHC(0x98722192), + SHC(0x9b7abc1c), SHC(0xb0c1878b), SHC(0x89be50c3), SHC(0xcf043ab3), SHC(0x80e321ff), SHC(0xf0f488d9), + SHC(0x81936daf), SHC(0x14060b68), SHC(0x8bc1f6e8), SHC(0x3596a46c), SHC(0x9eab046f), SHC(0x53211d18), + SHC(0xb8e31319), SHC(0x6a6d98a4), SHC(0xd8722192), SHC(0x79bc384d), SHC(0xfaf988cc), SHC(0x7fe6bcb0), + SHC(0x1de189a6), SHC(0x7c769e18), SHC(0x3e8b240e), SHC(0x6fadf2fc), SHC(0x7fffffff), SHC(0x00000000), + SHC(0x7ff9af04), SHC(0xfd7ca4a6), SHC(0x7fe6bcb0), SHC(0xfaf988cc), SHC(0x7fc72ae2), SHC(0xf876ebe8), + SHC(0x7f9afcb9), SHC(0xf5f50d67), SHC(0x7f62368f), SHC(0xf3742ca2), SHC(0x7f1cde01), SHC(0xf0f488d9), + SHC(0x7ecaf9e5), SHC(0xee76612d), SHC(0x7e6c9251), SHC(0xebf9f498), SHC(0x7e01b096), SHC(0xe97f81eb), + SHC(0x7d8a5f40), SHC(0xe70747c4), SHC(0x7d06aa16), SHC(0xe4918486), SHC(0x7c769e18), SHC(0xe21e765a), + SHC(0x7bda497d), SHC(0xdfae5b23), SHC(0x7b31bbb2), SHC(0xdd417079), SHC(0x7a7d055b), SHC(0xdad7f3a2), + SHC(0x79bc384d), SHC(0xd8722192), SHC(0x78ef678f), SHC(0xd61036db), SHC(0x7816a759), SHC(0xd3b26fb0), + SHC(0x77320d0d), SHC(0xd15907d9), SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fc72ae2), SHC(0xf876ebe8), + SHC(0x7f1cde01), SHC(0xf0f488d9), SHC(0x7e01b096), SHC(0xe97f81eb), SHC(0x7c769e18), SHC(0xe21e765a), + SHC(0x7a7d055b), SHC(0xdad7f3a2), SHC(0x7816a759), SHC(0xd3b26fb0), SHC(0x7545a5a0), SHC(0xccb44322), + SHC(0x720c8075), SHC(0xc5e3a3a9), SHC(0x6e6e1492), SHC(0xbf469e83), SHC(0x6a6d98a4), SHC(0xb8e31319), + SHC(0x660e9a6a), SHC(0xb2beadcc), SHC(0x6154fb91), SHC(0xacdee2e8), SHC(0x5c44ee40), SHC(0xa748e9ce), + SHC(0x56e2f15d), SHC(0xa201b853), SHC(0x5133cc94), SHC(0x9d0dfe54), SHC(0x4b3c8c12), SHC(0x98722192), + SHC(0x45027c0c), SHC(0x943239c7), SHC(0x3e8b240e), SHC(0x90520d04), SHC(0x37dc420c), SHC(0x8cd50c59), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f62368f), SHC(0xf3742ca2), SHC(0x7d8a5f40), SHC(0xe70747c4), + SHC(0x7a7d055b), SHC(0xdad7f3a2), SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x70e2cbc6), SHC(0xc3a94590), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x62f201ac), SHC(0xaecc336c), SHC(0x5a82799a), SHC(0xa57d8666), + SHC(0x5133cc94), SHC(0x9d0dfe54), SHC(0x471cece7), SHC(0x9592675c), SHC(0x3c56ba70), SHC(0x8f1d343a), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x25280c5e), SHC(0x8582faa5), SHC(0x18f8b83c), SHC(0x8275a0c0), + SHC(0x0c8bd35e), SHC(0x809dc971), SHC(0x00000000), SHC(0x80000000), SHC(0xf3742ca2), SHC(0x809dc971), + SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xdad7f3a2), SHC(0x8582faa5), SHC(0x7fffffff), SHC(0x00000000), + SHC(0x7ecaf9e5), SHC(0xee76612d), SHC(0x7b31bbb2), SHC(0xdd417079), SHC(0x7545a5a0), SHC(0xccb44322), + SHC(0x6d23501b), SHC(0xbd1ec45c), SHC(0x62f201ac), SHC(0xaecc336c), SHC(0x56e2f15d), SHC(0xa201b853), + SHC(0x4930590f), SHC(0x96fd15e3), SHC(0x3a1c5c57), SHC(0x8df37f8b), SHC(0x29efc925), SHC(0x87109871), + SHC(0x18f8b83c), SHC(0x8275a0c0), SHC(0x07891418), SHC(0x8038d51e), SHC(0xf5f50d67), SHC(0x80650347), + SHC(0xe4918486), SHC(0x82f955ea), SHC(0xd3b26fb0), SHC(0x87e958a7), SHC(0xc3a94590), SHC(0x8f1d343a), + SHC(0xb4c373ee), SHC(0x98722192), SHC(0xa748e9ce), SHC(0xa3bb11c0), SHC(0x9b7abc1c), SHC(0xb0c1878b), + SHC(0x9191eb6e), SHC(0xbf469e83), SHC(0x7fffffff), SHC(0x00000000), SHC(0x7e01b096), SHC(0xe97f81eb), + SHC(0x7816a759), SHC(0xd3b26fb0), SHC(0x6e6e1492), SHC(0xbf469e83), SHC(0x6154fb91), SHC(0xacdee2e8), + SHC(0x5133cc94), SHC(0x9d0dfe54), SHC(0x3e8b240e), SHC(0x90520d04), SHC(0x29efc925), SHC(0x87109871), + SHC(0x14060b68), SHC(0x81936daf), SHC(0xfd7ca4a6), SHC(0x800650fc), SHC(0xe70747c4), SHC(0x8275a0c0), + SHC(0xd15907d9), SHC(0x88cdf2f3), SHC(0xbd1ec45c), SHC(0x92dcafe5), SHC(0xaaf9c6af), SHC(0xa051a5ab), + SHC(0x9b7abc1c), SHC(0xb0c1878b), SHC(0x8f1d343a), SHC(0xc3a94590), SHC(0x8643c7b3), SHC(0xd8722192), + SHC(0x8135061b), SHC(0xee76612d), SHC(0x80194350), SHC(0x05067734), SHC(0x82f955ea), SHC(0x1b6e7b7a), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7d06aa16), SHC(0xe4918486), SHC(0x743e0918), SHC(0xca695b94), + SHC(0x660e9a6a), SHC(0xb2beadcc), SHC(0x53211d18), SHC(0x9eab046f), SHC(0x3c56ba70), SHC(0x8f1d343a), + SHC(0x22be8f87), SHC(0x84ce444e), SHC(0x07891418), SHC(0x8038d51e), SHC(0xebf9f498), SHC(0x81936daf), + SHC(0xd15907d9), SHC(0x88cdf2f3), SHC(0xb8e31319), SHC(0x9592675c), SHC(0xa3bb11c0), SHC(0xa748e9ce), + SHC(0x92dcafe5), SHC(0xbd1ec45c), SHC(0x87109871), SHC(0xd61036db), SHC(0x80e321ff), SHC(0xf0f488d9), + SHC(0x809dc971), SHC(0x0c8bd35e), SHC(0x8643c7b3), SHC(0x278dde6e), SHC(0x9191eb6e), SHC(0x40b9617d), + SHC(0xa201b853), SHC(0x56e2f15d), SHC(0xb6cfa6f1), SHC(0x6902ea1d), SHC(0x7fffffff), SHC(0x00000000), + SHC(0x7bda497d), SHC(0xdfae5b23), SHC(0x6fadf2fc), SHC(0xc174dbf2), SHC(0x5c44ee40), SHC(0xa748e9ce), + SHC(0x42e13ba4), SHC(0x92dcafe5), SHC(0x25280c5e), SHC(0x8582faa5), SHC(0x05067734), SHC(0x80194350), + SHC(0xe4918486), SHC(0x82f955ea), SHC(0xc5e3a3a9), SHC(0x8df37f8b), SHC(0xaaf9c6af), SHC(0xa051a5ab), + SHC(0x9592675c), SHC(0xb8e31319), SHC(0x87109871), SHC(0xd61036db), SHC(0x80650347), SHC(0xf5f50d67), + SHC(0x81fe4f6a), SHC(0x16807e15), SHC(0x8bc1f6e8), SHC(0x3596a46c), SHC(0x9d0dfe54), SHC(0x5133cc94), + SHC(0xb4c373ee), SHC(0x678dde6e), SHC(0xd15907d9), SHC(0x77320d0d), SHC(0xf0f488d9), SHC(0x7f1cde01), + SHC(0x11899ed3), SHC(0x7ecaf9e5), SHC(0x7fffffff), SHC(0x00000000), SHC(0x7a7d055b), SHC(0xdad7f3a2), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x5133cc94), SHC(0x9d0dfe54), SHC(0x30fbc54d), SHC(0x89be50c3), + SHC(0x0c8bd35e), SHC(0x809dc971), SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xc3a94590), SHC(0x8f1d343a), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x8f1d343a), SHC(0xc3a94590), SHC(0x8275a0c0), SHC(0xe70747c4), + SHC(0x809dc971), SHC(0x0c8bd35e), SHC(0x89be50c3), SHC(0x30fbc54d), SHC(0x9d0dfe54), SHC(0x5133cc94), + SHC(0xb8e31319), SHC(0x6a6d98a4), SHC(0xdad7f3a2), SHC(0x7a7d055b), SHC(0x00000000), SHC(0x7fffffff), + SHC(0x25280c5e), SHC(0x7a7d055b), SHC(0x471cece7), SHC(0x6a6d98a4), SHC(0x62f201ac), SHC(0x5133cc94)}; + + +/* Twiddle coefficients for 32x8 FFTs, generated by fft_tables.py */ +# ifdef ENABLE_HR_MODE +const Word32 RotVector_32_8[2 * (256 - 32)] = { +# else +const Word16 RotVector_32_8[2 * (256 - 32)] = { +# endif + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ff62182), SHC(0xfcdbd541), SHC(0x7fd8878e), SHC(0xf9b82684), + SHC(0x7fa736b4), SHC(0xf6956fb7), SHC(0x7f62368f), SHC(0xf3742ca2), SHC(0x7f0991c4), SHC(0xf054d8d5), + SHC(0x7e9d55fc), SHC(0xed37ef91), SHC(0x7e1d93ea), SHC(0xea1debbb), SHC(0x7d8a5f40), SHC(0xe70747c4), + SHC(0x7ce3ceb2), SHC(0xe3f47d96), SHC(0x7c29fbee), SHC(0xe0e60685), SHC(0x7b5d039e), SHC(0xdddc5b3b), + SHC(0x7a7d055b), SHC(0xdad7f3a2), SHC(0x798a23b1), SHC(0xd7d946d8), SHC(0x78848414), SHC(0xd4e0cb15), + SHC(0x776c4edb), SHC(0xd1eef59e), SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x7504d345), SHC(0xcc210d79), + SHC(0x73b5ebd1), SHC(0xc945dfec), SHC(0x72552c85), SHC(0xc67322ce), SHC(0x70e2cbc6), SHC(0xc3a94590), + SHC(0x6f5f02b2), SHC(0xc0e8b648), SHC(0x6dca0d14), SHC(0xbe31e19b), SHC(0x6c242960), SHC(0xbb8532b0), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x68a69e81), SHC(0xb64beacd), SHC(0x66cf8120), SHC(0xb3c0200c), + SHC(0x64e88926), SHC(0xb140175b), SHC(0x62f201ac), SHC(0xaecc336c), SHC(0x60ec3830), SHC(0xac64d510), + SHC(0x5ed77c8a), SHC(0xaa0a5b2e), SHC(0x5cb420e0), SHC(0xa7bd22ac), SHC(0x7fffffff), SHC(0x00000000), + SHC(0x7fd8878e), SHC(0xf9b82684), SHC(0x7f62368f), SHC(0xf3742ca2), SHC(0x7e9d55fc), SHC(0xed37ef91), + SHC(0x7d8a5f40), SHC(0xe70747c4), SHC(0x7c29fbee), SHC(0xe0e60685), SHC(0x7a7d055b), SHC(0xdad7f3a2), + SHC(0x78848414), SHC(0xd4e0cb15), SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x73b5ebd1), SHC(0xc945dfec), + SHC(0x70e2cbc6), SHC(0xc3a94590), SHC(0x6dca0d14), SHC(0xbe31e19b), SHC(0x6a6d98a4), SHC(0xb8e31319), + SHC(0x66cf8120), SHC(0xb3c0200c), SHC(0x62f201ac), SHC(0xaecc336c), SHC(0x5ed77c8a), SHC(0xaa0a5b2e), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x55f5a4d2), SHC(0xa1288376), SHC(0x5133cc94), SHC(0x9d0dfe54), + SHC(0x4c3fdff4), SHC(0x99307ee0), SHC(0x471cece7), SHC(0x9592675c), SHC(0x41ce1e65), SHC(0x9235f2ec), + SHC(0x3c56ba70), SHC(0x8f1d343a), SHC(0x36ba2014), SHC(0x8c4a142f), SHC(0x30fbc54d), SHC(0x89be50c3), + SHC(0x2b1f34eb), SHC(0x877b7bec), SHC(0x25280c5e), SHC(0x8582faa5), SHC(0x1f19f97b), SHC(0x83d60412), + SHC(0x18f8b83c), SHC(0x8275a0c0), SHC(0x12c8106f), SHC(0x8162aa04), SHC(0x0c8bd35e), SHC(0x809dc971), + SHC(0x0647d97c), SHC(0x80277872), SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fa736b4), SHC(0xf6956fb7), + SHC(0x7e9d55fc), SHC(0xed37ef91), SHC(0x7ce3ceb2), SHC(0xe3f47d96), SHC(0x7a7d055b), SHC(0xdad7f3a2), + SHC(0x776c4edb), SHC(0xd1eef59e), SHC(0x73b5ebd1), SHC(0xc945dfec), SHC(0x6f5f02b2), SHC(0xc0e8b648), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x64e88926), SHC(0xb140175b), SHC(0x5ed77c8a), SHC(0xaa0a5b2e), + SHC(0x5842dd54), SHC(0xa34bdf20), SHC(0x5133cc94), SHC(0x9d0dfe54), SHC(0x49b41533), SHC(0x9759617f), + SHC(0x41ce1e65), SHC(0x9235f2ec), SHC(0x398cdd32), SHC(0x8daad37b), SHC(0x30fbc54d), SHC(0x89be50c3), + SHC(0x2826b928), SHC(0x8675dc4f), SHC(0x1f19f97b), SHC(0x83d60412), SHC(0x15e21445), SHC(0x81e26c16), + SHC(0x0c8bd35e), SHC(0x809dc971), SHC(0x03242abf), SHC(0x8009de7e), SHC(0xf9b82684), SHC(0x80277872), + SHC(0xf054d8d5), SHC(0x80f66e3c), SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xdddc5b3b), SHC(0x84a2fc62), + SHC(0xd4e0cb15), SHC(0x877b7bec), SHC(0xcc210d79), SHC(0x8afb2cbb), SHC(0xc3a94590), SHC(0x8f1d343a), + SHC(0xbb8532b0), SHC(0x93dbd6a0), SHC(0xb3c0200c), SHC(0x99307ee0), SHC(0xac64d510), SHC(0x9f13c7d0), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f62368f), SHC(0xf3742ca2), SHC(0x7d8a5f40), SHC(0xe70747c4), + SHC(0x7a7d055b), SHC(0xdad7f3a2), SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x70e2cbc6), SHC(0xc3a94590), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x62f201ac), SHC(0xaecc336c), SHC(0x5a82799a), SHC(0xa57d8666), + SHC(0x5133cc94), SHC(0x9d0dfe54), SHC(0x471cece7), SHC(0x9592675c), SHC(0x3c56ba70), SHC(0x8f1d343a), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x25280c5e), SHC(0x8582faa5), SHC(0x18f8b83c), SHC(0x8275a0c0), + SHC(0x0c8bd35e), SHC(0x809dc971), SHC(0x00000000), SHC(0x80000000), SHC(0xf3742ca2), SHC(0x809dc971), + SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xdad7f3a2), SHC(0x8582faa5), SHC(0xcf043ab3), SHC(0x89be50c3), + SHC(0xc3a94590), SHC(0x8f1d343a), SHC(0xb8e31319), SHC(0x9592675c), SHC(0xaecc336c), SHC(0x9d0dfe54), + SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x9d0dfe54), SHC(0xaecc336c), SHC(0x9592675c), SHC(0xb8e31319), + SHC(0x8f1d343a), SHC(0xc3a94590), SHC(0x89be50c3), SHC(0xcf043ab3), SHC(0x8582faa5), SHC(0xdad7f3a2), + SHC(0x8275a0c0), SHC(0xe70747c4), SHC(0x809dc971), SHC(0xf3742ca2), SHC(0x7fffffff), SHC(0x00000000), + SHC(0x7f0991c4), SHC(0xf054d8d5), SHC(0x7c29fbee), SHC(0xe0e60685), SHC(0x776c4edb), SHC(0xd1eef59e), + SHC(0x70e2cbc6), SHC(0xc3a94590), SHC(0x68a69e81), SHC(0xb64beacd), SHC(0x5ed77c8a), SHC(0xaa0a5b2e), + SHC(0x539b2af0), SHC(0x9f13c7d0), SHC(0x471cece7), SHC(0x9592675c), SHC(0x398cdd32), SHC(0x8daad37b), + SHC(0x2b1f34eb), SHC(0x877b7bec), SHC(0x1c0b826a), SHC(0x831c314e), SHC(0x0c8bd35e), SHC(0x809dc971), + SHC(0xfcdbd541), SHC(0x8009de7e), SHC(0xed37ef91), SHC(0x8162aa04), SHC(0xdddc5b3b), SHC(0x84a2fc62), + SHC(0xcf043ab3), SHC(0x89be50c3), SHC(0xc0e8b648), SHC(0x90a0fd4e), SHC(0xb3c0200c), SHC(0x99307ee0), + SHC(0xa7bd22ac), SHC(0xa34bdf20), SHC(0x9d0dfe54), SHC(0xaecc336c), SHC(0x93dbd6a0), SHC(0xbb8532b0), + SHC(0x8c4a142f), SHC(0xc945dfec), SHC(0x8675dc4f), SHC(0xd7d946d8), SHC(0x8275a0c0), SHC(0xe70747c4), + SHC(0x8058c94c), SHC(0xf6956fb7), SHC(0x80277872), SHC(0x0647d97c), SHC(0x81e26c16), SHC(0x15e21445), + SHC(0x8582faa5), SHC(0x25280c5e), SHC(0x8afb2cbb), SHC(0x33def287), SHC(0x9235f2ec), SHC(0x41ce1e65), + SHC(0x9b1776da), SHC(0x4ebfe8a5), SHC(0x7fffffff), SHC(0x00000000), SHC(0x7e9d55fc), SHC(0xed37ef91), + SHC(0x7a7d055b), SHC(0xdad7f3a2), SHC(0x73b5ebd1), SHC(0xc945dfec), SHC(0x6a6d98a4), SHC(0xb8e31319), + SHC(0x5ed77c8a), SHC(0xaa0a5b2e), SHC(0x5133cc94), SHC(0x9d0dfe54), SHC(0x41ce1e65), SHC(0x9235f2ec), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x1f19f97b), SHC(0x83d60412), SHC(0x0c8bd35e), SHC(0x809dc971), + SHC(0xf9b82684), SHC(0x80277872), SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xd4e0cb15), SHC(0x877b7bec), + SHC(0xc3a94590), SHC(0x8f1d343a), SHC(0xb3c0200c), SHC(0x99307ee0), SHC(0xa57d8666), SHC(0xa57d8666), + SHC(0x99307ee0), SHC(0xb3c0200c), SHC(0x8f1d343a), SHC(0xc3a94590), SHC(0x877b7bec), SHC(0xd4e0cb15), + SHC(0x8275a0c0), SHC(0xe70747c4), SHC(0x80277872), SHC(0xf9b82684), SHC(0x809dc971), SHC(0x0c8bd35e), + SHC(0x83d60412), SHC(0x1f19f97b), SHC(0x89be50c3), SHC(0x30fbc54d), SHC(0x9235f2ec), SHC(0x41ce1e65), + SHC(0x9d0dfe54), SHC(0x5133cc94), SHC(0xaa0a5b2e), SHC(0x5ed77c8a), SHC(0xb8e31319), SHC(0x6a6d98a4), + SHC(0xc945dfec), SHC(0x73b5ebd1), SHC(0xdad7f3a2), SHC(0x7a7d055b), SHC(0xed37ef91), SHC(0x7e9d55fc), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7e1d93ea), SHC(0xea1debbb), SHC(0x78848414), SHC(0xd4e0cb15), + SHC(0x6f5f02b2), SHC(0xc0e8b648), SHC(0x62f201ac), SHC(0xaecc336c), SHC(0x539b2af0), SHC(0x9f13c7d0), + SHC(0x41ce1e65), SHC(0x9235f2ec), SHC(0x2e110a62), SHC(0x8893b125), SHC(0x18f8b83c), SHC(0x8275a0c0), + SHC(0x03242abf), SHC(0x8009de7e), SHC(0xed37ef91), SHC(0x8162aa04), SHC(0xd7d946d8), SHC(0x8675dc4f), + SHC(0xc3a94590), SHC(0x8f1d343a), SHC(0xb140175b), SHC(0x9b1776da), SHC(0xa1288376), SHC(0xaa0a5b2e), + SHC(0x93dbd6a0), SHC(0xbb8532b0), SHC(0x89be50c3), SHC(0xcf043ab3), SHC(0x831c314e), SHC(0xe3f47d96), + SHC(0x80277872), SHC(0xf9b82684), SHC(0x80f66e3c), SHC(0x0fab272b), SHC(0x8582faa5), SHC(0x25280c5e), + SHC(0x8daad37b), SHC(0x398cdd32), SHC(0x99307ee0), SHC(0x4c3fdff4), SHC(0xa7bd22ac), SHC(0x5cb420e0), + SHC(0xb8e31319), SHC(0x6a6d98a4), SHC(0xcc210d79), SHC(0x7504d345), SHC(0xe0e60685), SHC(0x7c29fbee), + SHC(0xf6956fb7), SHC(0x7fa736b4), SHC(0x0c8bd35e), SHC(0x7f62368f), SHC(0x2223a4c5), SHC(0x7b5d039e), + SHC(0x36ba2014), SHC(0x73b5ebd1), SHC(0x49b41533), SHC(0x68a69e81)}; + + +# ifdef ENABLE_HR_MODE +const Word32 RotVector_15_6[2 * (90 - 15)] = { +# else +const Word16 RotVector_15_6[2 * (90 - 15)] = { +# endif + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fb02dc6), SHC(0xf7123849), SHC(0x7ec11aa5), SHC(0xee2f9369), + SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x7b0a9f8d), SHC(0xdcb7ea46), SHC(0x7847d909), SHC(0xd438af17), + SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x71046d3e), SHC(0xc3e85b18), SHC(0x6c8cd70b), SHC(0xbc2b9b05), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x620dbe8b), SHC(0xadb922b7), SHC(0x5c13539b), SHC(0xa7156f3c), + SHC(0x55a6125c), SHC(0xa0e0a15f), SHC(0x4ecdfec7), SHC(0x9b2276b0), SHC(0x4793a210), SHC(0x95e218c9), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ec11aa5), SHC(0xee2f9369), SHC(0x7b0a9f8d), SHC(0xdcb7ea46), + SHC(0x74ef0ebc), SHC(0xcbf00dbe), SHC(0x6c8cd70b), SHC(0xbc2b9b05), SHC(0x620dbe8b), SHC(0xadb922b7), + SHC(0x55a6125c), SHC(0xa0e0a15f), SHC(0x4793a210), SHC(0x95e218c9), SHC(0x381c8bb5), SHC(0x8cf45113), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x163a1a7e), SHC(0x81f1d1ce), SHC(0x04779632), SHC(0x8013f61d), + SHC(0xf29ecfb2), SHC(0x80b381ac), SHC(0xe108b40d), SHC(0x83cd5982), SHC(0xd00ce422), SHC(0x89520a1a), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7d33f0ca), SHC(0xe5632654), SHC(0x74ef0ebc), SHC(0xcbf00dbe), + SHC(0x678dde6e), SHC(0xb4c373ee), SHC(0x55a6125c), SHC(0xa0e0a15f), SHC(0x40000000), SHC(0x9126145f), + SHC(0x278dde6e), SHC(0x8643c7b3), SHC(0x0d61304e), SHC(0x80b381ac), SHC(0xf29ecfb2), SHC(0x80b381ac), + SHC(0xd8722192), SHC(0x8643c7b3), SHC(0xc0000000), SHC(0x9126145f), SHC(0xaa59eda4), SHC(0xa0e0a15f), + SHC(0x98722192), SHC(0xb4c373ee), SHC(0x8b10f144), SHC(0xcbf00dbe), SHC(0x82cc0f36), SHC(0xe5632654), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7b0a9f8d), SHC(0xdcb7ea46), SHC(0x6c8cd70b), SHC(0xbc2b9b05), + SHC(0x55a6125c), SHC(0xa0e0a15f), SHC(0x381c8bb5), SHC(0x8cf45113), SHC(0x163a1a7e), SHC(0x81f1d1ce), + SHC(0xf29ecfb2), SHC(0x80b381ac), SHC(0xd00ce422), SHC(0x89520a1a), SHC(0xb1320139), SHC(0x9b2276b0), + SHC(0x98722192), SHC(0xb4c373ee), SHC(0x87b826f7), SHC(0xd438af17), SHC(0x804fd23a), SHC(0xf7123849), + SHC(0x82cc0f36), SHC(0x1a9cd9ac), SHC(0x8efb92c2), SHC(0x3c17a4e8), SHC(0xa3ecac65), SHC(0x58ea90c4), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7847d909), SHC(0xd438af17), SHC(0x620dbe8b), SHC(0xadb922b7), + SHC(0x40000000), SHC(0x9126145f), SHC(0x163a1a7e), SHC(0x81f1d1ce), SHC(0xe9c5e582), SHC(0x81f1d1ce), + SHC(0xc0000000), SHC(0x9126145f), SHC(0x9df24175), SHC(0xadb922b7), SHC(0x87b826f7), SHC(0xd438af17), + SHC(0x80000000), SHC(0x00000000), SHC(0x87b826f7), SHC(0x2bc750e9), SHC(0x9df24175), SHC(0x5246dd49), + SHC(0xc0000000), SHC(0x6ed9eba1), SHC(0xe9c5e582), SHC(0x7e0e2e32), SHC(0x163a1a7e), SHC(0x7e0e2e32)}; + +#if defined(SUBSET_SSWB) || defined(SUBSET_SWB) || defined(SUBSET_FB) +/* Twiddle coefficients for 32x12 FFTs, generated by fft_tables.py */ +# ifdef ENABLE_HR_MODE +const Word32 RotVector_32_12[2 * (384 - 32)] = { +# else +const Word16 RotVector_32_12[2 * (384 - 32)] = { +# endif + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7ffb9d15), SHC(0xfde7dbd9), SHC(0x7fee74a2), SHC(0xfbcfdc71), + SHC(0x7fd8878e), SHC(0xf9b82684), SHC(0x7fb9d759), SHC(0xf7a0dec9), SHC(0x7f92661d), SHC(0xf58a29f2), + SHC(0x7f62368f), SHC(0xf3742ca2), SHC(0x7f294bfd), SHC(0xf15f0b74), SHC(0x7ee7aa4c), SHC(0xef4aeaf1), + SHC(0x7e9d55fc), SHC(0xed37ef91), SHC(0x7e4a5426), SHC(0xeb263dbb), SHC(0x7deeaa7a), SHC(0xe915f9ba), + SHC(0x7d8a5f40), SHC(0xe70747c4), SHC(0x7d1d7958), SHC(0xe4fa4bf1), SHC(0x7ca80038), SHC(0xe2ef2a3e), + SHC(0x7c29fbee), SHC(0xe0e60685), SHC(0x7ba3751d), SHC(0xdedf047d), SHC(0x7b1474fd), SHC(0xdcda47b9), + SHC(0x7a7d055b), SHC(0xdad7f3a2), SHC(0x79dd3098), SHC(0xd8d82b7a), SHC(0x793501a9), SHC(0xd6db1254), + SHC(0x78848414), SHC(0xd4e0cb15), SHC(0x77cbc3f2), SHC(0xd2e9786e), SHC(0x770acdec), SHC(0xd0f53ce0), + SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x757075ac), SHC(0xcd1693f7), SHC(0x74972f92), SHC(0xcb2c6a82), + SHC(0x73b5ebd1), SHC(0xc945dfec), SHC(0x72ccb9db), SHC(0xc763158e), SHC(0x71dba9ab), SHC(0xc5842c7e), + SHC(0x70e2cbc6), SHC(0xc3a94590), SHC(0x6fe2313c), SHC(0xc1d2814f), SHC(0x7fffffff), SHC(0x00000000), + SHC(0x7fee74a2), SHC(0xfbcfdc71), SHC(0x7fb9d759), SHC(0xf7a0dec9), SHC(0x7f62368f), SHC(0xf3742ca2), + SHC(0x7ee7aa4c), SHC(0xef4aeaf1), SHC(0x7e4a5426), SHC(0xeb263dbb), SHC(0x7d8a5f40), SHC(0xe70747c4), + SHC(0x7ca80038), SHC(0xe2ef2a3e), SHC(0x7ba3751d), SHC(0xdedf047d), SHC(0x7a7d055b), SHC(0xdad7f3a2), + SHC(0x793501a9), SHC(0xd6db1254), SHC(0x77cbc3f2), SHC(0xd2e9786e), SHC(0x7641af3d), SHC(0xcf043ab3), + SHC(0x74972f92), SHC(0xcb2c6a82), SHC(0x72ccb9db), SHC(0xc763158e), SHC(0x70e2cbc6), SHC(0xc3a94590), + SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x6cb2a837), SHC(0xbc6845ce), SHC(0x6a6d98a4), SHC(0xb8e31319), + SHC(0x680b5c33), SHC(0xb5715eef), SHC(0x658c9a2d), SHC(0xb2141b02), SHC(0x62f201ac), SHC(0xaecc336c), + SHC(0x603c496c), SHC(0xab9a8e6c), SHC(0x5d6c2f99), SHC(0xa8800c26), SHC(0x5a82799a), SHC(0xa57d8666), + SHC(0x577ff3da), SHC(0xa293d067), SHC(0x54657194), SHC(0x9fc3b694), SHC(0x5133cc94), SHC(0x9d0dfe54), + SHC(0x4debe4fe), SHC(0x9a7365d3), SHC(0x4a8ea111), SHC(0x97f4a3cd), SHC(0x471cece7), SHC(0x9592675c), + SHC(0x4397ba32), SHC(0x934d57c9), SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fd8878e), SHC(0xf9b82684), + SHC(0x7f62368f), SHC(0xf3742ca2), SHC(0x7e9d55fc), SHC(0xed37ef91), SHC(0x7d8a5f40), SHC(0xe70747c4), + SHC(0x7c29fbee), SHC(0xe0e60685), SHC(0x7a7d055b), SHC(0xdad7f3a2), SHC(0x78848414), SHC(0xd4e0cb15), + SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x73b5ebd1), SHC(0xc945dfec), SHC(0x70e2cbc6), SHC(0xc3a94590), + SHC(0x6dca0d14), SHC(0xbe31e19b), SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x66cf8120), SHC(0xb3c0200c), + SHC(0x62f201ac), SHC(0xaecc336c), SHC(0x5ed77c8a), SHC(0xaa0a5b2e), SHC(0x5a82799a), SHC(0xa57d8666), + SHC(0x55f5a4d2), SHC(0xa1288376), SHC(0x5133cc94), SHC(0x9d0dfe54), SHC(0x4c3fdff4), SHC(0x99307ee0), + SHC(0x471cece7), SHC(0x9592675c), SHC(0x41ce1e65), SHC(0x9235f2ec), SHC(0x3c56ba70), SHC(0x8f1d343a), + SHC(0x36ba2014), SHC(0x8c4a142f), SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x2b1f34eb), SHC(0x877b7bec), + SHC(0x25280c5e), SHC(0x8582faa5), SHC(0x1f19f97b), SHC(0x83d60412), SHC(0x18f8b83c), SHC(0x8275a0c0), + SHC(0x12c8106f), SHC(0x8162aa04), SHC(0x0c8bd35e), SHC(0x809dc971), SHC(0x0647d97c), SHC(0x80277872), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7fb9d759), SHC(0xf7a0dec9), SHC(0x7ee7aa4c), SHC(0xef4aeaf1), + SHC(0x7d8a5f40), SHC(0xe70747c4), SHC(0x7ba3751d), SHC(0xdedf047d), SHC(0x793501a9), SHC(0xd6db1254), + SHC(0x7641af3d), SHC(0xcf043ab3), SHC(0x72ccb9db), SHC(0xc763158e), SHC(0x6ed9eba1), SHC(0xc0000000), + SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x658c9a2d), SHC(0xb2141b02), SHC(0x603c496c), SHC(0xab9a8e6c), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x54657194), SHC(0x9fc3b694), SHC(0x4debe4fe), SHC(0x9a7365d3), + SHC(0x471cece7), SHC(0x9592675c), SHC(0x40000000), SHC(0x9126145f), SHC(0x389cea72), SHC(0x8d334625), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x2924edac), SHC(0x86cafe57), SHC(0x2120fb83), SHC(0x845c8ae3), + SHC(0x18f8b83c), SHC(0x8275a0c0), SHC(0x10b5150f), SHC(0x811855b4), SHC(0x085f2137), SHC(0x804628a7), + SHC(0x00000000), SHC(0x80000000), SHC(0xf7a0dec9), SHC(0x804628a7), SHC(0xef4aeaf1), SHC(0x811855b4), + SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xdedf047d), SHC(0x845c8ae3), SHC(0xd6db1254), SHC(0x86cafe57), + SHC(0xcf043ab3), SHC(0x89be50c3), SHC(0xc763158e), SHC(0x8d334625), SHC(0x7fffffff), SHC(0x00000000), + SHC(0x7f92661d), SHC(0xf58a29f2), SHC(0x7e4a5426), SHC(0xeb263dbb), SHC(0x7c29fbee), SHC(0xe0e60685), + SHC(0x793501a9), SHC(0xd6db1254), SHC(0x757075ac), SHC(0xcd1693f7), SHC(0x70e2cbc6), SHC(0xc3a94590), + SHC(0x6b93d02e), SHC(0xbaa34bf4), SHC(0x658c9a2d), SHC(0xb2141b02), SHC(0x5ed77c8a), SHC(0xaa0a5b2e), + SHC(0x577ff3da), SHC(0xa293d067), SHC(0x4f9292dc), SHC(0x9bbd4282), SHC(0x471cece7), SHC(0x9592675c), + SHC(0x3e2d7eb1), SHC(0x901dcec4), SHC(0x34d3957e), SHC(0x8b68d06e), SHC(0x2b1f34eb), SHC(0x877b7bec), + SHC(0x2120fb83), SHC(0x845c8ae3), SHC(0x16ea0646), SHC(0x82115586), SHC(0x0c8bd35e), SHC(0x809dc971), + SHC(0x02182427), SHC(0x800462eb), SHC(0xf7a0dec9), SHC(0x804628a7), SHC(0xed37ef91), SHC(0x8162aa04), + SHC(0xe2ef2a3e), SHC(0x8357ffc8), SHC(0xd8d82b7a), SHC(0x8622cf68), SHC(0xcf043ab3), SHC(0x89be50c3), + SHC(0xc5842c7e), SHC(0x8e245655), SHC(0xbc6845ce), SHC(0x934d57c9), SHC(0xb3c0200c), SHC(0x99307ee0), + SHC(0xab9a8e6c), SHC(0x9fc3b694), SHC(0xa405847e), SHC(0xa6fbbc59), SHC(0x9d0dfe54), SHC(0xaecc336c), + SHC(0x96bfea3d), SHC(0xb727b9f7), SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f62368f), SHC(0xf3742ca2), + SHC(0x7d8a5f40), SHC(0xe70747c4), SHC(0x7a7d055b), SHC(0xdad7f3a2), SHC(0x7641af3d), SHC(0xcf043ab3), + SHC(0x70e2cbc6), SHC(0xc3a94590), SHC(0x6a6d98a4), SHC(0xb8e31319), SHC(0x62f201ac), SHC(0xaecc336c), + SHC(0x5a82799a), SHC(0xa57d8666), SHC(0x5133cc94), SHC(0x9d0dfe54), SHC(0x471cece7), SHC(0x9592675c), + SHC(0x3c56ba70), SHC(0x8f1d343a), SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x25280c5e), SHC(0x8582faa5), + SHC(0x18f8b83c), SHC(0x8275a0c0), SHC(0x0c8bd35e), SHC(0x809dc971), SHC(0x00000000), SHC(0x80000000), + SHC(0xf3742ca2), SHC(0x809dc971), SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xdad7f3a2), SHC(0x8582faa5), + SHC(0xcf043ab3), SHC(0x89be50c3), SHC(0xc3a94590), SHC(0x8f1d343a), SHC(0xb8e31319), SHC(0x9592675c), + SHC(0xaecc336c), SHC(0x9d0dfe54), SHC(0xa57d8666), SHC(0xa57d8666), SHC(0x9d0dfe54), SHC(0xaecc336c), + SHC(0x9592675c), SHC(0xb8e31319), SHC(0x8f1d343a), SHC(0xc3a94590), SHC(0x89be50c3), SHC(0xcf043ab3), + SHC(0x8582faa5), SHC(0xdad7f3a2), SHC(0x8275a0c0), SHC(0xe70747c4), SHC(0x809dc971), SHC(0xf3742ca2), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7f294bfd), SHC(0xf15f0b74), SHC(0x7ca80038), SHC(0xe2ef2a3e), + SHC(0x78848414), SHC(0xd4e0cb15), SHC(0x72ccb9db), SHC(0xc763158e), SHC(0x6b93d02e), SHC(0xbaa34bf4), + SHC(0x62f201ac), SHC(0xaecc336c), SHC(0x590443a7), SHC(0xa405847e), SHC(0x4debe4fe), SHC(0x9a7365d3), + SHC(0x41ce1e65), SHC(0x9235f2ec), SHC(0x34d3957e), SHC(0x8b68d06e), SHC(0x2727d486), SHC(0x8622cf68), + SHC(0x18f8b83c), SHC(0x8275a0c0), SHC(0x0a75d60e), SHC(0x806d99e3), SHC(0xfbcfdc71), SHC(0x80118b5e), + SHC(0xed37ef91), SHC(0x8162aa04), SHC(0xdedf047d), SHC(0x845c8ae3), SHC(0xd0f53ce0), SHC(0x88f53214), + SHC(0xc3a94590), SHC(0x8f1d343a), SHC(0xb727b9f7), SHC(0x96bfea3d), SHC(0xab9a8e6c), SHC(0x9fc3b694), + SHC(0xa1288376), SHC(0xaa0a5b2e), SHC(0x97f4a3cd), SHC(0xb5715eef), SHC(0x901dcec4), SHC(0xc1d2814f), + SHC(0x89be50c3), SHC(0xcf043ab3), SHC(0x84eb8b03), SHC(0xdcda47b9), SHC(0x81b5abda), SHC(0xeb263dbb), + SHC(0x80277872), SHC(0xf9b82684), SHC(0x804628a7), SHC(0x085f2137), SHC(0x82115586), SHC(0x16ea0646), + SHC(0x8582faa5), SHC(0x25280c5e), SHC(0x8a8f8a54), SHC(0x32e96c09), SHC(0x7fffffff), SHC(0x00000000), + SHC(0x7ee7aa4c), SHC(0xef4aeaf1), SHC(0x7ba3751d), SHC(0xdedf047d), SHC(0x7641af3d), SHC(0xcf043ab3), + SHC(0x6ed9eba1), SHC(0xc0000000), SHC(0x658c9a2d), SHC(0xb2141b02), SHC(0x5a82799a), SHC(0xa57d8666), + SHC(0x4debe4fe), SHC(0x9a7365d3), SHC(0x40000000), SHC(0x9126145f), SHC(0x30fbc54d), SHC(0x89be50c3), + SHC(0x2120fb83), SHC(0x845c8ae3), SHC(0x10b5150f), SHC(0x811855b4), SHC(0x00000000), SHC(0x80000000), + SHC(0xef4aeaf1), SHC(0x811855b4), SHC(0xdedf047d), SHC(0x845c8ae3), SHC(0xcf043ab3), SHC(0x89be50c3), + SHC(0xc0000000), SHC(0x9126145f), SHC(0xb2141b02), SHC(0x9a7365d3), SHC(0xa57d8666), SHC(0xa57d8666), + SHC(0x9a7365d3), SHC(0xb2141b02), SHC(0x9126145f), SHC(0xc0000000), SHC(0x89be50c3), SHC(0xcf043ab3), + SHC(0x845c8ae3), SHC(0xdedf047d), SHC(0x811855b4), SHC(0xef4aeaf1), SHC(0x80000000), SHC(0x00000000), + SHC(0x811855b4), SHC(0x10b5150f), SHC(0x845c8ae3), SHC(0x2120fb83), SHC(0x89be50c3), SHC(0x30fbc54d), + SHC(0x9126145f), SHC(0x40000000), SHC(0x9a7365d3), SHC(0x4debe4fe), SHC(0xa57d8666), SHC(0x5a82799a), + SHC(0xb2141b02), SHC(0x658c9a2d), SHC(0x7fffffff), SHC(0x00000000), SHC(0x7e9d55fc), SHC(0xed37ef91), + SHC(0x7a7d055b), SHC(0xdad7f3a2), SHC(0x73b5ebd1), SHC(0xc945dfec), SHC(0x6a6d98a4), SHC(0xb8e31319), + SHC(0x5ed77c8a), SHC(0xaa0a5b2e), SHC(0x5133cc94), SHC(0x9d0dfe54), SHC(0x41ce1e65), SHC(0x9235f2ec), + SHC(0x30fbc54d), SHC(0x89be50c3), SHC(0x1f19f97b), SHC(0x83d60412), SHC(0x0c8bd35e), SHC(0x809dc971), + SHC(0xf9b82684), SHC(0x80277872), SHC(0xe70747c4), SHC(0x8275a0c0), SHC(0xd4e0cb15), SHC(0x877b7bec), + SHC(0xc3a94590), SHC(0x8f1d343a), SHC(0xb3c0200c), SHC(0x99307ee0), SHC(0xa57d8666), SHC(0xa57d8666), + SHC(0x99307ee0), SHC(0xb3c0200c), SHC(0x8f1d343a), SHC(0xc3a94590), SHC(0x877b7bec), SHC(0xd4e0cb15), + SHC(0x8275a0c0), SHC(0xe70747c4), SHC(0x80277872), SHC(0xf9b82684), SHC(0x809dc971), SHC(0x0c8bd35e), + SHC(0x83d60412), SHC(0x1f19f97b), SHC(0x89be50c3), SHC(0x30fbc54d), SHC(0x9235f2ec), SHC(0x41ce1e65), + SHC(0x9d0dfe54), SHC(0x5133cc94), SHC(0xaa0a5b2e), SHC(0x5ed77c8a), SHC(0xb8e31319), SHC(0x6a6d98a4), + SHC(0xc945dfec), SHC(0x73b5ebd1), SHC(0xdad7f3a2), SHC(0x7a7d055b), SHC(0xed37ef91), SHC(0x7e9d55fc), + SHC(0x7fffffff), SHC(0x00000000), SHC(0x7e4a5426), SHC(0xeb263dbb), SHC(0x793501a9), SHC(0xd6db1254), + SHC(0x70e2cbc6), SHC(0xc3a94590), SHC(0x658c9a2d), SHC(0xb2141b02), SHC(0x577ff3da), SHC(0xa293d067), + SHC(0x471cece7), SHC(0x9592675c), SHC(0x34d3957e), SHC(0x8b68d06e), SHC(0x2120fb83), SHC(0x845c8ae3), + SHC(0x0c8bd35e), SHC(0x809dc971), SHC(0xf7a0dec9), SHC(0x804628a7), SHC(0xe2ef2a3e), SHC(0x8357ffc8), + SHC(0xcf043ab3), SHC(0x89be50c3), SHC(0xbc6845ce), SHC(0x934d57c9), SHC(0xab9a8e6c), SHC(0x9fc3b694), + SHC(0x9d0dfe54), SHC(0xaecc336c), SHC(0x9126145f), SHC(0xc0000000), SHC(0x88343c0e), SHC(0xd2e9786e), + SHC(0x8275a0c0), SHC(0xe70747c4), SHC(0x80118b5e), SHC(0xfbcfdc71), SHC(0x811855b4), SHC(0x10b5150f), + SHC(0x8582faa5), SHC(0x25280c5e), SHC(0x8d334625), SHC(0x389cea72), SHC(0x97f4a3cd), SHC(0x4a8ea111), + SHC(0xa57d8666), SHC(0x5a82799a), SHC(0xb5715eef), SHC(0x680b5c33), SHC(0xc763158e), SHC(0x72ccb9db), + SHC(0xdad7f3a2), SHC(0x7a7d055b), SHC(0xef4aeaf1), SHC(0x7ee7aa4c), SHC(0x0430238f), SHC(0x7fee74a2), + SHC(0x18f8b83c), SHC(0x7d8a5f40), SHC(0x2d168792), SHC(0x77cbc3f2), SHC(0x7fffffff), SHC(0x00000000), + SHC(0x7deeaa7a), SHC(0xe915f9ba), SHC(0x77cbc3f2), SHC(0xd2e9786e), SHC(0x6dca0d14), SHC(0xbe31e19b), + SHC(0x603c496c), SHC(0xab9a8e6c), SHC(0x4f9292dc), SHC(0x9bbd4282), SHC(0x3c56ba70), SHC(0x8f1d343a), + SHC(0x2727d486), SHC(0x8622cf68), SHC(0x10b5150f), SHC(0x811855b4), SHC(0xf9b82684), SHC(0x80277872), + SHC(0xe2ef2a3e), SHC(0x8357ffc8), SHC(0xcd1693f7), SHC(0x8a8f8a54), SHC(0xb8e31319), SHC(0x9592675c), + SHC(0xa6fbbc59), SHC(0xa405847e), SHC(0x97f4a3cd), SHC(0xb5715eef), SHC(0x8c4a142f), SHC(0xc945dfec), + SHC(0x845c8ae3), SHC(0xdedf047d), SHC(0x806d99e3), SHC(0xf58a29f2), SHC(0x809dc971), SHC(0x0c8bd35e), + SHC(0x84eb8b03), SHC(0x2325b847), SHC(0x8d334625), SHC(0x389cea72), SHC(0x99307ee0), SHC(0x4c3fdff4), + SHC(0xa8800c26), SHC(0x5d6c2f99), SHC(0xbaa34bf4), SHC(0x6b93d02e), SHC(0xcf043ab3), SHC(0x7641af3d), + SHC(0xe4fa4bf1), SHC(0x7d1d7958), SHC(0xfbcfdc71), SHC(0x7fee74a2), SHC(0x12c8106f), SHC(0x7e9d55fc), + SHC(0x2924edac), SHC(0x793501a9), SHC(0x3e2d7eb1), SHC(0x6fe2313c), SHC(0x5133cc94), SHC(0x62f201ac), + SHC(0x619a7dce), SHC(0x52cf758f)}; + + +# endif /* !defined(__XTENSA__) */ + + +/* Inverse square root table for operands running from 0.5 to ~1.0 + + (Word32) (0.5 + 1.0/sqrt((op)/CDKpow(2.0,31))) + + Note: First value is not rounded for accuracy reasons + + Implicit exponent is 1 + + Example: 0x5A82799A = Isqrt(0x40000000), exponent=1 +*/ +const Word32 isqrt_table[128 + 2] = { + 0x5A827999, 0x5A287E03, 0x59CF8CBC, 0x5977A0AC, 0x5920B4DF, 0x58CAC480, 0x5875CADE, 0x5821C364, 0x57CEA99D, + 0x577C7930, 0x572B2DE0, 0x56DAC38E, 0x568B3632, 0x563C81E0, 0x55EEA2C4, 0x55A19522, 0x55555555, 0x5509DFD0, + 0x54BF311A, 0x547545D0, 0x542C1AA4, 0x53E3AC5B, 0x539BF7CD, 0x5354F9E7, 0x530EAFA5, 0x52C91618, 0x52842A5F, + 0x523FE9AC, 0x51FC5140, 0x51B95E6B, 0x51770E8F, 0x51355F1A, 0x50F44D89, 0x50B3D768, 0x5073FA50, 0x5034B3E7, + 0x4FF601E0, 0x4FB7E1FA, 0x4F7A5202, 0x4F3D4FCF, 0x4F00D944, 0x4EC4EC4F, 0x4E8986EA, 0x4E4EA718, 0x4E144AE9, + 0x4DDA7073, 0x4DA115DA, 0x4D683948, 0x4D2FD8F4, 0x4CF7F31B, 0x4CC08605, 0x4C899000, 0x4C530F65, 0x4C1D0294, + 0x4BE767F5, 0x4BB23DF9, 0x4B7D8317, 0x4B4935CF, 0x4B1554A6, 0x4AE1DE2A, 0x4AAED0F0, 0x4A7C2B93, 0x4A49ECB3, + 0x4A1812FA, 0x49E69D16, 0x49B589BB, 0x4984D7A4, 0x49548592, 0x49249249, 0x48F4FC97, 0x48C5C34B, 0x4896E53D, + 0x48686148, 0x483A364D, 0x480C6332, 0x47DEE6E1, 0x47B1C049, 0x4784EE60, 0x4758701C, 0x472C447C, 0x47006A81, + 0x46D4E130, 0x46A9A794, 0x467EBCBA, 0x46541FB4, 0x4629CF98, 0x45FFCB80, 0x45D6128A, 0x45ACA3D5, 0x45837E88, + 0x455AA1CB, 0x45320CC8, 0x4509BEB0, 0x44E1B6B4, 0x44B9F40B, 0x449275ED, 0x446B3B96, 0x44444444, 0x441D8F3B, + 0x43F71BBF, 0x43D0E917, 0x43AAF68F, 0x43854374, 0x435FCF15, 0x433A98C6, 0x43159FDC, 0x42F0E3AE, 0x42CC6398, + 0x42A81EF6, 0x42841527, 0x4260458E, 0x423CAF8D, 0x4219528B, 0x41F62DF2, 0x41D3412A, 0x41B08BA2, 0x418E0CC8, + 0x416BC40D, 0x4149B0E5, 0x4127D2C3, 0x41062920, 0x40E4B374, 0x40C3713B, 0x40A261EF, 0x40818512, 0x4060DA22, + 0x404060A1, 0x40201814, 0x40000000, 0x3FE017EC, +}; + +const Word32 Log2_16_table1[16] = { + 0, 2934766, 5701737, 8319067, 10802114, 13163988, 15415967, 17567824, + 19628084, 21604229, 23502857, 25329821, 27090336, 28789065, 30430199, 32017515, +}; + +const Word16 Log2_16_table2[16] = { + 1433, 1351, 1278, 1212, 1153, 1099, 1051, 1006, 965, 927, 892, 860, 829, 801, 775, 750, +}; + +const Word32 InvLog2_16_table1[64] = { + 1073741824, 1085434106, 1097253708, 1109202018, 1121280436, 1133490379, 1145833280, 1158310587, + 1170923762, 1183674286, 1196563654, 1209593378, 1222764986, 1236080024, 1249540052, 1263146652, + 1276901417, 1290805962, 1304861917, 1319070932, 1333434672, 1347954824, 1362633090, 1377471191, + 1392470869, 1407633882, 1422962010, 1438457051, 1454120821, 1469955159, 1485961921, 1502142985, + 1518500250, 1535035634, 1551751076, 1568648537, 1585730000, 1602997467, 1620452965, 1638098541, + 1655936265, 1673968228, 1692196547, 1710623359, 1729250827, 1748081133, 1767116489, 1786359126, + 1805811301, 1825475297, 1845353420, 1865448001, 1885761398, 1906295993, 1927054196, 1948038440, + 1969251188, 1990694927, 2012372174, 2034285470, 2056437387, 2078830522, 2101467502, 2124350982, +}; + +const Word16 InvLog2_16_table2[64] = { + 11418, 11543, 11668, 11795, 11924, 12054, 12185, 12318, 12452, 12587, 12724, 12863, 13003, 13145, 13288, 13432, + 13579, 13727, 13876, 14027, 14180, 14334, 14490, 14648, 14808, 14969, 15132, 15297, 15463, 15632, 15802, 15974, + 16148, 16324, 16501, 16681, 16863, 17046, 17232, 17420, 17609, 17801, 17995, 18191, 18389, 18589, 18792, 18996, + 19203, 19412, 19624, 19837, 20053, 20272, 20492, 20716, 20941, 21169, 21400, 21633, 21868, 22106, 22347, 22590, +}; + +const UWord8 gf16_mult_table[256] = { + /* gf16_mult_table[a | (b << 4)] contains the product of a and b in GF(16) */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 0, 2, 4, 6, 8, 10, 12, 14, 3, 1, 7, 5, 11, 9, 15, 13, 0, 3, 6, 5, 12, 15, 10, 9, 11, 8, + 13, 14, 7, 4, 1, 2, 0, 4, 8, 12, 3, 7, 11, 15, 6, 2, 14, 10, 5, 1, 13, 9, 0, 5, 10, 15, 7, 2, 13, + 8, 14, 11, 4, 1, 9, 12, 3, 6, 0, 6, 12, 10, 11, 13, 7, 1, 5, 3, 9, 15, 14, 8, 2, 4, 0, 7, 14, 9, + 15, 8, 1, 6, 13, 10, 3, 4, 2, 5, 12, 11, 0, 8, 3, 11, 6, 14, 5, 13, 12, 4, 15, 7, 10, 2, 9, 1, 0, + 9, 1, 8, 2, 11, 3, 10, 4, 13, 5, 12, 6, 15, 7, 14, 0, 10, 7, 13, 14, 4, 9, 3, 15, 5, 8, 2, 1, 11, + 6, 12, 0, 11, 5, 14, 10, 1, 15, 4, 7, 12, 2, 9, 13, 6, 8, 3, 0, 12, 11, 7, 5, 9, 14, 2, 10, 6, 1, + 13, 15, 3, 4, 8, 0, 13, 9, 4, 1, 12, 8, 5, 2, 15, 11, 6, 3, 14, 10, 7, 0, 14, 15, 1, 13, 3, 2, 12, + 9, 7, 6, 8, 4, 10, 11, 5, 0, 15, 13, 2, 9, 6, 4, 11, 1, 14, 12, 3, 8, 7, 5, 10, +}; + +const UWord8 rs16_elp_deg2_table[256] = { + /* If the polynomial x^2 + ax + b has distinct non-zero roots z1 and z2 in GF(16), * + * then table entry a + 16*b contains log_g(z1) | log_g(z2) << 4, and otherwise it * + * contains 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, + 105, 195, 0, 210, 0, 225, 0, 180, 120, 0, 0, 121, 0, 16, 0, 211, 0, 0, 181, 0, 0, 106, + 196, 226, 0, 0, 0, 214, 64, 0, 199, 0, 0, 0, 0, 0, 49, 184, 0, 154, 0, 229, 0, 227, + 182, 0, 0, 32, 0, 0, 0, 197, 0, 0, 122, 0, 212, 152, 0, 203, 0, 158, 128, 0, 0, 0, + 98, 113, 218, 0, 0, 0, 53, 0, 0, 65, 0, 0, 185, 110, 215, 80, 0, 0, 200, 0, 50, 0, + 0, 0, 0, 130, 205, 115, 0, 0, 160, 190, 145, 0, 0, 0, 0, 0, 0, 100, 0, 0, 168, 198, + 0, 183, 33, 0, 0, 48, 228, 213, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 179, 0, 224, 104, + 0, 194, 149, 0, 0, 209, 0, 0, 0, 189, 99, 84, 0, 129, 0, 0, 0, 144, 0, 0, 234, 114, + 0, 0, 82, 0, 0, 0, 0, 217, 202, 0, 112, 52, 232, 0, 97, 0, 0, 0, 126, 0, 81, 201, + 0, 36, 216, 186, 0, 0, 0, 96, 0, 0, 0, 0, 0, 88, 0, 0, 0, 103, 0, 148, 178, 0, + 208, 193, 0, 58, 0, 0, 0, 0, 0, 161, 206, 0, 116, 0, 101, 0, 0, 56, 146, 176, 0, 0, + 147, 162, 222, 0, 132, 0, 0, 0, 0, 0, 177, 117, 192, 0, +}; + +const UWord16 rs16_elp_deg3_table[256] = { + /* If the polynomial x^3 + ax + b has distinct roots z1, z2 and z3 in GF(16), * + * then table entry a + 16*b contains z1) | z2 << 4 | z3 << 8, and otherwise it * + * contains 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1889, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2977, 0, 0, 0, 0, 0, 3990, 1859, 0, + 0, 0, 0, 0, 0, 0, 3521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1874, 0, 3718, 0, 0, 0, + 0, 0, 0, 2433, 0, 0, 1619, 0, 0, 0, 0, 3495, 0, 0, 0, 0, 0, 0, 4065, 0, 0, 0, + 0, 0, 0, 3255, 0, 0, 0, 1602, 0, 3735, 0, 0, 0, 0, 3238, 801, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3510, 0, 0, 0, 0, 1345, 3975, 0, 0, 0, 0, 0, 0, 0, 0, 3778, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2947, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3476, 0, 4005, 0, 3461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3748, 0, 0, 2962, 0, 0, 0, 0, 4035, 0, 0, 4020, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3221, 0, 0, 0, 0, 0, 0, 2690, + 0, 0, 0, 3795, 0, 0, 0, 4050, 0, 0, 0, 0, 0, 3204, 3765, 0, 0, 0, 0, 0, 2707, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +#ifdef ENABLE_HR_MODE +const Word32 invSqrtTab[(128 + 2)] = { + 0x5A827999, 0x5A287E03, 0x59CF8CBC, 0x5977A0AC, 0x5920B4DF, 0x58CAC480, 0x5875CADE, 0x5821C364, 0x57CEA99D, + 0x577C7930, 0x572B2DE0, 0x56DAC38E, 0x568B3632, 0x563C81E0, 0x55EEA2C4, 0x55A19522, 0x55555555, 0x5509DFD0, + 0x54BF311A, 0x547545D0, 0x542C1AA4, 0x53E3AC5B, 0x539BF7CD, 0x5354F9E7, 0x530EAFA5, 0x52C91618, 0x52842A5F, + 0x523FE9AC, 0x51FC5140, 0x51B95E6B, 0x51770E8F, 0x51355F1A, 0x50F44D89, 0x50B3D768, 0x5073FA50, 0x5034B3E7, + 0x4FF601E0, 0x4FB7E1FA, 0x4F7A5202, 0x4F3D4FCF, 0x4F00D944, 0x4EC4EC4F, 0x4E8986EA, 0x4E4EA718, 0x4E144AE9, + 0x4DDA7073, 0x4DA115DA, 0x4D683948, 0x4D2FD8F4, 0x4CF7F31B, 0x4CC08605, 0x4C899000, 0x4C530F65, 0x4C1D0294, + 0x4BE767F5, 0x4BB23DF9, 0x4B7D8317, 0x4B4935CF, 0x4B1554A6, 0x4AE1DE2A, 0x4AAED0F0, 0x4A7C2B93, 0x4A49ECB3, + 0x4A1812FA, 0x49E69D16, 0x49B589BB, 0x4984D7A4, 0x49548592, 0x49249249, 0x48F4FC97, 0x48C5C34B, 0x4896E53D, + 0x48686148, 0x483A364D, 0x480C6332, 0x47DEE6E1, 0x47B1C049, 0x4784EE60, 0x4758701C, 0x472C447C, 0x47006A81, + 0x46D4E130, 0x46A9A794, 0x467EBCBA, 0x46541FB4, 0x4629CF98, 0x45FFCB80, 0x45D6128A, 0x45ACA3D5, 0x45837E88, + 0x455AA1CB, 0x45320CC8, 0x4509BEB0, 0x44E1B6B4, 0x44B9F40B, 0x449275ED, 0x446B3B96, 0x44444444, 0x441D8F3B, + 0x43F71BBF, 0x43D0E917, 0x43AAF68F, 0x43854374, 0x435FCF15, 0x433A98C6, 0x43159FDC, 0x42F0E3AE, 0x42CC6398, + 0x42A81EF6, 0x42841527, 0x4260458E, 0x423CAF8D, 0x4219528B, 0x41F62DF2, 0x41D3412A, 0x41B08BA2, 0x418E0CC8, + 0x416BC40D, 0x4149B0E5, 0x4127D2C3, 0x41062920, 0x40E4B374, 0x40C3713B, 0x40A261EF, 0x40818512, 0x4060DA22, + 0x404060A1, 0x40201814, 0x40000000, 0x3FE017EC /* , 0x3FC05F61 */ +}; +#endif diff --git a/lib_lc3plus/rom_basop_util_lc3plus.h b/lib_lc3plus/rom_basop_util_lc3plus.h new file mode 100644 index 0000000000000000000000000000000000000000..11d90c77b21d7751eab95543c1dcfc562ce934c5 --- /dev/null +++ b/lib_lc3plus/rom_basop_util_lc3plus.h @@ -0,0 +1,172 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#ifndef __ROM_BASOP_UTIL_LC3PLUS_H__ +#define __ROM_BASOP_UTIL_LC3PLUS_H__ + +#include "basop_util_lc3plus.h" +#include "functions.h" + +#define LD_INT_TAB_LEN 120 +#define INV_TABLE_SIZE 256 +#define SQRT_TABLE_SIZE 256 + +#ifndef CHEAP_NORM_SIZE +#define CHEAP_NORM_SIZE 161 +#endif + +#define MINSFTAB 7 +#define MAXSFTAB 25 + +#ifdef ENABLE_HR_MODE +#define SHC(x) ((Word32)x) +#else +#define SHC(x) WORD322WORD16((Word32)x) +#endif + +/** + * \brief Lookup-Table for binary logarithm + */ +extern const Word16 ldCoeff_lc3plus[7]; + +/** + \brief Lookup-Table for binary power algorithm +*/ +extern const UWord32 exp2_tab_long_lc3plus[32]; + +/** + \brief Lookup-Table for binary power algorithm +*/ +extern const UWord32 exp2w_tab_long_lc3plus[32]; + +/** + \brief Lookup-Table for binary power algorithm +*/ +extern const UWord32 exp2x_tab_long_lc3plus[32]; + +/** + * \brief 1/x, x=[0,1,2,3...] table + */ +#ifdef ENABLE_HR_MODE +extern const Word16 InvIntTable[74]; +#else +extern const Word16 InvIntTable[32]; +#endif + +/** + * \ brief Lookup for sine tables and windows. + */ +void BASOP_getTables( +#ifdef ENABLE_HR_MODE + const PWord32 **ptwiddle, + const PWord32 **sin_twiddle, +#else + const PWord16 **ptwiddle, + const PWord16 **sin_twiddle, +#endif + Word16 *sin_step, + Word16 length); + +extern const Word32 RealFFT20_twid[6]; +extern const Word32 RealFFT32_twid[10]; +extern const Word32 RealFFT40_twid[12]; +extern const Word32 RealFFT60_twid[17]; +extern const Word32 RealFFT64_twid[18]; +extern const Word32 RealFFT80_twid[22]; +extern const Word32 RealFFT96_twid[26]; +extern const Word32 RealFFT128_twid[34]; +extern const Word32 RealFFT192_twid[50]; +extern const Word32 RealFFT256_twid[66]; +extern const Word32 RealFFT384_twid[98]; +extern const Word32 RealFFT512_twid[130]; +extern const Word32 RealFFT768_twid[194]; + +#ifdef ENABLE_HR_MODE +extern const PWord32 SineTable480[241]; +extern const PWord32 SineTable320[161]; +extern const PWord32 SineTable960[481]; +#else +extern const PWord16 SineTable480[241]; +extern const PWord16 SineTable320[161]; +extern const PWord16 SineTable960[481]; +#endif + +#ifdef ENABLE_HR_MODE +extern const Word32 RotVector_15_6[2 * (90 - 15)]; +#else +extern const Word16 RotVector_15_6[2 * (90 - 15)]; +#endif + +extern const Word32 RotVector_32_32[2 * 20]; +extern const Word32 RotVector_40_32[2 * 28]; + +#ifdef ENABLE_HR_MODE +extern const Word32 RotVector_320[2 * (320 - 20)]; +#else +extern const Word16 RotVector_320[2 * (320 - 20)]; +#endif + +#ifdef ENABLE_HR_MODE +extern const Word32 RotVector_360[2 * (360 - 30)]; +#else +extern const Word16 RotVector_360[2 * (360 - 30)]; +#endif + +#ifdef ENABLE_HR_MODE +extern const Word32 RotVector_480[2 * (480 - 30)]; +#else +extern const Word16 RotVector_480[2 * (480 - 30)]; +#endif + +#ifdef ENABLE_HR_MODE +#ifdef CR8_G_ADD_75MS +extern const Word32 RotVector_720[2 * (720 - 30)]; +#endif +extern const Word32 RotVector_960[2 * (480 - 60)]; +#else +extern const Word16 RotVector_960[2 * (480 - 60)]; +#endif + +#ifdef ENABLE_HR_MODE +extern const Word32 RotVector_30_16[2 * (480 - 30)]; +#endif + +#ifdef ENABLE_HR_MODE +extern const Word32 RotVector_32_8[2 * (256 - 32)]; +#else +extern const Word16 RotVector_32_8[2 * (256 - 32)]; +#endif + +#if defined(SUBSET_SSWB) || defined(SUBSET_SWB) || defined(SUBSET_FB) +#ifdef ENABLE_HR_MODE +extern const Word32 RotVector_32_12[2 * (384 - 32)]; +#else +extern const Word16 RotVector_32_12[2 * (384 - 32)]; +#endif +#else +#define RotVector_32_12 NULL +#endif + +extern const Word32 isqrt_table[128 + 2]; + +extern const Word32 Log2_16_table1[16]; +extern const Word16 Log2_16_table2[16]; + +extern const Word32 InvLog2_16_table1[64]; +extern const Word16 InvLog2_16_table2[64]; + +extern const UWord8 gf16_mult_table[256]; +extern const UWord8 rs16_elp_deg2_table[256]; +extern const UWord16 rs16_elp_deg3_table[256]; + +#ifdef ENABLE_HR_MODE +extern const Word32 invSqrtTab[(128 + 2)]; +#endif + +#endif diff --git a/lib_lc3plus/scale_signal24_fx.c b/lib_lc3plus/scale_signal24_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..548788d2a020f96bc64b48ff5ec6833edfa1e4f0 --- /dev/null +++ b/lib_lc3plus/scale_signal24_fx.c @@ -0,0 +1,121 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +void scale_signal24_fx(Word32 x[], /* i: time input signal */ +#ifdef ENABLE_HR_MODE + Word32 x_scaled[], +#else + Word16 x_scaled[], +#endif + Word16 *x_exp, +#ifdef ENABLE_HR_MODE + Word32 mdct_mem[], +#else + Word16 mdct_mem[], +#endif + Word16 mdct_mem_len, + Word16 resample_mem_in[], Word16 resample_mem_in_len, Word32 resample_mem_in50[], + Word16 resample_mem_out[], Word16 resample_mem_out_len, Word32 mdct_mem32[], Word16 N, + Word32 resamp_mem32[], Word16 mem_s12k8[], Word16 *resamp_scale) +{ + Word16 i; + Word16 s; + Word16 scales[6]; + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("scale_signal24_fx", sizeof(struct { + Word16 i; + Word16 s; + Word16 scales[6]; + })); +#endif + + /* Scale input for 24 bit case */ + /* assure 24 bit input */ + FOR (i = 0; i < N; i++) + { + IF (x[i] >= 0) + { + x[i] = L_and(x[i], 0x007fffff); + } + ELSE + { + x[i] = (Word32)L_or( (UWord32)x[i], 0xff800000); + } + } + + /* Find maximum exponent */ + scales[0] = sub(15 + 8, getScaleFactor32_0(x, N)); + scales[1] = sub(15 + 8, getScaleFactor32_0(mdct_mem32, mdct_mem_len)); + scales[2] = sub(15 + 8, getScaleFactor32_0(resamp_mem32, resample_mem_in_len)); + scales[3] = sub(sub(*resamp_scale, 2), getScaleFactor32_0(resample_mem_in50, 2)); + scales[4] = sub(sub(*resamp_scale, 2), getScaleFactor16_0(resample_mem_out, resample_mem_out_len)); + scales[5] = sub(sub(*resamp_scale, 2), getScaleFactor16_0(mem_s12k8, 3)); + *x_exp = 7; move16(); + FOR (i = 0; i < 6; i++) + { + *x_exp = s_max(*x_exp, scales[i]); move16(); + } + + /* Shift input buffers */ + s = sub(15 + 8, *x_exp); + FOR (i = 0; i < N; i++) + { +#ifdef ENABLE_HR_MODE + x_scaled[i] = L_shl(x[i], s); +#else + x_scaled[i] = round_fx_sat(L_shl(x[i], s)); +#endif + } + + FOR (i = 0; i < mdct_mem_len; i++) + { +#ifdef ENABLE_HR_MODE + mdct_mem[i] = L_shl(mdct_mem32[i], s); +#else + mdct_mem[i] = round_fx_sat(L_shl(mdct_mem32[i], s)); +#endif + } + + FOR (i = 0; i < resample_mem_in_len; i++) + { + resample_mem_in[i] = round_fx_sat(L_shl(resamp_mem32[i], s)); + } + + /* Adjust resampler filter and output buffers */ + s = sub(sub(*resamp_scale, 2), *x_exp); + *resamp_scale = add(*x_exp, 2); + + IF (s) + { + FOR (i = 0; i < 2; i++) + { + resample_mem_in50[i] = L_shl(resample_mem_in50[i], s); + } + FOR (i = 0; i < resample_mem_out_len; i++) + { + resample_mem_out[i] = shl(resample_mem_out[i], s); + } + + FOR (i = 0; i < 3; i++) + { + mem_s12k8[i] = shl(mem_s12k8[i], s); + } + } + /* Store part of current frame as mdct memory buffer and resampler input buffer for next frame */ + basop_memcpy(mdct_mem32, &x[N - mdct_mem_len], mdct_mem_len * sizeof(Word32)); + basop_memmove(resamp_mem32, &x[N - resample_mem_in_len], resample_mem_in_len * sizeof(Word32)); + +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + diff --git a/lib_lc3plus/setup_dec_lc3.c b/lib_lc3plus/setup_dec_lc3.c new file mode 100644 index 0000000000000000000000000000000000000000..1d2849f565386fa7cb61b400f15c7bc1d0234c4c --- /dev/null +++ b/lib_lc3plus/setup_dec_lc3.c @@ -0,0 +1,539 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" +#include "setup_dec_lc3.h" + +/* if decoder is null only size is reported */ +/*assume 10ms for memory allocation for now */ +int alloc_decoder(LC3PLUS_Dec *decoder, int samplerate, int channels) +{ + int ch = 0; + size_t size = sizeof(LC3PLUS_Dec); + void * ltpf_mem_x = NULL, *ltpf_mem_y = NULL, *stDec_ola_mem_fx = NULL; + int max_len = DYN_MAX_LEN_EXT(samplerate); /*NB sing 80 as minimum value changes BE for NB */ +#ifdef CR8_A_PLC_FADEOUT_TUNING + Word32 * plc_longterm_advc_tdc = NULL, *plc_longterm_advc_ns = NULL; + Word16 longterm_analysis_counter_max = 0, longterm_analysis_counter_max_bytebuffer = 0; +#endif + + void *q_old_res_fx = NULL; + Word16 *sharedBuf = NULL; +#if defined(ENABLE_PC) + void *q_old_d_fx = NULL; +#endif + void *plcAd = NULL, *PhECU_f0est = NULL, *PhECU_plocs = NULL; + + for (ch = 0; ch < channels; ch++) + { + DecSetup *setup = balloc(decoder, &size, sizeof(DecSetup)); +#ifdef ENABLE_HR_MODE + int q_old_len = MIN(CODEC_FS(samplerate) * 100 / 10000, MAX_BW_HR); +#else + int q_old_len = MIN(CODEC_FS(samplerate) * 100 / 10000, MAX_BW ); +#endif + int x_old_len = DYN_MAX_LEN_PCM_PLC(samplerate); /* max(pitchmax + frame ms, M+1 + pitchmax + frame/2) */ + int fs_idx = (samplerate / 10000); /* floor= integer truncation is needed here */ + + ltpf_mem_x = balloc(decoder, &size, sizeof(*setup->ltpf_mem_x) * (max_len + max_len / 40 - 2)); + ltpf_mem_y = + balloc(decoder, &size, + sizeof(*setup->ltpf_mem_y) * (max_len + CEILING(MAX_PITCH_12K8 * max_len, 128) + (max_len / 80))); + + stDec_ola_mem_fx = balloc(decoder, &size, sizeof(*setup->stDec_ola_mem_fx) * DYN_MAX_MDCT_LEN(samplerate)); + +#if defined(ENABLE_PC) + q_old_d_fx = balloc(decoder, &size, sizeof(*setup->q_old_d_fx) * q_old_len); +#endif + sharedBuf = balloc(decoder, &size, sizeof(*setup->q_old_d_fx) * q_old_len + sizeof(*setup->plcAd->x_old_tot_fx) * x_old_len); + + /* To save static RAM, a large buffer sharedBuf is used to share + * space for q_old_d_fx, x_old_tot_fx and X_sav_fx (note: + * PHASE_ECU operates only at 10ms and standard precision) + * + * If partial Concealment is active, q_old_d_fx is saved in a separate buffer + * + * The following graph provides an overview about the memory + * sharing for 10ms and normal resolution: + */ + + /* Total buffer | <--- sharedBuf ---> | */ + /* ConcealMethod 3or4 | <---q_old_d_fx---> | <-------------------- x_old_tot_fx ------------------> | */ + /* ConcealMethod 3 | <---q_old_d_fx---> | |<------- M+1+pitch_max+ (frame_len/2)----------> | */ /* first BFI-frame only? */ + /* Meth 2,prevBfi=0 | | <------- 16 ms xfp ------->| */ + /* Meth 2 | ^ X_sav_fx ptr | <-------- maintained old_tot_fx ---------> | */ /* pitchmax samples maintained */ + /* Meth 2 | <----- X_sav 16 ms ----------> | ^xfp_fx ptr | */ + /* Meth2 ,prevBfi=1 | | <-12.25(forTDC),3.75(PLC2)->| */ /*the part used by PhECU is 3.75ms */ + /* ConcealMethod 2 |<- <10ms ->| */ + int max_plocs = DYN_MAX_PLOCS(samplerate); + plcAd = balloc(decoder, &size, sizeof(*setup->plcAd)); + PhECU_f0est = balloc(decoder, &size, sizeof(*setup->plcAd->PhECU_f0est) * max_plocs); + PhECU_plocs = balloc(decoder, &size, sizeof(*setup->plcAd->PhECU_plocs) * max_plocs); +#ifdef ENABLE_HR_MODE + q_old_res_fx = balloc(decoder, &size, sizeof(*setup->q_old_res_fx) * max_len); +#else + q_old_res_fx = balloc(decoder, &size, sizeof(*setup->q_old_res_fx) * MIN(max_len, MAX_BW)); +#endif + +#ifdef CR8_A_PLC_FADEOUT_TUNING +/* longterm_analysis_counter_max = PLC_LONGTERM_ANALYSIS_MS * (100.0f / 25.0f);*/ +/* assert(longterm_analysis_counter_max == (PLC_LONGTERM_ANALYSIS_MS * (100 /25))); */ /* test integer division for compatibility */ +/* longterm_analysis_counter_max_bytebuffer = floor(longterm_analysis_counter_max / 30.0); */ +/* assert(longterm_analysis_counter_max_bytebuffer == (longterm_analysis_counter_max / 30)); */ /* test integer division for compatibility */ + +/* longterm_analysis_counter_max = (longterm_analysis_counter_max_bytebuffer+1) * 30; */ + + longterm_analysis_counter_max = plc_fadeout_param_maxlen[0]; + longterm_analysis_counter_max_bytebuffer = plc_fadeout_param_maxbytes[0]; + + plc_longterm_advc_tdc = balloc(decoder, &size, sizeof(Word32) * longterm_analysis_counter_max_bytebuffer); + plc_longterm_advc_ns = balloc(decoder, &size, sizeof(Word32) * longterm_analysis_counter_max_bytebuffer); +#endif + + if (decoder) + { + decoder->channel_setup[ch] = setup; + setup->ltpf_mem_x = ltpf_mem_x; + setup->ltpf_mem_y = ltpf_mem_y; + setup->stDec_ola_mem_fx = stDec_ola_mem_fx; + setup->q_old_res_fx = q_old_res_fx; +#if defined(ENABLE_PC) + setup->q_old_d_fx = q_old_d_fx; +#else + setup->q_old_d_fx = sharedBuf; +#endif + setup->plcAd = plcAd; + } + if (decoder && plcAd) + { +#ifdef ENABLE_HR_MODE + if (fs_idx > 4) + { + fs_idx = 4; + } +#endif + + setup->plcAd->x_old_tot_fx = &sharedBuf[q_old_len]; + setup->plcAd->PhECU_f0est = PhECU_f0est; + setup->plcAd->PhECU_xfp_fx = &(setup->plcAd->x_old_tot_fx[x_old_len-LprotSzPtr[fs_idx]]); /* point to the last 16ms of the x_old_tot_fx */ + setup->plcAd->PhECU_X_sav_fx = sharedBuf; /* reuse of lprot(=num_FsByResQ0[fs_idx]) values from this point fwd, i.e beyond the end of q_old_fx */ + setup->plcAd->PhECU_plocs = PhECU_plocs; + +#ifdef CR8_A_PLC_FADEOUT_TUNING + setup->plcAd->longterm_analysis_counter_max = longterm_analysis_counter_max; + setup->plcAd->longterm_analysis_counter_max_bytebuffer = longterm_analysis_counter_max_bytebuffer; + + setup->plcAd->plc_longterm_advc_tdc = plc_longterm_advc_tdc; + setup->plcAd->plc_longterm_advc_ns = plc_longterm_advc_ns; +#endif + } + } + + return (int)size; +} + +LC3PLUS_Error FillDecSetup(LC3PLUS_Dec *decoder, int samplerate, int channels, LC3PLUS_PlcMode plc_mode +#ifdef ENABLE_HR_MODE + , int hrmode +#endif + ) +{ + int ch = 0; + + memset(decoder, 0, lc3plus_dec_get_size(samplerate, channels, plc_mode)); + alloc_decoder(decoder, samplerate, channels); + +#ifdef ENABLE_HR_MODE + decoder->hrmode = hrmode != 0; +#endif + + decoder->fs = CODEC_FS(samplerate); + decoder->fs_out = samplerate; + decoder->fs_idx = FS2FS_IDX(decoder->fs); + decoder->channels = channels; + decoder->frame_dms = 100; + decoder->plcMeth = plc_mode; + { + decoder->BW_cutoff_bits = BW_cutoff_bits_all[decoder->fs_idx]; + } + decoder->ltpf_mem_x_len = extract_l(L_shr_pos(Mpy_32_16_lc3plus(L_max(16000, decoder->fs), 16778), 11)) - 2; + decoder->ltpf_mem_y_len = extract_l(L_shr_pos(Mpy_32_16_lc3plus(decoder->fs, 18678) - 1, 5)) + 1 + + extract_l(L_shr_pos(Mpy_32_16_lc3plus(L_max(16000, decoder->fs), 16778), 12)); + + set_dec_frame_params(decoder); + + for (ch = 0; ch < decoder->channels; ch++) + { + DecSetup *setup = decoder->channel_setup[ch]; + setup->plc_damping = 32767; + setup->ltpf_mem_scale_fac_idx = -1; + move16(); + + setup->pc_seed = 24607; + setup->ns_seed = 24607; + setup->ns_cum_alpha = 32767; + + int i = 0; + /* 0 = 0kHz 1= 8kHz, 2= 16 kHz 3= 24 , 4 = 32 5=40 6=48kHz */ +#if (PHECU_XFP_LA == 0) + Word16 oneMsTab_LA[5] = {0, 0, 0, 0, 0}; +#else +# if (PHECU_XFP_LA == 4) + Word16 oneMsTab_LA[7] = {0 /*unused*/, 2, 4, 6, 8, 10 /*unused*/, 12}; +# else + Word16 oneMsTab_LA[7] = {0 /*unused*/, 8, 16, 24, 32, 40 /*unused*/, 48}; +# endif +#endif + Word16 oneMsTab[5] = {8, 16, 24, 32, 48}; + + setup->plcAd->stab_fac = 32767; + setup->plcAd->tdc_seed = 24607; + setup->plcAd->tdc_preemph_fac = plc_preemph_fac[decoder->fs_idx]; + setup->plcAd->tdc_lpc_order = 16; + setup->plcAd->PhECU_fs_idx_fx = + mult(decoder->frame_length, + (Word16)(32768.0 / 99.0)); /* truncation needed , i.e no rounding can be applied here */ + /* idx=frame/80, 0=8kHZ, 1=16kHz, 2=24 kHz, 3=32 kHz 5=*, 4=48 */ + + setup->plcAd->max_len_pcm_plc = DYN_MAX_LEN_PCM_PLC(decoder->fs); + + if ((decoder->hrmode == 0) && (samplerate <= 48000)) + { + setup->plcAd->PhECU_frame_ms = (Word16)( + decoder->frame_dms * 0.1); /* needed in PLCUpdate and PLC main functions, adjusted in first frame */ + setup->plcAd->PhECU_seed_fx = 21845; + setup->plcAd->PhECU_LprotOrg_fx = + shl_pos(oneMsTab[setup->plcAd->PhECU_fs_idx_fx], 4); /* 16 *1ms = 1.6 *framelength */ + setup->plcAd->PhECU_Lprot_fx = setup->plcAd->PhECU_LprotOrg_fx; + setup->plcAd->PhECU_LA = oneMsTab_LA[setup->plcAd->PhECU_fs_idx_fx]; + setup->plcAd->PhECU_whr_tot_taper = sub(setup->plcAd->PhECU_Lprot_fx, decoder->frame_length); /* 3+3 ms */ + setup->plcAd->PhECU_whr_tot_flat = decoder->frame_length; /* 10 ms */ + setup->plcAd->PhECU_LDWIN_OLAP = shr_pos(decoder->frame_length, 2); /* 2.5 ms */ + setup->plcAd->max_lprot = DYN_MAX_LPROT(decoder->fs); + setup->plcAd->max_plocs = DYN_MAX_PLOCS(decoder->fs); + setup->plcAd->PhECU_margin_xfp = 0; + setup->plcAd->PhECU_L_oold_xfp_w_E_fx = LTOT_MIN_MAN; + setup->plcAd->PhECU_L_old_xfp_w_E_fx = LTOT_MIN_MAN; + + setup->plcAd->PhECU_oold_xfp_w_E_exp_fx = UNINIT_OR_UNSAFE_OOLD_SENTINEL; + setup->plcAd->PhECU_old_xfp_w_E_exp_fx = LTOT_INIT_FLAG; + + setup->plcAd->PhECU_oold_Ltot_exp_fx = UNINIT_OR_UNSAFE_OOLD_SENTINEL; + setup->plcAd->PhECU_old_Ltot_exp_fx = LTOT_INIT_FLAG; + + + for (i = 0; i < MAX_LGW; i++) + { + setup->plcAd->PhECU_oold_grp_shape_fx[i] = + GRP_SHAPE_INIT; /* negative value will be replaced in very first calculation */ + setup->plcAd->PhECU_old_grp_shape_fx[i] = GRP_SHAPE_INIT; + } + /* t_adv=ctrl.FRAME/2 + ctrl.PhECU.LprotOrg/2 - ctrl.PhECU.LA + LDWIN_OLAP/2; */ + i = add(add(decoder->frame_length, setup->plcAd->PhECU_LprotOrg_fx), setup->plcAd->PhECU_LDWIN_OLAP); + setup->plcAd->PhECU_t_adv = sub(shr_pos(i, 1), setup->plcAd->PhECU_LA); + + for (i = 0; i < MAX_LGW; i++) + { + setup->plcAd->PhECU_mag_chg_1st[i] = 32767; + } + setup->plcAd->PhECU_beta_mute = 16384; +#ifdef CR8_A_PLC_FADEOUT_TUNING + setup->plcAd->PhECU_nonpure_tone_flag = -1; +#endif + } + } + + lc3plus_dec_set_ep_enabled(decoder, 0); + return LC3PLUS_OK; +} + +/* set frame config params */ +void set_dec_frame_params(LC3PLUS_Dec *decoder) +{ +# ifdef CR8_G_ADD_75MS + Word16 tmp = 0; +# endif +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR + Word16 n; +#endif + + decoder->frame_length = extract_l(L_shr_pos(Mpy_32_16_lc3plus(decoder->fs, 20972), 6)); /* fs * 0.01*2^6 */ + +#ifdef ENABLE_HR_MODE + if (decoder->hrmode) + { + decoder->BW_cutoff_bits = 0; + } +#endif + + SWITCH (decoder->frame_dms) + { + case 25: + decoder->frame_length = shr_pos(decoder->frame_length, 2); + decoder->la_zeroes = LowDelayShapes_n960_la_zeroes_2_5ms[decoder->fs_idx]; + decoder->stDec_ola_mem_fx_len = sub(decoder->frame_length, decoder->la_zeroes); + +#ifdef ENABLE_HR_MODE + if (decoder->hrmode) + { + decoder->bands_number = bands_number_2_5ms_HR[decoder->fs_idx]; + decoder->bands_offset = bands_offset_2_5ms_HR[decoder->fs_idx - 4]; + decoder->W_fx = LowDelayShapes_n960_HRA_2_5ms[decoder->fs_idx - 4]; + decoder->W_size = LowDelayShapes_n960_len_2_5ms[decoder->fs_idx]; + decoder->yLen = decoder->frame_length; + } + else +#endif + { + decoder->bands_number = bands_number_2_5ms[decoder->fs_idx]; + decoder->bands_offset = bands_offset_2_5ms[decoder->fs_idx]; + decoder->W_fx = LowDelayShapes_n960_2_5ms[decoder->fs_idx]; + decoder->W_size = LowDelayShapes_n960_len_2_5ms[decoder->fs_idx]; + decoder->yLen = s_min(MAX_BW >> 2, decoder->frame_length); + } + + if (decoder->fs_idx == 0) + { + int ch; + for (ch = 0; ch < decoder->channels; ch++) + { + DecSetup *setup = decoder->channel_setup[ch]; + if (setup->plcAd != NULL) + { + setup->plcAd->tdc_lpc_order = 8; + } + } + } + BREAK; + case 50: + decoder->frame_length = shr_pos(decoder->frame_length, 1); + decoder->la_zeroes = LowDelayShapes_n960_la_zeroes_5ms[decoder->fs_idx]; + decoder->stDec_ola_mem_fx_len = sub(decoder->frame_length, decoder->la_zeroes); + +#ifdef ENABLE_HR_MODE + if (decoder->hrmode) + { + decoder->bands_offset = bands_offset_5ms_HR[decoder->fs_idx - 4]; + decoder->W_fx = LowDelayShapes_n960_HRA_5ms[decoder->fs_idx - 4]; + decoder->W_size = LowDelayShapes_n960_len_5ms[decoder->fs_idx]; + decoder->yLen = decoder->frame_length; + decoder->bands_number = bands_number_5ms[decoder->fs_idx]; + } + else +#endif + { + decoder->bands_offset = bands_offset_5ms[decoder->fs_idx]; + decoder->W_fx = LowDelayShapes_n960_5ms[decoder->fs_idx]; + decoder->W_size = LowDelayShapes_n960_len_5ms[decoder->fs_idx]; + decoder->yLen = s_min(MAX_BW >> 1, decoder->frame_length); + decoder->bands_number = bands_number_5ms[decoder->fs_idx]; + } + BREAK; + +#ifdef CR8_G_ADD_75MS + case 75: + tmp = shr_pos(decoder->frame_length, 2); + decoder->frame_length = add(tmp, add(tmp, tmp)); + decoder->la_zeroes = LowDelayShapes_n960_la_zeroes_7_5ms[decoder->fs_idx]; + decoder->stDec_ola_mem_fx_len = sub(decoder->frame_length, decoder->la_zeroes); +# ifdef ENABLE_HR_MODE + if (decoder->hrmode) + { + decoder->bands_offset = bands_offset_7_5ms_HR[decoder->fs_idx - 4]; + decoder->W_fx = LowDelayShapes_n960_HRA_7_5ms[decoder->fs_idx - 4]; + decoder->W_size = LowDelayShapes_n960_len_7_5ms[decoder->fs_idx]; + decoder->yLen = decoder->frame_length; + decoder->bands_number = bands_number_7_5ms[decoder->fs_idx]; + } + else +# endif + { + decoder->bands_offset = bands_offset_7_5ms[decoder->fs_idx]; + decoder->W_fx = LowDelayShapes_n960_7_5ms[decoder->fs_idx]; + decoder->W_size = LowDelayShapes_n960_len_7_5ms[decoder->fs_idx]; + decoder->yLen = s_min((MAX_BW >> 2) * 3, decoder->frame_length); + decoder->bands_number = bands_number_7_5ms[decoder->fs_idx]; + } + BREAK; +# endif + + case 100: + decoder->la_zeroes = LowDelayShapes_n960_la_zeroes[decoder->fs_idx]; + decoder->stDec_ola_mem_fx_len = sub(decoder->frame_length, decoder->la_zeroes); + decoder->bands_number = 64; + +#ifdef ENABLE_HR_MODE + if (decoder->hrmode) + { + decoder->bands_offset = bands_offset_HR[decoder->fs_idx - 4]; + decoder->W_fx = LowDelayShapes_n960_HRA[decoder->fs_idx - 4]; + decoder->W_size = LowDelayShapes_n960_len[decoder->fs_idx]; + decoder->yLen = decoder->frame_length; + } + else +#endif + { + decoder->W_fx = LowDelayShapes_n960[decoder->fs_idx]; + decoder->W_size = LowDelayShapes_n960_len[decoder->fs_idx]; + decoder->bands_offset = bands_offset[decoder->fs_idx]; + decoder->yLen = s_min(MAX_BW, decoder->frame_length); + } + BREAK; + } + + { + int ch; + for (ch = 0; ch < decoder->channels; ch++) + { + DecSetup *setup = decoder->channel_setup[ch]; + if (setup->plcAd != NULL) + { /*only set if plcAd was actually allocated */ +#ifdef CR8_A_PLC_FADEOUT_TUNING + setup->plcAd->longterm_analysis_counter_max = plc_fadeout_param_maxlen[(decoder->frame_dms / 25) - 1]; + setup->plcAd->longterm_analysis_counter_max_bytebuffer = plc_fadeout_param_maxbytes[(decoder->frame_dms / 25) - 1]; + +#endif + setup->plcAd->PhECU_frame_ms = (Word16)( + decoder->frame_dms * + 0.1); /* needed in processPLCupdate_fx(), now set properly set in first frame /second time */ + } + } + } +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR + FOR (n=0; n < PLC_FADEOUT_TYPE_1_IN_MS*10/decoder->frame_dms;n++){ + decoder->alpha_type_2_table[n] = type_2_fadeout_fx(n, decoder->frame_dms); + } +#endif +} + +LC3PLUS_Error update_dec_bitrate(LC3PLUS_Dec *decoder, int ch, Word16 nBytes) +{ + int tmp = 0, totalBits = 0; + int channel_bytes = 0; + int minBytes, maxBytes; + + DecSetup *setup = decoder->channel_setup[ch]; + channel_bytes = nBytes; + +#ifdef ENABLE_HR_MODE + if (decoder->hrmode) + { + SWITCH (decoder->frame_dms) + { + case 25: + maxBytes = 210; + minBytes = MIN_NBYTES; + BREAK; + case 50: + maxBytes = 375; + minBytes = MIN_NBYTES; + BREAK; +#ifdef CR8_G_ADD_75MS + case 75: + maxBytes = 625; + minBytes = MIN_NBYTES; + BREAK; +#endif + case 100: + maxBytes = 625; + minBytes = MIN_NBYTES; + BREAK; + default: return LC3PLUS_HRMODE_ERROR; + } + } + else +#endif + { + minBytes = MIN_NBYTES; + maxBytes = MAX_NBYTES_100; + } + + if (channel_bytes < minBytes || channel_bytes > maxBytes) + { + return LC3PLUS_NUMBYTES_ERROR; + } + + setup->targetBytes = channel_bytes; + move16(); + setup->total_bits = shl(setup->targetBytes, 3); + setup->enable_lpc_weighting = (setup->total_bits < 480); + setup->quantizedGainOff = + -(s_min(115, setup->total_bits / (10 * (decoder->fs_idx + 1))) + 105 + 5 * (decoder->fs_idx + 1)); + tmp = DEPR_i_mult(80, decoder->fs_idx); + +#ifdef ENABLE_HR_MODE + if (decoder->hrmode && decoder->fs_idx == 5) + { + setup->quantizedGainOff = MAX(setup->quantizedGainOff, -181); + } +#endif + + totalBits = setup->total_bits; + + + SWITCH (decoder->frame_dms) + { + case 25: + setup->enable_lpc_weighting = 0; + /* total_bits * 2.4 */ + totalBits = extract_l(L_shr(L_mult0(19661, setup->total_bits), 13)); + BREAK; + case 50: + setup->enable_lpc_weighting = setup->total_bits < 240; + totalBits = sub(DEPR_i_mult(setup->total_bits, 2), 160); + BREAK; +#ifdef CR8_G_ADD_75MS + case 75: + setup->enable_lpc_weighting = setup->total_bits < 360; + totalBits = L_shr(L_mult0(10923, setup->total_bits), 13); + BREAK; +# endif + case 100: + BREAK; + } + + + if (sub(totalBits, add(320, tmp)) < 0) + { + setup->ltpf_scale_fac_idx = 0; + move16(); + } + else if (sub(totalBits, add(400, tmp)) < 0) + { + setup->ltpf_scale_fac_idx = 1; + move16(); + } + else if (sub(totalBits, add(480, tmp)) < 0) + { + setup->ltpf_scale_fac_idx = 2; + move16(); + } + else if (sub(totalBits, add(560, tmp)) < 0) + { + setup->ltpf_scale_fac_idx = 3; + move16(); + } + else + { + setup->ltpf_scale_fac_idx = -1; + move16(); + } + +#ifdef ENABLE_HR_MODE + /* No LTPF in hrmode */ + if (decoder->hrmode) + { + setup->ltpf_scale_fac_idx = -1; + move16(); + } +#endif + + return LC3PLUS_OK; +} + diff --git a/lib_lc3plus/setup_dec_lc3.h b/lib_lc3plus/setup_dec_lc3.h new file mode 100644 index 0000000000000000000000000000000000000000..3145cd21c6a3aa629cc954b5ede9672cea28a5e5 --- /dev/null +++ b/lib_lc3plus/setup_dec_lc3.h @@ -0,0 +1,185 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#ifndef SETUP_DEC_LC3_H +#define SETUP_DEC_LC3_H + +#include "constants.h" + +typedef struct +{ + Word16 *x_old_tot_fx; /* MAX_LEN_PCM_PLC_TOT */ + Word32 *PhECU_f0est; /* MAX_PLOCS interpolated plocs */ + Word16 *PhECU_xfp_fx; /* MAX_LPROT */ + Word16 *PhECU_X_sav_fx; /* MAX_LPROT */ + Word16 *PhECU_plocs; /* MAX_PLOCS */ + Word16 *PhECU_fg_wintaper; /* MDCT_MEM_LEN_MAX */ + Word16 *PhECU_win_pre_tda; /* MAX_WIN_PRE_TDA */ + Word32 tdc_gain_c; + Word16 stab_fac; + Word16 tdc_fract; + Word16 tdc_seed; + Word16 tdc_preemph_fac; + Word16 tdc_lpc_order; + Word16 cum_fflcAtten; + Word16 harmonicBuf_fx[MAX_PITCH]; + Word16 harmonicBuf_Q; + Word16 synthHist_fx[M]; + Word16 cum_fading_slow; + Word16 cum_fading_fast; + Word16 PhECU_LprotOrg_fx; /* needed to change the Prot size adaptively */ + Word16 PhECU_Lprot_fx; + Word16 PhECU_fs_idx_fx; + Word16 PhECU_frame_ms; /* needed in PLC_Update and PLCMain functons*/ + Word16 PhECU_seed_fx; + Word16 PhECU_xfp_exp_fx; + Word16 PhECU_time_offs; + Word16 PhECU_X_savQ_fx; + Word16 PhECU_num_plocs; + Word16 PhECU_f0hzLtpBinQ7; /* ltp F0 in bins if available */ + Word16 PhECU_short_flag_prev; + Word16 PhECU_whr_tot_taper; + Word16 PhECU_whr_tot_flat; + Word16 PhECU_LDWIN_OLAP; + Word16 PhECU_LA; + Word16 PhECU_t_adv; + Word16 PhECU_beta_mute; + Word16 norm_corrQ15_fx; + Word16 q_fx_old_exp; + Word16 max_len_pcm_plc; + Word16 max_lprot; + Word16 max_plocs; + + /* Word32 L_tot W_energy sum exponent */ + Word16 PhECU_oold_Ltot_exp_fx; + Word16 PhECU_old_Ltot_exp_fx; + Word32 PhECU_L_oold_xfp_w_E_fx; + Word32 PhECU_L_old_xfp_w_E_fx; + Word16 PhECU_oold_xfp_w_E_exp_fx; /* input Word16 xfp exponnet */ + Word16 PhECU_old_xfp_w_E_exp_fx; + Word16 PhECU_oold_grp_shape_fx[MAX_LGW]; + Word16 PhECU_old_grp_shape_fx[MAX_LGW]; + Word16 PhECU_margin_xfp; +#ifdef CR8_A_PLC_FADEOUT_TUNING + Word16 PhECU_nonpure_tone_flag; /* non-pure single tone indicator state */ +#endif + Word16 PhECU_mag_chg_1st[MAX_LGW]; + Word16 PhECU_Xavg[MAX_LGW]; + Word16 old_scf_q[M]; + Word16 old_old_scf_q[M]; + Word16 tdc_A[M + 1]; + /* for now 20 ms saved Q14 or ptr to a combined ifft win and MDCT preTDA synthesis window 16 ms */ + +#ifdef CR8_A_PLC_FADEOUT_TUNING + Word16 longterm_counter_plcTdc; +# ifndef CR9_L_RETRAIN_FADEOUT_TYPE_CLASSIFIER + Word16 longterm_counter_plcPhaseEcu; +# endif + Word16 longterm_counter_plcNsAdv; + Word16 longterm_analysis_counter_max; /* Maximum longterm frames number */ + Word16 longterm_analysis_counter_max_bytebuffer; /* Same as above but reduced for circular bit-buffer */ + Word32 *plc_longterm_advc_tdc; + Word32 *plc_longterm_advc_ns; + UWord8 plc_fadeout_type; + Word16 overall_counter; + Word8 longterm_counter_byte_position; + Word8 longterm_counter_bit_position; +#endif +} AplcSetup; + +/* Channel state and bitrate-derived values go in this struct */ +typedef struct +{ + Word16 *ltpf_mem_x; /* LTPF_MEM_X_LEN */ + Word16 *ltpf_mem_y; /* LTPF_MEM_Y_LEN */ +#ifdef ENABLE_HR_MODE + Word32 *stDec_ola_mem_fx; /* MDCT_MEM_LEN_MAX */ +#else + Word16 *stDec_ola_mem_fx; /* MDCT_MEM_LEN_MAX */ +#endif + AplcSetup *plcAd; + Word16 * q_old_d_fx; /* MAX_BW */ + Word16 q_old_fx_exp; + Word16 ns_seed; + Word16 ns_cum_alpha; + Word16 pc_nbLostFramesInRow; + Word16 pc_seed; + Word16 *q_old_res_fx; + Word16 q_old_res_fx_exp; + Word16 prev_gg; + Word16 prev_gg_e; + Word16 prev_BW_cutoff_idx_nf; + Word16 prev_fac_ns_fx; + Word16 total_bits; + Word16 enable_lpc_weighting; + Word16 stDec_ola_mem_fx_exp; + Word16 targetBytes; + Word16 ltpf_mem_e; + Word16 ltpf_mem_pitch_int; + Word16 ltpf_mem_pitch_fr; + Word16 ltpf_mem_gain; + Word16 ltpf_mem_active; + Word16 ltpf_scale_fac_idx; + Word16 ltpf_mem_scale_fac_idx; + Word16 quantizedGainOff; + Word16 prev_bfi; + Word16 prev_prev_bfi; + Word16 concealMethod; + Word16 nbLostFramesInRow; + Word16 plc_damping; + Word16 last_size; +#ifdef CR9_N_SHORT_FADE_FOR_UNSTABLE_PITCH + Word32 rel_pitch_change; +#endif +} DecSetup; + +/* Constants and sampling rate derived values go in this struct */ +struct LC3PLUS_Dec +{ + DecSetup * channel_setup[MAX_CHANNELS]; +#ifdef ENABLE_HR_MODE + const Word32 *W_fx; +#else + const Word16 *W_fx; +#endif + const Word16 *bands_offset; + Word32 fs; /* sampling rate, 44.1 maps to 48 */ + Word32 fs_out; /* output sampling rate */ + Word16 fs_idx; /* sampling rate index */ + Word16 frame_length; /* sampling rate index */ + Word16 channels; /* number of channels */ + Word16 plcMeth; /* PLC method for all channels */ + Word16 frame_dms; /* frame length in dms (decimilliseconds, 10^-4)*/ + Word16 last_size; /* size of last frame, without error protection */ + Word16 ep_enabled; /* error protection enabled */ + Word16 error_report; /* corrected errors in last frame or -1 on error */ + + Word16 n_pccw; + Word16 be_bp_left; + Word16 be_bp_right; + Word16 n_pc; + Word16 m_fec; + Word16 epmr; + Word16 combined_channel_coding; + + Word16 yLen; + Word16 W_size; + Word16 la_zeroes; + Word16 stDec_ola_mem_fx_len; + Word16 bands_number; + Word16 ltpf_mem_x_len; + Word16 ltpf_mem_y_len; + Word16 BW_cutoff_bits; + Word16 hrmode; +#ifdef CR10_A_ATTENUATION_CURVE_SELECTOR + Word16 alpha_type_2_table[80];/* PLC_FADEOUT_TYPE_1_IN_MS*10/25 */ +#endif +}; + +#endif diff --git a/lib_lc3plus/setup_enc_lc3.c b/lib_lc3plus/setup_enc_lc3.c new file mode 100644 index 0000000000000000000000000000000000000000..7e20912bb078e46dac98e383414e7a43ff17a8dc --- /dev/null +++ b/lib_lc3plus/setup_enc_lc3.c @@ -0,0 +1,760 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" +#include "setup_enc_lc3.h" + +/* if encoder is null only size is reported */ +int alloc_encoder(LC3PLUS_Enc *encoder, int samplerate, int channels) +{ + int ch = 0; + size_t size = sizeof(LC3PLUS_Enc); + void * mdct_mem32 = NULL, *stEnc_mdct_mem = NULL; + + for (ch = 0; ch < channels; ch++) + { + EncSetup *setup = balloc(encoder, &size, sizeof(EncSetup)); + mdct_mem32 = balloc(encoder, &size, sizeof(*setup->mdct_mem32) * DYN_MAX_MDCT_LEN(samplerate)); + stEnc_mdct_mem = balloc(encoder, &size, sizeof(*setup->stEnc_mdct_mem) * DYN_MAX_MDCT_LEN(samplerate)); + if (encoder) + { + encoder->channel_setup[ch] = setup; + setup->mdct_mem32 = mdct_mem32; + setup->stEnc_mdct_mem = stEnc_mdct_mem; + } + } + + return (int)size; +} + +LC3PLUS_Error FillEncSetup(LC3PLUS_Enc *encoder, int samplerate, int channels +#ifdef ENABLE_HR_MODE + , int hrmode +#endif + , int32_t lfe_channel_array[] + ) +{ + int ch = 0; + + memset(encoder, 0, lc3plus_enc_get_size(samplerate, channels)); + alloc_encoder(encoder, samplerate, channels); + + encoder->fs = CODEC_FS(samplerate); + encoder->fs_in = samplerate; + encoder->fs_idx = FS2FS_IDX(encoder->fs); + +# ifdef ENABLE_HR_MODE + if (encoder->fs_idx > 4) + { + encoder->fs_idx = 5; + } + encoder->hrmode = hrmode != 0; +# endif + + encoder->channels = channels; + encoder->frame_dms = 100; + encoder->envelope_bits = 38; + encoder->global_gain_bits = 8; + encoder->noise_fac_bits = 3; + encoder->r12k8_mem_in_len = extract_l(L_shr_pos(Mpy_32_16_lc3plus(encoder->fs, 20972), 9)); + encoder->r12k8_mem_out_len = 24; + encoder->epmr = LC3PLUS_EPMR_ZERO; + encoder->bw_ctrl_active = 0; + encoder->bandwidth = L_shr_pos(encoder->fs, 1); + encoder->bandwidth_preset = L_shr_pos(encoder->fs, 1); + + for (ch = 0; ch < encoder->channels; ch++) + { + encoder->channel_setup[ch]->lfe = lfe_channel_array[ch] != 0; + } + + + for (ch = 0; ch < encoder->channels; ch++) + { + encoder->channel_setup[ch]->x_exp = 15; + encoder->channel_setup[ch]->resamp_exp = 17; + } + + set_enc_frame_params(encoder); + + return lc3plus_enc_set_ep_mode(encoder, LC3PLUS_EP_OFF); /* also calls update_enc_bitrate */ +} + +/* set frame config params */ +void set_enc_frame_params(LC3PLUS_Enc *encoder) +{ +#ifdef CR8_G_ADD_75MS +# ifdef ENABLE_075_DMS_MODE + Word16 tmp; +# endif +#endif + + encoder->frame_length = extract_l(L_shr_pos(Mpy_32_16_lc3plus(encoder->fs, 20972), 6)); /* fs * 0.01*2^6 */ + +# ifdef ENABLE_HR_MODE + if (encoder->hrmode) + { + encoder->BW_cutoff_bits = 0; + } + else +# endif + { + encoder->BW_cutoff_bits = BW_cutoff_bits_all[encoder->fs_idx]; + } + + SWITCH (encoder->frame_dms) + { + case 25: + encoder->frame_length = shr_pos(encoder->frame_length, 2); + encoder->la_zeroes = LowDelayShapes_n960_la_zeroes_2_5ms[encoder->fs_idx]; + encoder->stEnc_mdct_mem_len = sub(encoder->frame_length, encoder->la_zeroes); + encoder->nSubdivisions = 2; + encoder->ltpf_mem_in_len = LTPF_MEMIN_LEN + (LEN_12K8 >> 2); + +# ifdef ENABLE_HR_MODE + if (encoder->hrmode) + { + encoder->bands_number = bands_number_2_5ms_HR[encoder->fs_idx]; + encoder->bands_offset = bands_offset_2_5ms_HR[encoder->fs_idx - 4]; + encoder->W_fx = LowDelayShapes_n960_HRA_2_5ms[encoder->fs_idx - 4]; + encoder->W_size = LowDelayShapes_n960_len_2_5ms[encoder->fs_idx]; + encoder->yLen = encoder->frame_length; + } + else +# endif + { + encoder->yLen = s_min(MAX_BW >> 2, encoder->frame_length); + encoder->W_fx = LowDelayShapes_n960_2_5ms[encoder->fs_idx]; + encoder->W_size = LowDelayShapes_n960_len_2_5ms[encoder->fs_idx]; + encoder->bands_number = bands_number_2_5ms[encoder->fs_idx]; + encoder->bands_offset = bands_offset_2_5ms[encoder->fs_idx]; + encoder->near_nyquist_index = encoder->bands_number - 2; + encoder->near_nyquist_flag = 0; + } + + BREAK; + case 50: + encoder->frame_length = shr_pos(encoder->frame_length, 1); + encoder->la_zeroes = LowDelayShapes_n960_la_zeroes_5ms[encoder->fs_idx]; + encoder->stEnc_mdct_mem_len = sub(encoder->frame_length, encoder->la_zeroes); + encoder->nSubdivisions = 2; + encoder->ltpf_mem_in_len = LTPF_MEMIN_LEN + (LEN_12K8 >> 1); + +# ifdef ENABLE_HR_MODE + if (encoder->hrmode) + { + encoder->bands_offset = bands_offset_5ms_HR[encoder->fs_idx - 4]; + encoder->W_fx = LowDelayShapes_n960_HRA_5ms[encoder->fs_idx - 4]; + encoder->W_size = LowDelayShapes_n960_len_5ms[encoder->fs_idx]; + encoder->yLen = encoder->frame_length; + encoder->bands_number = bands_number_5ms[encoder->fs_idx]; + } + else +# endif + { + encoder->yLen = s_min(MAX_BW >> 1, encoder->frame_length); + encoder->W_fx = LowDelayShapes_n960_5ms[encoder->fs_idx]; + encoder->W_size = LowDelayShapes_n960_len_5ms[encoder->fs_idx]; + encoder->bands_number = bands_number_5ms[encoder->fs_idx]; + encoder->bands_offset = bands_offset_5ms[encoder->fs_idx]; + encoder->near_nyquist_index = encoder->bands_number - 3; + encoder->near_nyquist_flag = 0; + } + encoder->ltpf_mem_in_len = LTPF_MEMIN_LEN; + BREAK; + +#ifdef CR8_G_ADD_75MS + case 75: + tmp = shr_pos(encoder->frame_length, 2); + encoder->frame_length = add(tmp, add(tmp, tmp)); + encoder->la_zeroes = LowDelayShapes_n960_la_zeroes_7_5ms[encoder->fs_idx]; + encoder->stEnc_mdct_mem_len = sub(encoder->frame_length, encoder->la_zeroes); + encoder->bands_number = bands_number_7_5ms[encoder->fs_idx]; + encoder->nSubdivisions = 3; + encoder->ltpf_mem_in_len = LTPF_MEMIN_LEN; + encoder->attdec_nblocks = 3; + encoder->attdec_damping = 9830; + encoder->attdec_hangover_thresh = 1; + encoder->r12k8_mem_out_len = 44; + encoder->near_nyquist_index = encoder->bands_number - 4; + encoder->near_nyquist_flag = 0; +# ifdef ENABLE_HR_MODE + if (encoder->hrmode) + { + encoder->yLen = encoder->frame_length; + encoder->W_fx = LowDelayShapes_n960_HRA_7_5ms[encoder->fs_idx - 4]; + encoder->W_size = LowDelayShapes_n960_len_7_5ms[encoder->fs_idx]; + encoder->bands_number = bands_number_7_5ms[encoder->fs_idx]; + encoder->bands_offset = bands_offset_7_5ms_HR[encoder->fs_idx - 4]; + } + else +# endif + { + encoder->yLen = s_min((MAX_BW >> 2) * 3, encoder->frame_length); + encoder->W_fx = LowDelayShapes_n960_7_5ms[encoder->fs_idx]; + encoder->W_size = LowDelayShapes_n960_len_7_5ms[encoder->fs_idx]; + encoder->bands_number = bands_number_7_5ms[encoder->fs_idx]; + encoder->bands_offset = bands_offset_7_5ms[encoder->fs_idx]; + } + BREAK; +# endif + + case 100: + encoder->la_zeroes = LowDelayShapes_n960_la_zeroes[encoder->fs_idx]; + encoder->stEnc_mdct_mem_len = sub(encoder->frame_length, encoder->la_zeroes); + encoder->bands_number = 64; + encoder->nSubdivisions = 3; + encoder->ltpf_mem_in_len = LTPF_MEMIN_LEN; + encoder->attdec_nblocks = 4; + encoder->attdec_damping = 16384; + encoder->attdec_hangover_thresh = 2; + encoder->near_nyquist_index = encoder->bands_number - 2; + encoder->near_nyquist_flag = 0; + +# ifdef ENABLE_HR_MODE + if (encoder->hrmode) + { + encoder->bands_offset = bands_offset_HR[encoder->fs_idx - 4]; + encoder->W_fx = LowDelayShapes_n960_HRA[encoder->fs_idx - 4]; + encoder->W_size = LowDelayShapes_n960_len[encoder->fs_idx]; + encoder->yLen = encoder->frame_length; + } + else +# endif + { + encoder->yLen = s_min(MAX_BW, encoder->frame_length); + encoder->W_fx = LowDelayShapes_n960[encoder->fs_idx]; + encoder->W_size = LowDelayShapes_n960_len[encoder->fs_idx]; + encoder->bands_offset = bands_offset[encoder->fs_idx]; + } + BREAK; + } +} + +/* change encoder bitrate */ +LC3PLUS_Error update_enc_bitrate(LC3PLUS_Enc *encoder, int bitrate) +{ + int ch = 0; + int totalBytes = 0, maxBR = 0, minBR = 0, max_bytes = 0; + int channel_bytes = 0; + +# ifdef ENABLE_HR_MODE + if (encoder->hrmode) + { + switch (encoder->frame_dms) + { + case 25: + maxBR = 672000; + if (encoder->fs == 48000) + { + minBR = MIN_BR_25MS_48KHZ_HR; + } + else if (encoder->fs == 96000) + { + minBR = MIN_BR_25MS_96KHZ_HR; + } + else + { + return LC3PLUS_HRMODE_ERROR; + } + break; + case 50: + maxBR = 600000; + if (encoder->fs == 48000) + { + minBR = MIN_BR_50MS_48KHZ_HR; + } + else if (encoder->fs == 96000) + { + minBR = MIN_BR_50MS_96KHZ_HR; + } + else + { + return LC3PLUS_HRMODE_ERROR; + } + break; +# ifdef CR8_G_ADD_75MS + case 75: + maxBR = 500000; + if (encoder->fs == 48000) {minBR = MIN_BR_075DMS_48KHZ_HR;} + else if (encoder->fs == 96000) {minBR = MIN_BR_075DMS_96KHZ_HR;} + else {return LC3PLUS_HRMODE_ERROR;} + BREAK; +# endif + case 100: + maxBR = 500000; + if (encoder->fs == 48000) + { + minBR = MIN_BR_100MS_48KHZ_HR; + } + else if (encoder->fs == 96000) + { + minBR = MIN_BR_100MS_96KHZ_HR; + } + else + { + return LC3PLUS_HRMODE_ERROR; + } + break; + default: return LC3PLUS_HRMODE_ERROR; + } + } + else + { + minBR = (MIN_NBYTES << 3); + maxBR = MAX_BR; + + switch (encoder->frame_dms) + { + case 25: + minBR = MIN_BR_025DMS; + maxBR = MAX_BR; + BREAK; + case 50: + minBR = MIN_BR_050DMS; + maxBR = MAX_BR; + /* have additional limitations for 5.0ms */ + SWITCH (encoder->fs_in) + { +# ifdef SUBSET_NB + case 8000: maxBR = MAX_BR_050DMS_NB; BREAK; +# endif + default: BREAK; + } + BREAK; +# ifdef CR8_G_ADD_75MS + case 75: + minBR = MIN_BR_075DMS; + maxBR = MAX_BR_075DMS; // special value for maxBR @ 7.5ms + /* have additional limitations for 7.5ms */ + SWITCH (encoder->fs_in) + { +# ifdef SUBSET_NB + case 8000: maxBR = MAX_BR_075DMS_NB ; BREAK; +# endif +# ifdef SUBSET_WB + case 16000: maxBR = MAX_BR_075DMS_WB ; BREAK; +# endif +# ifdef SUBSET_SSWB + case 24000: maxBR = MAX_BR_075DMS_SSWB; BREAK; +# endif + default: BREAK; + } + BREAK; +# endif + case 100: + /* have additional limitations for 10ms */ + minBR = MIN_BR_100DMS; + maxBR = MAX_BR; + SWITCH (encoder->fs_in) + { +# ifdef SUBSET_NB + case 8000: maxBR = MAX_BR_100DMS_NB ; BREAK; +# endif +# ifdef SUBSET_WB + case 16000: maxBR = MAX_BR_100DMS_WB ; BREAK; +# endif +# ifdef SUBSET_SSWB + case 24000: maxBR = MAX_BR_100DMS_SSWB; BREAK; +# endif + default: maxBR = MAX_BR; BREAK; + } + BREAK; + default: return LC3PLUS_FRAMEMS_ERROR; + } + + /* 441/480 in Q31 and 1000/75 in Q23 */ + if (encoder->fs_in == 44100) + { + minBR = Mpy_32_32_lc3plus(minBR, 1973000602); + maxBR = Mpy_32_32_lc3plus(maxBR, 1973000602); + } + } +#else /* ENABLE_HR_MODE */ + minBR = (MIN_NBYTES << 3); + maxBR = MAX_BR; + + switch (encoder->frame_dms) + { + case 25: + minBR = MIN_BR_025DMS; + maxBR = MAX_BR; + BREAK; + case 50: + minBR = MIN_BR_050DMS; + maxBR = MAX_BR; + /* have additional limitations for 5.0ms */ + SWITCH (encoder->fs_in) + { +# ifdef SUBSET_NB + case 8000: maxBR = MAX_BR_050DMS_NB; BREAK; +# endif + default: BREAK; + } + BREAK; +# ifdef CR8_G_ADD_75MS + case 75: + minBR = MIN_BR_075DMS; + maxBR = MAX_BR_075DMS; // special value for maxBR @ 7.5ms + /* have additional limitations for 7.5ms */ + SWITCH (encoder->fs_in) + { +# ifdef SUBSET_NB + case 8000: maxBR = MAX_BR_075DMS_NB ; BREAK; +# endif +# ifdef SUBSET_WB + case 16000: maxBR = MAX_BR_075DMS_WB ; BREAK; +# endif +# ifdef SUBSET_SSWB + case 24000: maxBR = MAX_BR_075DMS_SSWB; BREAK; +# endif + default: BREAK; + } + BREAK; +# endif + case 100: + /* have additional limitations for 10ms */ + minBR = MIN_BR_100DMS; + maxBR = MAX_BR; + SWITCH (encoder->fs_in) + { +# ifdef SUBSET_NB + case 8000: maxBR = MAX_BR_100DMS_NB ; BREAK; +# endif +# ifdef SUBSET_WB + case 16000: maxBR = MAX_BR_100DMS_WB ; BREAK; +# endif +# ifdef SUBSET_SSWB + case 24000: maxBR = MAX_BR_100DMS_SSWB; BREAK; +# endif + default: maxBR = MAX_BR; BREAK; + } + BREAK; + default: return LC3PLUS_FRAMEMS_ERROR; + } + + /* 441/480 in Q31 and 1000/75 in Q23 */ + if (encoder->fs_in == 44100) + { + minBR = Mpy_32_32_lc3plus(minBR, 1973000602); + maxBR = Mpy_32_32_lc3plus(maxBR, 1973000602); + } +#endif /* ENABLE_HR_MODE */ + + minBR *= encoder->channels; + maxBR *= encoder->channels; + + if (bitrate < minBR || bitrate > maxBR) + { + return LC3PLUS_BITRATE_ERROR; + } + + encoder->bitrate = bitrate; + encoder->lc3_br_set = 1; + + /* move stuff to encoder->channel_setup */ + + encoder->combined_channel_coding = 0; + if (encoder->channels > 1 && encoder->epmode) + { + if (encoder->bitrate * encoder->frame_length / (8 * encoder->fs_in) <= 160) + { + encoder->combined_channel_coding = 1; + } + } + + if (encoder->epmode > 0) + { + max_bytes = bitrate * encoder->frame_length / (8 * encoder->fs_in * encoder->channels); + + if (max_bytes < FEC_SLOT_BYTES_MIN || max_bytes > FEC_SLOT_BYTES_MAX) + { + return LC3PLUS_BITRATE_ERROR; + } + } + + if (encoder->combined_channel_coding) + { + totalBytes = fec_get_data_size(encoder->epmode, encoder->combined_channel_coding, + bitrate * (Word32)encoder->frame_length / (8 * encoder->fs_in)); + + encoder->channel_setup[0]->n_pccw = + fec_get_n_pccw(bitrate * (Word32)encoder->frame_length / (8 * encoder->fs_in), encoder->epmode, + encoder->combined_channel_coding); + + encoder->channel_setup[0]->n_pc = fec_get_n_pc(encoder->epmode, encoder->channel_setup[0]->n_pccw, + bitrate * (Word32)encoder->frame_length / (8 * encoder->fs_in)); + } + else + { + totalBytes = bitrate * (Word32)encoder->frame_length / (8 * encoder->fs_in); + } + + for (ch = 0; ch < encoder->channels; ch++) + { + EncSetup *setup = encoder->channel_setup[ch]; + channel_bytes = totalBytes / encoder->channels + (ch < (totalBytes % encoder->channels)); + + if (encoder->combined_channel_coding) + { + setup->targetBytes = channel_bytes; + } + else + { + setup->targetBytes = fec_get_data_size(encoder->epmode, encoder->combined_channel_coding, channel_bytes); + setup->n_pccw = fec_get_n_pccw(channel_bytes, encoder->epmode, encoder->combined_channel_coding); + setup->n_pc = fec_get_n_pc(encoder->epmode, setup->n_pccw, channel_bytes); + } + /* reduce bandwith to 12kHz if bitrate is low */ + if (sub(encoder->frame_dms, 100) == 0 && + ((sub(setup->targetBytes, 40) < 0 && L_sub(encoder->fs, 48000) == 0) || + (sub(setup->targetBytes, 36) < 0 && L_sub(encoder->fs, 32000) == 0))) + { + encoder->bandwidth = L_min(12000, encoder->bandwidth_preset); + } + else + { + /* channel with highest index has lowest bitrate. + For a second channel with lower targetBytes, bandwidth is overwritten */ + encoder->bandwidth = encoder->bandwidth_preset; + } + + { + Word16 tmp; + + SWITCH(encoder->frame_dms) + { + case 25: tmp = 1; BREAK; + case 50: tmp = 2; BREAK; + case 75: tmp = 3; BREAK; + default : tmp = 4; BREAK; + } + + encoder->bw_ctrl_cutoff_bin = L_mult0(Mpy_32_32_lc3plus(encoder->bandwidth, 10737419), tmp); /* bandwidth * frame_dms / 5000 */ + } + + encoder->bw_index = sub( Mpy_32_32_lc3plus(encoder->bandwidth, 536871), 1); /* (bandwidth / 4000 ) - 1 */ + switch (encoder->frame_dms) + { + case 25: max_bytes = MAX_NBYTES_025; break; + case 50: max_bytes = MAX_NBYTES_050; break; +#ifdef ENABLE_075_DMS_MODE +# ifdef CR8_G_ADD_75MS + case 75: max_bytes = MAX_NBYTES_075; BREAK; +# endif +#endif + case 100: max_bytes = MAX_NBYTES_100; break; + } +#ifdef ENABLE_HR_MODE + if (encoder->hrmode) + { + max_bytes = MAX_NBYTES_RED_HR; + } +#endif + if (setup->targetBytes < MIN_NBYTES || setup->targetBytes > max_bytes) + { + return LC3PLUS_BITRATE_ERROR; + } + + setup->total_bits = shl(setup->targetBytes, 3); + setup->targetBitsInit = + sub(setup->total_bits, + add(encoder->envelope_bits, + add(encoder->global_gain_bits, add(encoder->noise_fac_bits, encoder->BW_cutoff_bits)))); + setup->targetBitsInit = sub(setup->targetBitsInit, sub(17, norm_s(sub(encoder->yLen, 1)))); + if (setup->total_bits > 1280) + { + setup->targetBitsInit = sub(setup->targetBitsInit, 1); + } + if (setup->total_bits > 2560) + { + setup->targetBitsInit = sub(setup->targetBitsInit, 1); + } + +# ifdef ENABLE_HR_MODE + if (encoder->hrmode) + { + setup->targetBitsInit -= 1; + } +# endif + + setup->targetBitsAri = setup->total_bits; + + SWITCH (encoder->frame_dms) + { + case 25: + /* 9830 = 2.4 * 2^12 */ + setup->ltpf_enable = + sub(extract_l(L_shr(L_mult0(9830, setup->total_bits), 12)), add(560, DEPR_i_mult(80, encoder->fs_idx))) < 0; + setup->enable_lpc_weighting = 0; + BREAK; + case 50: + setup->ltpf_enable = sub(sub(DEPR_i_mult(setup->total_bits, 2), 160), add(560, DEPR_i_mult(80, encoder->fs_idx))) < 0; + setup->enable_lpc_weighting = setup->total_bits < 240; + BREAK; +#ifdef CR8_G_ADD_75MS + case 75: + setup->ltpf_enable = sub(L_shr(L_mult0(10923, setup->total_bits), 13), add(560, DEPR_i_mult(80, encoder->fs_idx))) < 0; + setup->enable_lpc_weighting = setup->total_bits < 360; + BREAK; +# endif + case 100: + setup->enable_lpc_weighting = setup->total_bits < 480; + setup->ltpf_enable = sub(setup->total_bits, add(560, DEPR_i_mult(80, encoder->fs_idx))) < 0; + BREAK; + } + + setup->quantizedGainOff = + -(s_min(115, setup->total_bits / (10 * (encoder->fs_idx + 1))) + 105 + 5 * (encoder->fs_idx + 1)); + +# ifdef ENABLE_HR_MODE + if (encoder->hrmode && encoder->fs_idx == 5) + { + setup->quantizedGainOff = MAX(setup->quantizedGainOff, -181); + } +# endif + +# ifdef ENABLE_HR_MODE + if (encoder->frame_dms == 100 && + ((encoder->fs_in >= 44100 && setup->targetBytes >= 100) || + (encoder->fs_in == 32000 && setup->targetBytes >= 81)) + && setup->targetBytes < 340 + && (encoder->hrmode == 0)) +# else + if (encoder->frame_dms == 100 && + ((encoder->fs_in >= 44100 && setup->targetBytes >= 100) || + (encoder->fs_in == 32000 && setup->targetBytes >= 81)) + && setup->targetBytes < 340 + ) +# endif + { + setup->attack_handling = 1; + } + else if (encoder->frame_dms == 75 && ((encoder->fs_in >= 44100 && setup->targetBytes >= 75) || + (encoder->fs_in == 32000 && setup->targetBytes >= 61)) && setup->targetBytes < 150 +# ifdef ENABLE_HR_MODE + && encoder->hrmode == 0 +# endif + ) + { + setup->attack_handling = 1; + } + else + { + /* reset attack detector for bitrate switching */ + setup->attack_handling = 0; + setup->attdec_filter_mem[0] = 0; + setup->attdec_filter_mem[1] = 0; + setup->attdec_detected = 0; + setup->attdec_position = 0; + setup->attdec_acc_energy = 0; + setup->attdec_scaling = 0; + } + +# ifdef ENABLE_HR_MODE + if (encoder->hrmode) + { + setup->ltpf_enable = 0; + } +# endif + encoder->sns_damping = SNS_DAMPING; + +# ifdef ENABLE_HR_MODE + IF (encoder->hrmode) + { + encoder->sns_damping = SNS_DAMPING_HRMODE; + IF (encoder->fs_idx >= 4) + { + IF ((encoder->frame_dms == 100) & (setup->total_bits > 4400)) + { + encoder->sns_damping = SNS_DAMPING_HRMODE_UB_10MS; + } +#ifdef CR8_G_ADD_75MS + IF ((encoder->frame_dms == 75) & (setup->total_bits > 3300)) + { + encoder->sns_damping = SNS_DAMPING_HRMODE_UB_7_5MS; + } +#endif + IF ((encoder->frame_dms == 50) & (setup->total_bits > 2300)) + { + encoder->sns_damping = SNS_DAMPING_HRMODE_UB_5MS; + } + IF ((encoder->frame_dms == 25) & (setup->total_bits > 1150)) + { + encoder->sns_damping = SNS_DAMPING_HRMODE_UB_2_5MS; + } + } + } + + if (encoder->hrmode && encoder->fs_idx >= 4) + { + int real_rate = setup->targetBytes * 8 * 10000 / encoder->frame_dms; + setup->regBits = real_rate / 12500; + + if (encoder->fs_idx == 5) + { + if (encoder->frame_dms == 100) + { + setup->regBits += 2; + } +#ifdef CR8_G_ADD_75MS + if (encoder->frame_dms == 75) + { + setup->regBits +=1; + } +#endif + if (encoder->frame_dms == 25) + { + setup->regBits -= 6; + } + } + else + { + if (encoder->frame_dms == 25) + { + setup->regBits -= 6; + } + else if (encoder->frame_dms == 50) + { + setup->regBits += 0; + } +#ifdef CR8_G_ADD_75MS + if (encoder->frame_dms == 75) + { + setup->regBits +=2; + } +#endif + if (encoder->frame_dms == 100) + { + setup->regBits += 5; + } + } + + + if (setup->regBits < 6) + { + setup->regBits = 6; + } + if (setup->regBits > 23) + { + setup->regBits = 23; + } + } + else + { + setup->regBits = -1; + } +# endif + } + + encoder->bitrate = bitrate; + + return LC3PLUS_OK; +} + diff --git a/lib_lc3plus/setup_enc_lc3.h b/lib_lc3plus/setup_enc_lc3.h new file mode 100644 index 0000000000000000000000000000000000000000..34e26a59dd8dd3f7831fb06068e0018e476c0ace --- /dev/null +++ b/lib_lc3plus/setup_enc_lc3.h @@ -0,0 +1,131 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#ifndef SETUP_ENC_LC3_H +#define SETUP_ENC_LC3_H + +#include "constants.h" + +/* Channel state and bitrate-derived values go in this struct */ +typedef struct +{ +#ifdef ENABLE_HR_MODE + Word32 *stEnc_mdct_mem; /* MDCT_MEM_LEN_MAX */ +#else + Word16 *stEnc_mdct_mem; /* MDCT_MEM_LEN_MAX */ +#endif + Word32 *mdct_mem32; /* MDCT_MEM_LEN_MAX */ + Word32 targetBitsOff; + Word16 targetBytes; + Word16 total_bits; + Word16 targetBitsInit; + Word16 targetBitsAri; + Word16 enable_lpc_weighting; + Word16 ltpf_enable; + Word16 quantizedGainOff; + Word16 tns_bits; + Word16 targetBitsQuant; + Word16 olpa_mem_s6k4_exp; + Word16 olpa_mem_pitch; +#ifdef CR9_F_PITCH_WIN_LEN_FIX + Word16 pitch_flag; +#endif + Word16 ltpf_mem_in_exp; + Word16 ltpf_mem_normcorr; + Word16 ltpf_mem_mem_normcorr; + Word16 ltpf_mem_ltpf_on; + Word16 ltpf_mem_pitch; + Word16 mem_targetBits; + Word16 mem_specBits; + Word16 x_exp; + Word16 resamp_exp; + Word16 attack_handling; /* flag to enable attack handling */ + Word16 attdec_filter_mem[2]; + Word16 attdec_detected; + Word16 attdec_position; + Word32 attdec_acc_energy; + Word16 attdec_scaling; +#ifdef ENABLE_HR_MODE + Word16 regBits; + Word32 resamp_mem32[120]; +#else + Word32 resamp_mem32[60]; +#endif +#ifdef ENABLE_HR_MODE + Word16 r12k8_mem_in[120]; +#else + Word16 r12k8_mem_in[60]; +#endif + Word32 r12k8_mem_50[2]; +#ifdef CR8_G_ADD_75MS + Word16 r12k8_mem_out[44]; +#else + Word16 r12k8_mem_out[24]; +#endif + Word16 olpa_mem_s12k8[3]; + Word16 olpa_mem_s6k4[LEN_6K4 + MAX_PITCH_6K4 + 16]; + Word16 ltpf_mem_in[LTPF_MEMIN_LEN + LEN_12K8 + 1]; + Word16 n_pccw; + Word16 n_pc; + + Word16 lfe; +} EncSetup; + +/* Constants and sampling rate derived values go in this struct */ +struct LC3PLUS_Enc +{ + EncSetup *channel_setup[MAX_CHANNELS]; +#ifdef ENABLE_HR_MODE + const Word32 *W_fx; +#else + const Word16 *W_fx; +#endif + const Word16 *bands_offset; + + Word32 fs; /* encoder sampling rate 44.1 -> 48 */ + Word32 fs_in; /* input sampling rate */ + Word32 bitrate; /* global bitrate */ + Word16 fs_idx; /* sampling rate index */ + Word16 frame_length; /* audio samples / frame */ + Word16 channels; /* number of channels */ + Word16 epmode; /* error protection mode */ + Word16 frame_dms; /* frame length in dms (decimilliseconds, 10^-4)*/ + Word8 lc3_br_set; /* indicate if bitrate has been set */ + + Word16 yLen; + Word16 W_size; + Word16 la_zeroes; + Word16 stEnc_mdct_mem_len; + Word16 bands_number; + Word16 nSubdivisions; + Word16 ltpf_mem_in_len; + Word16 envelope_bits; + Word16 global_gain_bits; + Word16 noise_fac_bits; + Word16 BW_cutoff_bits; + Word16 r12k8_mem_in_len; + Word16 r12k8_mem_out_len; + Word16 near_nyquist_index; + Word16 near_nyquist_flag; + + Word16 epmr; + Word16 combined_channel_coding; + Word32 bandwidth; + Word32 bandwidth_preset; + Word32 bw_ctrl_active; + Word16 bw_ctrl_cutoff_bin; + Word16 bw_index; + Word16 attdec_nblocks; + Word16 attdec_damping; + Word16 attdec_hangover_thresh; + Word16 hrmode; + Word16 sns_damping; +}; + +#endif diff --git a/lib_lc3plus/sns_compute_scf_fx.c b/lib_lc3plus/sns_compute_scf_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..d56a1a7f855636c31302a8d8a2da99461db9bf3f --- /dev/null +++ b/lib_lc3plus/sns_compute_scf_fx.c @@ -0,0 +1,166 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +void processSnsComputeScf_fx(Word32 *d2_fx, Word16 d2_fx_exp, Word16 fs_idx, Word16 n_bands, Word16 *scf, + Word16 scf_smoothing_enabled, Word16 attdec_damping_factor, Word8 *scratchBuffer, Word16 sns_damping + ) +{ + Dyn_Mem_Deluxe_In( + Word16 i, s, s2, nf, tmp; + Word32 L_mean, L_tmp; + Word32 *d3_fx; + Word16 *d3_fx_exp; + Word16 *d4_fx; + Word16 *scf_smooth; + ); + + UNUSED(attdec_damping_factor); + + d3_fx = scratchAlign(scratchBuffer, 0); /* Size = 4 * MAX_BANDS_NUMBER = 256 bytes */ + d3_fx_exp = scratchAlign(d3_fx, sizeof(*d3_fx) * MAX_BANDS_NUMBER); /* Size = 2 * MAX_BANDS_NUMBER = 128 bytes */ + d4_fx = scratchAlign(d3_fx_exp, sizeof(*d3_fx_exp) * MAX_BANDS_NUMBER); /* Size = 2 * MAX_BANDS_NUMBER = 128bytes */ + scf_smooth = scratchAlign(d4_fx, sizeof(*d4_fx) * MAX_BANDS_NUMBER); /* Size = 2 * 16 */ + +/* Smoothing and Pre-emphasis */ + IF (sub(n_bands, 32) < 0) + { + L_tmp = sub(32, n_bands); + FOR (i = sub(n_bands, 1); i >= L_tmp; i--) + { + d2_fx[(i + L_tmp) * 2 + 1] = d2_fx[i]; move32(); + d2_fx[(i + L_tmp) * 2 + 0] = d2_fx[i]; move32(); + } + FOR (i = sub(L_tmp, 1); i >= 0; i--) + { + d2_fx[i * 4 + 3] = d2_fx[i]; move32(); + d2_fx[i * 4 + 2] = d2_fx[i]; move32(); + d2_fx[i * 4 + 1] = d2_fx[i]; move32(); + d2_fx[i * 4 + 0] = d2_fx[i]; move32(); + } + n_bands = 64; move16(); + } + ELSE + IF (sub(n_bands, 64) < 0) + { + L_tmp = sub(64, n_bands); + FOR (i = sub(n_bands, 1); i >= L_tmp; i--) + { + d2_fx[i + L_tmp] = d2_fx[i]; move32(); + } + FOR (i = sub(L_tmp, 1); i >= 0; i--) + { + d2_fx[i * 2 + 1] = d2_fx[i]; move32(); + d2_fx[i * 2 + 0] = d2_fx[i]; move32(); + } + n_bands = 64; move16(); + } + + L_tmp = L_add(Mpy_32_16_lc3plus(d2_fx[0], 24576), L_shr_pos(d2_fx[1], 2)); + d3_fx[0] = Mpy_32_16_lc3plus(L_tmp, lpc_pre_emphasis[fs_idx][0]); move32(); + d3_fx_exp[0] = add(d2_fx_exp, lpc_pre_emphasis_e[fs_idx][0]); move16(); + FOR (i = 1; i < n_bands - 1; i++) + { + L_tmp = L_add(L_shr_pos(d2_fx[i], 1), L_add(L_shr_pos(d2_fx[i - 1], 2), L_shr_pos(d2_fx[i + 1], 2))); + d3_fx[i] = Mpy_32_16_lc3plus(L_tmp, lpc_pre_emphasis[fs_idx][i]); move32(); + d3_fx_exp[i] = add(d2_fx_exp, lpc_pre_emphasis_e[fs_idx][i]); move16(); + } + L_tmp = L_add(Mpy_32_16_lc3plus(d2_fx[n_bands - 1], 24576), L_shr_pos(d2_fx[n_bands - 2], 2)); + d3_fx[n_bands - 1] = Mpy_32_16_lc3plus(L_tmp, lpc_pre_emphasis[fs_idx][n_bands - 1]); move32(); + d3_fx_exp[n_bands - 1] = add(d2_fx_exp, lpc_pre_emphasis_e[fs_idx][n_bands - 1]); move16(); + + /* Mean */ + s = d3_fx_exp[MAX_BANDS_NUMBER - 1]; + s2 = add(s, 6); + + L_mean = L_shr(d3_fx[0], sub(s2, d3_fx_exp[0])); + FOR (i = 1; i < MAX_BANDS_NUMBER; i++) + { + L_mean = L_add(L_mean, L_shr(d3_fx[i], sub(s2, d3_fx_exp[i]))); + } + + /* Noise floor at -40dB */ + nf = BASOP_Util_Log2_16(L_mean, s); + nf = sub(s_max(nf, -25965), 6803); + +/* Log-domain */ + FOR (i = 0; i < MAX_BANDS_NUMBER; i++) + { + d4_fx[i] = s_max(nf, BASOP_Util_Log2_16(d3_fx[i], d3_fx_exp[i])); move16(); + } + + /* Downsampling */ + L_tmp = L_mult(d4_fx[0], 8192); + L_tmp = L_mac(L_tmp, d4_fx[1], 8192); + L_tmp = L_mac(L_tmp, d4_fx[2], 8192); + L_tmp = L_mac(L_tmp, d4_fx[3], 5461); + d3_fx[0] = L_mac(L_tmp, d4_fx[4], 2731); move32(); + FOR (i = 1; i < M - 1; i++) + { + L_tmp = L_mult(d4_fx[i * 4 - 1], 2731); + L_tmp = L_mac(L_tmp, d4_fx[i * 4 + 0], 5461); + L_tmp = L_mac(L_tmp, d4_fx[i * 4 + 1], 8192); + L_tmp = L_mac(L_tmp, d4_fx[i * 4 + 2], 8192); + L_tmp = L_mac(L_tmp, d4_fx[i * 4 + 3], 5461); + d3_fx[i] = L_mac(L_tmp, d4_fx[i * 4 + 4], 2731); move32(); + } + L_tmp = L_mult(d4_fx[59], 2731); + L_tmp = L_mac(L_tmp, d4_fx[60], 5461); + L_tmp = L_mac(L_tmp, d4_fx[61], 8192); + L_tmp = L_mac(L_tmp, d4_fx[62], 8192); + d3_fx[M - 1] = L_mac(L_tmp, d4_fx[63], 8192); move32(); + +/* Remove mean and scaling */ + L_mean = L_shr_pos(d3_fx[0], 4); + FOR (i = 1; i < M; i++) + { + L_mean = L_add(L_mean, L_shr_pos(d3_fx[i], 4)); + } + + FOR (i = 0; i < M; i++) + { + scf[i] = mult_r(sns_damping, round_fx(L_shl_pos(L_sub(d3_fx[i], L_mean), 1))); + move16(); + } + + /* scale factor smoothing */ + IF (scf_smoothing_enabled) + { + scf_smooth[0] = L_shr(L_mult0(L_add(L_add(scf[0], scf[1]), scf[2]), 10923), 15); + L_mean = scf_smooth[0]; move16(); + scf_smooth[1] = L_shr(L_add(L_add(L_add(scf[0], scf[1]), scf[2]), scf[3]), 2); + L_mean = L_add(L_mean, scf_smooth[1]); + FOR (i = 2; i < M - 2; i++) + { + L_tmp = L_add(L_add(L_add(L_add(scf[i - 2], scf[i - 1]), scf[i]), scf[i + 1]), scf[i + 2]); + tmp = norm_s(L_shr(L_abs(L_tmp), 15)); + if (tmp > 0) { + tmp = sub(16, tmp); + L_tmp = L_shr(L_tmp, tmp); + } + scf_smooth[i] = L_shr(L_mult0(L_tmp, 13107), sub(16, tmp)); + L_mean = L_add(L_mean, scf_smooth[i]); + } + scf_smooth[M - 2] = L_shr(L_add(L_add(L_add(scf[M - 4], scf[M - 3]), scf[M - 2]), scf[M - 1]), 2); + L_mean = L_add(L_mean, scf_smooth[M - 2]); + scf_smooth[M - 1] = L_shr(L_mult0(L_add(L_add(scf[M - 3], scf[M - 2]), scf[M - 1]), 10923), 15); + L_mean = L_add(L_mean, scf_smooth[M - 1]); + + L_mean = L_shr(L_mean, 4); + + FOR (i = 0; i < M; i++) + { + scf[i] = mult_r(attdec_damping_factor, sub(scf_smooth[i], L_mean)); + } + } + + Dyn_Mem_Deluxe_Out(); +} + diff --git a/lib_lc3plus/sns_interpolate_scf_fx.c b/lib_lc3plus/sns_interpolate_scf_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..e71825d075dc6e04e0139ca0b554ddd8c556f13b --- /dev/null +++ b/lib_lc3plus/sns_interpolate_scf_fx.c @@ -0,0 +1,154 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +void processSnsInterpolateScf_fx( +#ifdef ENABLE_HR_MODE + Word32 *scf_q, Word32 mdct_scf[], +#else + Word16 *scf_q, Word16 mdct_scf[], +#endif + Word16 mdct_scf_exp[], Word16 inv_scf, + Word16 n_bands, Word8 *scratchBuffer) +{ +#ifdef ENABLE_HR_MODE + Dyn_Mem_Deluxe_In( + Word32 i, tmp2; + Word32 *scf_int; + Word32 tmp; + Word32 *scf_tmp; + ); +#else + Dyn_Mem_Deluxe_In( + Word16 i, tmp2; + Word16 *scf_int; + Word16 tmp; + Word16 *scf_tmp; + ); +#endif + +#ifdef ENABLE_HR_MODE + scf_int = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * MAX_BANDS_NUMBER = 128 bytes */ + scf_tmp = (Word32 *)scratchAlign(scf_int, 4 * MAX_BANDS_NUMBER); /* 2 * MAX_BANDS_NUMBER = 128 bytes */ +#else + scf_int = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * MAX_BANDS_NUMBER = 128 bytes */ + scf_tmp = (Word16 *)scratchAlign(scf_int, 2 * MAX_BANDS_NUMBER); /* 2 * MAX_BANDS_NUMBER = 128 bytes */ +#endif + + /* Interpolation */ + scf_int[0] = scf_q[0]; + scf_int[1] = scf_q[0]; + FOR (i = 1; i < M; i++) + { +#ifdef ENABLE_HR_MODE + tmp = L_sub(scf_q[i], scf_q[i - 1]); + tmp2 = L_shr(tmp, 2); + tmp = L_shr(tmp, 3); + scf_int[i * 4 - 2] = L_add(scf_q[i - 1], tmp); + scf_int[i * 4 - 1] = L_add(scf_int[i * 4 - 2], tmp2); + scf_int[i * 4] = L_add(scf_int[i * 4 - 1], tmp2); + scf_int[i * 4 + 1] = L_add(scf_int[i * 4], tmp2); +#else + tmp = sub(scf_q[i], scf_q[i - 1]); + tmp2 = mult_r(tmp, 8192); + tmp = mult_r(tmp, 4096); + scf_int[i * 4 - 2] = add(scf_q[i - 1], tmp); + scf_int[i * 4 - 1] = add(scf_int[i * 4 - 2], tmp2); + scf_int[i * 4] = add(scf_int[i * 4 - 1], tmp2); + scf_int[i * 4 + 1] = add(scf_int[i * 4], tmp2); +#endif + } +#ifdef ENABLE_HR_MODE + scf_int[62] = L_add(scf_int[61], tmp2); + scf_int[63] = L_add(scf_int[62], tmp2); +#else + scf_int[62] = add(scf_int[61], tmp2); + scf_int[63] = add(scf_int[62], tmp2); +#endif + + /* 8 kHz mode for 2.5 ms */ + IF (sub(n_bands, 32) < 0) + { +#ifdef ENABLE_HR_MODE + basop_memmove(scf_tmp, scf_int, 64 * sizeof(Word32)); +#else + basop_memmove(scf_tmp, scf_int, 64 * sizeof(Word16)); +#endif + tmp = sub(32, n_bands); + FOR (i = 0; i < tmp; i++) + { +#ifdef ENABLE_HR_MODE + scf_int[i] = L_add(L_shr(L_add(scf_tmp[4 * i], scf_tmp[4 * i + 1]), 2), + L_shr(L_add(scf_tmp[4 * i + 2], scf_tmp[4 * i + 3]), 2)); +#else + /* 8192 = 0.25 * 2^15 */ + scf_int[i] = add(mac_r(L_mult(scf_tmp[4 * i], 8192), scf_tmp[4 * i + 1], 8192), + mac_r(L_mult(scf_tmp[4 * i + 2], 8192), scf_tmp[4 * i + 3], 8192)); +#endif + } + + FOR (i = 0; i < n_bands - tmp; i++) + { +#ifdef ENABLE_HR_MODE + scf_int[tmp + i] = L_shr(L_add(scf_tmp[4 * tmp + 2 * i], scf_tmp[4 * tmp + 2 * i + 1]), 1); +#else + scf_int[tmp + i] = mac_r(L_mult(scf_tmp[4 * tmp + 2 * i], 16384), scf_tmp[4 * tmp + 2 * i + 1], 16384); +#endif + } + } + ELSE + /* For 5ms */ + IF (sub(n_bands, 64) < 0) + { + tmp = sub(64, n_bands); + FOR (i = 0; i < tmp; i++) + { +#ifdef ENABLE_HR_MODE + scf_int[i] = L_shr(L_add(scf_int[2 * i], scf_int[2 * i + 1]), 1); +#else + scf_int[i] = mac_r(L_mult(scf_int[2 * i], 16384), scf_int[2 * i + 1], 16384); +#endif + } + FOR (; i < n_bands; i++) + { + scf_int[i] = scf_int[tmp + i]; move16(); + } +#ifdef ENABLE_HR_MODE + move16(); // 32 bit operations have twice the complexity weight of 16 bit operations +#endif + } + + /* Inversion at encoder-side*/ + IF (inv_scf == 1) + { + FOR (i = 0; i < n_bands; i++) + { +#ifdef ENABLE_HR_MODE + scf_int[i] = L_negate(scf_int[i]); +#else + scf_int[i] = negate(scf_int[i]); +#endif + } + } + +/* Linear Domain */ + FOR (i = 0; i < n_bands; i++) + { +#ifdef ENABLE_HR_MODE + /* scf_int is in Q26, BASOP_Util_InvLog2_pos requires Q25 data */ + mdct_scf[i] = BASOP_Util_InvLog2_pos(L_shr(scf_int[i], 1), &mdct_scf_exp[i]); +#else + mdct_scf[i] = BASOP_Util_InvLog2_16(scf_int[i], &mdct_scf_exp[i]); +#endif + } + + Dyn_Mem_Deluxe_Out(); +} + diff --git a/lib_lc3plus/sns_quantize_scf_fx.c b/lib_lc3plus/sns_quantize_scf_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..f1f0ba423ac32acb334b53cc9b024e024379aeef --- /dev/null +++ b/lib_lc3plus/sns_quantize_scf_fx.c @@ -0,0 +1,834 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +static Word16 stage1_base( /* o : idx */ + const Word16 *t, /* i : target SCFs */ +#ifdef ENABLE_HR_MODE + const Word32 *cdbk, /* i : SCFs cdbk */ +#else + const Word16 *cdbk, /* i : SCFs cdbk */ +#endif + const Word16 R /* i : number of rows in codebook */ +) +{ + Counter row; + Word16 k_ptr, idx; + Word32 L_min_mse, L_mse; + Counter col; +#ifdef ENABLE_HR_MODE + Word32 err; +#else + Word16 err; +#endif + +#ifdef DYNMEM_COUNT + Dyn_Mem_In("stage1_base", sizeof(struct { + Counter row, col; + Word16 k_ptr, idx, err; + Word32 L_min_mse, L_mse; + })); +#endif +#ifdef WMOPS + push_wmops("stage1_base"); +#endif + +/* find first vector error energy for */ +/* loop probably works with saturation , but it should not occur anyway */ + L_min_mse = L_add(0, 0); /* init acc with absolute min mse sofar */ + FOR (col = 0; col < M / 2; col++) /* fixed to 8 elements */ + { +#ifdef ENABLE_HR_MODE + err = L_sub(cdbk[col], L_deposit_h(t[col])); /* cdbk max abs value is 2048 = 2.^11 , max nb col is 2^3 max + target is approx similar (2.^14/M)*2 = +/- 2048 , errmax is 4096 */ + L_min_mse = L_add(L_min_mse, Mpy_32_32_lc3plus(err, err)); +#else + err = sub(cdbk[col], t[col]); /* cdbk max abs value is 2048 = 2.^11 , max nb col is 2^3 max target is approx + similar (2.^14/M)*2 = +/- 2048 , errmax is 4096 */ + L_min_mse = L_mac0(L_min_mse, err, err); /* max L_min_mse is 8*4096*4096 =2.^(3+12+12) = 2.^27 */ +#endif + } + + idx = 0; move16(); + + k_ptr = M / 2; move16(); /* ptr init to second row */ + FOR (row = 1; row < R; row++) + { + /* loop probably works with saturation , but it should not occur anyway */ + + L_mse = L_add(L_min_mse, 0); /* init acc with min mse sofar , */ + FOR (col = 0; col < M / 2; col++) /* fixed to 8 elements */ + { +#ifdef ENABLE_HR_MODE + err = L_sub(cdbk[k_ptr++], L_deposit_h(t[col])); + L_mse = L_sub(L_mse, Mpy_32_32_lc3plus(err, err)); +#else + err = sub(cdbk[k_ptr++], t[col]); + L_mse = L_msu0(L_mse, err, + err); /* NB subtraction from best MSE error sofar in acc , saturation may not occur */ +#endif + } + + L_min_mse = L_sub(L_min_mse, L_max(L_mse, 0L)); /* ALWAYS update best MSE error sofar */ + + if (L_mse > 0L) /* if acc value still is positive a new lower error energy vector was found in this row */ + { + idx = row; move16(); /* update 1-8 bits idx */ + } + + /* this inner loop(always updating L_min_mse), (L_msu, if ) consumes AV 19, WC ~20 STL cycles , + compared to a conventional(L_mac, IF( ) ) AV 21 WC ~23 STL cycles per + loop */ + } + ASSERT(idx >= 0 && idx < R); + +#ifdef WMOPS + pop_wmops(); +#endif +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif + + return idx; +} + +static void first_stage_split_search( +#ifdef ENABLE_HR_MODE + const Word32 *cbk_LF, const Word32 *cbk_HF, +#else + const Word16 *cbk_LF, const Word16 *cbk_HF, +#endif + const Word16 *target, + const Word16 nbCbkEntries, Word16 *idxLF, Word16 *idxHF) +{ + /* find base index for each SCF split */ + *idxLF = stage1_base(target, cbk_LF, nbCbkEntries); + *idxHF = stage1_base((&target[M / 2]), cbk_HF, nbCbkEntries); +} + +static void processDeQuantize_stage1ScfDecStage1_fx( +#ifdef ENABLE_HR_MODE + const Word32 *cbk_LF, const Word32 *cbk_HF, +#else + const Word16 *cbk_LF, const Word16 *cbk_HF, +#endif + Word16 st1_idx0, Word16 st1_idx1, +#ifdef ENABLE_HR_MODE + Word32 *st1_vector +#else + Word16 *st1_vector +#endif + ) +{ + Counter col; + Word16 offset0, offset1; +#ifdef DYNMEM_COUNT + Dyn_Mem_In("processDeQuantize_stage1ScfDecStage1_fx", sizeof(struct { + Word16 offset0, offset1; + Counter col; + })); +#endif + + offset0 = shl_pos(st1_idx0, 3); /* mult by M/2 */ + offset1 = shl_pos(st1_idx1, 3); + FOR (col = 0; col < M / 2; col++) + { + st1_vector[col] = cbk_LF[offset0++]; move16(); + st1_vector[col + 8] = cbk_HF[offset1++]; move16(); +#ifdef ENABLE_HR_MODE + move16(); + move16(); +#endif + } +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif +} + +void downshift_w32_arr(Word32 *w32_arr, Word16 *w16_arr, Word16 shft_val, Word32 len) +{ + Word32 i; + FOR (i = 0; i < len; i++) + { + w16_arr[i] = extract_l(L_shr_pos(w32_arr[i], shft_val)); + move16(); + } + return; +} + +void round_w32tow16_arr(Word32 *w32_arr, Word16 *w16_arr,Word32 len) +{ + Word32 i; + FOR (i = 0; i < len; i++) + { + w16_arr[i] = round_fx(w32_arr[i]); + move16(); + } + return; +} + +static void processQuantize_stage1ScfEncStage1_fx(const Word16 *target_st1, +#ifdef ENABLE_HR_MODE + Word32 *st1_vector, +#else + Word16 *st1_vector, +#endif + Word16 *st1_idx0Ptr, Word16 *st1_idx1Ptr) + +{ +#ifdef WMOPS + push_wmops("processQuantize_stage1ScfEncStage1_fx"); +#endif + +#ifdef ENABLE_HR_MODE + first_stage_split_search(st1SCF0_7_base5_32x8_Q27, st1SCF8_15_base5_32x8_Q27, target_st1, SCF_STAGE1_NBCDKENTRIES, + st1_idx0Ptr, st1_idx1Ptr); + + processDeQuantize_stage1ScfDecStage1_fx(st1SCF0_7_base5_32x8_Q27, st1SCF8_15_base5_32x8_Q27, *st1_idx0Ptr, + *st1_idx1Ptr, st1_vector); +#else + first_stage_split_search(st1SCF0_7_base5_32x8_Q11, st1SCF8_15_base5_32x8_Q11, target_st1, SCF_STAGE1_NBCDKENTRIES, + st1_idx0Ptr, st1_idx1Ptr); + + processDeQuantize_stage1ScfDecStage1_fx(st1SCF0_7_base5_32x8_Q11, st1SCF8_15_base5_32x8_Q11, *st1_idx0Ptr, + *st1_idx1Ptr, st1_vector); +#endif + +#ifdef WMOPS + pop_wmops(); +#endif + + return; +} + +/* gain-shape MSE search in warped SCF-residual domain, synthesis in SCF resiudal domain allows for easy weighting */ + +static void pvq_enc_find_best_submode_pre_post_fx( +#ifdef ENABLE_HR_MODE + const Word32 *target_st2, /* this target is in the linearized warped domain , same as input to PVQ search */ +#else + const Word16 *target_st2, /* this target is in the linearized warped domain , same as input to PVQ search */ +#endif + const Word16 *enc_pulses_far, Word16 *enc_pulses_near, const Word16 *enc_pulsesA, const Word16 *enc_pulsesB, + Word16 *sub_mode_ptr, Word16 *i_gain_ptr, +#ifdef ENABLE_HR_MODE + Word32 *enc_adj_glob_warped_vec, +#else + Word16 *enc_adj_glob_warped_vec, +#endif + Word8 *scratchBuffer) /* Size = 18 * M */ +{ + + Counter L_section, idx; +#ifdef ENABLE_HR_MODE + const Word32 *search_en1shape[N_SCF_SHAPES_ST2]; +#else + const Word16 *search_en1shape[N_SCF_SHAPES_ST2]; +#endif + const Word16 *search_gainTab[N_SCF_SHAPES_ST2]; + Word16 search_n_gains[N_SCF_SHAPES_ST2]; + Word32 L_mse, L_mse_min, L_idx; + Word16 * pulses_far, *pulses_near, *pulsesAB, *pulsesA; +#ifdef ENABLE_HR_MODE + Word32 * target_w, *shape_far, *shape_near, *shapeAB, *shapeA; +#else + Word16 * target_w, *shape_far, *shape_near, *shapeAB, *shapeA; +#endif +#ifdef ENABLE_HR_MODE + Word32 tmp, err; +#else + Word16 tmp, err; +#endif + Counter i; + +#ifdef DYNMEM_COUNT +#ifdef ENABLE_HR_MODE + Dyn_Mem_In("pvq_enc_find_best_submode_pre_post_fx", sizeof(struct { + Counter i, L_section, idx; + Word32 *search_en1shape[N_SCF_SHAPES_ST2]; + Word16 *search_gainTab[N_SCF_SHAPES_ST2]; + Word16 search_n_gains[N_SCF_SHAPES_ST2]; + Word32 L_mse, L_mse_min, L_idx; + Word16 *pulses_far, *pulses_near, *pulsesAB, *pulsesA; + Word32 *target_w, *shape_far, *shape_near, *shapeAB, *shapeA; + Word32 tmp, err; + })); +#else + Dyn_Mem_In("pvq_enc_find_best_submode_pre_post_fx", sizeof(struct { + Counter i, L_section, idx; + Word16 *search_en1shape[N_SCF_SHAPES_ST2]; + Word16 *search_gainTab[N_SCF_SHAPES_ST2]; + Word16 search_n_gains[N_SCF_SHAPES_ST2]; + Word32 L_mse, L_mse_min, L_idx; + Word16 *pulses_far, *pulses_near, *pulsesAB, *pulsesA; + Word16 *target_w, *shape_far, *shape_near, *shapeAB, *shapeA; + Word16 tmp, err; + })); +#endif /* ENABLE_HR_MODE */ +#endif /* DYNMEM_COUNT */ + + pulses_near = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * M */ + + pulsesAB = (Word16 *)scratchAlign(pulses_near, sizeof(*pulses_near) * M); /* Size = 2 * M */ + + pulsesA = (Word16 *)scratchAlign(pulsesAB, sizeof(*pulsesAB) * M); /* Size = 2 * M */ + +#ifdef ENABLE_HR_MODE + target_w = (Word32 *)scratchAlign(pulsesA, sizeof(*pulsesA) * M); /* Size = 2 * M */ + + shape_near = (Word32 *)scratchAlign(target_w, sizeof(*target_w) * M); /* Size = 4 * M */ + + shapeAB = (Word32 *)scratchAlign(shape_near, sizeof(*shape_near) * M); /* Size = 4 * M */ + + shapeA = (Word32 *)scratchAlign(shapeAB, sizeof(*shapeAB) * M); /* Size = 4 * M */ +#else + target_w = (Word16 *)scratchAlign(pulsesA, sizeof(*pulsesA) * M); /* Size = 2 * M */ + + shape_near = (Word16 *)scratchAlign(target_w, sizeof(*target_w) * M); /* Size = 2 * M */ + + shapeAB = (Word16 *)scratchAlign(shape_near, sizeof(*shape_near) * M); /* Size = 2 * M */ + + shapeA = (Word16 *)scratchAlign(shapeAB, sizeof(*shapeAB) * M); /* Size = 2 * M */ +#endif + + pulses_far = (Word16 *)scratchAlign(shapeA, sizeof(*shapeA) * M); /* Size = 2 * M */ + +#ifdef ENABLE_HR_MODE + shape_far = (Word32 *)scratchAlign(pulses_far, sizeof(*pulses_far) * M); /* Size = 2 * M */ +#else + shape_far = (Word16 *)scratchAlign(pulses_far, sizeof(*pulses_far) * M); /* Size = 2 * M */ +#endif + +#ifdef WMOPS + push_wmops("pvq_enc_find_best_submode_pre_post_fx"); +#endif + + /* construct pulse vectors and en1 normalized shape vectors */ /* use shape Q in Q14 */ + basop_memmove(pulses_far, enc_pulses_far, M * sizeof(*pulses_far)); + basop_memmove(pulses_near, enc_pulses_near, M * sizeof(*pulses_near)); + basop_memmove(target_w, target_st2, M * sizeof(*target_w)); + + pvq_dec_en1_normQ14_fx(shape_near, pulses_near, sns_Kval[2][0], M); /* near outlier mode */ + pvq_dec_en1_normQ14_fx(shape_far, pulses_far, sns_Kval[3][0], M); /* far outlier mode */ + + /* regular mode(with a split), prepare vectors of full length M */ + basop_memmove(pulsesAB, enc_pulsesA, N_SETA * sizeof(*pulsesAB)); + basop_memmove(pulsesA, enc_pulsesA, N_SETA * sizeof(*pulsesA)); + + FOR (i = N_SETA; i < M; i++) + { + pulsesAB[i] = enc_pulsesB[sub(i, N_SETA)]; move16(); + } + + IF (M > N_SETA) + { + basop_memset(&pulsesA[N_SETA], 0, (M - N_SETA) * sizeof(*pulsesA)); + } + + pvq_dec_en1_normQ14_fx(shapeAB, pulsesAB, sns_Kval[0][0], M); + /* regular AB , b_pulses = 1 ;*/ /* OPT: combine with shapeA */ + + pvq_dec_en1_normQ14_fx(shapeA, pulsesA, sns_Kval[1][0], M); + /* regular A , b_pulses = 0 */ /* OPT: M-> N_SETA */ + + /* setup search structure */ + + /* now aligned with order of j {regular=0, regular_lf=1, outlier_near=2, outlier far=3} */ + + search_en1shape[0] = shapeAB; + search_gainTab[0] = sns_gaintabPtr[0]; + search_n_gains[0] = sns_gainSz[0]; /* assumes whole bits */ + + search_en1shape[1] = shapeA; + search_gainTab[1] = sns_gaintabPtr[1]; + search_n_gains[1] = sns_gainSz[1]; /* assumes whole bits */ + + search_en1shape[2] = shape_near; + search_gainTab[2] = sns_gaintabPtr[2]; + search_n_gains[2] = sns_gainSz[2]; /*assume whole bits */ + + search_en1shape[3] = shape_far; + search_gainTab[3] = sns_gaintabPtr[3]; + search_n_gains[3] = sns_gainSz[3]; /*assume whole bits */ + + /* start actual search loop */ + + /* basic raw MSE loop, */ + L_mse_min = INT32_MAX; move32(); + L_idx = L_deposit_l(-1); /* section in low 2 bits* gain idx above */ + + FOR (L_section = 0; L_section < N_SCF_SHAPES_ST2; L_section++) + { + /* raw MSE over gain and shape */ + FOR (idx = 0; idx < search_n_gains[L_section]; idx++) + { + /* MSE ( proc_target_local[i]-adjGain[i]*en1Shape[i] ) */ + + L_mse = L_deposit_l(0); + FOR (i = 0; i < M; i++) + { +#ifdef ENABLE_HR_MODE + tmp = Mpy_32_16_lc3plus(search_en1shape[L_section][i], search_gainTab[L_section][idx]); /* Q30 + 14 - 15 = Q29 */ + err = L_sub(target_w[i], tmp); /* both in Q29 */ + L_mse = L_add(L_mse, L_shr_pos(Mpy_32_32_lc3plus(err, err), 1)); /* Q29+29-31 = Q27 */ +#else + tmp = mult_r(search_gainTab[L_section][idx], search_en1shape[L_section][i]); /* Q15+14+1-16= Q14 */ + err = sub(target_w[i], tmp); /* both in Q14 */ + L_mse = L_mac0(L_mse, err, err); /* Q14+14 = Q28 */ +#endif /* Q14+14 = Q28 */ + } + + IF (L_sub(L_mse, L_mse_min) < 0) /* OPT: always update L_mse_min) */ + { + L_mse_min = L_mse; move32(); + L_idx = L_mac0(L_section, idx, 1 << 2); /* save both section and gain idx */ + } + } /* gains */ + } /*submodes*/ + + L_section = L_and(0x3L, L_idx); /* section was stored in two lowest bits */ + ASSERT(L_section >= 0 && L_section <= 3); + *i_gain_ptr = extract_l(L_shr_pos(L_idx, 2)); /*1,2,3 bit gain */ + ASSERT(*i_gain_ptr >= 0 && *i_gain_ptr <= 7); + + /* returns a scaled and transformed vector, ___EXACTLY__ as a decoder would scale it */ + ASSERT(enc_adj_glob_warped_vec != NULL); + { + /* warp/rotate search result to SCF residual domain */ +#ifdef ENABLE_HR_MODE + idct32_32_fx(search_en1shape[L_section], target_w); +#else + idct16_fx(search_en1shape[L_section], target_w); /* fwd synthesis warping */ +#endif + /* actual synthesis gain scaling in SCF-residual domain, for easy weighting analysis */ + pvq_dec_scale_vec_fx(target_w, search_gainTab[L_section][*i_gain_ptr], enc_adj_glob_warped_vec); + } + + *sub_mode_ptr = extract_l(L_section); + move16(); /* 0,1,2,3 */ + +#ifdef WMOPS + pop_wmops(); +#endif +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif + return; +} + +static void processQuantize_stage2ScfEncStage2_fx( +#ifdef ENABLE_HR_MODE + const Word32 *target_st2, Word32 *st2_vector, +#else + const Word16 *target_st2, Word16 *st2_vector, +#endif + Word32 *L_prm_idx, + Word16 submodes, Word8 *scratchBuffer) /* Size = 26 * M + 48 */ +{ /*func */ +#ifdef ENABLE_HR_MODE + Word32 *proc_target; +#else + Word16 *proc_target; +#endif + + Word16 *enc_pulses_far, *enc_pulses_near, *enc_pulsesA, *enc_pulsesB; + + Word16 *pulses_fin, *pulses_proj; + Word32 L_tmp; + + Word8 *buffer_pvq_enc_find_best_submode_pre_post_fx; + + PvqEntry_fx enc_PVQ_OA, enc_PVQ_B; + Word16 submode, i_gain, submodeMSB, submodeLSB; + Word32 * L_search_corr, *L_search_en; +#ifdef ENABLE_HR_MODE + Word16 * proc_target_lp; +#endif + +#ifdef DYNMEM_COUNT +#ifdef ENABLE_HR_MODE + Dyn_Mem_In("processQuantize_stage2ScfEncStage2_fx", sizeof(struct { + Word32 *proc_target; + Word16 *enc_pulses_far, *enc_pulses_near, *enc_pulsesA, *enc_pulsesB; + Word16 *pulses_fin, *pulses_proj; + Word32 L_tmp; + Word8 *buffer_pvq_enc_find_best_submode_pre_post_fx; + PvqEntry_fx enc_PVQ_OA, enc_PVQ_B; + Word16 submode, i_gain, submodeMSB, submodeLSB; + Word32 * L_search_corr, *L_search_en; + Word16 * proc_target_lp; + })); +#else + Dyn_Mem_In("processQuantize_stage2ScfEncStage2_fx", sizeof(struct { + Word16 *proc_target; + Word16 *enc_pulses_far, *enc_pulses_near, *enc_pulsesA, *enc_pulsesB; + Word16 *pulses_fin, *pulses_proj; + Word32 L_tmp; + Word8 *buffer_pvq_enc_find_best_submode_pre_post_fx; + PvqEntry_fx enc_PVQ_OA, enc_PVQ_B; + Word16 submode, i_gain, submodeMSB, submodeLSB; + Word32 * L_search_corr, *L_search_en; + })); +#endif /* ENABLE_HR_MODE */ +#endif /* DYNMEM_COUNT */ + +#ifdef ENABLE_HR_MODE + buffer_pvq_enc_find_best_submode_pre_post_fx = (Word8 *) scratchAlign(scratchBuffer, 0); + proc_target = (Word32 *) scratchAlign(buffer_pvq_enc_find_best_submode_pre_post_fx, sizeof(*buffer_pvq_enc_find_best_submode_pre_post_fx) * 28 * M); +#else + buffer_pvq_enc_find_best_submode_pre_post_fx = scratchAlign(scratchBuffer, 0); /* Size = 18 * M */ + proc_target = + (Word16 *)scratchAlign(buffer_pvq_enc_find_best_submode_pre_post_fx, + sizeof(*buffer_pvq_enc_find_best_submode_pre_post_fx) * 18 * M); /* Size = 2 * M */ +#endif + + enc_pulses_near = (Word16 *)scratchAlign(proc_target, sizeof(*proc_target) * M); /* Size = 2 * M */ + enc_pulsesA = (Word16 *)scratchAlign(enc_pulses_near, sizeof(*enc_pulses_near) * M); /* Size = 2 * N_SETA */ + enc_pulsesB = (Word16 *)scratchAlign(enc_pulsesA, sizeof(*enc_pulsesA) * N_SETA); /* Size = 2 * N_SETB */ + pulses_fin = (Word16 *)scratchAlign(enc_pulsesB, sizeof(*enc_pulsesB) * N_SETB); /* Size = 2 * N_SCF_SHAPES_ST2 */ + pulses_proj = + (Word16 *)scratchAlign(pulses_fin, sizeof(*pulses_fin) * N_SCF_SHAPES_ST2); /* Size = 2 * N_SCF_SHAPES_ST2 */ + L_search_corr = + (Word32 *)scratchAlign(pulses_proj, sizeof(*pulses_proj) * N_SCF_SHAPES_ST2); /* Size = 4 * N_SCF_SHAPES_ST2 */ + L_search_en = (Word32 *)scratchAlign(L_search_corr, + sizeof(*L_search_corr) * N_SCF_SHAPES_ST2); /* Size = 4 * N_SCF_SHAPES_ST2 */ + enc_pulses_far = (Word16 *)scratchAlign(L_search_en, sizeof(*L_search_en) * N_SCF_SHAPES_ST2); /* Size = 2 * M */ + +#ifdef ENABLE_HR_MODE + proc_target_lp = (Word16 *)buffer_pvq_enc_find_best_submode_pre_post_fx; /* size = 2*M */ +#endif + +#ifdef WMOPS + push_wmops("processQuantize_stage2ScfEncStage2_fx"); +#endif + + /* fixed setup for a given bitrate of 38 , no moves needed */ + /* k_far = sns_Kval[3][0]; */ + /* k_near = sns_Kval[2][0]; */ + /* kA = sns_Kval[1][0]; */ /* regular, regular_lf */ + /* kB is always 1 */ + + /* NB these search indecese do not correspond exactly to specification shape_index j */ + + pulses_fin[0] = sns_Kval[3][0]; /* far 6 */ + pulses_fin[1] = sns_Kval[2][0]; /* near 8 */ + pulses_fin[2] = sns_Kval[1][0]; /* section A 10 */ + pulses_fin[3] = sns_Kval[0][1]; /* section B 1 */ + + pulses_proj[0] = sns_Kval[3][0]; + pulses_proj[1] = 0; + pulses_proj[2] = 0; + pulses_proj[3] = 0; + + /* pre_process */ +#ifdef ENABLE_HR_MODE + dct32_fx(target_st2, proc_target); /* enc analysis */ + downshift_w32_arr(proc_target, proc_target_lp, 16, M); + + /* get the initial four integer shape candidate vectors, no normalization at this stage */ + pvq_enc_search_fx(proc_target_lp, enc_pulses_far, enc_pulses_near, enc_pulsesA, enc_pulsesB, L_search_corr, + L_search_en, pulses_fin, pulses_proj, M, N_SETA); +#else + Word32 target_st2_32[M]; Word32 proc_target_32[M]; int i; + + FOR (i = 0; i < M; i++) + { + target_st2_32[i] = L_shl_pos(target_st2[i], 16); + } + + dct32_fx(target_st2_32, proc_target_32); /* enc analysis */ + + downshift_w32_arr(proc_target_32, proc_target, 16, M); + + /* get the initial four integer shape candidate vectors, no normalization at this stage */ + pvq_enc_search_fx(proc_target, enc_pulses_far, enc_pulses_near, enc_pulsesA, enc_pulsesB, L_search_corr, + L_search_en, pulses_fin, pulses_proj, M, N_SETA); +#endif + + /* scale with gains a after a unit energy fwd transform */ + /* apply transform to each candidate shape vector priot to gain-shape search loop */ + submode = submodes; /* used as input solely to debug/unit test a specific shape mode */ + + /*target should be in a linearized residual domain target */ + /* search pre, synthesis post*/ + pvq_enc_find_best_submode_pre_post_fx(proc_target, enc_pulses_far, enc_pulses_near, enc_pulsesA, enc_pulsesB, + &submode, &i_gain, st2_vector, + buffer_pvq_enc_find_best_submode_pre_post_fx); /* Q14 tr out */ + + /* send parameters to multiplexor as a series/vector of Long Words */ + /* 0 : 0..3 submode */ + /* 1 : 0..7 gain_ind */ + /* 2 : 0..1 LeadSign ind */ + /* 3 : 25 bit MPVQ index outl_near or A part */ + /* 4 : 3.7 to 21 bits MPVQ index B part OR -2 */ + + L_prm_idx[0] = L_deposit_l(submode); /* complete submode fwd'ed to ari_codec as 0,1,2,3 */ + + submodeMSB = shr_pos(submode, 1); /* LSB of submode , sent as main submode bit */ + submodeLSB = s_and(submode, 0x1); /* LSB of submode */ /* sent via shape param */ + + /* gain, shape indicese , incl. calls to MPVQ indexing */ + IF (submodeMSB == 0) + { /* regular modes:: j=0(reg=AB) or 1(reg_lf A) */ /* regular mode, with two or one shape indices */ + + /* assume regular_lf part , shape_j == 1 */ + enc_PVQ_OA = + mpvq_index_fx(enc_pulsesA, N_SETA, sns_Kval[submode][0]); /* o : leading_sign_index, index, size, k_val */ + L_prm_idx[2] = L_deposit_l(enc_PVQ_OA.lead_sign_ind); /*LS set A */ + + ASSERT(enc_PVQ_OA.size == (UWord32)sns_MPVQ_Sz[submode][0]); + L_prm_idx[3] = L_add(0L, (Word32)enc_PVQ_OA.index); /* MPVQ shape index set A fractional */ + + /* section B always have low indexing dynamics and is combined into one joint single index */ + IF (submodeLSB == 0) + { /* regular AB , shape_j == 0*/ + L_prm_idx[1] = L_deposit_l(i_gain); /* full established gain idx fwd'ed */ /* 2 possible values */ + enc_PVQ_B = mpvq_index_fx(enc_pulsesB, N_SETB, 1); + ASSERT(((enc_PVQ_B.size << 1)) == + (sns_MPVQ_Sz[submode][1])); /* two lowest indeces indicate all_zero B section */ + + L_tmp = L_shl_pos((Word32)enc_PVQ_B.index, 1); /* 2*section B MPVQ index */ + L_prm_idx[4] = L_add(L_tmp, enc_PVQ_B.lead_sign_ind); move32(); /* add joint section B and LS index */ + + ASSERT(L_prm_idx[4] >= 0 && L_prm_idx[4] < (Word32)sns_MPVQ_Sz[submode][0]); + } + ELSE + { + L_prm_idx[1] = L_deposit_l(i_gain); + /* MSBs of established gain idx */ /* 2 or 4 total possible values */ + L_prm_idx[4] = L_deposit_l(-2); + } + } + ELSE + { + /* outlier modes shape_j= 2(near, LSB=0) or 3(far, LSB=1) */ + + IF (submodeLSB == 0) + { + L_prm_idx[1] = L_deposit_l(i_gain); /* established gain idx */ /* 4 possible values */ + enc_PVQ_OA = mpvq_index_fx(enc_pulses_near, M, + sns_Kval[submode][0]); /* o : leading_sign_index, index, size, k_val */ + ASSERT(enc_PVQ_OA.size == sns_MPVQ_Sz[submode][0]); + L_prm_idx[3] = L_add(0L, enc_PVQ_OA.index); /* MPVQ index fractional bits */ + L_prm_idx[4] = L_deposit_l(-1); /* no gain LSBs */ + } + ELSE + { + L_prm_idx[1] = L_deposit_l(i_gain); /* established gain idx MSBs */ /* all 4 or 8 possible values */ + enc_PVQ_OA = mpvq_index_fx(enc_pulses_far, M, + sns_Kval[submode][0]); /* o : leading_sign_index, index, size, k_val */ + ASSERT(enc_PVQ_OA.size == sns_MPVQ_Sz[submode][0]); + L_prm_idx[3] = L_add(0L, enc_PVQ_OA.index); /* MPVQ index fractional bits */ + L_prm_idx[4] = L_deposit_l(-2); /* */ + } + L_prm_idx[2] = L_deposit_l(enc_PVQ_OA.lead_sign_ind); /* LS shape single bit */ + } + +#ifdef WMOPS + pop_wmops(); +#endif +#ifdef DYNMEM_COUNT + Dyn_Mem_Out(); +#endif + return; +} + +static Word16 scfdec_stage2_fx( /* o: ber flag */ + const Word32 *L_prm_idx, /* set to -1 if not used */ +#ifdef ENABLE_HR_MODE + Word32 * st2_vector, /*o: Q14 */ +#else + Word16 * st2_vector, /*o: Q14 */ +#endif + Word8 * scratchBuffer) +{ + /* MPVQ deindexing, gainscaling transform and transform */ +#ifdef ENABLE_HR_MODE + Dyn_Mem_Deluxe_In( + Word16 submode; + Word16 submodeLSB, submodeMSB; + Word16 gValQ13; + Word16 idxB; + Word16 maxK; + Word16 BER_dec; + Word16 *dec_pulses; + Word32 *dec_en1_vec; + Word32 *dec_adj_glob_vec; + ); +#else + Dyn_Mem_Deluxe_In( + Word16 submode; + Word16 submodeLSB, submodeMSB; + Word16 gValQ13; + Word16 idxB; + Word16 maxK; + Word16 BER_dec; + Word16 *dec_pulses; + Word16 *dec_en1_vec; + Word16 *dec_adj_glob_vec; + ); +#endif + +#ifdef WMOPS + push_wmops("scfdec_stage2_fx"); +#endif + + dec_pulses = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * M = 32 bytes */ +#ifdef ENABLE_HR_MODE + dec_en1_vec = (Word32 *)scratchAlign(dec_pulses, sizeof(*dec_pulses) * M); /* Size = 2 * M = 32 bytes */ + dec_adj_glob_vec = (Word32 *)scratchAlign(dec_en1_vec, sizeof(*dec_en1_vec) * M); /* Size = 2 * M = 32 bytes */ +#else + dec_en1_vec = (Word16 *)scratchAlign(dec_pulses, sizeof(*dec_pulses) * M); /* Size = 2 * M = 32 bytes */ + dec_adj_glob_vec = (Word16 *)scratchAlign(dec_en1_vec, sizeof(*dec_en1_vec) * M); /* Size = 2 * M = 32 bytes */ +#endif + + /* get submode */ + submode = extract_l(L_prm_idx[0]); /* 0..3 */ + + submodeLSB = s_and(submode, 0x1); + submodeMSB = shr_pos(submode, 1); + + /* get initial adjustment gain vector for regular, outl_near */ + ASSERT(L_prm_idx[1] >= 0 && L_prm_idx[1] < sns_gainSz[submode]); + gValQ13 = sns_gaintabPtr[submode][L_prm_idx[1]]; + ASSERT(gValQ13 >= 0); + + /* gain, shape indices, incl.calls to MPVQ deindexing */ + IF (submodeMSB != 0) + { + /* outlier_near or outlier_far mode decoding */ + maxK = sns_Kval[submode][0]; move16(); + BER_dec = pvq_dec_deidx_fx(dec_pulses, maxK, M, extract_l(L_prm_idx[2]), (UWord32)L_prm_idx[3]); + } + ELSE + { /* regular mode, with potentially two shape indices */ + + maxK = sns_Kval[submode][0]; move16(); + BER_dec = pvq_dec_deidx_fx(dec_pulses, maxK, N_SETA, extract_l(L_prm_idx[2]), (UWord32)L_prm_idx[3]); + + IF (submodeLSB == 0) + { + idxB = extract_l(L_prm_idx[4]); /* 0..11 */ + ASSERT(idxB >= 0 && idxB < (Word16)sns_MPVQ_Sz[0][1]); + BER_dec |= pvq_dec_deidx_fx(&(dec_pulses[N_SETA]), sns_Kval[submode][1], N_SETB, s_and(idxB, 0x1), + (UWord32)L_deposit_l(shr_pos(idxB, 1))); + /* maxK does not need to be increased as set B is not stacked */ + } + ELSE + { /* LSB gain bit already parsed */ + ASSERT(L_prm_idx[4] < 0); + basop_memset(&dec_pulses[N_SETA], 0, (N_SETB) * sizeof(*dec_pulses)); + } + } + + /* normalize decoded integer vector , exactly as on encoder side !! */ + pvq_dec_en1_normQ14_fx(dec_en1_vec, dec_pulses, maxK, M); + +#ifdef ENABLE_HR_MODE + idct32_32_fx(dec_en1_vec, dec_adj_glob_vec); +#else + idct16_fx(dec_en1_vec, dec_adj_glob_vec); /* fwd warping in unscaled domain */ +#endif + + /* scaling aligend with encoder search */ + pvq_dec_scale_vec_fx(dec_adj_glob_vec, gValQ13, st2_vector); + +#ifdef WMOPS + pop_wmops(); +#endif + Dyn_Mem_Deluxe_Out(); + return BER_dec; +} + +void processSnsQuantizeScfEncoder_fx(Word16 scf[], /* i: input scf M */ + Word32 *L_prm_idx, /* o: indeces . negative == unused */ +#ifdef ENABLE_HR_MODE + Word32 *scf_q, /* o: quantized scf M */ +#else + Word16 *scf_q, /* o: quantized scf M */ +#endif + Word8 * scratchBuffer) /* Size = 28 * M + 52 */ +{ +#ifdef ENABLE_HR_MODE + Dyn_Mem_Deluxe_In( + Word32 *target_st2; + Word16 *st1_idx; /* stage 1 indices */ + Word8 * buffer_processQuantize_stage2ScfEncStage2_fx; + Counter col; + ); +#else + Dyn_Mem_Deluxe_In( + Word16 *target_st2; + Word16 *st1_idx; /* stage 1 indices */ + Word8 * buffer_processQuantize_stage2ScfEncStage2_fx; + Counter col; + ); +#endif + +#ifdef ENABLE_HR_MODE + target_st2 = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * M */ +#else + target_st2 = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * M */ +#endif + st1_idx = (Word16 *)scratchAlign(target_st2, sizeof(*target_st2) * M); /* Size = 2 * 2 */ + buffer_processQuantize_stage2ScfEncStage2_fx = (Word8 *)scratchAlign(st1_idx, sizeof(*st1_idx) * M); + /* Size = 26 * M + 48 */ + + /* TBD needs update */ + + /* 1st stage trained VQ */ + processQuantize_stage1ScfEncStage1_fx(scf, scf_q, &st1_idx[0], &st1_idx[1]); + L_prm_idx[0] = L_deposit_l(st1_idx[0]); + L_prm_idx[1] = L_deposit_l(st1_idx[1]); + +/* 2nd stage PVQ-based SCF quantizer */ + FOR (col = 0; col < M; col++) + { +#ifdef ENABLE_HR_MODE + target_st2[col] = L_sub(L_deposit_h(scf[col]), scf_q[col]); +#else + target_st2[col] = sub(scf[col], scf_q[col]); +#endif + } + + processQuantize_stage2ScfEncStage2_fx(target_st2, scf_q, &L_prm_idx[2], VQMODES26, /* 0xF means all submodes */ + buffer_processQuantize_stage2ScfEncStage2_fx); /* PVQ in stage 2 */ + Dyn_Mem_Deluxe_Out(); +} + +Word16 processSnsQuantizeScfDecoder_fx( /* o: BER flag */ + Word32 *L_prm_idx, /* i: indeces */ +#ifdef ENABLE_HR_MODE + Word32 scf_q[], +#else + Word16 scf_q[], +#endif + Word8 *scratchBuffer) /* o: M */ +{ + Dyn_Mem_Deluxe_In( + Word16 BER_flag; + ); + + /* Decode First Stage */ +#ifdef ENABLE_HR_MODE + processDeQuantize_stage1ScfDecStage1_fx(st1SCF0_7_base5_32x8_Q27, st1SCF8_15_base5_32x8_Q27, + extract_l(L_prm_idx[0]), extract_l(L_prm_idx[1]), scf_q); +#else + processDeQuantize_stage1ScfDecStage1_fx(st1SCF0_7_base5_32x8_Q11, st1SCF8_15_base5_32x8_Q11, + extract_l(L_prm_idx[0]), extract_l(L_prm_idx[1]), scf_q); +#endif + + /* Decode Second Stage */ + BER_flag = scfdec_stage2_fx(&(L_prm_idx[2]), scf_q, scratchBuffer); + + Dyn_Mem_Deluxe_Out(); + return BER_flag; +} + diff --git a/lib_lc3plus/tinywavein_c.h b/lib_lc3plus/tinywavein_c.h new file mode 100644 index 0000000000000000000000000000000000000000..32789e31409c8ed4c633a53e464413122ee7d825 --- /dev/null +++ b/lib_lc3plus/tinywavein_c.h @@ -0,0 +1,603 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#ifndef __TINYWAVEIN_C_H__ +#define __TINYWAVEIN_C_H__ + +/*#define SUPPORT_BWF*/ + +#include +#include +#include + +#if defined(__i386__) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) || defined(__arm__) || \ + defined(__aarch64__) +#define __TWI_LE /* _T_iny _W_ave _I_n _L_ittle _E_ndian */ +#endif + +#if defined(__POWERPC__) +#define __TWI_BE /* _T_iny _W_ave _I_n _B_ig _E_ndian */ +#endif + +#if !defined(__TWI_LE) && !defined(__TWI_BE) +#error unknown processor +#endif + +#define __TWI_SUCCESS (0) +#define __TWI_ERROR (-1) + +#ifdef SUPPORT_BWF +typedef struct +{ + float loudnessVal; + float loudnessRange; + float maxTruePeakLevel; + float maxMomentaryLoudnes; + float maxShortTermLoudness; +} WAVEIN_LOUDNESSINFO; +#endif + +typedef struct __tinyWaveInHandle +{ + FILE * theFile; + fpos_t dataChunkPos; + unsigned int position; + unsigned int length; + unsigned int bps; +#ifdef SUPPORT_BWF + WAVEIN_LOUDNESSINFO *loudnessInfo; +#endif +} __tinyWaveInHandle, WAVEFILEIN; + +typedef struct +{ + short compressionCode; + short numberOfChannels; + unsigned int sampleRate; + unsigned int averageBytesPerSecond; + short blockAlign; + short bitsPerSample; + /* short extraFormatBytes ; */ +} SWavInfo; + +#ifdef SUPPORT_BWF +typedef struct +{ + unsigned char description[256]; + unsigned char originator[32]; + unsigned char originatorReference[32]; + unsigned char originatorDate[10]; /* ASCII: <> */ + unsigned char originationTime[8]; /* ASCII: <> */ + unsigned int timeReferenceLow; + unsigned int timeReferenceHigh; + unsigned short version; + unsigned char UMID[64]; /* Binary Bytes of SMPTE UMID */ + + signed short loudnessVal; + signed short loudnessRange; + signed short maxTruePeakLevel; + signed short maxMomentaryLoudnes; + signed short maxShortTermLoudness; + + unsigned char Reserved[180]; + + unsigned char codingHistory; /* ASCII: <> */ +} SBwfWav; +#endif + +typedef struct +{ + char chunkID[4]; + unsigned int chunkSize; + /* long dataOffset ; */ /* never used */ +} SChunk; + +/* local wrapper, always returns correct endian */ +static size_t fread_LE(void *ptr, size_t size, size_t nmemb, FILE *stream); + +#ifdef __TWI_BE +static short BigEndian16(short v); +static int BigEndian32(int v); +#endif + +/*! + * \brief Read header from a WAVEfile. Host endianess is handled accordingly. + * \fp filepointer of type FILE*. + * \wavinfo SWavInfo struct where the decoded header info is stored into. + * \return 0 on success and non-zero on failure. + * + */ +static WAVEFILEIN *OpenWav(const char *filename, unsigned int *samplerate, short *channels, unsigned int *samplesInFile, + short *bps) +{ + WAVEFILEIN *self; + + SChunk fmt_chunk, data_chunk; + int offset; + unsigned int tmpSize; + char tmpFormat[4]; + SWavInfo wavinfo = {0, 0, 0, 0, 0, 0}; + + self = (WAVEFILEIN *)calloc(1, sizeof(WAVEFILEIN)); + if (!self) + goto bail; /* return NULL; */ + + if (!filename) + goto bail; + if (!samplerate) + goto bail; + if (!channels) + goto bail; + if (!samplesInFile) + goto bail; + if (!bps) + goto bail; + + self->theFile = fopen(filename, "rb"); + if (!self->theFile) + goto bail; + + /* read RIFF-chunk */ + if (fread(tmpFormat, 1, 4, self->theFile) != 4) + { + goto bail; + } + + if (strncmp("RIFF", tmpFormat, 4)) + { + goto bail; + } + + /* Read RIFF size. Ignored. */ + fread_LE(&tmpSize, 4, 1, self->theFile); + + /* read WAVE-chunk */ + if (fread(tmpFormat, 1, 4, self->theFile) != 4) + { + goto bail; + } + + if (strncmp("WAVE", tmpFormat, 4)) + { + goto bail; + } + + /* read format/bext-chunk */ + if (fread(fmt_chunk.chunkID, 1, 4, self->theFile) != 4) + { + goto bail; + } + +#ifdef SUPPORT_BWF + /* test for bext-chunk */ + if (!strncmp("bext", fmt_chunk.chunkID, 4)) + { + /*unsigned int i;*/ + unsigned int bextSize = 0; + + if (fread_LE(&bextSize, 1, 4, self->theFile) != 4) + { + goto bail; + } + + self->loudnessInfo = (WAVEIN_LOUDNESSINFO *)calloc(1, sizeof(WAVEIN_LOUDNESSINFO)); + + if (bextSize >= 602) + { /* minimum size bext-data, w/o 'CodingHistory' */ + int i; + signed short readBuf = 0; + signed int nulbuf = 0; + + /* first skip all descriptive data */ + for (i = 0; i < 412; i++) + { + if (fread_LE(&nulbuf, 1, 1, self->theFile) != 1) + { + goto bail; + } + bextSize -= 1; + } + /* second, read loudness data */ + fread_LE(&readBuf, 2, 1, self->theFile); + bextSize -= 2; + self->loudnessInfo->loudnessVal = (float)readBuf * 0.01f; + + fread_LE(&readBuf, 2, 1, self->theFile); + bextSize -= 2; + self->loudnessInfo->loudnessRange = (float)readBuf * 0.01f; + + fread_LE(&readBuf, 2, 1, self->theFile); + bextSize -= 2; + self->loudnessInfo->maxTruePeakLevel = (float)readBuf * 0.01f; + + fread_LE(&readBuf, 2, 1, self->theFile); + bextSize -= 2; + self->loudnessInfo->maxMomentaryLoudnes = (float)readBuf * 0.01f; + + fread_LE(&readBuf, 2, 1, self->theFile); + bextSize -= 2; + self->loudnessInfo->maxShortTermLoudness = (float)readBuf * 0.01f; + + /* skip reserved data */ + for (i = 0; i < 180; i++) + { + if (fread_LE(&nulbuf, 1, 1, self->theFile) != 1) + { + goto bail; + } + bextSize -= 1; + } + } + + /* skip remaining data */ + while (bextSize) + { + int nulbuf; + if (fread_LE(&nulbuf, 1, 1, self->theFile) != 1) + { + goto bail; + } + bextSize -= 1; + } + + /* read next chunk header */ + if (fread(fmt_chunk.chunkID, 1, 4, self->theFile) != 4) + { + goto bail; + } + } +#endif + + /* skip some potential chunks up to fmt chunk */ + + while (strncmp("fmt ", fmt_chunk.chunkID, 4) != 0) + { + unsigned int chunkSize = 0; + + if (fread_LE(&chunkSize, 1, 4, self->theFile) != 4) + { + goto bail; + } + + /* skip chunk data */ + while (chunkSize) + { + int nulbuf; + if (fread_LE(&nulbuf, 1, 1, self->theFile) != 1) + { + goto bail; + } + chunkSize -= 1; + } + + /* read next chunk header */ + if (fread(fmt_chunk.chunkID, 1, 4, self->theFile) != 4) + { + goto bail; + } + } + + /* go on with fmt-chunk */ + if (strncmp("fmt ", fmt_chunk.chunkID, 4)) + { + goto bail; + } + + if (fread_LE(&fmt_chunk.chunkSize, 4, 1, self->theFile) != 1) + { /* should be 16 for PCM-format (uncompressed) */ + goto bail; + } + + + /* read info */ + fread_LE(&(wavinfo.compressionCode), 2, 1, self->theFile); + fread_LE(&(wavinfo.numberOfChannels), 2, 1, self->theFile); + fread_LE(&(wavinfo.sampleRate), 4, 1, self->theFile); + fread_LE(&(wavinfo.averageBytesPerSecond), 4, 1, self->theFile); + fread_LE(&(wavinfo.blockAlign), 2, 1, self->theFile); + fread_LE(&(wavinfo.bitsPerSample), 2, 1, self->theFile); + + if (wavinfo.compressionCode == -2) + { + fseek(self->theFile, 8, SEEK_CUR); // skip channel mask + fread_LE(&(wavinfo.compressionCode), 2, 1, self->theFile); // part of GUID + fseek(self->theFile, 14, SEEK_CUR); // skip rest of GUID + offset = fmt_chunk.chunkSize - 40; + } + else + offset = fmt_chunk.chunkSize - 16; + + if (wavinfo.compressionCode == 0x01) + { + if ((wavinfo.bitsPerSample != 16) && (wavinfo.bitsPerSample != 24) && (wavinfo.bitsPerSample != 32)) + /* we do only support 16,24 and 32 bit PCM audio */ + goto bail; + } + else + { + /* if(wavinfo.bitsPerSample != 32) */ + printf("compressioncode: %02x\n", wavinfo.compressionCode); + puts("Error! We only support 16,24 and 32 bit PCM audio"); + exit(1); + goto bail; + } + + /* Skip rest of fmt header if any. */ + for (; offset > 0; offset--) + { + fread(&tmpSize, 1, 1, self->theFile); + } + + do + { + + /* Read data chunk ID */ + if (fread(data_chunk.chunkID, 1, 4, self->theFile) != 4) + { + goto bail; + } + + /* Read chunk length. */ + + if (fread_LE(&offset, 4, 1, self->theFile) != 1) + { + goto bail; + } + + /* Check for data chunk signature. */ + if (strncmp("data", data_chunk.chunkID, 4) == 0) + { + data_chunk.chunkSize = offset; + break; + } + + /* unused 1 byte present, if size is odd */ + /* see https://www.daubnet.com/en/file-format-riff */ + if (offset % 2) + { + offset++; + } + + /* Jump over non data chunk. */ + for (; offset > 0; offset--) + { + fread(&tmpSize, 1, 1, self->theFile); + } + + } while (!feof(self->theFile)); + + /* success so far */ + *samplerate = wavinfo.sampleRate; + *channels = wavinfo.numberOfChannels; + *samplesInFile = data_chunk.chunkSize / wavinfo.numberOfChannels; + *samplesInFile /= ((wavinfo.bitsPerSample + 7) / 8); + *bps = wavinfo.bitsPerSample; + + self->position = 0; + self->bps = wavinfo.bitsPerSample; + self->length = *samplesInFile * wavinfo.numberOfChannels; + + fgetpos(self->theFile, &self->dataChunkPos); + + return self; + +bail: + free(self); + return NULL; +} + +#ifdef SUPPORT_BWF +static void ReadBWF(WAVEFILEIN *self, WAVEIN_LOUDNESSINFO **wavInLoudness) +{ + *wavInLoudness = self->loudnessInfo; +} +#endif + +static int __ReadSample16(WAVEFILEIN *self, int *sample) +{ + size_t cnt; + short v = 0; + + cnt = fread(&v, 2, 1, self->theFile); + + if (cnt != 1) + { + return __TWI_ERROR; + } + + self->position += 1; + +#ifdef __TWI_BE + v = BigEndian16(v); +#endif + *sample = v; + return __TWI_SUCCESS; +} + +static int __ReadSample24(WAVEFILEIN *self, int *sample) +{ + size_t cnt; + int v = 0; + + cnt = fread(&v, 3, 1, self->theFile); + + if (cnt != 1) + { + return __TWI_ERROR; + } + + self->position += 1; + +#ifdef __TWI_BE + v = BigEndian32(v); +#endif + + if (v >= 0x800000) + { + v |= 0xff000000; + } + + *sample = v; + + return __TWI_SUCCESS; +} + +static int __ReadSample32(WAVEFILEIN *self, int *sample) +{ + size_t cnt; + int v = 0; + + cnt = fread(&v, 4, 1, self->theFile); + + if (cnt != 1) + { + return __TWI_ERROR; + } + + self->position += 1; + +#ifdef __TWI_BE + v = BigEndian32(v); +#endif + + *sample = v >> 8; + + return __TWI_SUCCESS; +} + +static int __ReadSampleInternal(WAVEFILEIN *self, int *sample, int scale) +{ + int err; + + if (!self) + { + return __TWI_ERROR; + } + + switch (scale) + { + + case 16: err = __ReadSample16(self, sample); break; + + case 24: err = __ReadSample24(self, sample); break; + + case 32: err = __ReadSample32(self, sample); break; + + default: err = __TWI_ERROR; break; + } + + return err; +} + +/* this function returns normalized values in the range +8388607..-8388608 */ +static int ReadWavInt(WAVEFILEIN *self, int sampleBuffer[], unsigned int nSamplesToRead, unsigned int *nSamplesRead) +{ + unsigned int i; + int err = __TWI_SUCCESS; + *nSamplesRead = 0; + + if (!sampleBuffer) + { + return __TWI_ERROR; + } + + /* check if we have enough samples left, if not, + set nSamplesToRead to number of samples left. */ + if (self->position + nSamplesToRead > self->length) + { + nSamplesToRead = self->length - self->position; + } + + for (i = 0; i < nSamplesToRead; i++) + { + + int tmp; + err = __ReadSampleInternal(self, &tmp, self->bps); + if (err != __TWI_SUCCESS) + { + return err; + } + sampleBuffer[i] = tmp; + *nSamplesRead += 1; + } + + return __TWI_SUCCESS; +} + +static int CloseWavIn(WAVEFILEIN *self) +{ + if (self) + { + if (self->theFile) + { + fclose(self->theFile); + } + } + free(self); + + return __TWI_SUCCESS; +} +/* +static int ResetWavIn(WAVEFILEIN* self) +{ + if (self) { + if (self->theFile) { + fsetpos(self->theFile, &self->dataChunkPos); + self->position = 0; + } + } + return __TWI_SUCCESS; +} +*/ +/*------------- local subs ----------------*/ + +static size_t fread_LE(void *ptr, size_t size, size_t nmemb, FILE *stream) +{ +#ifdef __TWI_LE + return fread(ptr, size, nmemb, stream); +#endif +#ifdef __TWI_BE + + unsigned char x[sizeof(int)]; + unsigned char *y = (unsigned char *)ptr; + int i; + int len; + + len = fread(x, size, nmemb, stream); + + for (i = 0; i < size * nmemb; i++) + { + *y++ = x[size * nmemb - i - 1]; + } + + return len; +#endif +} + +#ifdef __TWI_BE +static short BigEndian16(short v) +{ + short a = (v & 0x0ff); + short b = (v & 0x0ff00) >> 8; + + return a << 8 | b; +} + +static int BigEndian32(int v) +{ + int a = (v & 0x0ff); + int b = (v & 0x0ff00) >> 8; + int c = (v & 0x0ff0000) >> 16; + int d = (v & 0xff000000) >> 24; + + return a << 24 | b << 16 | c << 8 | d; +} +#endif + +#endif /* __TINYWAVEIN_C_H__ */ diff --git a/lib_lc3plus/tinywaveout_c.h b/lib_lc3plus/tinywaveout_c.h new file mode 100644 index 0000000000000000000000000000000000000000..67225427097acbd130a6f03b725338666ca73ddd --- /dev/null +++ b/lib_lc3plus/tinywaveout_c.h @@ -0,0 +1,889 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#ifndef __TINYWAVEOUT_C_H__ +#define __TINYWAVEOUT_C_H__ + +/*#define TWO_SUPPORT_BWF*/ + +#include +#include +#include +#include +#ifdef TWO_SUPPORT_BWF +#include +#endif + +/***** Interface *********************************************************/ + +#ifndef TWO_UINT64 + #if !(defined(WIN32)) + #include + #define TWO_UINT64 uint64_t + #else + #define TWO_UINT64 unsigned __int64 + #endif +#endif + +typedef struct WAVEFILEOUT WAVEFILEOUT; +#ifdef TWO_SUPPORT_BWF +typedef struct WAVEOUT_LOUDNESSINFO WAVEOUT_LOUDNESSINFO; +#endif + +#define __TWO_SUCCESS (0) +#define __TWO_ERROR (-1) + +static WAVEFILEOUT* CreateWav( + const char *fileName, + const unsigned int sampleRate, + const unsigned int numChannels, + const unsigned int bps + ); + +#ifdef TWO_SUPPORT_BWF +static WAVEFILEOUT* CreateWavBWF( + const char *fileName, + const unsigned int sampleRate, + const unsigned int numChannels, + const unsigned int bps, + const WAVEOUT_LOUDNESSINFO *hBwfData + ); +#endif + +/* this function expects values in the 16 bit range +32767..-32768 */ +static int WriteWavShort( + WAVEFILEOUT* self, + short sampleBuffer[], + unsigned int nSamples + ); + +/* this function expects values in the 24 bit range +8388607..-8388608 */ +static int WriteWavLong( + WAVEFILEOUT* self, + int sampleBuffer[], + unsigned int nSamples + ); + +/* this function expects normalized values in the range +-1.0f */ +static int WriteWavFloat( + WAVEFILEOUT* self, + float sampleBuffer[], + unsigned int nSamples + ); + +static int CloseWav(WAVEFILEOUT* self); +#ifdef TWO_SUPPORT_BWF +static int CloseWavBWF(WAVEFILEOUT* self, WAVEOUT_LOUDNESSINFO bextData); +#endif + +/***** Implementation *********************************************************/ + +#if defined (__i386__) || defined (_M_IX86) || defined (_M_X64) || defined (__x86_64__) || defined (__arm__) || defined (__xtensa__) || defined (__aarch64__) || defined (__EMSCRIPTEN__) +#define __TWO_LE /* _T_iny _W_ave _O_ut _L_ittle _E_ndian */ +#endif + +#if defined (__POWERPC__) +#define __TWO_BE /* _T_iny _W_ave _O_ut _B_ig _E_ndian */ +#endif + +#if defined (__sparc__) +#define __TWO_BE /* _T_iny _W_ave _O_ut _B_ig _E_ndian */ +#endif + +#if ! defined (__TWO_LE) && ! defined (__TWO_BE) +#error unknown processor +#endif + +/*--- local types/structs ----------------------------------*/ + +#if defined(_MSC_VER) + #pragma pack(push, 1) +#else + #pragma pack(1) +#endif + + +#ifdef TWO_SUPPORT_BWF +struct WAVEOUT_LOUDNESSINFO { + float loudnessVal; + float loudnessRange; + float maxTruePeakLevel; + float maxMomentaryLoudnes; + float maxShortTermLoudness; +}; +#endif + + +typedef struct __tinyWaveOutHeader +{ + unsigned int riffType; /* 'RIFF/RF64' */ + unsigned int riffSize; /* file size/-1 */ + unsigned int waveType; /* 'WAVE' */ +} __tinyWaveOutHeader; + +typedef struct __tinyWaveOutDs64Chunk +{ + unsigned int formatType; /* = 'JUNK/ds64' */ + unsigned int formatSize; /* size info */ + TWO_UINT64 riffSize64; + TWO_UINT64 dataSize64; + TWO_UINT64 sampleCount64; + unsigned int tableLength; /* optional tables, always 0 for tinywaveout */ + /* here: optional tables */ +} __tinyWaveOutDs64Chunk; + +#ifdef TWO_SUPPORT_BWF +typedef struct __tinyWaveOutBextChunk +{ + unsigned int formatType; /* = 'bext' */ + unsigned int formatSize; /* size info */ + + unsigned char description[256]; + unsigned char originator[32]; + unsigned char originatorReference[32]; + unsigned char originatorDate[10]; /* ASCII: <> */ + unsigned char originationTime[8]; /* ASCII: <> */ + unsigned int timeReferenceLow; + unsigned int timeReferenceHigh; + unsigned short version; + unsigned char UMID[64]; /* Binary Bytes of SMPTE UMID */ + + signed short loudnessVal; + signed short loudnessRange; + signed short maxTruePeakLevel; + signed short maxMomentaryLoudnes; + signed short maxShortTermLoudness; + + unsigned char Reserved[180]; + + unsigned char codingHistory; /* ASCII: <> - undefined length! */ + /* for variable length, mve this out of this struct */ +} __tinyWaveOutBextChunk; +#endif + +typedef struct __tinyWaveOutFmtChunk +{ + unsigned int formatType; + unsigned int formatSize; + + unsigned short formatTag; + unsigned short numChannels; + unsigned int sampleRate; + unsigned int bytesPerSecond; + unsigned short blockAlignment; + unsigned short bitsPerSample; + + /* wav fmt ext hdr here */ +} __tinyWaveOutFmtChunk; + +typedef struct __tinyWaveOutDataChunk +{ + unsigned int dataType; + unsigned int dataSize; + +} __tinyWaveOutDataChunk; + + +struct WAVEFILEOUT { + /* for reasons of memory alignment, have 64 bit data types first */ + TWO_UINT64 dataSize; + TWO_UINT64 dataSizeLimit; /* maximum size for data chunk for 4 GB files */ + TWO_UINT64 dataSizeLimit64; /* maximum size for data chunk for 2^64 B addressable files */ + TWO_UINT64 clipCount; + FILE* theFile; + unsigned int junkChunkOffset; + unsigned int fmtChunkOffset; +#ifdef TWO_SUPPORT_BWF + unsigned int bextChunkOffset; +#endif + unsigned int dataChunkOffset; + unsigned int bps; + + /* only needed for RF64: */ + unsigned int blockAlign; /* only needed for close() of ds64 chunk */ +}; + + +/*--- local protos --------------------------------------------------*/ +static __inline unsigned int BigEndian32(char, char, char, char); +static __inline unsigned int LittleEndian32(unsigned int); +static __inline unsigned int LittleEndian32s(int); +static __inline short LittleEndian16(short); +static __inline TWO_UINT64 LittleEndian64(TWO_UINT64); +#ifdef TWO_SUPPORT_BWF +static unsigned int EncodeLoudness(float); +#endif +static __inline int __dataSizeChk( WAVEFILEOUT* self, int newbytes ); + +#if defined(_MSC_VER) + #pragma pack(pop) +#else + #pragma pack() +#endif + + +#ifdef TWO_SUPPORT_BWF +static void setDefaultLoudness(WAVEOUT_LOUDNESSINFO *x) +{ + x->loudnessVal = 1.0f; + x->loudnessRange = 2.0f; + x->maxTruePeakLevel = 3.0f; + x->maxMomentaryLoudnes = 4.0f; + x->maxShortTermLoudness = 5.0f; +} +#endif + +static WAVEFILEOUT* __CreateWavInternal( + const char *fileName, + const unsigned int sampleRate, + const unsigned int numChannels, + const unsigned int bps +#ifdef TWO_SUPPORT_BWF + , + const WAVEOUT_LOUDNESSINFO *hBwfData +#endif + ) +{ + WAVEFILEOUT* self = NULL; + __tinyWaveOutHeader whdr; + __tinyWaveOutDs64Chunk ds64ch; +#ifdef TWO_SUPPORT_BWF + __tinyWaveOutBextChunk wbextch; +#endif + __tinyWaveOutFmtChunk wfch; + __tinyWaveOutDataChunk wdch; + unsigned int blockAlignment = 0; + unsigned int ByteCnt = 0; /* Byte counter for fwrite */ + + /* pseudo use to avoid unused symbols */ + (void)WriteWavShort; + (void)WriteWavLong; + (void)WriteWavFloat; +#ifdef TWI_SUPPORT_BWF + (void)CreateWavBWF; + (void)CloseWavBWF; + (void)setDefaultLoudness; +#endif + + /* param check */ + if (!fileName) goto bail; + if (sampleRate == 0) goto bail; + if (sampleRate > 768000) goto bail; + if (numChannels == 0) goto bail; + if (numChannels > 64) goto bail; + if (bps != 16 && bps != 24 && bps != 32) goto bail; + + self = (WAVEFILEOUT*)calloc(1, sizeof(WAVEFILEOUT)); + if (!self) goto bail; /* return NULL; */ + + self->theFile = fopen(fileName, "wb+"); + if (!self->theFile) goto bail; + + /* WAV-Header */ + whdr.riffType = BigEndian32('R','I','F','F'); + whdr.riffSize = LittleEndian32(0xffffffff); /* set to maximum, if fseek() doesn't work later */ + whdr.waveType = BigEndian32('W','A','V','E'); + /* write to file */ + ByteCnt = 0; + ByteCnt += fwrite(&whdr, 1, sizeof(whdr), self->theFile); + + /* ds64/JUNK-Chunk */ + ds64ch.formatType = BigEndian32('J','U','N','K'); + ds64ch.formatSize = LittleEndian32(sizeof(__tinyWaveOutDs64Chunk) - 8); + ds64ch.riffSize64 = (TWO_UINT64) -1; + ds64ch.dataSize64 = (TWO_UINT64) -1; + ds64ch.sampleCount64 = (TWO_UINT64) -1; + ds64ch.tableLength = 0; + self->junkChunkOffset = ByteCnt; + ByteCnt += fwrite(&ds64ch, 1, sizeof(ds64ch), self->theFile); + +#ifdef TWO_SUPPORT_BWF + /* BEXT-Chunk */ + if (hBwfData) { + memset(&wbextch, 0, sizeof(__tinyWaveOutBextChunk)); + wbextch.formatType = BigEndian32('b','e','x','t'); + wbextch.formatSize = LittleEndian32(sizeof(__tinyWaveOutBextChunk) - 8); + wbextch.version = 0x0002; + wbextch.loudnessVal = EncodeLoudness(hBwfData->loudnessVal); + wbextch.loudnessRange = EncodeLoudness(hBwfData->loudnessRange); + wbextch.maxTruePeakLevel = EncodeLoudness(hBwfData->maxTruePeakLevel); + wbextch.maxMomentaryLoudnes = EncodeLoudness(hBwfData->maxMomentaryLoudnes); + wbextch.maxShortTermLoudness = EncodeLoudness(hBwfData->maxShortTermLoudness); + /* t.b.d.: more values */ + + /* write to file */ + self->bextChunkOffset = ByteCnt; + ByteCnt += fwrite(&wbextch, 1, sizeof(wbextch), self->theFile); + } +#endif + + /* FMT-Chunk */ + wfch.formatType = BigEndian32('f','m','t',' '); + wfch.formatSize = LittleEndian32(16); + switch (bps) { + case 16: + case 24: + wfch.formatTag = LittleEndian16(0x0001); /* WAVE_FORMAT_PCM */ + break; + case 32: + wfch.formatTag = LittleEndian16(0x0003); /* WAVE_FORMAT_IEEE_FLOAT */ + break; + default: + goto bail; + } + self->bps = bps; + wfch.bitsPerSample = LittleEndian16(bps); + wfch.numChannels = LittleEndian16(numChannels); + blockAlignment = numChannels * (bps >> 3); + wfch.blockAlignment = LittleEndian16(blockAlignment); + wfch.sampleRate = LittleEndian32(sampleRate); + wfch.bytesPerSecond = LittleEndian32(sampleRate * blockAlignment); + /* tbd: wavfmt ext hdr here */ + /* write to file */ + self->fmtChunkOffset = ByteCnt; + ByteCnt += fwrite(&wfch, 1, sizeof(wfch), self->theFile); + + /* DATA-Chunk */ + self->dataChunkOffset = ByteCnt; + wdch.dataType = BigEndian32('d','a','t','a'); + wdch.dataSize = LittleEndian32(0xffffffff - ByteCnt); /* yet unknown. set to maximum of 4 GB file */ + /* write to file */ + ByteCnt += fwrite(&wdch, 1, sizeof(wdch), self->theFile); + + self->dataSize = 0; + + /* self->dataSizeLimit = 0x7fffffff - ByteCnt; */ /* maximum size for data chunk for 2 GB files */ + self->dataSizeLimit = 0xffffffff - ByteCnt; /* maximum size for data chunk for 4 GB files */ + self->dataSizeLimit64 = 0xffffffffffffffff - ByteCnt; /* maximum size for data chunk for 64 bit addressable files */ + + self->clipCount = 0; + self->blockAlign = blockAlignment; + + return self; + + bail: + if ( NULL != self) { + free(self); + } + + return NULL; +} + +static WAVEFILEOUT* CreateWav( + const char* fileName, + const unsigned int sampleRate, + const unsigned int numChannels, + const unsigned int bps + ) +{ +#ifdef TWO_SUPPORT_BWF + return __CreateWavInternal(fileName, sampleRate, numChannels, bps, NULL); +#else + return __CreateWavInternal(fileName, sampleRate, numChannels, bps); +#endif +} + +#ifdef TWO_SUPPORT_BWF +static WAVEFILEOUT* CreateWavBWF( + const char *fileName, + const unsigned int sampleRate, + const unsigned int numChannels, + const unsigned int bps, + const WAVEOUT_LOUDNESSINFO *hBwfData + ) +{ + return __CreateWavInternal(fileName, sampleRate, numChannels, bps, hBwfData); +} +#endif + +#define MAX_PCM16 (+32767) +#define MIN_PCM16 (-32768) +static __inline int CLIP_PCM16(int sample, TWO_UINT64* clipcount) +{ + int tmp = sample; + + if (sample >= MAX_PCM16) { + tmp = MAX_PCM16; + (*clipcount)++; + } else { + if (sample <= MIN_PCM16) { + tmp = MIN_PCM16; + (*clipcount)++; + } + } + + return tmp; +} + +#define MAX_PCM24 (+8388607) +#define MIN_PCM24 (-8388608) +static __inline int CLIP_PCM24(int sample, TWO_UINT64* clipcount) +{ + int tmp = sample; + + if (sample >= MAX_PCM24) { + tmp = MAX_PCM24; + (*clipcount)++; + } else { + if (sample <= MIN_PCM24) { + tmp = MIN_PCM24; + (*clipcount)++; + } + } + + return tmp; +} + +#define MAX_FLOAT32 (+1.0f) +#define MIN_FLOAT32 (-1.0f) +static __inline float CLIP_FLOAT32(float sample, TWO_UINT64* clipcount) +{ + float tmp = sample; + + if (sample >= MAX_FLOAT32) { + tmp = MAX_FLOAT32; + (*clipcount)++; + } else { + if (sample <= MIN_FLOAT32) { + tmp = MIN_FLOAT32; + (*clipcount)++; + } + } + + return tmp; +} + + + +static int __WriteSample16( + WAVEFILEOUT* self, + int sample, + int scale + ) +{ + size_t cnt; + short v; + + if ((scale - 16) > 0) + sample = sample >> (scale - 16); + else + sample = (int) ((uint32_t) sample << (16 - scale)); + + v = (short)CLIP_PCM16(sample, &(self->clipCount)); +#ifdef __TWO_BE + v = LittleEndian16(v); +#endif + + cnt = fwrite(&v, sizeof(short), 1, self->theFile); + + if (cnt == 1) { + self->dataSize += 2; + return __TWO_SUCCESS; + } + + return __TWO_ERROR; +} + + +static int __WriteSample24( + WAVEFILEOUT* self, + int sample, + int scale + ) +{ + size_t cnt; + int v; + + if ((scale - 24) > 0) + sample = sample >> (scale - 24); + else + sample = (int) (((unsigned int)sample) << (24 - scale)); + + v = (int)CLIP_PCM24(sample, &(self->clipCount)); +#ifdef __TWO_BE + v = LittleEndian32s(v); +#endif + cnt = fwrite(&v, 3, 1, self->theFile); + + if (cnt == 1) { + self->dataSize += 3; + return __TWO_SUCCESS; + } + + return __TWO_ERROR; +} + + +static int __WriteSample32( + WAVEFILEOUT* self, + float sample + ) +{ + size_t cnt; + union fl_int { + float v_float; + int v_int; + }; + union fl_int v; + +#if CLIP_FLOAT + v.v_float = CLIP_FLOAT32(sample, &(self->clipCount)); +#else + v.v_float = sample; + if((sample > 1.0f) || (sample <-1.0f)) + self->clipCount++; +#endif + +#ifdef __TWO_BE + v.v_int = LittleEndian32s(v.v_int); +#endif + cnt = fwrite(&v, 4, 1, self->theFile); + + if (cnt == 1) { + self->dataSize += 4; + return __TWO_SUCCESS; + } + + return __TWO_ERROR; +} + + +static int __WriteSampleInt( + WAVEFILEOUT* self, + int sample, + int scale + ) +{ + int err; + + if (!self) return __TWO_ERROR; + + + switch (self->bps) { + + case 16: + err = __WriteSample16(self, sample, scale); + break; + + case 24: + err = __WriteSample24(self, sample, scale); + break; + + default: + err = __TWO_ERROR; + break; + } + + return err; +} + + +/* this function expects values in the 16 bit range +-32767/8 */ +static int WriteWavShort( + WAVEFILEOUT* self, + short sampleBuffer[], + unsigned int nSamples + ) +{ + unsigned long i; + int err = __TWO_SUCCESS; + + if (!self) return __TWO_ERROR; + if (!sampleBuffer) return __TWO_ERROR; + if (__dataSizeChk(self, nSamples * sizeof(short))) return __TWO_ERROR; + + for (i=0; i< nSamples; i++) { + if (self->bps == 32) + { + err = __WriteSample32(self, sampleBuffer[i] / 32768.0f); + } + else + { + err = __WriteSampleInt(self, (int)sampleBuffer[i], 16); + } + if (err != __TWO_SUCCESS) return err; + } + + return __TWO_SUCCESS; +} + + +/* this function expects values in the 24 bit range +-8388607/8 */ +static int WriteWavLong( + WAVEFILEOUT* self, + int sampleBuffer[], + unsigned int nSamples + ) +{ + unsigned long i; + int err = __TWO_SUCCESS; + + if (!self) return __TWO_ERROR; + if (!sampleBuffer) return __TWO_ERROR; + if (__dataSizeChk(self, nSamples * sizeof(int))) return __TWO_ERROR; + + for (i = 0; i < nSamples; i++) { + if (self->bps == 32) + { + err = __WriteSample32(self, sampleBuffer[i] / 8388608.0f); + } + else + { + err = __WriteSampleInt(self, sampleBuffer[i], 24); + } + if (err != __TWO_SUCCESS) return err; + } + + return __TWO_SUCCESS; +} + + +/* this function expects normalized values in the range +-1.0 */ +#define MAX_FL (+2.0f * 8388608.0f ) +#define MIN_FL (-2.0f * 8388608.0f ) +#define CLIP_FL(x) ( ((x) >= MAX_FL) ? MAX_FL : (((x) <= MIN_FL) ? MIN_FL : (x)) ) +static int WriteWavFloat( + WAVEFILEOUT* self, + float sampleBuffer[], + unsigned int nSamples + ) +{ + unsigned int i; + int err = __TWO_SUCCESS; + + if (!self) return __TWO_ERROR; + if (!sampleBuffer) return __TWO_ERROR; + if (__dataSizeChk(self, nSamples * sizeof(float))) return __TWO_ERROR; + + for (i=0; ibps == 32) + { + err = __WriteSample32(self, sampleBuffer[i]); + } + else + { + float tmp = CLIP_FL(sampleBuffer[i] * 8388608.0f); /* CLIP_FL is just to avoid an INT overrun before the actual cast to int, real clipping and counting is done below */ + err = __WriteSampleInt(self, (int) tmp, 24); + } + if (err != __TWO_SUCCESS) return err; + } + + return __TWO_SUCCESS; +} + + +static int CloseWav(WAVEFILEOUT* self) +{ + unsigned int riffSize_le = 0; + unsigned int dataSize_le = 0; + TWO_UINT64 riffSize64 = 0; + TWO_UINT64 dataSize64 = 0; + TWO_UINT64 sampleCount64 = 0; /* nr of samples in the WAVE sense: 1 sample are all pcm samples of all channels of one time slice */ + int mustWriteRF64 = 0; + + if (!self) return __TWO_ERROR; + + /* check for 4 GB (switch to RF64) */ + if ( self->dataSize > self->dataSizeLimit ) { + /* when we exceed 4 GB: switch from std wave header to RF64 header */ + mustWriteRF64 = 1; + } + + /* calc header values */ + if (mustWriteRF64 == 0) { + /* write padding byte if dataSize is uneven */ + int pad = 0; + if (self->dataSize % 2 > 0) { + char tmp= 0x00; + fwrite(&tmp, sizeof(char), 1, self->theFile); + pad = 1; + } + riffSize_le = LittleEndian32(self->dataChunkOffset - 8 + 8 + (unsigned int)self->dataSize + pad); /* sizeof(hdr) - (8 bytes of riff chunk header) + (8 bytes data chunk header) + sizeof(raw-pcm-data) + padding Byte */ + dataSize_le = LittleEndian32((unsigned int)self->dataSize); + } else { + riffSize_le = 0xffffffff; + dataSize_le = 0xffffffff; + riffSize64 = LittleEndian64( self->dataSize + (TWO_UINT64)self->dataChunkOffset ); + dataSize64 = LittleEndian64( self->dataSize ); + sampleCount64 = LittleEndian64( self->dataSize / (TWO_UINT64)self->blockAlign ); + } + + /* now overwrite length/size values in header with the actual/real ones */ + if (mustWriteRF64 == 0) { + /* riffsize32 */ + fseek(self->theFile, 4, SEEK_SET); + fwrite(&riffSize_le, sizeof(riffSize_le), 1, self->theFile); + /* datasize32 */ + fseek(self->theFile, self->dataChunkOffset + 4, SEEK_SET); + fwrite(&dataSize_le, sizeof(dataSize_le), 1, self->theFile); + } else { + unsigned int rf64sig = BigEndian32('R','F','6','4'); + unsigned int ds64sig = BigEndian32('d','s','6','4'); + + /* replace RIFF->RF64 */ + fseek(self->theFile, 0, SEEK_SET); + fwrite(&rf64sig, sizeof(rf64sig), 1, self->theFile); + + /* riffsize32 */ + fseek(self->theFile, 4, SEEK_SET); + fwrite(&riffSize_le, sizeof(riffSize_le), 1, self->theFile); + + /* replace JUNK->ds64 */ + fseek(self->theFile, self->junkChunkOffset, SEEK_SET); + fwrite(&ds64sig, sizeof(ds64sig), 1, self->theFile); + + /* riffSize64, dataSize64, sampleCount64 */ + fseek(self->theFile, self->junkChunkOffset + 8, SEEK_SET); + fwrite(&riffSize64, sizeof(riffSize64), 1, self->theFile); + fwrite(&dataSize64, sizeof(dataSize64), 1, self->theFile); + fwrite(&sampleCount64, sizeof(sampleCount64), 1, self->theFile); + + /* datasize32 */ + fseek(self->theFile, self->dataChunkOffset + 4, SEEK_SET); + fwrite(&dataSize_le, sizeof(dataSize_le), 1, self->theFile); + } + + fclose(self->theFile); + free(self); + + return __TWO_SUCCESS; +} + +#ifdef TWO_SUPPORT_BWF +static int CloseWavBWF( + WAVEFILEOUT* self, + WAVEOUT_LOUDNESSINFO bextData + ) +{ + int wordData; + + if (!self) return __TWO_ERROR; + + if (self->bextChunkOffset) { + /* Offset for Loudness Data in bext-chunk: 8: Chunk-Header, 412:prev.Data */ + fseek(self->theFile, self->bextChunkOffset+8+412, SEEK_SET); + + wordData = LittleEndian32(EncodeLoudness(bextData.loudnessVal)); + fwrite(&wordData, 2, 1, self->theFile); + + wordData = LittleEndian32(EncodeLoudness(bextData.loudnessRange)); + fwrite(&wordData, 2, 1, self->theFile); + + wordData = LittleEndian32(EncodeLoudness(bextData.maxTruePeakLevel)); + fwrite(&wordData, 2, 1, self->theFile); + + wordData = LittleEndian32(EncodeLoudness(bextData.maxMomentaryLoudnes)); + fwrite(&wordData, 2, 1, self->theFile); + + wordData = LittleEndian32(EncodeLoudness(bextData.maxShortTermLoudness)); + fwrite(&wordData, 2, 1, self->theFile); + } + + return CloseWav(self); +} +#endif + +/*------------- local subs ----------------*/ + +static __inline unsigned int BigEndian32(char a, char b, char c, char d) +{ +#ifdef __TWO_LE + return + (unsigned int) d << 24 | + (unsigned int) c << 16 | + (unsigned int) b << 8 | + (unsigned int) a ; +#else + return + (unsigned int) a << 24 | + (unsigned int) b << 16 | + (unsigned int) c << 8 | + (unsigned int) d ; +#endif +} + + +static __inline unsigned int LittleEndian32(unsigned int v) +{ +#ifdef __TWO_LE + return v; +#else + return + (v & 0x000000FF) << 24 | + (v & 0x0000FF00) << 8 | + (v & 0x00FF0000) >> 8 | + (v & 0xFF000000) >> 24 ; +#endif +} + + +/* signed version of the above */ +static __inline unsigned int LittleEndian32s(int v) +{ +#ifdef __TWO_LE + return v; +#else + return + (v & 0x000000FF) << 24 | + (v & 0x0000FF00) << 8 | + (v & 0x00FF0000) >> 8 | + (v & 0xFF000000) >> 24 ; +#endif +} + + +static __inline short LittleEndian16(short v) +{ +#ifdef __TWO_LE + return v; +#else + return ((v << 8) & 0xFF00) | ((v >> 8) & 0x00FF); +#endif +} + +static __inline TWO_UINT64 LittleEndian64(TWO_UINT64 v) +{ +#ifdef __TWO_LE + return v; +#else + return + (v & 0x00000000000000FF) << 56 | + (v & 0x000000000000FF00) << 40 | + (v & 0x0000000000FF0000) << 24 | + (v & 0x00000000FF000000) << 8 | + (v & 0x000000FF00000000) >> 8 | + (v & 0x0000FF0000000000) >> 24 | + (v & 0x00FF000000000000) >> 40 | + (v & 0xFF00000000000000) >> 56 ; +#endif +} + +#ifdef TWO_SUPPORT_BWF +static unsigned int EncodeLoudness(float x) +{ + int s = (x>0)-(x<0); + return (int)( x*100.0f + s*0.5f ); +} +#endif + +static __inline int __dataSizeChk( WAVEFILEOUT* self, int newbytes ) +{ + if (!self) return __TWO_ERROR; + + if ( (self->dataSize + ((TWO_UINT64)newbytes) ) > self->dataSizeLimit64 ) { + return __TWO_ERROR; + } + + return __TWO_SUCCESS; +} + +#endif /* __TINYWAVEOUT_C_H__ */ + + + diff --git a/lib_lc3plus/tns_coder_fx.c b/lib_lc3plus/tns_coder_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..640e246cc7b42a83b1550f899bb4470105372bd4 --- /dev/null +++ b/lib_lc3plus/tns_coder_fx.c @@ -0,0 +1,378 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +static void Parcor2Index(const Word16 parCoeff[] /*Q15*/, Word16 index[], Word16 order); +static void Index2Parcor(const Word16 index[], Word16 parCoeff[], Word16 order); +static Word32 FIRLattice(Word16 order, const Word16 *parCoeff /*Q15*/, Word32 *state, Word32 x /* Q0 */); + +/*************************************************************************/ + +void processTnsCoder_fx(Word16 *bits, Word16 indexes[], Word32 x[], Word16 BW_cutoff_idx, Word16 order[], + Word16 *numfilters, Word16 enable_lpc_weighting, Word16 nSubdivisions, Word16 frame_dms, + Word16 maxLen, Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif + , Word16 near_nyquist_flag +) +{ + Dyn_Mem_Deluxe_In(Word16 * tmpbuf; Word32 * rxx, epsP, *state, L_tmp, *A, predictionGain, alpha; Word16 * RC, inv; + Word16 n, n2, headroom, shift, tmp, shifts, facs, facs_e, stopfreq, xLen, maxOrder; + Word16 startfreq[TNS_NUMFILTERS_MAX]; const Word16 *subdiv_startfreq, *subdiv_stopfreq; + Counter i, j, iSubdivisions, lag; Word8 * LevinsonBuffer;); + + /* Buffer alignment */ + tmpbuf = (Word16 *)scratchAlign(scratchBuffer, 0); /* Size = 2 * MAX_LEN */ + + rxx = (Word32 *)scratchAlign(tmpbuf, sizeof(*tmpbuf) * maxLen); /* Size = 4 * (MAXLAG + 1) = 36 bytes */ + + state = (Word32 *)scratchAlign(rxx, sizeof(*rxx) * (MAXLAG + 1)); /* Size = 4 * MAXLAG = 32 bytes */ + + A = (Word32 *)scratchAlign(state, sizeof(*state) * MAXLAG); /* Size = 4 * (MAXLAG + 1) = 36 bytes */ + + RC = (Word16 *)scratchAlign(A, sizeof(*A) * (MAXLAG + 1)); /* Size = 2 * MAXLAG = 16 bytes */ + + LevinsonBuffer = (Word8 *)scratchAlign(RC, sizeof(*RC) * (MAXLAG)); /* Size = 4 * (M_LTPF + 1) = 100 bytes */ + + /* Init */ + *bits = 0; + move16(); + maxOrder = MAXLAG; + move16(); + *numfilters = 1; + move16(); + +#ifdef ENABLE_HR_MODE + if (hrmode) + { + xLen = BW_cutoff_bin_all_HR[BW_cutoff_idx]; + } + else +#endif + { + xLen = BW_cutoff_bin_all[BW_cutoff_idx]; + } + move16(); + + SWITCH (frame_dms) + { + case 25: + startfreq[0] = 3; + move16(); + +#ifdef ENABLE_HR_MODE + if (hrmode) + { + subdiv_startfreq = tns_subdiv_startfreq_2_5ms_HR[BW_cutoff_idx - 4]; + move16(); + subdiv_stopfreq = tns_subdiv_stopfreq_2_5ms_HR[BW_cutoff_idx - 4]; + move16(); + } + else +#endif + { + subdiv_startfreq = tns_subdiv_startfreq_2_5ms[BW_cutoff_idx]; + move16(); + subdiv_stopfreq = tns_subdiv_stopfreq_2_5ms[BW_cutoff_idx]; + move16(); + } + xLen = shr_pos(xLen, 2); + maxOrder = 4; + move16(); + BREAK; + case 50: + startfreq[0] = 6; + move16(); + +#ifdef ENABLE_HR_MODE + if (hrmode) + { + subdiv_startfreq = tns_subdiv_startfreq_5ms_HR[BW_cutoff_idx - 4]; + move16(); + subdiv_stopfreq = tns_subdiv_stopfreq_5ms_HR[BW_cutoff_idx - 4]; + move16(); + } + else +#endif + { + subdiv_startfreq = tns_subdiv_startfreq_5ms[BW_cutoff_idx]; + move16(); + subdiv_stopfreq = tns_subdiv_stopfreq_5ms[BW_cutoff_idx]; + move16(); + } + xLen = shr_pos(xLen, 1); + maxOrder = 4; + BREAK; +#ifdef CR8_G_ADD_75MS + case 75: + startfreq[0] = 9; + move16(); + subdiv_startfreq = tns_subdiv_startfreq_7_5ms[BW_cutoff_idx]; + move16(); + subdiv_stopfreq = tns_subdiv_stopfreq_7_5ms[BW_cutoff_idx]; + move16(); + tmp = shr_pos(xLen, 2); + xLen = add(tmp, add(tmp, tmp)); + maxOrder = 8; + BREAK; +#endif + default: /* 100 */ + startfreq[0] = 12; + move16(); + +#ifdef ENABLE_HR_MODE + if (hrmode) + { + subdiv_startfreq = tns_subdiv_startfreq_HR[BW_cutoff_idx - 4]; + move16(); + subdiv_stopfreq = tns_subdiv_stopfreq_HR[BW_cutoff_idx - 4]; + move16(); + } + else +#endif + { + subdiv_startfreq = tns_subdiv_startfreq[BW_cutoff_idx]; + move16(); + subdiv_stopfreq = tns_subdiv_stopfreq[BW_cutoff_idx]; + move16(); + } + BREAK; + } + + IF (sub(BW_cutoff_idx, 3) >= 0 && frame_dms >= 50) + { + *numfilters = 2; + startfreq[1] = shr_pos(xLen, 1); + } + + basop_memset(state, 0, MAXLAG * sizeof(*state)); + + FOR (j = 0; j < *numfilters; j++) + { + basop_memset(rxx, 0, (maxOrder + 1) * sizeof(*rxx)); + + FOR (iSubdivisions = 0; iSubdivisions < nSubdivisions; iSubdivisions++) + { + n = sub(subdiv_stopfreq[nSubdivisions * j + iSubdivisions], + subdiv_startfreq[nSubdivisions * j + iSubdivisions]); + + /*norms[iFilter][iSubdivisions] = norm2FLOAT(pSpectrum+iStartLine, iEndLine-iStartLine);*/ + headroom = getScaleFactor32_lc3plus(x + subdiv_startfreq[nSubdivisions * j + iSubdivisions], n); + + /* Calculate norm of spectrum band */ + L_tmp = Norm32Norm(x + subdiv_startfreq[nSubdivisions * j + iSubdivisions], headroom, n, &shift); + + /* Rounding to avoid overflow when computing the autocorrelation below */ + tmp = sub(norm_l(L_tmp), 1); + L_tmp = L_shl(L_tmp, tmp); + shift = sub(shift, tmp); + L_tmp = L_add(L_tmp, 0x8000); + L_tmp = L_and(L_tmp, 0x7FFF0000); + + IF (L_tmp == 0) + { + rxx[0] = 0x7FFFFFFF; + move32(); + basop_memset(&rxx[1], 0, (maxOrder) * sizeof(*rxx)); + BREAK; + } + + /* get pre-shift for autocorrelation */ + tmp = sub(shift, norm_l(L_tmp)); /* exponent for normalized L_tmp */ + tmp = shr_pos(sub(1, tmp), 1); /* pre-shift to apply before autocorrelation */ + shifts = s_min(tmp, headroom); + + /* calc normalization factor */ + facs_e = shl_pos(sub(tmp, shifts), 1); + + SWITCH (frame_dms) + { + case 25: facs_e = add(facs_e, 1); BREAK; + case 50: facs_e = add(facs_e, 1); BREAK; +#ifdef CR8_G_ADD_75MS + case 75: BREAK; +#endif + case 100: BREAK; + } + + tmp = sub(1, shl_pos(tmp, 1)); /* exponent of autocorrelation */ + L_tmp = L_shl(L_tmp, sub(shift, tmp)); /* shift L_tmp to that exponent */ + /* calc factor (with 2 bits headroom for sum of 3 subdivisions) */ + facs = div_s(0x2000, round_fx(L_tmp)); /* L_tmp is >= 0x2000000 */ + + FOR (i = 0; i < n; i++) + { + tmpbuf[i] = round_fx_sat(L_shl_sat(x[subdiv_startfreq[nSubdivisions * j + iSubdivisions] + i], shifts)); + move16(); + } + + FOR (lag = 0; lag <= maxOrder; lag++) + { + n2 = sub(n, lag); + L_tmp = L_deposit_l(0); + FOR (i = 0; i < n2; i++) + { + L_tmp = L_mac0(L_tmp, tmpbuf[i], tmpbuf[i + lag]); + } + if (lag != 0) + L_tmp = Mpy_32_32_lc3plus(L_tmp, tnsAcfWindow_lc3plus[lag - 1]); + + L_tmp = Mpy_32_16_lc3plus(L_tmp, facs); + L_tmp = L_shl(L_tmp, facs_e); + + rxx[lag] = L_add(rxx[lag], L_tmp); + move32(); + } + } + + /* Levinson-Durbin */ + processLevinson_fx(A, rxx, maxOrder, RC, &epsP, LevinsonBuffer); + + /* Prediction Gain */ + shift = norm_l(epsP); + inv = div_s(16383, extract_h(L_shl_pos(epsP, shift))); + predictionGain = Mpy_32_32_lc3plus(rxx[0], Mpy_32_16_lc3plus(L_sub(MAX_32, Mpy_32_16_lc3plus(L_shl(epsP, shift), inv)), inv)); + + IF (L_sub(predictionGain, L_shr_pos_pos(0x30000000, shift)) > 0 && near_nyquist_flag == 0) + { + /* If Prediction Gain is low */ + test(); + IF (enable_lpc_weighting != 0 && L_sub(predictionGain, L_shr_pos_pos(0x40000000, shift)) < 0) + { + /* LPC weighting */ + alpha = L_add(0x6CCCCCCD, + Mpy_32_32_lc3plus(0x13333333, L_shl_pos(L_sub(L_shl_pos(predictionGain, shift), 0x30000000), 3))); + L_tmp = alpha; + FOR (i = 1; i < maxOrder; i++) + { + A[i] = Mpy_32_32_lc3plus(A[i], L_tmp); + move32(); + L_tmp = Mpy_32_32_lc3plus(L_tmp, alpha); + } + A[maxOrder] = Mpy_32_32_lc3plus(A[maxOrder], L_tmp); + move32(); + + /* LPC -> RC */ + lpc2rc(A, RC, maxOrder); + } + + /* Reflection Coefficients Quantization */ + Parcor2Index(RC, &indexes[MAXLAG * j], maxOrder); + + /* reduce filter order by truncating trailing zeros */ + i = sub(maxOrder, 1); + WHILE ((i >= 0) && (indexes[MAXLAG * j + i] == INDEX_SHIFT)) + { + i = sub(i, 1); + } + order[j] = add(i, 1); + + // Disable TNS if order is 0: + IF (order[j] == 0) { + // Jump to else statement + goto tns_disabled; + } + /* Count bits */ + L_tmp = L_deposit_l(ac_tns_order_bits[enable_lpc_weighting][order[j] - 1]); + FOR (i = 0; i < order[j]; i++) + { + L_tmp = L_add(L_tmp, L_deposit_l(ac_tns_coef_bits[i][indexes[MAXLAG * j + i]])); + } + *bits = add(*bits, add(2, extract_l(L_shr_pos(L_sub(L_tmp, 1), 11)))); + move16(); + + /* Unquantize Reflection Coefficients */ + Index2Parcor(&indexes[MAXLAG * j], RC, order[j]); + + /* Stop frequency */ + stopfreq = xLen; + move16(); + IF (sub(*numfilters, 2) == 0 && j == 0) + { + stopfreq = startfreq[1]; + } + + /* Filter */ + FOR (i = startfreq[j]; i < stopfreq; i++) + { + x[i] = FIRLattice(order[j], RC, state, x[i]); + move32(); + } + } + ELSE + { +tns_disabled: + /* TNS disabled */ + *bits = add(*bits, 1); + order[j] = 0; + } + } + + Dyn_Mem_Deluxe_Out(); +} + +/*************************************************************************/ + +static void Parcor2Index(const Word16 parCoeff[] /*Q15*/, Word16 index[], Word16 order) +{ + Dyn_Mem_Deluxe_In(Counter i; Word16 iIndex; Word16 x;); + + FOR (i = 0; i < order; i++) + { + move16(); + move16(); + iIndex = 1; + x = parCoeff[i]; + + WHILE ((iIndex < TNS_COEF_RES) && (x > tnsQuantThr[iIndex - 1])) + { + iIndex = add(iIndex, 1); + } + index[i] = sub(iIndex, 1); + move16(); + } + + Dyn_Mem_Deluxe_Out(); +} + +static void Index2Parcor(const Word16 index[], Word16 parCoeff[], Word16 order) +{ + Counter i; + FOR (i = 0; i < order; i++) + { + parCoeff[i] = tnsQuantPts[index[i]]; + move16(); + } +} + +static Word32 FIRLattice(Word16 order, const Word16 *parCoeff /*Q15*/, Word32 *state, Word32 x /* Q0 */) +{ + Dyn_Mem_Deluxe_In(Counter i; Word32 tmpSave, tmp;); + + tmpSave = L_add(x, 0); + + FOR (i = 0; i < order - 1; i++) + { + tmp = L_add(state[i], Mpy_32_16_lc3plus(x, parCoeff[i])); + x = L_add(x, Mpy_32_16_lc3plus(state[i], parCoeff[i])); /* exponent: 31+0 */ + state[i] = tmpSave; + move32(); + tmpSave = L_add(tmp, 0); + } + + /* last stage: only need half operations */ + x = L_add(x, Mpy_32_16_lc3plus(state[order - 1], parCoeff[order - 1])); + state[order - 1] = tmpSave; + move32(); + Dyn_Mem_Deluxe_Out(); + return x; +} + diff --git a/lib_lc3plus/tns_decoder_fx.c b/lib_lc3plus/tns_decoder_fx.c new file mode 100644 index 0000000000000000000000000000000000000000..b138c451034c09ea1eb23c262fec6678d0290737 --- /dev/null +++ b/lib_lc3plus/tns_decoder_fx.c @@ -0,0 +1,150 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.5 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" + +static Word32 IIRLattice(Word16 order, const Word16 *parCoeff, Word32 *state, Word32 x); + +/*************************************************************************/ + +void processTnsDecoder_fx(Word16 rc_idx[], Word32 x[], Word16 xLen, Word16 order[], Word16 *x_e, Word16 BW_stopband_idx, + Word16 frame_dms, Word8 *scratchBuffer +#ifdef ENABLE_HR_MODE + , Word16 hrmode +#endif +) +{ + Dyn_Mem_Deluxe_In( + Word32 *state; + Counter i, j; + Word16 s1, s2, s, *rc, f, stopfreq, BW_stopband; + Word16 numfilters, startfreq[TNS_NUMFILTERS_MAX]; + ); + + state = (Word32 *)scratchAlign(scratchBuffer, 0); /* Size = MAXLAG */ + rc = (Word16 *)scratchAlign(state, sizeof(*state) * MAXLAG); /* Size = MAXLAG */ + + numfilters = 1; + +#ifdef ENABLE_HR_MODE + if (hrmode == 1) + { + BW_stopband = BW_cutoff_bin_all_HR[BW_stopband_idx]; move16(); + } + else +#endif + { + BW_stopband = BW_cutoff_bin_all[BW_stopband_idx]; move16(); + } + + SWITCH (frame_dms) + { + case 25: + startfreq[0] = 3; move16(); + BW_stopband = shr_pos(BW_stopband, 2); + BREAK; + case 50: + startfreq[0] = 6; move16(); + BW_stopband = shr_pos(BW_stopband, 1); + BREAK; +#ifdef CR8_G_ADD_75MS + case 75: + startfreq[0] = 9; move16(); + BW_stopband = add(shr_pos(BW_stopband, 2), add(shr_pos(BW_stopband, 2), shr_pos(BW_stopband, 2))); + BREAK; +#endif + case 100: startfreq[0] = 12; BREAK; + } + + IF (sub(BW_stopband_idx, 3) >= 0 && frame_dms >= 50) + { + numfilters = 2; + startfreq[1] = shr_pos(BW_stopband, 1); + } + stopfreq = 0; + + test(); test(); + IF (order[0] > 0 || (sub(numfilters, 2) == 0 && order[1] > 0)) + { + /* Scaling */ + f = startfreq[0]; move16(); + test(); + IF (sub(numfilters, 2) == 0 && order[0] == 0) + { + f = startfreq[1]; move16(); + } + s1 = getScaleFactor32_lc3plus(x, f); + s2 = getScaleFactor32_lc3plus(x + f, sub(xLen, f)); + s = s_min(s1, sub(s2, 7)); /* 7 bits of headroom for IIR filtering */ + *x_e = sub(*x_e, s); + +/* Init Filter */ + basop_memset(state, 0, MAXLAG * sizeof(Word32)); + FOR (i = 0; i < f; i++) + { + x[i] = L_shl(x[i], s); move32(); + } + + FOR (j = 0; j < numfilters; j++) + { + IF (order[j] > 0) + { + /* Unquantize coefficients */ + FOR (i = 0; i < order[j]; i++) + { + rc[i] = tnsQuantPts[rc_idx[j * MAXLAG + i]]; move16(); + } + + /* Stop frequency */ + stopfreq = BW_stopband; move16(); + IF (sub(numfilters, 2) == 0 && j == 0) + { + stopfreq = startfreq[1]; + } + + /* Filter */ + FOR (i = startfreq[j]; i < stopfreq; i++) + { + x[i] = IIRLattice(order[j], rc, state, L_shl(x[i], s)); move32(); + } + } + } + FOR (i = stopfreq; i < xLen; i++) + { + x[i] = L_shl(x[i], s); move32(); + } + } + Dyn_Mem_Deluxe_Out(); +} + +/*************************************************************************/ +/*************************************************************************/ +/*************************************************************************/ + +static Word32 IIRLattice(Word16 order, const Word16 *parCoeff, Word32 *state, Word32 x) +{ + Dyn_Mem_Deluxe_In( + Counter i; + ); + + /* first stage: no need to calculate state[order-1] */ + x = L_sub_sat(x, Mpy_32_16_lc3plus(state[order - 1], parCoeff[order - 1])); + + FOR (i = order - 2; i >= 0; i--) + { + x = L_sub(x, Mpy_32_16_lc3plus(state[i], parCoeff[i])); + state[i + 1] = L_add(state[i], Mpy_32_16_lc3plus(x, parCoeff[i])); move32(); + } + + state[0] = x; move32(); + + Dyn_Mem_Deluxe_Out(); + return x; +} + diff --git a/lib_rend/ivas_crend_fx.c b/lib_rend/ivas_crend_fx.c index 36d18f85924d04ad55ab1adc432bb5ac32156991..a8195dae31320877dcf0b66e68432babc62bc710 100644 --- a/lib_rend/ivas_crend_fx.c +++ b/lib_rend/ivas_crend_fx.c @@ -71,6 +71,8 @@ ivas_error ivas_hrtf_init( hHrtf->max_num_ir = 0; hHrtf->max_num_iterations = 0; hHrtf->index_frequency_max_diffuse = 0; + hHrtf->same_inv_diffuse_weight = 1; + move16(); move32(); move16(); move16(); @@ -79,10 +81,10 @@ ivas_error ivas_hrtf_init( FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ ) { - hHrtf->inv_diffuse_weight_fx[i] = 0; - move16(); FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { + hHrtf->inv_diffuse_weight_fx[j][i] = 0; + move16(); hHrtf->num_iterations[i][j] = 0; move16(); hHrtf->pIndex_frequency_max[i][j] = NULL; @@ -101,6 +103,9 @@ ivas_error ivas_hrtf_init( hHrtf->pOut_to_bin_diffuse_im_fx[j] = NULL; } + hHrtf->init_from_rom = 1; + move16(); + return IVAS_ERR_OK; } @@ -191,7 +196,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 ) ) + 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" ); } @@ -216,8 +221,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 */ @@ -386,20 +414,11 @@ static ivas_error ivas_rend_initCrend_fx( IF( EQ_32( output_Fs, 48000 ) ) { - 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 - } - ELSE - { - hHrtf->inv_diffuse_weight_fx[i] = CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[tmp]; // Q15 - } - move16(); - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[j][tmp]; 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]; @@ -408,6 +427,7 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE { + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[j][tmp]; 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]; @@ -422,20 +442,11 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE IF( EQ_32( output_Fs, 32000 ) ) { - 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 - } - ELSE - { - hHrtf->inv_diffuse_weight_fx[i] = CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[tmp]; // Q15 - } - move16(); - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[j][tmp]; 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]; @@ -444,6 +455,7 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE { + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[j][tmp]; 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]; @@ -458,20 +470,11 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE IF( EQ_32( output_Fs, 16000 ) ) { - 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 - } - ELSE - { - hHrtf->inv_diffuse_weight_fx[i] = CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[tmp]; // Q15 - } - move16(); - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[j][tmp]; 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]; @@ -480,6 +483,7 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE { + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[j][tmp]; 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]; @@ -513,11 +517,10 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { - hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[i]; // Q15 - move16(); - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[j][i]; // Q15 + move16(); 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]; @@ -553,11 +556,10 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { - hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[i]; // Q15 - move16(); - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[j][i]; // Q15 + move16(); 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]; @@ -594,11 +596,11 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { - hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[i]; // Q15 - move16(); FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[j][i]; // Q15 + move16(); 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]; @@ -642,11 +644,10 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { - hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[i]; // Q15 - move16(); - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[j][i]; // Q15 + move16(); 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]; @@ -682,11 +683,10 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { - hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[i]; // Q15 - move16(); - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[j][i]; // Q15 + move16(); 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]; @@ -723,11 +723,10 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { - hHrtf->inv_diffuse_weight_fx[i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[i]; // Q15 - move16(); - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[j][i]; // Q15 + move16(); 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]; @@ -771,11 +770,10 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { - hHrtf->inv_diffuse_weight_fx[i] = CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[i]; // Q15 - move16(); - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[j][i]; // Q15 + move16(); 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]; @@ -811,11 +809,10 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { - hHrtf->inv_diffuse_weight_fx[i] = CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[i]; // Q15 - move16(); - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[j][i]; // Q15 + move16(); 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]; @@ -852,11 +849,10 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { - hHrtf->inv_diffuse_weight_fx[i] = CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[i]; // Q15 - move16(); - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { + hHrtf->inv_diffuse_weight_fx[j][i] = CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[j][i]; // Q15 + move16(); 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]; @@ -899,6 +895,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 */ @@ -908,12 +905,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; @@ -973,21 +978,12 @@ static ivas_error ivas_rend_initCrend_fx( return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Channel configuration not specified!\n\n" ); } move16(); - - IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) - { - hHrtf->inv_diffuse_weight_fx[i] = hSetOfHRTF->hHRTF_brir_combined->inv_diffuse_weight_fx[tmp]; // Q15 - } - ELSE - { - hHrtf->inv_diffuse_weight_fx[i] = hSetOfHRTF->hHRTF_hrir_combined->inv_diffuse_weight_fx[tmp]; // Q15 - } - move16(); - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) { + hHrtf->inv_diffuse_weight_fx[j][i] = hSetOfHRTF->hHRTF_brir_combined->inv_diffuse_weight_fx[j][tmp]; + move16(); 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]; @@ -996,6 +992,8 @@ static ivas_error ivas_rend_initCrend_fx( } ELSE { + hHrtf->inv_diffuse_weight_fx[j][i] = hSetOfHRTF->hHRTF_hrir_combined->inv_diffuse_weight_fx[j][tmp]; + move16(); 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]; @@ -1013,6 +1011,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; @@ -1022,11 +1024,10 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { - hHrtf->inv_diffuse_weight_fx[i] = hSetOfHRTF->hHRTF_hrir_hoa3->inv_diffuse_weight_fx[i]; // Q31 - move16(); - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { + hHrtf->inv_diffuse_weight_fx[j][i] = hSetOfHRTF->hHRTF_hrir_hoa3->inv_diffuse_weight_fx[j][i]; + move16(); 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]; @@ -1053,6 +1054,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; @@ -1062,11 +1067,10 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { - hHrtf->inv_diffuse_weight_fx[i] = hSetOfHRTF->hHRTF_hrir_hoa2->inv_diffuse_weight_fx[i]; // Q15 - move16(); - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { + hHrtf->inv_diffuse_weight_fx[j][i] = hSetOfHRTF->hHRTF_hrir_hoa2->inv_diffuse_weight_fx[j][i]; + move16(); 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]; @@ -1093,6 +1097,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; @@ -1102,11 +1110,11 @@ static ivas_error ivas_rend_initCrend_fx( FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { - hHrtf->inv_diffuse_weight_fx[i] = hSetOfHRTF->hHRTF_hrir_foa->inv_diffuse_weight_fx[i]; // Q31 - move16(); - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { + hHrtf->inv_diffuse_weight_fx[j][i] = hSetOfHRTF->hHRTF_hrir_foa->inv_diffuse_weight_fx[j][i]; + move16(); + 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]; @@ -1138,6 +1146,19 @@ static ivas_error ivas_rend_initCrend_fx( } } + 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; + } + } + } + pCrend->hHrtfCrend = hHrtf; return IVAS_ERR_OK; @@ -1395,10 +1416,12 @@ static ivas_error ivas_er_init_handle( *------------------------------------------------------------------------*/ ivas_error ivas_rend_initCrendWrapper( - CREND_WRAPPER_HANDLE *pCrend ) + CREND_WRAPPER_HANDLE *pCrend, + const int16_t num_poses ) { Word16 i; CREND_HANDLE hCrend; + Word16 pos_idx; IF( pCrend == NULL ) { @@ -1413,7 +1436,11 @@ ivas_error ivas_rend_initCrendWrapper( ( *pCrend )->binaural_latency_ns = 0; move32(); ( *pCrend )->hHrtfCrend = NULL; + ( *pCrend )->io_qfactor = 0; + move16(); + ( *pCrend )->p_io_qfactor = &( *pCrend )->io_qfactor; + FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) { hCrend = NULL; IF( ( hCrend = (CREND_HANDLE) malloc( sizeof( CREND_DATA ) ) ) == NULL ) @@ -1435,8 +1462,10 @@ ivas_error ivas_rend_initCrendWrapper( } hCrend->hTrack = NULL; - hCrend->freq_buffer_re_diffuse_fx = NULL; - hCrend->freq_buffer_im_diffuse_fx = NULL; + 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; hCrend->hReverb = NULL; hCrend->reflections = NULL; hCrend->delay_line_rw_index = 0; @@ -1450,12 +1479,34 @@ ivas_error ivas_rend_initCrendWrapper( move32(); move32(); - ( *pCrend )->hCrend = hCrend; + ( *pCrend )->hCrend[pos_idx] = hCrend; } return IVAS_ERR_OK; } +/*------------------------------------------------------------------------- + * ivas_rend_openMultiBinCrend() + * + * Allocate and initialize crend renderer handle + *------------------------------------------------------------------------*/ + +ivas_error ivas_rend_openMultiBinCrend( + CREND_WRAPPER_HANDLE *pCrend, + const AUDIO_CONFIG inConfig, + const AUDIO_CONFIG outConfig, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const Word32 output_Fs ) +{ + ivas_error error; + + if ( ( error = ivas_rend_openCrend( pCrend, inConfig, outConfig, NULL /*hRendCfg*/, NULL, NULL /* hHrtfStatistics */, output_Fs, pMultiBinPoseData->num_poses ) ) != IVAS_ERR_OK ) + { + return error; + } + + return error; +} /*------------------------------------------------------------------------- * ivas_rend_openCrend() @@ -1469,156 +1520,195 @@ ivas_error ivas_rend_openCrend( const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg, HRTFS_CREND_HANDLE hSetOfHRTF, - const Word32 output_Fs ) + HRTFS_STATISTICS_HANDLE hHrtfStatistics, + const Word32 output_Fs, + const Word16 num_poses ) { Word16 i, subframe_length; - Word16 max_total_ir_len; + Word32 max_total_ir_len; HRTFS_HANDLE hHrtf; CREND_HANDLE hCrend; ivas_error error; + Word16 pos_idx; error = IVAS_ERR_OK; move16(); - IF( NE_32( ( error = ivas_rend_initCrendWrapper( pCrend ) ), IVAS_ERR_OK ) ) + IF( ( error = ivas_rend_initCrendWrapper( pCrend, num_poses ) ) != IVAS_ERR_OK ) { return error; } subframe_length = extract_l( Mult_32_16( output_Fs, 164 ) ); /*( output_Fs / FRAMES_PER_SEC ) / MAX_PARAM_SPATIAL_SUBFRAMES(i/o:164=(32768/FRAMES_PER_SEC)/MAX_PARAM_SPATIAL_SUBFRAMES*/ - IF( ( *pCrend )->hHrtfCrend == NULL ){ - IF( NE_32( ( error = ivas_rend_initCrend_fx( *pCrend, inConfig, outConfig, hSetOfHRTF, output_Fs ) ), IVAS_ERR_OK ) ){ + IF( ( *pCrend )->hHrtfCrend == NULL ) + { + IF( NE_32( ( error = ivas_rend_initCrend_fx( *pCrend, inConfig, outConfig, hSetOfHRTF, output_Fs ) ), IVAS_ERR_OK ) ) + { return error; -} -} - -{ - hCrend = ( *pCrend )->hCrend; - hHrtf = ( *pCrend )->hHrtfCrend; + } + } - IF( hHrtf != NULL ) + for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) { - max_total_ir_len = imult1616( hHrtf->max_num_iterations, subframe_length ); + hCrend = ( *pCrend )->hCrend[pos_idx]; + hHrtf = ( *pCrend )->hHrtfCrend; - FOR( i = 0; i < hHrtf->max_num_ir; i++ ) + IF( hHrtf != NULL ) { - IF( ( hCrend->freq_buffer_re_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); - } - set_zero_fx( hCrend->freq_buffer_re_fx[i], max_total_ir_len ); - IF( ( hCrend->freq_buffer_im_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + max_total_ir_len = L_mult0( hHrtf->max_num_iterations, subframe_length ); + + FOR( i = 0; i < hHrtf->max_num_ir; i++ ) { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + IF( ( hCrend->freq_buffer_re_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + set_zero2_fx( hCrend->freq_buffer_re_fx[i], max_total_ir_len ); + + IF( ( hCrend->freq_buffer_im_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + set_zero2_fx( hCrend->freq_buffer_im_fx[i], max_total_ir_len ); } - set_zero_fx( hCrend->freq_buffer_im_fx[i], max_total_ir_len ); - } - FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) - { - IF( ( hCrend->prev_out_buffer_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * subframe_length ) ) == NULL ) + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + IF( ( hCrend->prev_out_buffer_fx[i] = (Word32 *) malloc( sizeof( Word32 ) * subframe_length ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + set_zero_fx( hCrend->prev_out_buffer_fx[i], subframe_length ); } - set_zero_fx( hCrend->prev_out_buffer_fx[i], subframe_length ); - } - max_total_ir_len = imult1616( (Word16) hHrtf->num_iterations_diffuse[0], subframe_length ); + max_total_ir_len = L_mult0( (Word16) hHrtf->num_iterations_diffuse[0], subframe_length ); - IF( max_total_ir_len > 0 ) - { - IF( ( hCrend->freq_buffer_re_diffuse_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + IF( max_total_ir_len > 0 ) { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + 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; + } + 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 ); + } + 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; + } + 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 ); + } } - set_zero_fx( hCrend->freq_buffer_re_diffuse_fx, max_total_ir_len ); - IF( ( hCrend->freq_buffer_im_diffuse_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + ELSE { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + 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; } - set_zero_fx( hCrend->freq_buffer_im_diffuse_fx, max_total_ir_len ); - } - ELSE - { - hCrend->freq_buffer_re_diffuse_fx = NULL; - hCrend->freq_buffer_im_diffuse_fx = NULL; - } - 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;*/ - IF( max_total_ir_len > 0 ) - { - IF( ( hCrend->lfe_delay_line_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + 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;*/ + IF( max_total_ir_len > 0 ) { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + IF( ( hCrend->lfe_delay_line_fx = (Word32 *) malloc( sizeof( Word32 ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + set_zero2_fx( hCrend->lfe_delay_line_fx, max_total_ir_len ); } - set_zero_fx( hCrend->lfe_delay_line_fx, max_total_ir_len ); - } - ELSE - { - hCrend->lfe_delay_line_fx = NULL; - } - - IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) - { - IF( NE_32( ( error = ivas_reverb_open_fx( &( hCrend->hReverb ), inConfig, ( *pCrend )->hHrtfCrend, NULL, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) ) + ELSE { - return error; + hCrend->lfe_delay_line_fx = NULL; } - IF( EQ_16( hRendCfg->roomAcoustics.use_er, 1 ) ) + IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { - - /* Allocate memory for reflections */ - hCrend->reflections = (er_struct_t *) malloc( sizeof( er_struct_t ) ); - IF( !hCrend->reflections ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Early Reflections" ); - } - IF( NE_32( ( error = ivas_er_init_handle( hCrend->reflections ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_reverb_open_fx( &( hCrend->hReverb ), hHrtfStatistics, hRendCfg, output_Fs ) ), IVAS_ERR_OK ) ) { return error; } - hCrend->reflections->use_er = hRendCfg->roomAcoustics.use_er; - hCrend->reflections->lowComplexity = hRendCfg->roomAcoustics.lowComplexity; - move16(); - move32(); + IF( EQ_16( hRendCfg->roomAcoustics.use_er, 1 ) ) + { - /* Set sample rate and frame size */ + /* Allocate memory for reflections */ + hCrend->reflections = (er_struct_t *) malloc( sizeof( er_struct_t ) ); + IF( !hCrend->reflections ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Early Reflections" ); + } + IF( NE_32( ( error = ivas_er_init_handle( hCrend->reflections ) ), IVAS_ERR_OK ) ) + { + return error; + } - hCrend->reflections->output_Fs_fx = output_Fs; // Q0 - move32(); + hCrend->reflections->use_er = hRendCfg->roomAcoustics.use_er; + hCrend->reflections->lowComplexity = hRendCfg->roomAcoustics.lowComplexity; + move16(); + move32(); - hCrend->reflections->max_frame_size = extract_l( Mult_32_16( output_Fs, INV_FRAME_PER_SEC_Q15 ) ); - move32(); + /* Set sample rate and frame size */ + + hCrend->reflections->output_Fs_fx = output_Fs; // Q0 + move32(); + + hCrend->reflections->max_frame_size = extract_l( Mult_32_16( output_Fs, INV_FRAME_PER_SEC_Q15 ) ); + move32(); - /* Init Shoebox */ - ivas_shoebox_config_init( &hCrend->reflections->shoebox_lib.cal, hRendCfg ); + /* Init Shoebox */ + ivas_shoebox_config_init( &hCrend->reflections->shoebox_lib.cal, hRendCfg ); - /* Init and compute Reflections */ - IF( NE_32( ( error = ivas_er_init( hCrend->reflections, inConfig ) ), IVAS_ERR_OK ) ) + /* Init and compute Reflections */ + IF( NE_32( ( error = ivas_er_init( hCrend->reflections, inConfig ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE { - return error; + hCrend->reflections = NULL; } } ELSE { - hCrend->reflections = NULL; + hCrend->hReverb = NULL; } - } - ELSE - { - hCrend->hReverb = NULL; + + ( *pCrend )->binaural_latency_ns = Mult_32_32( ( *pCrend )->hHrtfCrend->latency_s_fx, (Word32) 1000000000 ); + move32(); } - ( *pCrend )->binaural_latency_ns = Mult_32_32( ( *pCrend )->hHrtfCrend->latency_s_fx, (Word32) 1000000000 ); - move32(); + ( *pCrend )->hCrend[pos_idx] = hCrend; } - - ( *pCrend )->hCrend = hCrend; -} -return IVAS_ERR_OK; + return IVAS_ERR_OK; } /*------------------------------------------------------------------------- @@ -1628,9 +1718,11 @@ return IVAS_ERR_OK; *------------------------------------------------------------------------*/ void ivas_rend_closeCrend( - CREND_WRAPPER_HANDLE *pCrend ) + CREND_WRAPPER_HANDLE *pCrend, + const Word16 num_poses ) { Word16 i; + Word16 pos_idx; CREND_HANDLE hCrend; test(); @@ -1644,8 +1736,9 @@ void ivas_rend_closeCrend( ivas_hrtf_close( &( *pCrend )->hHrtfCrend ); } + FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) { - hCrend = ( *pCrend )->hCrend; + hCrend = ( *pCrend )->hCrend[pos_idx]; IF( hCrend != NULL ) { FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ ) @@ -1676,16 +1769,28 @@ void ivas_rend_closeCrend( free( hCrend->lfe_delay_line_fx ); hCrend->lfe_delay_line_fx = NULL; } + 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 != NULL ) + IF( hCrend->freq_buffer_re_diffuse_fx[1] != NULL ) { - free( hCrend->freq_buffer_re_diffuse_fx ); - hCrend->freq_buffer_re_diffuse_fx = NULL; + free( hCrend->freq_buffer_re_diffuse_fx[1] ); + hCrend->freq_buffer_re_diffuse_fx[1] = NULL; } - IF( hCrend->freq_buffer_im_diffuse_fx != NULL ) + + IF( hCrend->freq_buffer_im_diffuse_fx[1] != NULL ) { - free( hCrend->freq_buffer_im_diffuse_fx ); - hCrend->freq_buffer_im_diffuse_fx = NULL; + free( hCrend->freq_buffer_im_diffuse_fx[1] ); + hCrend->freq_buffer_im_diffuse_fx[1] = NULL; } IF( hCrend->hTrack != NULL ) { @@ -1712,7 +1817,7 @@ void ivas_rend_closeCrend( } free( hCrend ); hCrend = NULL; - ( *pCrend )->hCrend = hCrend; + ( *pCrend )->hCrend[pos_idx] = hCrend; } } @@ -1723,6 +1828,28 @@ void ivas_rend_closeCrend( } +/*------------------------------------------------------------------------- + * ivas_rend_closeCldfbRend() + * + * Close CLDFB based fastconv binaural renderer memories + *------------------------------------------------------------------------*/ + +void ivas_rend_closeCldfbRend( + CLDFB_REND_WRAPPER *pCldfbRend ) +{ + IF( pCldfbRend->hCldfbRend->hInputSetup != NULL ) + { + free( pCldfbRend->hCldfbRend->hInputSetup ); + pCldfbRend->hCldfbRend->hInputSetup = NULL; + } + + ivas_binRenderer_close_fx( &pCldfbRend->hCldfbRend ); + ivas_binaural_hrtf_close( &pCldfbRend->hHrtfFastConv ); + ivas_HRTF_fastconv_binary_close_fx( &pCldfbRend->hHrtfFastConv ); + + return; +} + /*-----------------------------------------------------------------------------------------* * Function ivas_rend_crendConvolver() * @@ -1736,15 +1863,18 @@ static ivas_error ivas_rend_crendConvolver( Word32 *pcm_in[], // Qx Word32 *pcm_out[], // Qx const Word32 output_Fs, - const Word16 i_ts ) + const Word16 i_ts, + const Word16 pos_idx ) { Word16 i, j, k, m; Word16 subframe_length, idx_in; Word16 lfe_idx_in; - Word16 offset, offset_in, offset_diffuse; + Word32 offset, offset_in, offset_diffuse; + Word16 index_in; Word16 nchan_in, nchan_out; const Word32 *pIn; Word32 *pFreq_buf_re, *pFreq_buf_im; + Word32 *pFreq_buf2_re, *pFreq_buf2_im; const Word32 *pFreq_filt_re, *pFreq_filt_im; Word32 pOut[L_FRAME48k * 2]; Word32 tmp_out_re[L_FRAME48k]; @@ -1752,8 +1882,7 @@ static ivas_error ivas_rend_crendConvolver( CREND_HANDLE hCrend; ivas_error error; - - hCrend = pCrend->hCrend; + hCrend = pCrend->hCrend[pos_idx]; IF( NE_32( ( error = getAudioConfigNumChannels( inConfig, &nchan_in ) ), IVAS_ERR_OK ) ) { @@ -1783,13 +1912,18 @@ static ivas_error ivas_rend_crendConvolver( } } - offset = imult1616( hCrend->delay_line_rw_index, subframe_length ); /* subframe_length * ( pCrend->hHrtfCrend->max_num_iterations - 1 ); */ - offset_diffuse = imult1616( hCrend->diffuse_delay_line_rw_index, subframe_length ); /* subframe_length *( pCrend->hHrtfCrend->num_iterations_diffuse[0] - 1 ); */ + offset = L_mult0( hCrend->delay_line_rw_index, subframe_length ); /* subframe_length * ( pCrend->hHrtfCrend->max_num_iterations - 1 ); */ + offset_diffuse = L_mult0( hCrend->diffuse_delay_line_rw_index, subframe_length ); /* subframe_length *( pCrend->hHrtfCrend->num_iterations_diffuse[0] - 1 ); */ IF( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { - 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 ); + 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 ); + } } i = 0; @@ -1802,20 +1936,45 @@ static ivas_error ivas_rend_crendConvolver( { IF( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { - 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 - pFreq_filt_im = &hCrend->freq_buffer_im_fx[i][offset]; // Qx - FOR( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) - { - pFreq_buf_re[k] = L_add( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[i] ), pFreq_buf_re[k] ); // Qx - pFreq_buf_im[k] = L_add( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[i] ), pFreq_buf_im[k] ); // Qx - move32(); - move32(); - } - } - pFreq_buf_re = &hCrend->freq_buffer_re_fx[i][offset]; // Qx - pFreq_buf_im = &hCrend->freq_buffer_im_fx[i][offset]; // Qx + 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] = L_add( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_re[k] ); // Qx + pFreq_buf_im[k] = L_add( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_im[k] ); // Qx + move32(); + move32(); + } + } + 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] = L_add( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_re[k] ); // Qx + pFreq_buf_im[k] = L_add( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[0][i] ), pFreq_buf_im[k] ); // Qx + move32(); + move32(); + pFreq_buf2_re[k] = L_add( Mpy_32_16_r( pFreq_filt_re[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i] ), pFreq_buf2_re[k] ); // Qx + pFreq_buf2_im[k] = L_add( Mpy_32_16_r( pFreq_filt_im[k], pCrend->hHrtfCrend->inv_diffuse_weight_fx[1][i] ), pFreq_buf2_im[k] ); // Qx + move32(); + move32(); + } + } + } + pFreq_buf_re = &hCrend->freq_buffer_re_fx[i][offset]; // Qx + pFreq_buf_im = &hCrend->freq_buffer_im_fx[i][offset]; // Qx ivas_mdft_fx( pIn, pFreq_buf_re, pFreq_buf_im, subframe_length, subframe_length ); @@ -1841,10 +2000,11 @@ static ivas_error ivas_rend_crendConvolver( move16(); FOR( m = 0; m < pCrend->hHrtfCrend->num_iterations[i][j]; m++ ) { - offset_in = add( add( hCrend->delay_line_rw_index, sub( pCrend->hHrtfCrend->max_num_iterations, pCrend->hHrtfCrend->num_iterations[i][j] ) ), add( m, 1 ) ); - offset_in = offset_in % ( pCrend->hHrtfCrend->max_num_iterations ); + index_in = add( add( hCrend->delay_line_rw_index, sub( pCrend->hHrtfCrend->max_num_iterations, pCrend->hHrtfCrend->num_iterations[i][j] ) ), add( m, 1 ) ); + index_in = index_in % ( pCrend->hHrtfCrend->max_num_iterations ); move16(); - offset_in = imult1616( offset_in, subframe_length ); + offset_in = L_mult0( index_in, subframe_length ); + pFreq_buf_re = &hCrend->freq_buffer_re_fx[i][offset_in]; // Qx pFreq_buf_im = &hCrend->freq_buffer_im_fx[i][offset_in]; // Qx pFreq_filt_re = &pCrend->hHrtfCrend->pOut_to_bin_re_fx[i][j][offset]; // Q29 @@ -1857,7 +2017,8 @@ static ivas_error ivas_rend_crendConvolver( move32(); move32(); } - offset = add( offset, k ); + + offset = L_add( offset, k ); } i = add( i, 1 ); } @@ -1867,12 +2028,20 @@ static ivas_error ivas_rend_crendConvolver( move16(); FOR( m = 0; m < pCrend->hHrtfCrend->num_iterations_diffuse[j]; m++ ) { - offset_diffuse = add( hCrend->diffuse_delay_line_rw_index, add( m, 1 ) ); - offset_diffuse = offset_diffuse % pCrend->hHrtfCrend->num_iterations_diffuse[0]; + index_in = add( hCrend->diffuse_delay_line_rw_index, add( m, 1 ) ); + index_in = index_in % pCrend->hHrtfCrend->num_iterations_diffuse[0]; move16(); - offset_diffuse = imult1616( offset_diffuse, 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 + offset_diffuse = L_mult0( index_in, subframe_length ); + 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]; + } 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++ ) @@ -1882,7 +2051,8 @@ static ivas_error ivas_rend_crendConvolver( move32(); move32(); } - offset = add( offset, k ); + offset = L_add( offset, k ); + move32(); } ivas_imdft_fx( tmp_out_re, tmp_out_im, pOut, subframe_length ); @@ -1915,159 +2085,6 @@ static ivas_error ivas_rend_crendConvolver( return IVAS_ERR_OK; } -/*-----------------------------------------------------------------------------------------* - * Function ivas_rend_crend_Process() - * - * Process call for IVAS Crend renderer - *-----------------------------------------------------------------------------------------*/ - -ivas_error ivas_rend_crendProcess( - const CREND_WRAPPER *pCrend, - const AUDIO_CONFIG inConfig, - const AUDIO_CONFIG outConfig, - DECODER_CONFIG_HANDLE hDecoderConfig, - COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, - IVAS_OUTPUT_SETUP_HANDLE hIntSetup, - EFAP_HANDLE hEFAPdata, - Word32 *output_fx[], /* i/o: input/output audio channels Qx */ - const Word32 output_Fs, - const Word16 num_subframes /* i : number of subframes to render */ -) -{ - Word16 i, subframe_idx, subframe_len; - Word16 nchan_out; - Word32 pcm_tmp_fx[BINAURAL_CHANNELS][L_FRAME48k]; - Word32 *p_pcm_tmp_fx[BINAURAL_CHANNELS]; - IVAS_REND_AudioConfigType inConfigType; - Word8 combinedOrientationEnabled; - ivas_error error; - CREND_HANDLE hCrend; - - hCrend = pCrend->hCrend; - - combinedOrientationEnabled = 0; - move16(); - IF( hCombinedOrientationData != NULL ) - { - FOR( subframe_idx = 0; subframe_idx < num_subframes; subframe_idx++ ) - { - IF( hCombinedOrientationData->enableCombinedOrientation[subframe_idx] != 0 ) - { - combinedOrientationEnabled = 1; - move16(); - BREAK; - } - } - } - - push_wmops( "ivas_rend_crendProcess" ); - inConfigType = getAudioConfigType( inConfig ); - - IF( NE_32( ( error = getAudioConfigNumChannels( outConfig, &nchan_out ) ), IVAS_ERR_OK ) ) - { - return error; - } - subframe_len = L_SUBFRAME_48k; - move16(); - SWITCH( output_Fs ) - { - case 48000: - subframe_len = L_SUBFRAME_48k; - move16(); - BREAK; - case 32000: - subframe_len = L_SUBFRAME_32k; - move16(); - BREAK; - case 16000: - subframe_len = L_SUBFRAME_16k; - move16(); - BREAK; - case 8000: - subframe_len = L_SUBFRAME_8k; - move16(); - BREAK; - default: - BREAK; - } - - FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) - { - p_pcm_tmp_fx[i] = pcm_tmp_fx[i]; - move32(); - } - - FOR( subframe_idx = 0; subframe_idx < num_subframes; subframe_idx++ ) - { - /* Early Reflections */ - IF( hCrend->reflections != NULL ) - { - test(); - IF( EQ_16( hCrend->reflections->use_er, 1 ) && EQ_16( hCrend->reflections->is_ready, 1 ) ) - { - IF( NE_32( ( error = ivas_er_process( hCrend->reflections, subframe_len, subframe_idx, output_fx, inConfig ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - } - - test(); - IF( hDecoderConfig && combinedOrientationEnabled ) - { - /* Orientation tracking */ - - /* Rotation in SHD for: - MC with elevation (5_1_2 / 5_1_4 / 7_1_4) -> BINAURAL - SBA SPAR -> BINAURAL or BINAURAL_ROOM - */ - test(); - test(); - test(); - IF( EQ_16( inConfig, IVAS_AUDIO_CONFIG_FOA ) || EQ_16( inConfig, IVAS_AUDIO_CONFIG_HOA2 ) || EQ_16( inConfig, IVAS_AUDIO_CONFIG_HOA3 ) ) - { - rotateFrame_shd( hCombinedOrientationData, output_fx, subframe_len, *hIntSetup, subframe_idx ); - } - /* Rotation in SD for MC -> BINAURAL_ROOM */ - ELSE IF( ( hIntSetup != NULL ) && hIntSetup->is_loudspeaker_setup ) - { - rotateFrame_sd( hCombinedOrientationData, output_fx, subframe_len, *hIntSetup, hEFAPdata, subframe_idx ); - } - } - test(); - IF( EQ_16( inConfigType, IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) || EQ_16( inConfigType, IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS ) ) - { - - IF( NE_32( ( error = ivas_rend_crendConvolver( pCrend, inConfig, outConfig, output_fx, p_pcm_tmp_fx, output_Fs, subframe_idx ) ), IVAS_ERR_OK ) ) - { - return error; - } - - IF( hCrend->hReverb != NULL ) - { - IF( NE_32( ( error = ivas_reverb_process_fx( pCrend->hCrend->hReverb, inConfig, 1, output_fx, p_pcm_tmp_fx, subframe_idx ) ), IVAS_ERR_OK ) ) - { - return error; - } - } - - /* update combined orientation access index */ - ivas_combined_orientation_update_index( hCombinedOrientationData, subframe_len ); - } - ELSE - { - return IVAS_ERR_INVALID_INPUT_FORMAT; - } - } - /* move to output */ - FOR( i = 0; i < nchan_out; i++ ) - { - MVR2R_WORD32( pcm_tmp_fx[i], output_fx[i], imult1616( num_subframes, subframe_len ) ); - } - - pop_wmops(); - return IVAS_ERR_OK; -} /*-----------------------------------------------------------------------------------------* * Function ivas_rend_crendProcessSubframe() @@ -2088,7 +2105,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 */ -) + , + const Word16 pos_idx ) { Word16 subframe_idx, subframe_len; Word16 nchan_out, nchan_in, ch, first_sf, last_sf, slot_size, slots_to_render; @@ -2099,7 +2117,7 @@ ivas_error ivas_rend_crendProcessSubframe( ivas_error error; Word8 combinedOrientationEnabled; CREND_HANDLE hCrend; - hCrend = pCrend->hCrend; + hCrend = pCrend->hCrend[pos_idx]; combinedOrientationEnabled = 0; move16(); @@ -2133,24 +2151,66 @@ ivas_error ivas_rend_crendProcessSubframe( { p_pcm_tmp_fx[ch] = pcm_tmp_fx[ch]; } - slot_size = hTcBuffer->n_samples_granularity; - move16(); - /* loop for synthesis, assume we always have to render in multiples of 5ms subframes with spills */ - slots_to_render = s_min( sub( hTcBuffer->num_slots, hTcBuffer->slots_rendered ), idiv1616( n_samples_to_render, slot_size ) ); - first_sf = hTcBuffer->subframes_rendered; - move16(); - last_sf = first_sf; - move16(); + IF( hTcBuffer != NULL ) + { + slot_size = hTcBuffer->n_samples_granularity; + move16(); + + /* loop for synthesis, assume we always have to render in multiples of 5ms subframes with spills */ + slots_to_render = s_min( sub( hTcBuffer->num_slots, hTcBuffer->slots_rendered ), idiv1616( n_samples_to_render, slot_size ) ); + first_sf = hTcBuffer->subframes_rendered; + move16(); + last_sf = first_sf; + move16(); + + WHILE( slots_to_render > 0 ) + { + slots_to_render = sub( slots_to_render, hTcBuffer->subframe_nbslots[last_sf] ); + last_sf = add( last_sf, 1 ); + } - WHILE( slots_to_render > 0 ) + subframe_len = -1; /* will be set later */ + move16(); + } + ELSE { - slots_to_render = sub( slots_to_render, hTcBuffer->subframe_nbslots[last_sf] ); - last_sf = add( last_sf, 1 ); + Word16 n_den, den, last_sf_tmp; + + SWITCH( output_Fs ) + { + case 48000: + subframe_len = L_SUBFRAME_48k; + move16(); + BREAK; + case 32000: + subframe_len = L_SUBFRAME_32k; + move16(); + BREAK; + case 16000: + default: + subframe_len = L_SUBFRAME_16k; + move16(); + BREAK; + } + + first_sf = 0; + move16(); + last_sf = idiv1616( n_samples_to_render, subframe_len ); + + n_den = norm_s( subframe_len ); + den = shl( subframe_len, n_den ); + last_sf_tmp = div_s( n_samples_to_render, den ); + last_sf = shr( last_sf_tmp, sub( 15, n_den ) ); } + FOR( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ ) { - subframe_len = imult1616( hTcBuffer->subframe_nbslots[subframe_idx], hTcBuffer->n_samples_granularity ); + if ( hTcBuffer != NULL ) + { + subframe_len = imult1616( hTcBuffer->subframe_nbslots[subframe_idx], hTcBuffer->n_samples_granularity ); + } + /* Early Reflections */ IF( hCrend->reflections != NULL ) { @@ -2188,20 +2248,19 @@ 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 ) ) { - - IF( NE_32( ( error = ivas_rend_crendConvolver( pCrend, inConfig, outConfig, tc_local_fx, p_pcm_tmp_fx, output_Fs, 0 ) ), IVAS_ERR_OK ) ) - + 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 ) ) { return error; } - IF( pCrend->hCrend->hReverb != NULL ) + IF( pCrend->hCrend[0]->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 ) ) + 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 ) ) { return error; } } + FOR( ch = 0; ch < nchan_in; ch++ ) { tc_local_fx[ch] += subframe_len; @@ -2210,17 +2269,23 @@ ivas_error ivas_rend_crendProcessSubframe( { p_pcm_tmp_fx[ch] += subframe_len; } - hTcBuffer->slots_rendered = add( hTcBuffer->subframe_nbslots[subframe_idx], hTcBuffer->slots_rendered ); - move16(); + + if ( hTcBuffer != NULL ) + { + hTcBuffer->slots_rendered = add( hTcBuffer->subframe_nbslots[subframe_idx], hTcBuffer->slots_rendered ); + move16(); + } } ELSE { return IVAS_ERR_INVALID_INPUT_FORMAT; } + /* update combined orientation access index */ ivas_combined_orientation_update_index( hCombinedOrientationData, subframe_len ); } - IF( pCrend->hCrend->hReverb != NULL ) + + IF( pCrend->hCrend[0]->hReverb != NULL ) { *pCrend->p_io_qfactor = sub( *pCrend->p_io_qfactor, 2 ); move16(); @@ -2233,15 +2298,359 @@ ivas_error ivas_rend_crendProcessSubframe( } } } + /* move to output */ FOR( ch = 0; ch < nchan_out; ch++ ) { MVR2R_WORD32( pcm_tmp_fx[ch], output[ch], n_samples_to_render ); // Qx } - hTcBuffer->subframes_rendered = last_sf; - move16(); + if ( hTcBuffer != NULL ) + { + hTcBuffer->subframes_rendered = last_sf; + move16(); + } + pop_wmops(); return IVAS_ERR_OK; } + +/*-----------------------------------------------------------------------------------------* + * Function ivas_rend_crend_ProcessSplitBin() + * + * Process call for IVAS Crend renderer + *-----------------------------------------------------------------------------------------*/ + +ivas_error ivas_rend_crendProcessSplitBin( + const CREND_WRAPPER *pCrend, + const AUDIO_CONFIG inConfig, + const AUDIO_CONFIG outConfig, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const DECODER_CONFIG_HANDLE hDecoderConfig, + const COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, + const IVAS_OUTPUT_SETUP_HANDLE hIntSetup, + EFAP_HANDLE hEFAPdata, + Word32 *output[], + const Word32 output_Fs ) +{ + Word16 i, j; + Word16 sf; + Word16 pos_idx, output_frame; + ivas_error error; + Word16 gain_lfe; + Word32 tmpLfeBuffer[L_FRAME48k]; + Word32 tmpInputBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + Word32 *p_tmpInputBuffer[MAX_OUTPUT_CHANNELS]; + Word32 tmpSplitBinBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + COMBINED_ORIENTATION_DATA combinedOrientationDataLocal; + COMBINED_ORIENTATION_HANDLE pCombinedOrientationDataLocal; + + output_frame = extract_l( Mpy_32_32( output_Fs, ONE_BY_FRAMES_PER_SEC_Q31 ) ); + + /* copy input */ + FOR( i = 0; i < hIntSetup->nchan_out_woLFE; ++i ) + { + Copy32( output[i], tmpInputBuffer[i], output_frame ); + } + + FOR( i = 0; i < MAX_OUTPUT_CHANNELS; ++i ) + { + p_tmpInputBuffer[i] = tmpInputBuffer[i]; + move32(); + } + + /* save current head positions */ + pCombinedOrientationDataLocal = hCombinedOrientationData; + move32(); + combinedOrientationDataLocal = *pCombinedOrientationDataLocal; + move32(); + IF( EQ_32( pMultiBinPoseData->poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) ) + { + FOR( sf = 1; sf < hCombinedOrientationData->num_subframes; ++sf ) + { + Copy_Quat_fx( &combinedOrientationDataLocal.Quaternions[0], &combinedOrientationDataLocal.Quaternions[sf] ); + FOR( i = 0; i < 3; i++ ) + { + FOR( j = 0; j < 3; j++ ) + { + combinedOrientationDataLocal.Rmat_fx[sf][i][j] = combinedOrientationDataLocal.Rmat_fx[0][i][j]; + move32(); + } + } + } + } + + /* copy LFE to tmpLfeBuffer and apply gain only once */ + IF( GT_16( hIntSetup->num_lfe, 0 ) && NE_16( hIntSetup->index_lfe[0], -1 ) ) + { + Copy32( output[hIntSetup->index_lfe[0]], tmpLfeBuffer, output_frame ); + gain_lfe = ( ( pCrend != NULL ) && ( pCrend->hHrtfCrend != NULL ) ) ? pCrend->hHrtfCrend->gain_lfe_fx : GAIN_LFE_FX; + v_multc_fixed_16( tmpLfeBuffer, gain_lfe, tmpLfeBuffer, output_frame ); // q_input_fx - 1 + Scale_sig32( tmpLfeBuffer, output_frame, 1 ); // q_input_fx + } + ELSE + { + set32_fx( tmpLfeBuffer, 0, output_frame ); + } + + FOR( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses; ++pos_idx ) + { + /* Update head positions */ + + IVAS_QUATERNION Quaternions_orig[MAX_PARAM_SPATIAL_SUBFRAMES], Quaternions_abs; + FOR( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) + { + Copy_Quat_fx( &combinedOrientationDataLocal.Quaternions[i], &Quaternions_orig[i] ); + Quaternions_abs.w_fx = L_negate( 12582912 ); // Q22 + move32(); + modify_Quat_q_fx( &combinedOrientationDataLocal.Quaternions[i], &combinedOrientationDataLocal.Quaternions[i], Q22 ); + Quat2EulerDegree_fx( combinedOrientationDataLocal.Quaternions[i], &Quaternions_abs.z_fx, &Quaternions_abs.y_fx, &Quaternions_abs.x_fx ); /*order in Quat2Euler seems to be reversed ?*/ + + Quaternions_abs.x_fx = L_add( Quaternions_abs.x_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][0] ); + Quaternions_abs.y_fx = L_add( Quaternions_abs.y_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][1] ); + Quaternions_abs.z_fx = L_add( Quaternions_abs.z_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][2] ); + combinedOrientationDataLocal.Quaternions[i] = Quaternions_abs; + move32(); + move32(); + move32(); + move32(); + modify_Quat_q_fx( &combinedOrientationDataLocal.Quaternions[i], &combinedOrientationDataLocal.Quaternions[i], Quaternions_orig[i].q_fact ); + QuatToRotMat_fx( combinedOrientationDataLocal.Quaternions[i], combinedOrientationDataLocal.Rmat_fx[i] ); + modify_Rmat_q_fx( combinedOrientationDataLocal.Rmat_fx[i], combinedOrientationDataLocal.Rmat_fx[i], sub( shl( Quaternions_orig[i].q_fact, 1 ), 32 ), Q30 ); + } + + + /* render inplace to first two channels of tmpInputBuffer */ + pCombinedOrientationDataLocal = &combinedOrientationDataLocal; + move32(); + + FOR( i = 0; i < 3; i++ ) + { + Copy32( hCombinedOrientationData->Rmat_prev_fx[pos_idx][i], pCombinedOrientationDataLocal->Rmat_prev_fx[0][i], 3 ); + } + + IF( ( error = ivas_rend_crendProcessSubframe( pCrend, inConfig, outConfig, hDecoderConfig, pCombinedOrientationDataLocal, hIntSetup, hEFAPdata, + NULL, p_tmpInputBuffer, p_tmpInputBuffer, output_frame, output_Fs, pos_idx ) ) != IVAS_ERR_OK ) + { + return error; + } + + FOR( i = 0; i < 3; i++ ) + { + Copy32( pCombinedOrientationDataLocal->Rmat_prev_fx[0][i], hCombinedOrientationData->Rmat_prev_fx[pos_idx][i], 3 ); + } + + FOR( i = 0; i < BINAURAL_CHANNELS; ++i ) + { + /* accumulate LFE to output */ + v_add_fx( tmpInputBuffer[i], tmpLfeBuffer, tmpInputBuffer[i], output_frame ); + + /* move to split bin output buffer */ + Copy32( tmpInputBuffer[i], tmpSplitBinBuffer[add( i_mult( pos_idx, BINAURAL_CHANNELS ), i )], output_frame ); + } + + /* overwrite rendered channels with input again for next iteration */ + FOR( i = 0; i < hIntSetup->nchan_out_woLFE; ++i ) + { + Copy32( output[i], tmpInputBuffer[i], output_frame ); + } + + /* restore original headrotation data */ + FOR( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) + { + Copy_Quat_fx( &Quaternions_orig[i], &combinedOrientationDataLocal.Quaternions[i] ); + } + } + + /* copy split binaural rendered signals to final output */ + FOR( i = 0; i < BINAURAL_CHANNELS * pMultiBinPoseData->num_poses; ++i ) + { + Copy32( tmpSplitBinBuffer[i], output[i], output_frame ); + } + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_rend_crend_ProcessSubframesSplitBin() + * + * Process call for IVAS Crend renderer + *-----------------------------------------------------------------------------------------*/ + +ivas_error ivas_rend_crendProcessSubframesSplitBin( + const CREND_WRAPPER *pCrend, /* i/o: Crend wrapper handle */ + const AUDIO_CONFIG inConfig, /* i : input audio configuration */ + const AUDIO_CONFIG outConfig, /* i : output audio configuration */ + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : decoder config. structure */ + const COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined orientation handle */ + const IVAS_OUTPUT_SETUP_HANDLE hIntSetup, /* i : internal setup handle */ + const EFAP_HANDLE hEFAPdata, /* i : EFAP handle */ + DECODER_TC_BUFFER_HANDLE hTcBuffer, /* i/o: JBM handle */ + Word32 *input_f[], /* i : transport channels */ + 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 */ +) +{ + Word16 i, j; + Word16 sf; + Word16 pos_idx; + ivas_error error; + Word16 gain_lfe; + Word32 tmpLfeBuffer[L_FRAME48k]; + Word16 original_subframes_rendered, original_slots_rendered; + Word32 tmpInputBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + Word32 *p_tmpInputBuffer[MAX_OUTPUT_CHANNELS]; + Word32 tmpSplitBinBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + + COMBINED_ORIENTATION_DATA combinedOrientationDataLocal; + COMBINED_ORIENTATION_HANDLE pCombinedOrientationDataLocal; + + /* save current head positions */ + pCombinedOrientationDataLocal = hCombinedOrientationData; + combinedOrientationDataLocal = *pCombinedOrientationDataLocal; + original_subframes_rendered = hTcBuffer->subframes_rendered; + move16(); + original_slots_rendered = hTcBuffer->slots_rendered; + move16(); + + /* copy input */ + FOR( i = 0; i < hIntSetup->nchan_out_woLFE; ++i ) + { + Copy32( input_f[i], tmpInputBuffer[i], n_samples_to_render ); + } + + FOR( i = 0; i < MAX_OUTPUT_CHANNELS; ++i ) + { + p_tmpInputBuffer[i] = tmpInputBuffer[i]; + move32(); + } + + /* save current head positions */ + pCombinedOrientationDataLocal = hCombinedOrientationData; + combinedOrientationDataLocal = *pCombinedOrientationDataLocal; + move32(); + move32(); + IF( EQ_32( pMultiBinPoseData->poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) ) + { + FOR( sf = 1; sf < hCombinedOrientationData->num_subframes; ++sf ) + { + Copy_Quat_fx( &combinedOrientationDataLocal.Quaternions[0], &combinedOrientationDataLocal.Quaternions[sf] ); + FOR( i = 0; i < 3; i++ ) + { + FOR( j = 0; j < 3; j++ ) + { + combinedOrientationDataLocal.Rmat_fx[sf][i][j] = combinedOrientationDataLocal.Rmat_fx[0][i][j]; + move32(); + } + } + } + } + + /* copy LFE to tmpLfeBuffer and apply gain only once */ + IF( GT_16( hIntSetup->num_lfe, 0 ) && NE_16( hIntSetup->index_lfe[0], -1 ) ) + { + Copy32( output[hIntSetup->index_lfe[0]], tmpLfeBuffer, n_samples_to_render ); + gain_lfe = ( ( pCrend != NULL ) && ( pCrend->hHrtfCrend != NULL ) ) ? pCrend->hHrtfCrend->gain_lfe_fx : GAIN_LFE_FX; + v_multc_fixed_16( tmpLfeBuffer, gain_lfe, tmpLfeBuffer, n_samples_to_render ); // q_input_fx - 1 + Scale_sig32( tmpLfeBuffer, n_samples_to_render, 1 ); // q_input_fx + } + ELSE + { + set32_fx( tmpLfeBuffer, 0, n_samples_to_render ); + } + + FOR( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses; ++pos_idx ) + { + /* Update head positions */ + IVAS_QUATERNION Quaternions_orig[MAX_PARAM_SPATIAL_SUBFRAMES], Quaternions_abs; + + FOR( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) + { + Copy_Quat_fx( &combinedOrientationDataLocal.Quaternions[i], &Quaternions_orig[i] ); + Quaternions_abs.w_fx = L_negate( 12582912 ); // Q22 + move32(); + modify_Quat_q_fx( &combinedOrientationDataLocal.Quaternions[i], &combinedOrientationDataLocal.Quaternions[i], Q22 ); + Quat2EulerDegree_fx( combinedOrientationDataLocal.Quaternions[i], &Quaternions_abs.z_fx, &Quaternions_abs.y_fx, &Quaternions_abs.x_fx ); /*order in Quat2Euler seems to be reversed ?*/ + + Quaternions_abs.x_fx = L_add( Quaternions_abs.x_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][0] ); + Quaternions_abs.y_fx = L_add( Quaternions_abs.y_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][1] ); + Quaternions_abs.z_fx = L_add( Quaternions_abs.z_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][2] ); + combinedOrientationDataLocal.Quaternions[i] = Quaternions_abs; + move32(); + move32(); + move32(); + move32(); + Euler2Quat_fx( deg2rad_fx( combinedOrientationDataLocal.Quaternions[i].x_fx ), + deg2rad_fx( combinedOrientationDataLocal.Quaternions[i].y_fx ), + deg2rad_fx( combinedOrientationDataLocal.Quaternions[i].z_fx ), + &combinedOrientationDataLocal.Quaternions[i] ); + modify_Quat_q_fx( &combinedOrientationDataLocal.Quaternions[i], &combinedOrientationDataLocal.Quaternions[i], Quaternions_orig[i].q_fact ); + QuatToRotMat_fx( combinedOrientationDataLocal.Quaternions[i], combinedOrientationDataLocal.Rmat_fx[i] ); + modify_Rmat_q_fx( combinedOrientationDataLocal.Rmat_fx[i], combinedOrientationDataLocal.Rmat_fx[i], sub( shl( Quaternions_orig[i].q_fact, 1 ), 32 ), Q30 ); + } + + + pCombinedOrientationDataLocal = &combinedOrientationDataLocal; + move32(); + + hTcBuffer->subframes_rendered = original_subframes_rendered; + hTcBuffer->slots_rendered = original_slots_rendered; + move16(); + move16(); + + /* update combined orientation access index */ + ivas_combined_orientation_set_to_start_index( pCombinedOrientationDataLocal ); + + FOR( i = 0; i < 3; i++ ) + { + Copy32( hCombinedOrientationData->Rmat_prev_fx[pos_idx][i], pCombinedOrientationDataLocal->Rmat_prev_fx[0][i], 3 ); + } + + IF( ( error = ivas_rend_crendProcessSubframe( pCrend, inConfig, outConfig, hDecoderConfig, pCombinedOrientationDataLocal, + hIntSetup, hEFAPdata, hTcBuffer, p_tmpInputBuffer, p_tmpInputBuffer, n_samples_to_render, output_Fs, pos_idx ) ) != IVAS_ERR_OK ) + { + return error; + } + + FOR( i = 0; i < 3; i++ ) + { + Copy32( pCombinedOrientationDataLocal->Rmat_prev_fx[0][i], hCombinedOrientationData->Rmat_prev_fx[pos_idx][i], 3 ); + } + + FOR( i = 0; i < BINAURAL_CHANNELS; ++i ) + { + /* accumulate LFE to output */ + v_add_fx( tmpInputBuffer[i], tmpLfeBuffer, tmpInputBuffer[i], n_samples_to_render ); + + /* move to split bin output buffer */ + Copy32( tmpInputBuffer[i], tmpSplitBinBuffer[add( i_mult( pos_idx, BINAURAL_CHANNELS ), i )], n_samples_to_render ); + } + + /* overwrite rendered channels with input again for next iteration */ + FOR( i = 0; i < hIntSetup->nchan_out_woLFE; ++i ) + { + Copy32( output[i], tmpInputBuffer[i], n_samples_to_render ); + } + + /* restore original headrotation data */ + FOR( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) + { + Copy_Quat_fx( &Quaternions_orig[i], &combinedOrientationDataLocal.Quaternions[i] ); + } + } + + /* copy split binaural rendered signals to final output */ + FOR( i = 0; i < i_mult( BINAURAL_CHANNELS, pMultiBinPoseData->num_poses ); ++i ) + { + Copy32( tmpSplitBinBuffer[i], output[i], n_samples_to_render ); + } + + /* update main combined orientation access index */ + ivas_combined_orientation_update_index( hCombinedOrientationData, n_samples_to_render ); + + return IVAS_ERR_OK; +} diff --git a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c index b33aec768a929b70d2e4e8717e6e5494d889a537..65d8976acbe4b5a14a8c6f8bcf7b200a812cef5d 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions_fx.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions_fx.c @@ -108,20 +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] ); -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 ); +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 ); 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 ); -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 ); +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 ); 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 ); +#endif + +#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 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 ); -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 ); +#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 ); @@ -145,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; @@ -160,190 +176,226 @@ ivas_error ivas_dirac_dec_init_binaural_data_fx( Word16 tmp_e; Word16 tmp2; ivas_error error; - hDiracDecBin = st_ivas->hDiracDecBin; - IF( hDiracDecBin == NULL ) + Word16 num_poses, pos_idx; + + num_poses = 1; + IF( st_ivas->hSplitBinRend != NULL ) + { + num_poses = st_ivas->hSplitBinRend->splitrend.multiBinPoseData.num_poses; + move16(); + } + + FOR( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) { - IF( ( hDiracDecBin = (DIRAC_DEC_BIN_HANDLE) malloc( sizeof( DIRAC_DEC_BIN_DATA ) ) ) == NULL ) + hDiracDecBin = st_ivas->hDiracDecBin[pos_idx]; + move32(); + + IF( hDiracDecBin == NULL ) { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC binaural handle " ); + IF( ( hDiracDecBin = (DIRAC_DEC_BIN_HANDLE) malloc( sizeof( DIRAC_DEC_BIN_DATA ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC binaural handle " ); + } + + hDiracDecBin->hTdDecorr = NULL; + 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 } - hDiracDecBin->hTdDecorr = NULL; - hDiracDecBin->hReverb = NULL; - hDiracDecBin->h_freq_domain_decorr_ap_params = NULL; - hDiracDecBin->h_freq_domain_decorr_ap_state = NULL; - } + output_Fs = st_ivas->hDecoderConfig->output_Fs; + move32(); + nBins = st_ivas->hSpatParamRendCom->num_freq_bands; + move16(); + renderer_type = st_ivas->renderer_type; + move32(); - output_Fs = st_ivas->hDecoderConfig->output_Fs; - move32(); - nBins = st_ivas->hSpatParamRendCom->num_freq_bands; - move16(); - renderer_type = st_ivas->renderer_type; - move32(); + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + FOR( k = 0; k < BINAURAL_CHANNELS + MAX_NUM_OBJECTS; k++ ) + { + set16_fx( hDiracDecBin->processMtxRe_fx[j][k], 0, nBins ); + set16_fx( hDiracDecBin->processMtxIm_fx[j][k], 0, nBins ); + set16_fx( hDiracDecBin->processMtxRePrev_fx[j][k], 0, nBins ); + set16_fx( hDiracDecBin->processMtxImPrev_fx[j][k], 0, nBins ); + } - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) - { - FOR( k = 0; k < BINAURAL_CHANNELS + MAX_NUM_OBJECTS; k++ ) + FOR( k = 0; k < BINAURAL_CHANNELS; k++ ) + { + set16_fx( hDiracDecBin->processMtxDecRe_fx[j][k], 0, nBins ); + set16_fx( hDiracDecBin->processMtxDecIm_fx[j][k], 0, nBins ); + } + set32_fx( hDiracDecBin->ChEnePrev_fx[j], 0, nBins ); + set32_fx( hDiracDecBin->ChEneOutPrev_fx[j], 0, nBins ); + set16_fx( hDiracDecBin->ChEnePrev_e[j], 0, nBins ); + set16_fx( hDiracDecBin->ChEneOutPrev_e[j], 0, nBins ); + } + set32_fx( hDiracDecBin->ChCrossRePrev_fx, 0, nBins ); + set32_fx( hDiracDecBin->ChCrossImPrev_fx, 0, nBins ); + set16_fx( hDiracDecBin->ChCrossRePrev_e, 0, nBins ); + set16_fx( hDiracDecBin->ChCrossImPrev_e, 0, nBins ); + set32_fx( hDiracDecBin->ChCrossReOutPrev_fx, 0, nBins ); + set32_fx( hDiracDecBin->ChCrossImOutPrev_fx, 0, nBins ); + set16_fx( hDiracDecBin->ChCrossReOutPrev_e, 0, nBins ); + set16_fx( hDiracDecBin->ChCrossImOutPrev_e, 0, nBins ); + hDiracDecBin->renderStereoOutputInsteadOfBinaural = 0; + move16(); + + hDiracDecBin->q_processMtx = Q15; + hDiracDecBin->q_processMtxSCCR = Q15; + hDiracDecBin->q_processMtxPrev = Q15; + hDiracDecBin->q_processMtxPrevSCCR = Q15; + hDiracDecBin->q_processMtxDec = Q15; + hDiracDecBin->q_processMtxDecPrev = Q15; + move16(); + move16(); + move16(); + move16(); + move16(); + move16(); + + FOR( bin = 0; bin < nBins; bin++ ) + { + binCenterFreq_fx = L_mult0( extract_l( L_shr( output_Fs, 1 ) ), div_s( add( shl( bin, 1 ), 1 ), shl( nBins, 1 ) ) ) /*( (float) bin + 0.5f ) / (float) nBins * ( (float) output_Fs / 2.0f )*/; /*Q15*/ + /* These formulas and values are from Christian Borss's publication for binaural diffuse field coherence */ + tmp = BASOP_Util_Divide3232_Scale( binCenterFreq_fx, 2700 << Q15, &tmp_e ); + IF( tmp_e < 0 ) + { + tmp = shl( tmp, tmp_e ); /*q15*/ + tmp_e = 0; + move16(); + } + tmpFloat_fx = s_max( 0, sub( shl_sat( 1, sub( 15, tmp_e ) ), tmp ) ) /*max( 0.0f, 1.0f - binCenterFreq / 2700.0f )*/; /*Q15-tmp_e*/ + tmp2 = extract_l( Mult_32_32( binCenterFreq_fx, 1952258 /*=2^31*180/(550)/360*/ ) % 32767 ); /* Q15 */ //*binCenterFreq_fx * EVS_PI / 550.0f*/ + hDiracDecBin->diffuseFieldCoherence_fx[bin] = L_shl( L_mult0( divide3232( tmpFloat_fx, Mult_32_16( binCenterFreq_fx, 187 /*2^15*pi/550*/ ) ), getSineWord16R2( tmp2 ) ), tmp_e ); /*tmpFloat * sinf( binCenterFreq * EVS_PI / 550.0f ) / ( binCenterFreq * EVS_PI / 550.0f );*/ /* Q30 */ + hDiracDecBin->diffuseFieldCoherence_fx[bin] = L_shl( hDiracDecBin->diffuseFieldCoherence_fx[bin], 1 ); /* Q31 */ + move32(); + move32(); + } + + FOR( bin = 0; bin < BINAURAL_COHERENCE_DIFFERENCE_BINS; bin++ ) { - set16_fx( hDiracDecBin->processMtxRe_fx[j][k], 0, nBins ); - set16_fx( hDiracDecBin->processMtxIm_fx[j][k], 0, nBins ); - set16_fx( hDiracDecBin->processMtxRePrev_fx[j][k], 0, nBins ); - set16_fx( hDiracDecBin->processMtxImPrev_fx[j][k], 0, nBins ); + hDiracDecBin->diffuseFieldCoherenceX_fx[bin] = L_add( hDiracDecBin->diffuseFieldCoherence_fx[bin], diffuseFieldCoherenceDifferenceX_fx[bin] ); + hDiracDecBin->diffuseFieldCoherenceY_fx[bin] = L_add( hDiracDecBin->diffuseFieldCoherence_fx[bin], diffuseFieldCoherenceDifferenceY_fx[bin] ); + hDiracDecBin->diffuseFieldCoherenceZ_fx[bin] = L_add( hDiracDecBin->diffuseFieldCoherence_fx[bin], diffuseFieldCoherenceDifferenceZ_fx[bin] ); + move32(); + move32(); + move32(); } - FOR( k = 0; k < BINAURAL_CHANNELS; k++ ) + IF( EQ_32( renderer_type, RENDERER_BINAURAL_PARAMETRIC ) ) /* Indication of binaural rendering without room effect */ { - set16_fx( hDiracDecBin->processMtxDecRe_fx[j][k], 0, nBins ); - set16_fx( hDiracDecBin->processMtxDecIm_fx[j][k], 0, nBins ); + set32_fx( hDiracDecBin->earlyPartEneCorrection_fx, ONE_IN_Q28, CLDFB_NO_CHANNELS_MAX ); + hDiracDecBin->q_earlyPartEneCorrection = Q28; + move16(); + hDiracDecBin->hReverb = NULL; } - set32_fx( hDiracDecBin->ChEnePrev_fx[j], 0, nBins ); - set32_fx( hDiracDecBin->ChEneOutPrev_fx[j], 0, nBins ); - set16_fx( hDiracDecBin->ChEnePrev_e[j], 0, nBins ); - set16_fx( hDiracDecBin->ChEneOutPrev_e[j], 0, nBins ); - } - set32_fx( hDiracDecBin->ChCrossRePrev_fx, 0, nBins ); - set32_fx( hDiracDecBin->ChCrossImPrev_fx, 0, nBins ); - set16_fx( hDiracDecBin->ChCrossRePrev_e, 0, nBins ); - set16_fx( hDiracDecBin->ChCrossImPrev_e, 0, nBins ); - set32_fx( hDiracDecBin->ChCrossReOutPrev_fx, 0, nBins ); - set32_fx( hDiracDecBin->ChCrossImOutPrev_fx, 0, nBins ); - set16_fx( hDiracDecBin->ChCrossReOutPrev_e, 0, nBins ); - set16_fx( hDiracDecBin->ChCrossImOutPrev_e, 0, nBins ); - hDiracDecBin->renderStereoOutputInsteadOfBinaural = 0; - move16(); + 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 */ + test(); + test(); + IF( hDiracDecBin->hReverb != NULL && ( ( NE_16( hDiracDecBin->hReverb->numBins, nBins ) ) || + ( NE_16( hDiracDecBin->hReverb->blockSize, CLDFB_SLOTS_PER_SUBFRAME ) ) ) ) + { + ivas_binaural_reverb_close_fx( &( hDiracDecBin->hReverb ) ); + } - hDiracDecBin->q_processMtx = Q15; - hDiracDecBin->q_processMtxSCCR = Q15; - hDiracDecBin->q_processMtxPrev = Q15; - hDiracDecBin->q_processMtxPrevSCCR = Q15; - hDiracDecBin->q_processMtxDec = Q15; - hDiracDecBin->q_processMtxDecPrev = Q15; - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); + IF( hDiracDecBin->hReverb == NULL && EQ_16( pos_idx, 0 ) ) /* open reverb only for the main direction */ + { - FOR( bin = 0; bin < nBins; bin++ ) - { - binCenterFreq_fx = L_mult0( extract_l( L_shr( output_Fs, 1 ) ), div_s( add( shl( bin, 1 ), 1 ), shl( nBins, 1 ) ) ) /*( (float) bin + 0.5f ) / (float) nBins * ( (float) output_Fs / 2.0f )*/; /*Q15*/ - /* These formulas and values are from Christian Borss's publication for binaural diffuse field coherence */ - tmp = BASOP_Util_Divide3232_Scale( binCenterFreq_fx, 2700 << Q15, &tmp_e ); - IF( tmp_e < 0 ) +#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 ( ( 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 + { + return error; + } + } + } + ELSE IF( EQ_32( renderer_type, RENDERER_STEREO_PARAMETRIC ) ) { - tmp = shl( tmp, tmp_e ); /*q15*/ - tmp_e = 0; + set32_fx( hDiracDecBin->earlyPartEneCorrection_fx, ONE_IN_Q28, CLDFB_NO_CHANNELS_MAX ); + hDiracDecBin->q_earlyPartEneCorrection = Q28; + hDiracDecBin->hReverb = NULL; + hDiracDecBin->renderStereoOutputInsteadOfBinaural = 1; + move16(); move16(); } - tmpFloat_fx = s_max( 0, sub( shl_sat( 1, sub( 15, tmp_e ) ), tmp ) ) /*max( 0.0f, 1.0f - binCenterFreq / 2700.0f )*/; /*Q15-tmp_e*/ - tmp2 = extract_l( Mult_32_32( binCenterFreq_fx, 1952258 /*=2^31*180/(550)/360*/ ) % 32767 ); /* Q15 */ //*binCenterFreq_fx * EVS_PI / 550.0f*/ - hDiracDecBin->diffuseFieldCoherence_fx[bin] = L_shl( L_mult0( divide3232( tmpFloat_fx, Mult_32_16( binCenterFreq_fx, 187 /*2^15*pi/550*/ ) ), getSineWord16R2( tmp2 ) ), tmp_e ); /*tmpFloat * sinf( binCenterFreq * EVS_PI / 550.0f ) / ( binCenterFreq * EVS_PI / 550.0f );*/ /* Q30 */ - hDiracDecBin->diffuseFieldCoherence_fx[bin] = L_shl( hDiracDecBin->diffuseFieldCoherence_fx[bin], 1 ); /* Q31 */ - move32(); - move32(); - } + ELSE /* Not valid renderer type for this renderer */ + { + assert( false ); + } - FOR( bin = 0; bin < BINAURAL_COHERENCE_DIFFERENCE_BINS; bin++ ) - { - hDiracDecBin->diffuseFieldCoherenceX_fx[bin] = L_add( hDiracDecBin->diffuseFieldCoherence_fx[bin], diffuseFieldCoherenceDifferenceX_fx[bin] ); - hDiracDecBin->diffuseFieldCoherenceY_fx[bin] = L_add( hDiracDecBin->diffuseFieldCoherence_fx[bin], diffuseFieldCoherenceDifferenceY_fx[bin] ); - hDiracDecBin->diffuseFieldCoherenceZ_fx[bin] = L_add( hDiracDecBin->diffuseFieldCoherence_fx[bin], diffuseFieldCoherenceDifferenceZ_fx[bin] ); - move32(); - move32(); - move32(); - } + hDiracDecBin->hDiffuseDist = NULL; /* Memory is allocated from stack during runtime when needed */ - IF( EQ_32( renderer_type, RENDERER_BINAURAL_PARAMETRIC ) ) /* Indication of binaural rendering without room effect */ - { - set32_fx( hDiracDecBin->earlyPartEneCorrection_fx, ONE_IN_Q28, CLDFB_NO_CHANNELS_MAX ); - hDiracDecBin->q_earlyPartEneCorrection = Q28; - move16(); - hDiracDecBin->hReverb = NULL; - } - ELSE IF( EQ_32( renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) /* Indication of binaural rendering with room effect */ - { - Copy32( hHrtfParambin->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); - hDiracDecBin->q_earlyPartEneCorrection = Q28; - move16(); - /* reconfiguration needed when Reverb. parameters are changed -> close and open the handle again */ - test(); - test(); - IF( hDiracDecBin->hReverb != NULL && ( ( NE_16( hDiracDecBin->hReverb->numBins, nBins ) ) || - ( NE_16( hDiracDecBin->hReverb->blockSize, CLDFB_SLOTS_PER_SUBFRAME ) ) ) ) + if ( hDiracDecBin->hTdDecorr == NULL ) + { + hDiracDecBin->useTdDecorr = 0; + move16(); + } + + IF( hDiracDecBin->h_freq_domain_decorr_ap_params != NULL ) { - ivas_binaural_reverb_close_fx( &( hDiracDecBin->hReverb ) ); + ivas_dirac_dec_decorr_close_fx( &hDiracDecBin->h_freq_domain_decorr_ap_params, &hDiracDecBin->h_freq_domain_decorr_ap_state ); } - IF( hDiracDecBin->hReverb == NULL ) + if ( pos_idx == 0 ) /* open decorrelator only for the main direction */ { - /* 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( 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; } - } - } - ELSE IF( EQ_32( renderer_type, RENDERER_STEREO_PARAMETRIC ) ) - { - set32_fx( hDiracDecBin->earlyPartEneCorrection_fx, ONE_IN_Q28, CLDFB_NO_CHANNELS_MAX ); - hDiracDecBin->q_earlyPartEneCorrection = Q28; - hDiracDecBin->hReverb = NULL; - hDiracDecBin->renderStereoOutputInsteadOfBinaural = 1; - move16(); - move16(); - } - ELSE /* Not valid renderer type for this renderer */ - { - assert( false ); - } - hDiracDecBin->hDiffuseDist = NULL; /* Memory is allocated from stack during runtime when needed */ + test(); + test(); + IF( !hDiracDecBin->useTdDecorr && !( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) ) ) + { + Word16 frequency_axis_fx[CLDFB_NO_CHANNELS_MAX]; + ivas_dirac_dec_get_frequency_axis_fx( frequency_axis_fx, output_Fs, nBins ); + + IF( NE_32( ( error = ivas_dirac_dec_decorr_open_fx( &( hDiracDecBin->h_freq_domain_decorr_ap_params ), + &( hDiracDecBin->h_freq_domain_decorr_ap_state ), + nBins, + BINAURAL_CHANNELS, + BINAURAL_CHANNELS, + DIRAC_SYNTHESIS_PSD_LS, + frequency_axis_fx, + BINAURAL_CHANNELS, + output_Fs ) ), + IVAS_ERR_OK ) ) + { + return error; + } + } + } + else + { + hDiracDecBin->useTdDecorr = st_ivas->hDiracDecBin[0]->useTdDecorr; /* copy the flag, but the implementation re-uses the decorrelated signal */ + } - if ( hDiracDecBin->hTdDecorr == NULL ) - { - hDiracDecBin->useTdDecorr = 0; + hDiracDecBin->reqularizationFactor_fx = configure_reqularization_factor_fx( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); /* Q14 */ move16(); - } - IF( hDiracDecBin->h_freq_domain_decorr_ap_params != NULL ) - { - ivas_dirac_dec_decorr_close_fx( &hDiracDecBin->h_freq_domain_decorr_ap_params, &hDiracDecBin->h_freq_domain_decorr_ap_state ); - } - - 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; - } +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + hDiracDecBin->phHrtfParambin = phHrtfParambin; +#endif - test(); - test(); - IF( !hDiracDecBin->useTdDecorr && !( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) && EQ_32( st_ivas->ism_mode, ISM_MODE_PARAM ) ) ) - { - Word16 frequency_axis_fx[CLDFB_NO_CHANNELS_MAX]; - ivas_dirac_dec_get_frequency_axis_fx( frequency_axis_fx, output_Fs, nBins ); - - IF( NE_32( ( error = ivas_dirac_dec_decorr_open_fx( &( hDiracDecBin->h_freq_domain_decorr_ap_params ), - &( hDiracDecBin->h_freq_domain_decorr_ap_state ), - nBins, - BINAURAL_CHANNELS, - BINAURAL_CHANNELS, - DIRAC_SYNTHESIS_PSD_LS, - frequency_axis_fx, - BINAURAL_CHANNELS, - output_Fs ) ), - IVAS_ERR_OK ) ) - { - return error; - } + st_ivas->hDiracDecBin[pos_idx] = hDiracDecBin; } - hDiracDecBin->reqularizationFactor_fx = configure_reqularization_factor_fx( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); /* Q14 */ - move16(); - - st_ivas->hDiracDecBin = hDiracDecBin; - /* allocate transport channels */ IF( st_ivas->hTcBuffer == NULL ) { @@ -383,26 +435,33 @@ void ivas_dirac_dec_close_binaural_data( DIRAC_DEC_BIN_HANDLE *hBinaural /* i/o: decoder DirAC binaural data handle */ ) { - + int16_t pos_idx; test(); IF( hBinaural == NULL || *hBinaural == NULL ) { return; } - IF( ( *hBinaural )->hReverb != NULL ) + FOR( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) { - ivas_binaural_reverb_close_fx( &( ( *hBinaural )->hReverb ) ); - } + IF( hBinaural[pos_idx] != NULL ) + { + IF( hBinaural[pos_idx]->hReverb != NULL ) + { + ivas_binaural_reverb_close_fx( &( hBinaural[pos_idx]->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 ); - } + ivas_td_decorr_dec_close( &( hBinaural[pos_idx]->hTdDecorr ) ); - free( *hBinaural ); - *hBinaural = NULL; + if ( hBinaural[pos_idx]->h_freq_domain_decorr_ap_params != NULL ) + { + ivas_dirac_dec_decorr_close_fx( &( hBinaural[pos_idx]->h_freq_domain_decorr_ap_params ), &( hBinaural[pos_idx]->h_freq_domain_decorr_ap_state ) ); + } + + free( hBinaural[pos_idx] ); + hBinaural[pos_idx] = NULL; + } + } return; } @@ -439,7 +498,11 @@ ivas_error ivas_dirac_dec_binaural_copy_hrtfs_fx( Copy( hrtfShCoeffsIm_fx[i][j], hrtfParambin->hrtfShCoeffsIm_fx[i][j], HRTF_NUM_BINS ); /*Q14*/ } } - Copy32( parametricReverberationTimes_fx, hrtfParambin->parametricReverberationTimes_fx, CLDFB_NO_CHANNELS_MAX ); /*Q31*/ +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT + Copy32( parametricReverberationTimes_fx, hrtfParambin->parametricReverberationTimes_fx, CLDFB_NO_CHANNELS_MAX ); /*Q26*/ +#else + Copy32( parametricReverberationTimes_fx, hrtfParambin->parametricReverberationTimes_fx, CLDFB_NO_CHANNELS_MAX ); /*Q31*/ +#endif Copy32( parametricReverberationEneCorrections_fx, hrtfParambin->parametricReverberationEneCorrections_fx, CLDFB_NO_CHANNELS_MAX ); /*Q31*/ Copy32( parametricEarlyPartEneCorrection_fx, hrtfParambin->parametricEarlyPartEneCorrection_fx, CLDFB_NO_CHANNELS_MAX ); /*Q28*/ *hHrtfParambin = hrtfParambin; @@ -610,7 +673,21 @@ static void ivas_dirac_dec_binaural_internal_fx( Word16 nBins, offsetSamples; Word16 i, j; Word16 q_mat, q_out; - hDiracDecBin = st_ivas->hDiracDecBin; + Word16 pos_idx; + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData; + Word32 tmp_Cldfb_out_re[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + Word32 tmp_Cldfb_out_im[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + /* these allow re-using the reverb and freq-domain decorrelator signals from ivas_dirac_dec_binaural_process_output() in split rendering for the side renderings */ + 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]; + Word32 decorrRe_fx[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + Word32 decorrIm_fx[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + Word32 subFrameTotalEne_fx[CLDFB_NO_CHANNELS_MAX]; + Word16 subFrameTotalEne_e[CLDFB_NO_CHANNELS_MAX]; + Word32 IIReneLimiter_fx[CLDFB_NO_CHANNELS_MAX]; + Word16 Q_inp_mix; + + hDiracDecBin = st_ivas->hDiracDecBin[0]; assert( hDiracDecBin ); hSpatParamRendCom = st_ivas->hSpatParamRendCom; nBins = hSpatParamRendCom->num_freq_bands; @@ -742,17 +819,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] ); @@ -761,7 +836,7 @@ 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] ); @@ -903,13 +978,13 @@ static void ivas_dirac_dec_binaural_internal_fx( IF( EQ_16( nchan_transport, 2 ) ) { + /* in case of split rendering, determine the prototype rotation based on the main direction and use the same prototypes for the offset directions */ 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(); - 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 ); IF( EQ_32( config_data.ivas_format, ISM_FORMAT ) ) { @@ -927,6 +1002,11 @@ static void ivas_dirac_dec_binaural_internal_fx( move16(); } + 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 ); nchanSeparateChannels = 0; move16(); @@ -993,10 +1073,147 @@ static void ivas_dirac_dec_binaural_internal_fx( hDiracDecBin->q_processMtxDecPrev = q_mat; move16(); - 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 ); + pMultiBinPoseData = NULL; + IF( st_ivas->hSplitBinRend != NULL ) + { + pMultiBinPoseData = &st_ivas->hSplitBinRend->splitrend.multiBinPoseData; + move32(); + } + 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 ) ) + { + 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 ); + + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + FOR( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe]; i++ ) + { + Copy32( tmp_Cldfb_out_re[ch][i], st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural_fx[ch][hSpatParamRendCom->slots_rendered + i], CLDFB_NO_CHANNELS_MAX ); + Copy32( tmp_Cldfb_out_im[ch][i], st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural_fx[ch][hSpatParamRendCom->slots_rendered + i], CLDFB_NO_CHANNELS_MAX ); + } + } + } + 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, NULL, NULL, + reverbRe_fx, reverbIm_fx, decorrRe_fx, decorrIm_fx, &Q_inp_mix, 1 ); + } hDiracDecBin->hDiffuseDist = NULL; + + 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 */ + IVAS_QUATERNION Quaternions_rot, Quaternions_abs, *Quaternions_ref; + Word32 Rmat_local[3][3]; + + if ( hCombinedOrientationData ) + { + Quaternions_ref = &hCombinedOrientationData->Quaternions[0]; + Copy_Quat_fx( Quaternions_ref, &Quaternions_abs ); + modify_Quat_q_fx( &Quaternions_abs, &Quaternions_abs, Q22 ); + Quaternions_rot.w_fx = L_negate( 12582912 ); /* signal to use Euler */ + Quat2EulerDegree_fx( Quaternions_abs, &Quaternions_abs.z_fx, &Quaternions_abs.y_fx, &Quaternions_abs.x_fx ); /*order in Quat2Euler seems to be reversed ?*/ + Quaternions_abs.w_fx = L_negate( 12582912 ); /* signal to use Euler */ + + FOR( pos_idx = 1; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ ) + { + Quaternions_rot.x_fx = L_add( Quaternions_abs.x_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][0] ); + Quaternions_rot.y_fx = L_add( Quaternions_abs.y_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][1] ); + Quaternions_rot.z_fx = L_add( Quaternions_abs.z_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][2] ); + move32(); + move32(); + move32(); + Euler2Quat_fx( deg2rad_fx( Quaternions_rot.x_fx ), deg2rad_fx( Quaternions_rot.y_fx ), deg2rad_fx( Quaternions_rot.z_fx ), &Quaternions_rot ); + modify_Quat_q_fx( &Quaternions_rot, &Quaternions_rot, Quaternions_ref->q_fact ); + QuatToRotMat_fx( Quaternions_rot, Rmat_local ); + modify_Rmat_q_fx( Rmat_local, Rmat_local, sub( shl( Quaternions_ref->q_fact, 1 ), 32 ), Q30 ); + + hDiracDecBin = st_ivas->hDiracDecBin[pos_idx]; + assert( hDiracDecBin != NULL && "No DiracDecBin handle for this position" ); + if ( config_data.ivas_format == SBA_FORMAT || config_data.ivas_format == SBA_ISM_FORMAT ) + { + hDiracDecBin->hDiffuseDist = &diffuseDistData; + } + + /* re-use input covariance for the side renderings */ + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + Copy32( st_ivas->hDiracDecBin[0]->ChEne_fx[ch], hDiracDecBin->ChEne_fx[ch], hSpatParamRendCom->num_freq_bands ); + Copy( st_ivas->hDiracDecBin[0]->ChEne_e[ch], hDiracDecBin->ChEne_e[ch], hSpatParamRendCom->num_freq_bands ); + } + Copy32( st_ivas->hDiracDecBin[0]->ChCrossRe_fx, hDiracDecBin->ChCrossRe_fx, hSpatParamRendCom->num_freq_bands ); + Copy32( st_ivas->hDiracDecBin[0]->ChCrossIm_fx, hDiracDecBin->ChCrossIm_fx, hSpatParamRendCom->num_freq_bands ); + Copy( st_ivas->hDiracDecBin[0]->ChCrossRe_e, hDiracDecBin->ChCrossRe_e, hSpatParamRendCom->num_freq_bands ); + Copy( st_ivas->hDiracDecBin[0]->ChCrossIm_e, hDiracDecBin->ChCrossIm_e, hSpatParamRendCom->num_freq_bands ); + + ivas_dirac_dec_binaural_formulate_target_covariance_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, Rmat_local, subframe, + hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[subframe] > 0, + subFrameTotalEne_fx, subFrameTotalEne_e, IIReneLimiter_fx, st_ivas->hMasaIsmData ); + + ivas_dirac_dec_binaural_determine_processing_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, max_band_decorr, Rmat_local, subframe, + hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[subframe] > 0, + nchanSeparateChannels, st_ivas->hMasaIsmData ); + + + q_mat = hDiracDecBin->q_processMtx; + move16(); + q_mat = s_min( q_mat, hDiracDecBin->q_processMtxPrev ); + q_mat = s_min( q_mat, hDiracDecBin->q_processMtxDec ); + q_mat = s_min( q_mat, hDiracDecBin->q_processMtxDecPrev ); + + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + FOR( slot = 0; slot < BINAURAL_CHANNELS; slot++ ) + { + Scale_sig( hDiracDecBin->processMtxRe_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtx ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxIm_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtx ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxRePrev_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtxPrev ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxImPrev_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtxPrev ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxDecRe_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtxDec ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxDecIm_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtxDec ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxDecRePrev_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtxDecPrev ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxDecImPrev_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtxDecPrev ) ); // scaling to q_mat + } + FOR( slot = 0; slot < nchanSeparateChannels; slot++ ) + { + Scale_sig( hDiracDecBin->processMtxRe_fx[ch][slot + BINAURAL_CHANNELS], nBins, sub( q_mat, hDiracDecBin->q_processMtx ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxIm_fx[ch][slot + BINAURAL_CHANNELS], nBins, sub( q_mat, hDiracDecBin->q_processMtx ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxRePrev_fx[ch][slot + BINAURAL_CHANNELS], nBins, sub( q_mat, hDiracDecBin->q_processMtxPrev ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxImPrev_fx[ch][slot + BINAURAL_CHANNELS], nBins, sub( q_mat, hDiracDecBin->q_processMtxPrev ) ); // scaling to q_mat + } + } + hDiracDecBin->q_processMtx = q_mat; + move16(); + hDiracDecBin->q_processMtxPrev = q_mat; + move16(); + hDiracDecBin->q_processMtxDec = q_mat; + move16(); + hDiracDecBin->q_processMtxDecPrev = q_mat; + move16(); + + /* re-use reverb and decorr from main direction for the sides */ + 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, 0 ); + + /* copy from temporary buffer to the main split rendering buffer */ + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + FOR( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe]; i++ ) + { + Copy32( tmp_Cldfb_out_re[ch][i], st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural_fx[pos_idx * BINAURAL_CHANNELS + ch][hSpatParamRendCom->slots_rendered + i], CLDFB_NO_CHANNELS_MAX ); + Copy32( tmp_Cldfb_out_im[ch][i], st_ivas->hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural_fx[pos_idx * BINAURAL_CHANNELS + ch][hSpatParamRendCom->slots_rendered + i], CLDFB_NO_CHANNELS_MAX ); + } + } + + hDiracDecBin->hDiffuseDist = NULL; + } + } + } + + /* update this counter only after the last rendering of split directions */ + hSpatParamRendCom->slots_rendered = add( hSpatParamRendCom->slots_rendered, hSpatParamRendCom->subframe_nbslots[subframe] ); hSpatParamRendCom->subframes_rendered = add( hSpatParamRendCom->subframes_rendered, 1 ); @@ -1078,46 +1295,34 @@ static void ivas_dirac_dec_decorrelate_slot_fx( return; } -static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matrices_fx( + +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_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, + Word32 *subFrameTotalEne_fx, + Word16 *subFrameTotalEne_e, + Word32 *IIReneLimiter_fx, Word16 q ) { Word16 ch, slot, bin; - Word16 separateCenterChannelRendering; - Word16 nBins, idx, shift; - Word32 frameMeanDiffusenessEneWeight_fx[CLDFB_NO_CHANNELS_MAX]; + Word16 nBins; 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; @@ -1129,40 +1334,23 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric 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(); @@ -1192,8 +1380,6 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric /* 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]; - move16(); exp = sub( 63, shl( q, 1 ) ); // exp for the energy (inRe_fx * inRe_fx + inIm_fx * inIm_fx) computed below @@ -1249,44 +1435,195 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric } } - test(); - test(); - IF( ( EQ_32( ivas_format, SBA_FORMAT ) || EQ_32( ivas_format, SBA_ISM_FORMAT ) ) && EQ_16( nchan_transport, 2 ) ) - { - Word32 tempRe, tempIm; - Word32 subFrameSumEne_fx[CLDFB_NO_CHANNELS_MAX]; - Word16 subFrameSumEne_e[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 ) ) + { + 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], subFrameSumEne_e[bin], W_extract_h( temp64 ), sub( exp /* 63 - 2q */, exp1 ) /*31 - (2q + exp1 - 32)*/, &subFrameSumEne_e[bin] ); + move32(); + } + } + FOR( bin = 0; bin < nBins; bin++ ) + { + subFrameTotalEne_e[bin] = sub( subFrameTotalEne_e[bin], 1 ); + move16(); + 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(); + } + } + } + + + 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++ ) + { + + /* 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[bin] = BASOP_Util_Divide3232_Scale_cadence( num, den, &exp ); + exp = add( sub( num_e, den_e ), add( 5, exp ) ); + IF( L_shr_sat( IIReneLimiter_fx[bin], sub( 31, exp ) ) > 0 ) + { + IIReneLimiter_fx[bin] = ONE_IN_Q31; /*Q31*/ + move32(); + } + ELSE + { + IIReneLimiter_fx[bin] = L_shl( IIReneLimiter_fx[bin], 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 ); + + 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 ); + 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[bin] ), 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[bin] ), hDiracDecBin->ChCrossImPrev_e[bin], &hDiracDecBin->ChCrossIm_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[bin] ), hDiracDecBin->ChEnePrev_e[ch][bin], &hDiracDecBin->ChEne_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->ChCrossRePrev_e[bin] = hDiracDecBin->ChCrossRe_e[bin]; + move16(); + hDiracDecBin->ChCrossImPrev_e[bin] = hDiracDecBin->ChCrossIm_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(); + } + } + + return; +} + +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_fx[3][3], + const int16_t subframe, + const int16_t isHeadtracked, + const Word32 *subFrameTotalEne_fx, + Word16 *subFrameTotalEne_e, + const Word32 *IIReneLimiter_fx, + const MASA_ISM_DATA_HANDLE hMasaIsmData ) +{ + Word16 ch, bin; + Word16 separateCenterChannelRendering; + Word16 nBins, idx, shift; + Word32 frameMeanDiffusenessEneWeight_fx[CLDFB_NO_CHANNELS_MAX]; + Word32 qualityBasedSmFactor_fx; + Word16 dirac_read_idx; + PARAMBIN_HRTF_GAIN_CACHE gainCache[MAX_GAIN_CACHE_SIZE]; + IVAS_FORMAT ivas_format; + MC_MODE mc_mode; + Word16 gainCacheBaseIndex; + Word16 q_earlyPartEneCorrection; + Word16 exp, exp1; + Word32 temp; + + separateCenterChannelRendering = hConfig->separateCenterChannelRendering; + move16(); + ivas_format = hConfig->ivas_format; + move32(); + mc_mode = hConfig->mc_mode; + move32(); + 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->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 ); - 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], subFrameSumEne_e[bin], W_extract_h( temp64 ), sub( exp /* 63 - 2q */, exp1 ) /*31 - (2q + exp1 - 32)*/, &subFrameSumEne_e[bin] ); - move32(); - } - } - FOR( bin = 0; bin < nBins; bin++ ) - { - subFrameTotalEne_e[bin] = sub( subFrameTotalEne_e[bin], 1 ); - move16(); - 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(); - } - } + 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++ ) { @@ -1428,7 +1765,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(); @@ -1479,7 +1820,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 @@ -1493,7 +1838,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 @@ -1663,97 +2012,38 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric move32(); /* Formulate average diffuseness over frame */ - frameMeanDiffuseness = BASOP_Util_Divide3232_Scale_newton( frameMeanDiffuseness, L_max( EPSILLON_FX, frameMeanDiffusenessEneWeight_fx[bin] ), &exp ); // exp = exp + 31 - q_meanEnePerCh - exp1 + 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(); } - 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_newton( 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]; @@ -1763,10 +2053,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(); } @@ -1775,6 +2065,7 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric return; } + static void ivas_dirac_dec_binaural_determine_processing_matrices_fx( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, @@ -2263,7 +2554,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 { @@ -2306,7 +2598,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][chB + 2][bin] = extract_h( Mpy_32_32( lRealp_fx, gainFactor_fx ) ); move16(); @@ -2409,7 +2705,15 @@ static void ivas_dirac_dec_binaural_process_output_fx( const Word16 numInChannels, const Word16 processReverb, const Word16 subframe, - const Word16 q_mat ) + 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], + Word32 reverbIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], + 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 ) { Word16 slot, bin, chA, chB; Word16 nBins; @@ -2425,8 +2729,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]; - 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]; Word16 q_inp[6][CLDFB_SLOTS_PER_SUBFRAME]; Word16 interpVal_fx; Word32 *decSlotRePointer_fx; @@ -2439,68 +2741,83 @@ static void ivas_dirac_dec_binaural_process_output_fx( IF( processReverb ) { - /* 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 ); + if ( recompute == 1 ) + { + /* 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 ); + } } - // 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 ) ); - q_inp_mix = 31; - move16(); - FOR( Word16 i = 0; i < ch_len; i++ ) + IF( EQ_16( recompute, 1 ) ) { - FOR( Word16 j = 0; j < nSlots; j++ ) + // 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 ) ); + q_inp_mix = 31; + move16(); + + FOR( Word16 i = 0; i < ch_len; i++ ) + { - q_inp[i][j] = s_min( L_norm_arr( inRe_fx[i][j], nBins ), L_norm_arr( inIm_fx[i][j], nBins ) ); - move16(); - test(); - IF( ( processReverb ) && LT_16( i, 2 ) ) + FOR( Word16 j = 0; j < nSlots; j++ ) { - 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] ); + q_inp[i][j] = s_min( L_norm_arr( inRe_fx[i][j], nBins ), L_norm_arr( inIm_fx[i][j], nBins ) ); move16(); + test(); + IF( ( processReverb && EQ_16( recompute, 1 ) ) && LT_16( i, 2 ) ) + { + 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] ); + move16(); + } + q_inp_mix = s_min( q_inp[i][j], q_inp_mix ); } - q_inp_mix = s_min( q_inp[i][j], q_inp_mix ); } - } - q_inp_mix = sub( q_inp_mix, 3 ); // gaurded bits// + q_inp_mix = sub( q_inp_mix, 3 ); // gaurded bits// - Word16 cldfb_state_shift = sub( add( add( q_inp_mix, q_mat ), sub( q_input, 16 ) ), cldfbSynDec[0]->Q_cldfb_state ); - IF( GT_16( cldfb_state_shift, shift ) ) - { - q_inp_mix = sub( add( q_inp_mix, shift ), cldfb_state_shift ); - cldfb_state_shift = shift; - move16(); - } + Word16 cldfb_state_shift = sub( add( add( q_inp_mix, q_mat ), sub( q_input, 16 ) ), cldfbSynDec[0]->Q_cldfb_state ); + IF( GT_16( cldfb_state_shift, shift ) ) + { + q_inp_mix = sub( add( q_inp_mix, shift ), cldfb_state_shift ); + cldfb_state_shift = shift; + move16(); + } - eff_q = sub( add( q_inp_mix, q_mat ), 15 ); + eff_q = sub( add( q_inp_mix, q_mat ), 15 ); - FOR( Word16 i = 0; i < ch_len; i++ ) - { - FOR( Word16 j = 0; j < nSlots; j++ ) - { + FOR( Word16 i = 0; i < ch_len; i++ ) - 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(); - IF( processReverb && LT_16( i, 2 ) ) + { + FOR( Word16 j = 0; j < nSlots; j++ ) { - scale_sig32( reverbRe_fx[i][j], CLDFB_NO_CHANNELS_MAX, eff_q ); /*q_inp_mix+q_mat-15*/ - scale_sig32( reverbIm_fx[i][j], CLDFB_NO_CHANNELS_MAX, eff_q ); /*q_inp_mix+q_mat-15*/ + + 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(); + IF( ( processReverb && EQ_16( recompute, 1 ) ) && LT_16( i, 2 ) ) + { + scale_sig32( reverbRe_fx[i][j], CLDFB_NO_CHANNELS_MAX, eff_q ); /*q_inp_mix+q_mat-15*/ + scale_sig32( reverbIm_fx[i][j], CLDFB_NO_CHANNELS_MAX, eff_q ); /*q_inp_mix+q_mat-15*/ + } } } - } - // scaling cldfb states to q_result-1// - scale_sig32( cldfbSynDec[0]->cldfb_state_fx, cldfbSynDec[0]->p_filter_length, cldfb_state_shift ); - cldfbSynDec[0]->Q_cldfb_state = add( cldfbSynDec[0]->Q_cldfb_state, cldfb_state_shift ); - scale_sig32( cldfbSynDec[1]->cldfb_state_fx, cldfbSynDec[1]->p_filter_length, cldfb_state_shift ); - cldfbSynDec[1]->Q_cldfb_state = add( cldfbSynDec[1]->Q_cldfb_state, cldfb_state_shift ); - move16(); - move16(); + // scaling cldfb states to q_result-1// + scale_sig32( cldfbSynDec[0]->cldfb_state_fx, cldfbSynDec[0]->p_filter_length, cldfb_state_shift ); + cldfbSynDec[0]->Q_cldfb_state = add( cldfbSynDec[0]->Q_cldfb_state, cldfb_state_shift ); + scale_sig32( cldfbSynDec[1]->cldfb_state_fx, cldfbSynDec[1]->p_filter_length, cldfb_state_shift ); + cldfbSynDec[1]->Q_cldfb_state = add( cldfbSynDec[1]->Q_cldfb_state, cldfb_state_shift ); + move16(); + move16(); + *Q_inp_mix = q_inp_mix; + move16(); + } + ELSE + { + q_inp_mix = *Q_inp_mix; + } q_inp_mix = add( q_inp_mix, q_input ); @@ -2526,7 +2843,23 @@ static void ivas_dirac_dec_binaural_process_output_fx( test(); IF( !hDiracDecBin->useTdDecorr && ( max_band_decorr > 0 ) ) { - ivas_dirac_dec_decorrelate_slot_fx( hDiracDecBin, nBins, slot, inRe_fx, inIm_fx, q_inp_mix, decSlotRe_fx, decSlotIm_fx ); + if ( recompute == 1 ) + { + ivas_dirac_dec_decorrelate_slot_fx( hDiracDecBin, nBins, slot, inRe_fx, inIm_fx, q_inp_mix, decSlotRe_fx, decSlotIm_fx ); + FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ ) + { + Copy32( decSlotRe_fx[chA], decorrRe_fx[chA][slot], CLDFB_NO_CHANNELS_MAX ); + Copy32( decSlotIm_fx[chA], decorrIm_fx[chA][slot], CLDFB_NO_CHANNELS_MAX ); + } + } + else + { + FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ ) + { + Copy32( decorrRe_fx[chA][slot], decSlotRe_fx[chA], CLDFB_NO_CHANNELS_MAX ); + Copy32( decorrIm_fx[chA][slot], decSlotIm_fx[chA], CLDFB_NO_CHANNELS_MAX ); + } + } } FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ ) @@ -2616,13 +2949,29 @@ static void ivas_dirac_dec_binaural_process_output_fx( outSlotRePr_fx = &( outSlotRe_fx[0] ); outSlotImPr_fx = &( outSlotIm_fx[0] ); - cldfbSynthesis_ivas_fx( &outSlotRePr_fx, &outSlotImPr_fx, &( output_fx[chA][nBins * slot + offsetSamples] ), nBins, 0, 0, cldfbSynDec[chA] ); - cldfbSynDec[chA]->Q_cldfb_state = sub( q_result, 1 ); - move16(); + IF( outRe_fx != NULL && outIm_fx != NULL ) + { + /* provide the data outside in CLDFB domain => mainly for split rendering */ + Copy32( outSlotRePr_fx, outRe_fx[chA][slot], CLDFB_NO_CHANNELS_MAX ); + Copy32( outSlotImPr_fx, outIm_fx[chA][slot], CLDFB_NO_CHANNELS_MAX ); + Scale_sig32( outRe_fx[chA][slot], CLDFB_NO_CHANNELS_MAX, sub( Q6, q_result ) ); // Q6 + Scale_sig32( outIm_fx[chA][slot], CLDFB_NO_CHANNELS_MAX, sub( Q6, q_result ) ); // Q6 + } + if ( recompute == 1 ) + { + /* Inverse filter bank */ + cldfbSynthesis_ivas_fx( &outSlotRePr_fx, &outSlotImPr_fx, &( output_fx[chA][nBins * slot + offsetSamples] ), nBins, 0, 0, cldfbSynDec[chA] ); + cldfbSynDec[chA]->Q_cldfb_state = sub( q_result, 1 ); + move16(); + } } } - *q_out = sub( q_result, 1 ); - move16(); + if ( recompute == 1 ) + { + *q_out = sub( q_result, 1 ); + move16(); + } + return; } @@ -4654,7 +5003,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; @@ -4783,7 +5138,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 { @@ -4798,7 +5157,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 } } @@ -4814,9 +5177,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; @@ -4834,10 +5209,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(); @@ -4856,11 +5238,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(); @@ -5298,9 +5687,11 @@ 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 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] ) { - DIRAC_DEC_BIN_HANDLE hDiracDecBin; SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; PARAMBIN_REND_CONFIG config_data; @@ -5310,7 +5701,22 @@ static void ivas_masa_ext_rend_parambin_internal_fx( Word16 i, j; Word16 nchan_transport; Word16 q_mat; - hDiracDecBin = hMasaExtRend->hDiracDecBin; + 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]; + Word32 tmp_Cldfb_out_im[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + + /* these allow re-using the reverb and freq-domain decorrelator signals from ivas_dirac_dec_binaural_process_output() in split rendering for the side renderings */ + 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]; + Word32 decorrRe_fx[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + Word32 decorrIm_fx[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + Word32 subFrameTotalEne_fx[CLDFB_NO_CHANNELS_MAX]; + Word16 subFrameTotalEne_e[CLDFB_NO_CHANNELS_MAX]; + Word32 IIReneLimiter_fx[CLDFB_NO_CHANNELS_MAX]; + Word16 Q_inp_mix; + + hDiracDecBin = hMasaExtRend->hDiracDecBin[0]; hSpatParamRendCom = hMasaExtRend->hSpatParamRendCom; Word32 Cldfb_RealBuffer_in_fx[6][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; @@ -5325,8 +5731,7 @@ static void ivas_masa_ext_rend_parambin_internal_fx( } } Word32 Rmat_fx[3][3]; - - hDiracDecBin = hMasaExtRend->hDiracDecBin; + hDiracDecBin = hMasaExtRend->hDiracDecBin[0]; assert( hDiracDecBin ); hSpatParamRendCom = hMasaExtRend->hSpatParamRendCom; nBins = hSpatParamRendCom->num_freq_bands; @@ -5430,18 +5835,22 @@ static void ivas_masa_ext_rend_parambin_internal_fx( IF( EQ_16( nchan_transport, 2 ) ) { + /* in case of split rendering, determine the prototype rotation based on the main direction and use the same prototypes for the offset directions */ 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(); - 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 ); - /* Always using CLDFB decorrelation in MASA EXT renderer */ max_band_decorr = hDiracDecBin->h_freq_domain_decorr_ap_params->max_band_decorr; + 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 ); + 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, 0, NULL ); @@ -5491,11 +5900,138 @@ static void ivas_masa_ext_rend_parambin_internal_fx( move16(); move16(); - 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 ); + pMultiBinPoseData = NULL; + if ( hSplitRendWrapper != NULL ) + { + pMultiBinPoseData = &( hSplitRendWrapper->multiBinPoseData ); + + 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, tmp_Cldfb_out_re, tmp_Cldfb_out_im, + reverbRe_fx, reverbIm_fx, decorrRe_fx, decorrIm_fx, &Q_inp_mix, 1 ); + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + for ( i = 0; i < CLDFB_SLOTS_PER_SUBFRAME; i++ ) + { + Copy32( tmp_Cldfb_out_re[ch][i], Cldfb_Out_Real[ch][subframe * CLDFB_SLOTS_PER_SUBFRAME + i], CLDFB_NO_CHANNELS_MAX ); + Copy32( tmp_Cldfb_out_im[ch][i], Cldfb_Out_Imag[ch][subframe * CLDFB_SLOTS_PER_SUBFRAME + i], CLDFB_NO_CHANNELS_MAX ); + } + } + } + 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, NULL, NULL, + reverbRe_fx, reverbIm_fx, decorrRe_fx, decorrIm_fx, &Q_inp_mix, 1 ); + } hDiracDecBin->hDiffuseDist = NULL; + 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 */ + IVAS_QUATERNION Quaternions_rot, Quaternions_abs, *Quaternions_ref; + Word32 Rmat_local[3][3]; + + + if ( hCombinedOrientationData ) + { + Quaternions_ref = &hCombinedOrientationData->Quaternions[0]; + Copy_Quat_fx( Quaternions_ref, &Quaternions_abs ); + modify_Quat_q_fx( &Quaternions_abs, &Quaternions_abs, Q22 ); + Quaternions_rot.w_fx = L_negate( 12582912 ); /* signal to use Euler */ + Quat2EulerDegree_fx( Quaternions_abs, &Quaternions_abs.z_fx, &Quaternions_abs.y_fx, &Quaternions_abs.x_fx ); /*order in Quat2Euler seems to be reversed ?*/ + Quaternions_abs.w_fx = L_negate( 12582912 ); /* signal to use Euler */ + + FOR( pos_idx = 1; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ ) + { + Quaternions_rot.x_fx = L_add( Quaternions_abs.x_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][0] ); + Quaternions_rot.y_fx = L_add( Quaternions_abs.y_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][1] ); + Quaternions_rot.z_fx = L_add( Quaternions_abs.z_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][2] ); + move32(); + move32(); + move32(); + Euler2Quat_fx( deg2rad_fx( Quaternions_rot.x_fx ), deg2rad_fx( Quaternions_rot.y_fx ), deg2rad_fx( Quaternions_rot.z_fx ), &Quaternions_rot ); + modify_Quat_q_fx( &Quaternions_rot, &Quaternions_rot, Quaternions_ref->q_fact ); + QuatToRotMat_fx( Quaternions_rot, Rmat_local ); + modify_Rmat_q_fx( Rmat_local, Rmat_local, sub( shl( Quaternions_ref->q_fact, 1 ), 32 ), Q30 ); + + hDiracDecBin = hMasaExtRend->hDiracDecBin[pos_idx]; + assert( hDiracDecBin != NULL && "No DiracDecBin handle for this position" ); + + /* re-use input covariance for the side renderings */ + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + Copy32( hMasaExtRend->hDiracDecBin[0]->ChEne_fx[ch], hDiracDecBin->ChEne_fx[ch], hSpatParamRendCom->num_freq_bands ); + Copy( hMasaExtRend->hDiracDecBin[0]->ChEne_e[ch], hDiracDecBin->ChEne_e[ch], hSpatParamRendCom->num_freq_bands ); + } + Copy32( hMasaExtRend->hDiracDecBin[0]->ChCrossRe_fx, hDiracDecBin->ChCrossRe_fx, hSpatParamRendCom->num_freq_bands ); + Copy32( hMasaExtRend->hDiracDecBin[0]->ChCrossIm_fx, hDiracDecBin->ChCrossIm_fx, hSpatParamRendCom->num_freq_bands ); + Copy( hMasaExtRend->hDiracDecBin[0]->ChCrossRe_e, hDiracDecBin->ChCrossRe_e, hSpatParamRendCom->num_freq_bands ); + Copy( hMasaExtRend->hDiracDecBin[0]->ChCrossIm_e, hDiracDecBin->ChCrossIm_e, hSpatParamRendCom->num_freq_bands ); + + ivas_dirac_dec_binaural_formulate_target_covariance_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, Rmat_local, subframe, + hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[subframe] > 0, + subFrameTotalEne_fx, subFrameTotalEne_e, IIReneLimiter_fx, NULL ); + + ivas_dirac_dec_binaural_determine_processing_matrices_fx( hDiracDecBin, hSpatParamRendCom, &config_data, max_band_decorr, Rmat_local, subframe, + hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[subframe] > 0, + 0, NULL ); + + + q_mat = hDiracDecBin->q_processMtx; + move16(); + q_mat = s_min( q_mat, hDiracDecBin->q_processMtxPrev ); + q_mat = s_min( q_mat, hDiracDecBin->q_processMtxDec ); + q_mat = s_min( q_mat, hDiracDecBin->q_processMtxDecPrev ); + + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + FOR( slot = 0; slot < BINAURAL_CHANNELS; slot++ ) + { + Scale_sig( hDiracDecBin->processMtxDecRe_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtxDec ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxDecIm_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtxDec ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxDecRePrev_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtxDecPrev ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxDecImPrev_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtxDecPrev ) ); // scaling to q_mat + } + } + FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + FOR( slot = 0; slot < numInChannels; slot++ ) + { + Scale_sig( hDiracDecBin->processMtxRe_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtx ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxIm_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtx ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxRePrev_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtxPrev ) ); // scaling to q_mat + Scale_sig( hDiracDecBin->processMtxImPrev_fx[ch][slot], nBins, sub( q_mat, hDiracDecBin->q_processMtxPrev ) ); // scaling to q_mat + } + } + hDiracDecBin->q_processMtx = q_mat; + hDiracDecBin->q_processMtxPrev = q_mat; + hDiracDecBin->q_processMtxDec = q_mat; + hDiracDecBin->q_processMtxDecPrev = q_mat; + move16(); + move16(); + move16(); + move16(); + /* re-use reverb and decorr from main direction for the sides */ + 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, tmp_Cldfb_out_re, tmp_Cldfb_out_im, + reverbRe_fx, reverbIm_fx, decorrRe_fx, decorrIm_fx, &Q_inp_mix, 0 ); + + /* copy from temporary buffer to the main split rendering buffer */ + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + for ( i = 0; i < CLDFB_SLOTS_PER_SUBFRAME; i++ ) + { + Copy32( tmp_Cldfb_out_re[ch][i], Cldfb_Out_Real[pos_idx * BINAURAL_CHANNELS + ch][subframe * CLDFB_SLOTS_PER_SUBFRAME + i], CLDFB_NO_CHANNELS_MAX ); + Copy32( tmp_Cldfb_out_im[ch][i], Cldfb_Out_Imag[pos_idx * BINAURAL_CHANNELS + ch][subframe * CLDFB_SLOTS_PER_SUBFRAME + i], CLDFB_NO_CHANNELS_MAX ); + } + } + + hDiracDecBin->hDiffuseDist = NULL; + } + } + } + + /* update this counter only after the last rendering of split directions */ + hSpatParamRendCom->slots_rendered = add( hSpatParamRendCom->slots_rendered, hSpatParamRendCom->subframe_nbslots[subframe] ); hSpatParamRendCom->subframes_rendered = add( hSpatParamRendCom->subframes_rendered, 1 ); move16(); @@ -5512,10 +6048,14 @@ 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*/ - const Word16 num_subframes ) /* i : number of subframes to render */ + 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 */ +) { Word16 subframe; SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; @@ -5537,8 +6077,7 @@ void ivas_masa_ext_rend_parambin_render_fx( hSpatParamRendCom->slots_rendered = 0; move16(); - ivas_masa_ext_rend_parambin_internal_fx( hMasaExtRend, hCombinedOrientationData, p_output, hSpatParamRendCom->dirac_read_idx ); - + ivas_masa_ext_rend_parambin_internal_fx( hMasaExtRend, hCombinedOrientationData, p_output, hSpatParamRendCom->dirac_read_idx, hSplitRendWrapper, Cldfb_Out_Real, Cldfb_Out_Imag ); FOR( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { p_output[ch] += n_samples_sf; diff --git a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c index e8700e2236416dff2586ccd7fec58e3e26c4e013..80dcf9009840c06f89035e3b26b35809a248d05c 100644 --- a/lib_rend/ivas_dirac_output_synthesis_dec_fx.c +++ b/lib_rend/ivas_dirac_output_synthesis_dec_fx.c @@ -661,11 +661,9 @@ 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 */ - const Word16 sh_rot_max_order, - const Word32 *p_Rmat, /* i : rotation matrix Q30*/ - 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*/ + 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*/ const Word16 md_idx, const Word16 hodirac_flag, /* i : flag to indicate HO-DirAC mode */ const Word16 dec_param_estim ) @@ -716,8 +714,6 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx( md_idx, NULL, 0, - 2, - p_Rmat, hodirac_flag ); { @@ -788,8 +784,6 @@ void ivas_dirac_dec_output_synthesis_process_slot_fx( md_idx, NULL, 0, - sh_rot_max_order, - p_Rmat, hodirac_flag ); { @@ -3071,289 +3065,6 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls_fx( } -/*------------------------------------------------------------------------- - * ivas_dirac_dec_get_response_split_order() - * - * calculate reponse, 1 degree resolution - *------------------------------------------------------------------------*/ - -static void ivas_dirac_dec_get_response_split_order_fx( - const Word16 azimuth, /*q0*/ - const Word16 elevation, /*q0*/ - Word32 *response, /*q_response*/ - const Word16 shd_rot_max_order, - const Word32 *p_Rmat /* Q30 */, - Word16 *q_response ) -{ - Word16 index_azimuth, index_elevation; - Word16 el, e, az; - Word32 cos_1, cos_2, sin_1, cos_az[3]; - Word32 sin_az[3]; - Word32 f, c; - Word16 l, m; - Word16 b, b1, b_2, b1_2, a; - Word32 dv_0, dv_1, dv_2, dv_r_0, dv_r_1, dv_r_2; - Word32 w; - Word16 tmp; - Word32 temp; - Word16 exp; - - push_wmops( "ivas_dirac_dec_get_response_split_order" ); - - /* Corner case for handling crash in idiv1616 when numerator is 0 */ - IF( EQ_16( azimuth, -180 ) ) - { - tmp = 0; - move16(); - } - ELSE - { - tmp = mult( add( azimuth, 180 ), ONE_BY_360_Q15 ); /* idiv1616( add( azimuth, 180 ), 360 ) */ - } - index_azimuth = sub( add( azimuth, 180 ), i_mult( tmp, 360 ) ); // index_azimuth = (azimuth + 180) % 360 - index_elevation = add( elevation, 90 ); - - IF( GT_16( index_elevation, 90 ) ) - { - e = -ONE_IN_Q14; /*-1 in Q14*/ - move16(); - el = sub( 180, index_elevation ); - } - ELSE - { - e = ONE_IN_Q14; /*1 in Q14*/ - move16(); - el = index_elevation; - move16(); - } - - IF( GT_16( index_azimuth, 180 ) ) - { - az = sub( 360, index_azimuth ); - f = -ONE_IN_Q30; /*-1 Q30*/ - move32(); - } - ELSE - { - az = index_azimuth; - move16(); - f = ONE_IN_Q30; /*1 Q30*/ - move32(); - } - - // dirac_gains_trg_term_int Q30 - cos_1 = L_shr( dirac_gains_trg_term_int[az][0], 1 ); // Q29 - cos_2 = L_shl( Mpy_32_32( cos_1, cos_1 ), 2 ); // Q29 - sin_1 = Mpy_32_32( f, dirac_gains_trg_term_int[az][1] ); // Q29 - - cos_az[0] = cos_1; // Q29 - move32(); - cos_az[1] = L_shl( L_sub( Mpy_32_32( TWO_IN_Q29, cos_2 ), ONE_IN_Q27 ), 2 ); // Q29 - move32(); - cos_az[2] = L_sub( L_shl( Mpy_32_32( Mpy_32_32( TWO_IN_Q29, cos_1 ), cos_az[1] ), 4 ), cos_az[0] ); // Q29 - move32(); - - sin_az[0] = sin_1; // Q29 - move32(); - sin_az[1] = L_shl( Mpy_32_32( Mpy_32_32( sin_1, TWO_IN_Q29 ), cos_1 ), 4 ); // Q29 - move32(); - sin_az[2] = L_shl( Mpy_32_32( sin_1, L_sub( Mpy_32_32( FOUR_IN_Q28, cos_2 ), ONE_IN_Q26 ) ), 5 ); // Q29 - move32(); - - response[0] = ONE_IN_Q29; - move32(); - - FOR( l = 1; l <= shd_rot_max_order; l++ ) - { - b_2 = i_mult( l, l ); - b1_2 = add( b_2, i_mult( 2, l ) ); - FOR( m = 0; m < l; m += 2 ) - { - b = add( b_2, m ); - a = dirac_gains_P_idx[b]; - move16(); - - c = Mpy_32_32( Mpy_32_32( SQRT2_FIXED, dirac_gains_norm_term_int[a] ), dirac_gains_Pnm_int[el][a] ); // Q25 - - response[b] = L_shl( Mpy_32_32( c, sin_az[l - m - 1] ), 6 ); // Q29 - move32(); - - b1 = sub( b1_2, m ); - response[b1] = L_shl( Mpy_32_32( c, cos_az[l - m - 1] ), 6 ); // Q29 - move32(); - } - - FOR( m = 1; m < l; m += 2 ) - { - b = add( b_2, m ); - a = dirac_gains_P_idx[b]; - move16(); - - c = Mpy_32_32( Mpy_32_32( SQRT2_FIXED, dirac_gains_norm_term_int[a] ), dirac_gains_Pnm_int[el][a] ); // Q25 - c = Mpy_32_16_1( c, e ); // Q24 - - response[b] = L_shl( Mpy_32_32( c, sin_az[l - m - 1] ), 7 ); // Q29 - move32(); - - b1 = sub( b1_2, m ); - response[b1] = L_shl( Mpy_32_32( c, cos_az[l - m - 1] ), 7 ); // Q29 - move32(); - } - - b = add( b_2, l ); - a = dirac_gains_P_idx[b]; - move16(); - - c = L_shl( Mpy_32_32( dirac_gains_norm_term_int[a], dirac_gains_Pnm_int[el][a] ), 3 ); // Q29 - IF( EQ_16( l % 2, 1 ) ) - { - c = L_shl( Mpy_32_16_1( c, e ), 1 ); // Q29 - } - - response[b] = c; // Q29 - move32(); - } - - /*Conversion spherical to cartesian coordinates*/ - w = L_negate( dirac_gains_trg_term_int[el][1] ); // Q30 - dv_0 = Mpy_32_32( w, cos_1 ); // Q28 - dv_1 = Mpy_32_32( w, sin_1 ); // Q28 - dv_2 = L_shr( Mpy_32_16_1( dirac_gains_trg_term_int[el][0], e ), 1 ); // Q28 - - /*Rotation mtx multiplication*/ - dv_r_0 = Madd_32_32( Madd_32_32( Mpy_32_32( L_shr( p_Rmat[0], Q1 ), dv_0 ), L_shr( p_Rmat[1], Q1 ), dv_1 ), L_shr( p_Rmat[2], Q1 ), dv_2 ); // Q26 - dv_r_1 = Madd_32_32( Madd_32_32( Mpy_32_32( L_shr( p_Rmat[3], Q1 ), dv_0 ), L_shr( p_Rmat[4], Q1 ), dv_1 ), L_shr( p_Rmat[5], Q1 ), dv_2 ); // Q26 - dv_r_2 = Madd_32_32( Madd_32_32( Mpy_32_32( L_shr( p_Rmat[6], Q1 ), dv_0 ), L_shr( p_Rmat[7], Q1 ), dv_1 ), L_shr( p_Rmat[8], Q1 ), dv_2 ); // Q26 - - tmp = BASOP_util_atan2( dv_r_1, dv_r_0, 0 ); // Q13 - index_azimuth = shr( mult( tmp, _180_OVER_PI_Q9 ), 7 ); // Q0; - IF( EQ_16( index_azimuth, -180 ) ) - { - tmp = 0; - move16(); - } - ELSE - { - tmp = mult( add( index_azimuth, 180 ), ONE_BY_360_Q15 ); - } - index_azimuth = sub( add( index_azimuth, 180 ), i_mult( tmp, 360 ) ); // index_azimuth = (index_azimuth + 180) % 360 - - temp = L_add( Mpy_32_32( dv_r_0, dv_r_0 ), Mpy_32_32( dv_r_1, dv_r_1 ) ); // Q21 - exp = sub( 31, Q21 ); - temp = Sqrt32( temp, &exp ); - - tmp = BASOP_util_atan2( dv_r_2, temp, sub( sub( 31, Q26 ), exp ) ); // Q13 - index_elevation = shr( mult( tmp, _180_OVER_PI_Q9 ), Q7 ); // Q0 - index_elevation = add( index_elevation, 90 ); - - IF( GT_16( index_elevation, 90 ) ) - { - e = -ONE_IN_Q14; /*-1 Q14*/ - move16(); - el = sub( 180, index_elevation ); - } - ELSE - { - e = ONE_IN_Q14; /*1 Q14*/ - move16(); - el = index_elevation; - move16(); - } - - IF( GT_16( index_azimuth, 180 ) ) - { - az = sub( 360, index_azimuth ); - f = -ONE_IN_Q30; /*-1 Q30*/ - move32(); - } - ELSE - { - az = index_azimuth; - move16(); - f = ONE_IN_Q30; /*1 Q30*/ - move32(); - } - - // dirac_gains_trg_term_int Q30 - cos_1 = L_shr( dirac_gains_trg_term_int[az][0], 1 ); // Q29 - cos_2 = L_shl( Mpy_32_32( cos_1, cos_1 ), 2 ); // Q29 - sin_1 = Mpy_32_32( f, dirac_gains_trg_term_int[az][1] ); // Q29 - - cos_az[0] = cos_1; // Q29 - move32(); - cos_az[1] = L_shl( L_sub( Mpy_32_32( TWO_IN_Q29, cos_2 ), ONE_IN_Q27 ), 2 ); // Q29 - move32(); - cos_az[2] = L_sub( L_shl( Mpy_32_32( Mpy_32_32( TWO_IN_Q29, cos_1 ), cos_az[1] ), 4 ), cos_az[0] ); // Q29 - move32(); - - sin_az[0] = sin_1; // Q29 - move32(); - sin_az[1] = L_shl( Mpy_32_32( Mpy_32_32( sin_1, TWO_IN_Q29 ), cos_1 ), 4 ); // Q29 - move32(); - sin_az[2] = L_shl( Mpy_32_32( sin_1, L_sub( Mpy_32_32( FOUR_IN_Q28, cos_2 ), ONE_IN_Q26 ) ), 5 ); // Q29 - move32(); - - FOR( l = shd_rot_max_order + 1; l <= 3; l++ ) - { - b_2 = i_mult( l, l ); - b1_2 = add( b_2, i_mult( 2, l ) ); - - FOR( m = 0; m < l; m += 2 ) - { - b = add( b_2, m ); - a = dirac_gains_P_idx[b]; - move16(); - - c = Mpy_32_32( Mpy_32_32( SQRT2_FIXED, dirac_gains_norm_term_int[a] ), dirac_gains_Pnm_int[el][a] ); // Q25 - - response[b] = L_shl( Mpy_32_32( c, sin_az[l - m - 1] ), 6 ); // Q29 - move32(); - - b1 = sub( b1_2, m ); - response[b1] = L_shl( Mpy_32_32( c, cos_az[l - m - 1] ), 6 ); // Q29 - move32(); - } - - FOR( m = 1; m < l; m += 2 ) - { - b = add( b_2, m ); - a = dirac_gains_P_idx[b]; - move16(); - - c = Mpy_32_32( Mpy_32_32( SQRT2_FIXED, dirac_gains_norm_term_int[a] ), dirac_gains_Pnm_int[el][a] ); // Q25 - c = Mpy_32_16_1( c, e ); // Q24 - - response[b] = L_shl( Mpy_32_32( c, sin_az[l - m - 1] ), 7 ); // Q29 - move32(); - - b1 = sub( b1_2, m ); - response[b1] = L_shl( Mpy_32_32( c, cos_az[l - m - 1] ), 7 ); // Q29 - move32(); - } - - b = add( b_2, l ); - a = dirac_gains_P_idx[b]; - move16(); - - c = L_shl( Mpy_32_32( dirac_gains_norm_term_int[a], dirac_gains_Pnm_int[el][a] ), 3 ); // Q29 - - IF( EQ_16( l % 2, 1 ) ) - { - c = L_shl( Mpy_32_16_1( c, e ), 1 ); // Q29 - } - - response[b] = c; // Q29 - move32(); - } - - *q_response = Q29; - move16(); - - pop_wmops(); - - return; -} - /*------------------------------------------------------------------------- * ivas_dirac_dec_compute_directional_responses() * @@ -3371,9 +3082,7 @@ void ivas_dirac_dec_compute_directional_responses_fx( const Word16 md_idx, const Word32 *surCohRatio_fx, /*i:Q_surCohRatio*/ Word16 Q_surCohRatio, - 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 */ + const Word16 hodirac_flag /* i : flag to indicate HO-DirAC mode */ ) { Word16 k, l, i; @@ -3486,23 +3195,11 @@ void ivas_dirac_dec_compute_directional_responses_fx( exp_direct_response_dir2 = 0; move16(); - 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 ); + ivas_dirac_dec_get_response_fx_29( azimuth[k], elevation[k], direct_response_hoa_fx, hDirACRend->hOutSetup.ambisonics_order ); - IF( hodirac_flag ) - { - ivas_dirac_dec_get_response_split_order_fx( azimuth2[k], elevation2[k], direct_response_dir2_fx, shd_rot_max_order, p_Rmat, &Q_direct_response_dir2 ); - } - } - ELSE + IF( hodirac_flag ) { - ivas_dirac_dec_get_response_fx_29( azimuth[k], elevation[k], direct_response_hoa_fx, hDirACRend->hOutSetup.ambisonics_order ); - - IF( hodirac_flag ) - { - ivas_dirac_dec_get_response_fx_29( azimuth2[k], elevation2[k], direct_response_dir2_fx, hDirACRend->hOutSetup.ambisonics_order ); - } + ivas_dirac_dec_get_response_fx_29( azimuth2[k], elevation2[k], direct_response_dir2_fx, hDirACRend->hOutSetup.ambisonics_order ); } test(); diff --git a/lib_rend/ivas_dirac_rend_fx.c b/lib_rend/ivas_dirac_rend_fx.c index 0535d2582823b804e88416ea418973dd8cb55dee..428d14f28f25b01d9d5581944921b9b5513b57a1 100644 --- a/lib_rend/ivas_dirac_rend_fx.c +++ b/lib_rend/ivas_dirac_rend_fx.c @@ -4210,8 +4210,6 @@ static void ivas_masa_ext_dirac_render_sf_fx( md_idx, surCohRatio_fx, Q_surCohRatio, - 0, - NULL, 0 ); Word16 proto_direct_buffer_f_temp_q[60]; @@ -4614,8 +4612,6 @@ static void ivas_masa_ext_dirac_render_sf_fx( hSpatParamRendCom->q_diffuseness_vector, hSpatParamRendCom, hDirACRend, - 0, - 0, hMasaExtRend->hVBAPdata, hDirACRend->hOutSetup, nchan_transport, diff --git a/lib_rend/ivas_hrtf_fx.c b/lib_rend/ivas_hrtf_fx.c index 93f9fbd83ad15a678ebf73f29f0f0e2d4f617709..2a75dee81e5eb2e186a29c1ca3cdea9e64c3591c 100644 --- a/lib_rend/ivas_hrtf_fx.c +++ b/lib_rend/ivas_hrtf_fx.c @@ -33,6 +33,7 @@ #include #include "options.h" #include "prot_fx.h" +#include "ivas_rom_binaural_crend_head.h" #include "ivas_prot_rend_fx.h" #include "ivas_error.h" #include "wmc_auto.h" @@ -54,6 +55,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 +187,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 +213,150 @@ void ivas_HRTF_parambin_binary_close_fx( return; } + +/*-----------------------------------------------------------------------* + * 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_dyn = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC * sizeof( Word32 ) ); + if ( HrtfStatistics->average_energy_l_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + HrtfStatistics->average_energy_r_dyn = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC * sizeof( Word32 ) ); + if ( HrtfStatistics->average_energy_r_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + HrtfStatistics->inter_aural_coherence_dyn = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC * sizeof( Word32 ) ); + if ( HrtfStatistics->inter_aural_coherence_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + floatToFixed_arr32( defaultHRIR_left_avg_power_48kHz_fx, HrtfStatistics->average_energy_l_dyn, Q28, LR_IAC_LENGTH_NR_FC ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ + floatToFixed_arr32( defaultHRIR_right_avg_power_48kHz_fx, HrtfStatistics->average_energy_r_dyn, Q28, LR_IAC_LENGTH_NR_FC ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ + floatToFixed_arr32( defaultHRIR_coherence_48kHz_fx, HrtfStatistics->inter_aural_coherence_dyn, Q26, LR_IAC_LENGTH_NR_FC ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ + HrtfStatistics->average_energy_l = (const Word32 *) HrtfStatistics->average_energy_l_dyn; + HrtfStatistics->average_energy_r = (const Word32 *) HrtfStatistics->average_energy_r_dyn; + HrtfStatistics->inter_aural_coherence = (const Word32 *) HrtfStatistics->inter_aural_coherence_dyn; + break; + case 32000: + HrtfStatistics->average_energy_l_dyn = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC * sizeof( Word32 ) ); + if ( HrtfStatistics->average_energy_l_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + HrtfStatistics->average_energy_r_dyn = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC * sizeof( Word32 ) ); + if ( HrtfStatistics->average_energy_r_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + HrtfStatistics->inter_aural_coherence_dyn = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC * sizeof( Word32 ) ); + if ( HrtfStatistics->inter_aural_coherence_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + floatToFixed_arr32( defaultHRIR_left_avg_power_32kHz_fx, HrtfStatistics->average_energy_l_dyn, Q28, LR_IAC_LENGTH_NR_FC ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ + floatToFixed_arr32( defaultHRIR_right_avg_power_32kHz_fx, HrtfStatistics->average_energy_r_dyn, Q28, LR_IAC_LENGTH_NR_FC ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ + floatToFixed_arr32( defaultHRIR_coherence_32kHz_fx, HrtfStatistics->inter_aural_coherence_dyn, Q26, LR_IAC_LENGTH_NR_FC ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ + HrtfStatistics->average_energy_l = (const Word32 *) HrtfStatistics->average_energy_l_dyn; + HrtfStatistics->average_energy_r = (const Word32 *) HrtfStatistics->average_energy_r_dyn; + HrtfStatistics->inter_aural_coherence = (const Word32 *) HrtfStatistics->inter_aural_coherence_dyn; + break; + case 16000: + HrtfStatistics->average_energy_l_dyn = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC_16KHZ * sizeof( Word32 ) ); + if ( HrtfStatistics->average_energy_l_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + HrtfStatistics->average_energy_r_dyn = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC_16KHZ * sizeof( Word32 ) ); + if ( HrtfStatistics->average_energy_r_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + HrtfStatistics->inter_aural_coherence_dyn = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC_16KHZ * sizeof( Word32 ) ); + if ( HrtfStatistics->inter_aural_coherence_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + floatToFixed_arr32( defaultHRIR_left_avg_power_16kHz_fx, HrtfStatistics->average_energy_l_dyn, Q28, LR_IAC_LENGTH_NR_FC_16KHZ ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ + floatToFixed_arr32( defaultHRIR_right_avg_power_16kHz_fx, HrtfStatistics->average_energy_r_dyn, Q28, LR_IAC_LENGTH_NR_FC_16KHZ ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ + floatToFixed_arr32( defaultHRIR_coherence_16kHz_fx, HrtfStatistics->inter_aural_coherence_dyn, Q26, LR_IAC_LENGTH_NR_FC_16KHZ ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ + HrtfStatistics->average_energy_l = (const Word32 *) HrtfStatistics->average_energy_l_dyn; + HrtfStatistics->average_energy_r = (const Word32 *) HrtfStatistics->average_energy_r_dyn; + HrtfStatistics->inter_aural_coherence = (const Word32 *) HrtfStatistics->inter_aural_coherence_dyn; + break; + } + HrtfStatistics->fromROM = TRUE; + + *hHrtfStatistics = HrtfStatistics; + + + return IVAS_ERR_OK; +} diff --git a/lib_rend/ivas_masa_merge_fx.c b/lib_rend/ivas_masa_merge_fx.c index 54d2548c6ec321f65c9464f12581218f0bd63d3c..528ee4d769520842037cc74c1f4a2ee8edb497b0 100644 --- a/lib_rend/ivas_masa_merge_fx.c +++ b/lib_rend/ivas_masa_merge_fx.c @@ -158,13 +158,13 @@ void copy_masa_descriptive_meta_fx( *---------------------------------------------------------------------*/ void diffuse_meta_merge_1x1_fx( - MASA_DECODER_EXT_OUT_META_HANDLE outMeta, /* o : Merged metadata output */ - MASA_DECODER_EXT_OUT_META_HANDLE inMeta, /* i : Input metadata 1 */ - Word32 inEne_fx[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : TF-energy of input 1 */ - Word16 inEne_e[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : TF-energy of input 1 Exponent */ - MASA_DECODER_EXT_OUT_META_HANDLE inMetaISM, /* i : Input metadata 2 */ - Word32 inEneISM_fx[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : TF-energy of input 2 */ - Word16 inEneISM_e[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS] /* i : TF-energy of input 2 Exponent */ + MASA_DECODER_EXT_OUT_META_HANDLE outMeta, /* o : Merged metadata output */ + MASA_DECODER_EXT_OUT_META_HANDLE inMeta, /* i : Input metadata 1 */ + Word32 inEne_fx[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i/o: TF-energy of input 1. energy after merge */ + Word16 inEne_e[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : TF-energy of input 1 Exponent */ + MASA_DECODER_EXT_OUT_META_HANDLE inMetaISM, /* i : Input metadata 2 */ + Word32 inEneISM_fx[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : TF-energy of input 2 */ + Word16 inEneISM_e[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS] /* i : TF-energy of input 2 Exponent */ ) { Word8 sf, band; @@ -432,7 +432,7 @@ void ivas_prerend_merge_masa_metadata_fx( Word16 inEne1_e[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i/o: TF-energy of input 1 Exponent */ MASA_DECODER_EXT_OUT_META_HANDLE inMeta2, /* i : Input metadata 2 */ IVAS_REND_AudioConfigType inType2, /* i : Type of input 2 */ - Word32 inEne2_fx[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : TF-energy of input 2 */ + Word32 inEne2_fx[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : TF-energy of input 2. may be altered */ Word16 inEne2_e[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS] /* i : TF-energy of input 2 Exponent */ ) { @@ -446,7 +446,15 @@ void ivas_prerend_merge_masa_metadata_fx( IF( EQ_32( inType1, IVAS_REND_AUDIO_CONFIG_TYPE_OBJECT_BASED ) && NE_32( inType2, IVAS_REND_AUDIO_CONFIG_TYPE_OBJECT_BASED ) && ( inMeta1->descriptiveMeta.numberOfDirections == 0u && inMeta2->descriptiveMeta.numberOfDirections == 0u ) ) { /* meta_1 is ISM and both are 1dir */ - diffuse_meta_merge_1x1_fx( outMeta, inMeta2, inEne2_fx, inEne2_e, inMeta1, inEne1_fx, inEne1_e ); + Word8 sf; + + diffuse_meta_merge_1x1_fx( outMeta, inMeta2, inEne2_fx, inEne2_e, inMeta1, inEne1_fx, inEne1_e ); /* post-merge energy is now in inEne2 and needs to be copied to inEne1 */ + + FOR( sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) + { + Copy32( inEne2_fx[sf], inEne1_fx[sf], MASA_FREQUENCY_BANDS ); + Copy( inEne2_e[sf], inEne1_e[sf], MASA_FREQUENCY_BANDS ); + } } ELSE IF( EQ_32( inType2, IVAS_REND_AUDIO_CONFIG_TYPE_OBJECT_BASED ) && NE_32( inType1, IVAS_REND_AUDIO_CONFIG_TYPE_OBJECT_BASED ) && ( inMeta1->descriptiveMeta.numberOfDirections == 0u && inMeta2->descriptiveMeta.numberOfDirections == 0u ) ) { 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_mix_fx.c b/lib_rend/ivas_objectRenderer_mix_fx.c index 0e61282d474afcbfe1fafe00f76aced101e92bb7..1fc754dfffad83d6903309b69764afd8085799a7 100644 --- a/lib_rend/ivas_objectRenderer_mix_fx.c +++ b/lib_rend/ivas_objectRenderer_mix_fx.c @@ -38,6 +38,7 @@ #include "ivas_error.h" #include "wmc_auto.h" #include "ivas_rom_rend.h" +#include "ivas_rom_binaural_crend_head.h" #include "ivas_prot_fx.h" /*-------------------------------------------------------------------* @@ -153,7 +154,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 +184,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 +254,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,24 +407,6 @@ static ivas_error DefaultBSplineModel_fx( model = &( HrFiltSet_p->ModelParams ); modelITD = &( HrFiltSet_p->ModelParamsITD ); - SWITCH( output_Fs ) - { - case 48000: - HrFiltSet_p->lr_energy_and_iac_fx[0] = defaultHRIR_left_avg_power_48kHz_fx; // Q23 - HrFiltSet_p->lr_energy_and_iac_fx[1] = defaultHRIR_right_avg_power_48kHz_fx; // Q23 - HrFiltSet_p->lr_energy_and_iac_fx[2] = defaultHRIR_coherence_48kHz_fx; // Q23 - BREAK; - case 32000: - HrFiltSet_p->lr_energy_and_iac_fx[0] = defaultHRIR_left_avg_power_32kHz_fx; // Q23 - HrFiltSet_p->lr_energy_and_iac_fx[1] = defaultHRIR_right_avg_power_32kHz_fx; // Q23 - HrFiltSet_p->lr_energy_and_iac_fx[2] = defaultHRIR_coherence_32kHz_fx; // Q23 - BREAK; - case 16000: - 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 - BREAK; - } /* Set ROM flag for correct deallocation */ model->modelROM = TRUE; diff --git a/lib_rend/ivas_orient_trk_fx.c b/lib_rend/ivas_orient_trk_fx.c index 6ed7cf3b11c3b0ae26888d6102e3363d02e3106e..ee91e7060e252c6d06e9827ba3f2e5d353710038 100644 --- a/lib_rend/ivas_orient_trk_fx.c +++ b/lib_rend/ivas_orient_trk_fx.c @@ -33,6 +33,7 @@ #include "common_api_types.h" #include #include "options.h" +#include "ivas_prot_fx.h" #include "ivas_prot_rend_fx.h" #include "ivas_cnst.h" #include @@ -696,9 +697,10 @@ ivas_error ivas_orient_trk_SetReferenceRotation_fx( } /* check for Euler angle signaling */ - IF( EQ_32( refRot.w_fx, -1610612736 /* -3.0f in Q29 */ ) ) + 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 ); } pOTR->refRot = refRot; @@ -789,7 +791,7 @@ ivas_error ivas_orient_trk_SetReferenceVector_fx( case IVAS_HEAD_ORIENT_TRK_REF: case IVAS_HEAD_ORIENT_TRK_AVG: case IVAS_HEAD_ORIENT_TRK_REF_VEC: - acousticFrontVector = VectorSubtract_fx( listenerPos, refPos ); + acousticFrontVector = VectorSubtract_fx( refPos, listenerPos ); BREAK; case IVAS_HEAD_ORIENT_TRK_REF_VEC_LEV: /* ignore the height difference between listener position and reference position */ @@ -816,7 +818,7 @@ ivas_error ivas_orient_trk_SetReferenceVector_fx( refPosLevel.q_fact = q_min; move16(); - acousticFrontVector = VectorSubtract_fx( listenerPosLevel, refPosLevel ); + acousticFrontVector = VectorSubtract_fx( refPosLevel, listenerPosLevel ); BREAK; default: return IVAS_ERR_WRONG_PARAMS; @@ -833,7 +835,7 @@ ivas_error ivas_orient_trk_SetReferenceVector_fx( return IVAS_ERR_WRONG_PARAMS; } - ivasForwardVector.x_fx = L_negate( ONE_IN_Q31 ); + ivasForwardVector.x_fx = ONE_IN_Q31; move32(); ivasForwardVector.y_fx = 0; move32(); diff --git a/lib_rend/ivas_output_init_fx.c b/lib_rend/ivas_output_init_fx.c index 057161c7c4c366ae8b0b8a872d1fbd99af657fa6..5c19acb5fc00de4a18d30664cf1c7bfdc8a9734d 100644 --- a/lib_rend/ivas_output_init_fx.c +++ b/lib_rend/ivas_output_init_fx.c @@ -100,6 +100,8 @@ Word16 audioCfg2channels( 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; @@ -266,6 +268,8 @@ void ivas_output_init( 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: @@ -370,7 +374,8 @@ Word16 ivas_get_nchan_buffers_dec( { 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 ) ) + 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 ); } @@ -451,6 +456,10 @@ Word16 ivas_get_nchan_buffers_dec( } } + 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; } diff --git a/lib_rend/ivas_prot_rend_fx.h b/lib_rend/ivas_prot_rend_fx.h index 7e6c2aa4657b8f698f955bac8d68a66621011915..a8729ddbf4b883aab78127611ec0aec0d417f4e9 100644 --- a/lib_rend/ivas_prot_rend_fx.h +++ b/lib_rend/ivas_prot_rend_fx.h @@ -220,10 +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*/ - const Word16 num_subframes ); /* i : number of subframes to render */ + 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 */ +); 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( @@ -464,8 +472,6 @@ 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 */ - const Word16 sh_rot_max_order, - const Word32 *p_Rmat, /* i : rotation matrix */ 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*/ @@ -537,8 +543,6 @@ void ivas_dirac_dec_compute_directional_responses_fx( const Word16 md_idx, const Word32 *surCohRatio_fx, Word16 Q_surCohRatio, - const Word16 shd_rot_max_order, /* i : split-order rotation method */ - const Word32 *p_Rmat, /* i : rotation matrix */ const Word16 hodirac_flag /* i : flag to indicate HO-DirAC mode */ ); @@ -612,6 +616,19 @@ void ivas_HRTF_CRend_binary_close_fx( HRTFS_CREND **hSetOfHRTF /* i/o: Set of HRTF handle */ ); +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 */ +); + /*----------------------------------------------------------------------------------* * TD object renderer @@ -857,11 +874,14 @@ ivas_error ivas_rend_openCrend( const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg, HRTFS_CREND_HANDLE hSetOfHRTF, - const Word32 output_Fs + HRTFS_STATISTICS_HANDLE hHrtfStatistics, + const Word32 output_Fs, + const Word16 num_poses ); void ivas_rend_closeCrend( - CREND_WRAPPER_HANDLE *pCrend + CREND_WRAPPER_HANDLE *pCrend , + const Word16 num_poses ); ivas_error ivas_hrtf_init( @@ -869,20 +889,10 @@ ivas_error ivas_hrtf_init( ); ivas_error ivas_rend_initCrendWrapper( - CREND_WRAPPER_HANDLE *pCrend -); -ivas_error ivas_rend_crendProcess( - const CREND_WRAPPER *pCrend, - const AUDIO_CONFIG inConfig, - const AUDIO_CONFIG outConfig, - DECODER_CONFIG_HANDLE hDecoderConfig, - COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, - IVAS_OUTPUT_SETUP_HANDLE hIntSetup, - EFAP_HANDLE hEFAPdata, - Word32 *output[], /* i/o: input/output audio channels */ - const Word32 output_Fs, - const Word16 num_subframes /* i : number of subframes to render */ + CREND_WRAPPER_HANDLE *pCrend, + const Word16 num_poses ); + ivas_error ivas_rend_crendProcessSubframe( const CREND_WRAPPER *pCrend, /* i/o: Crend wrapper handle */ const AUDIO_CONFIG inConfig, /* i : input audio configuration */ @@ -896,6 +906,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 */ + , + const Word16 pos_idx ); @@ -903,24 +915,18 @@ ivas_error ivas_rend_crendProcessSubframe( * Reverberator *----------------------------------------------------------------------------------*/ -ivas_error ivas_binaural_reverb_open_fastconv_fx( +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 */ - IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */ - const AUDIO_CONFIG internal_config, /* i : internal audio config for FastConv */ + const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */ const Word32 sampling_rate, /* i : sampling rate */ - const HRTFS_FASTCONV_HANDLE hHrtfFastConv /* i : FastConv HRTF handle */ + const Word32 *defaultTimes, /* i : default reverberation times */ + const Word32 *defaultEne /* i : default reverberation energies */ ); -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 */ - IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */ - const Word32 sampling_rate, /* i : sampling rate Q0 */ - const HRTFS_PARAMBIN_HANDLE hHrtfParambin /* i : Parametric binauralizer HRTF handle */ -); + void ivas_binaural_reverb_close_fx( REVERB_STRUCT_HANDLE *hReverb /* i/o: binaural reverb handle */ @@ -941,9 +947,7 @@ void ivas_binaural_reverb_processSubframe_fx( ivas_error ivas_reverb_open_fx( REVERB_HANDLE *hReverb, /* i/o: Reverberator handle */ - 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 */ + const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */ RENDER_CONFIG_HANDLE hRenderConfig, /* i : Renderer configuration handle */ const Word32 output_Fs /* i : output sampling rate */ ); @@ -1090,10 +1094,8 @@ void ivas_reverb_calc_color_levels_fx( Word32 *pTarget_color_L, //output in Q30 Word32 *pTarget_color_R); //output in Q30 ivas_error ivas_reverb_prepare_cldfb_params( - IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, - const HRTFS_FASTCONV_HANDLE hHrtfFastConv, - const AUDIO_CONFIG input_audio_config, - const int16_t use_brir, + const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, + const HRTFS_STATISTICS_HANDLE hHrtfStatistics, const int32_t output_Fs, float *pOutput_t60, float *pOutput_ene ); @@ -1109,20 +1111,20 @@ void ivas_reverb_interpolate_acoustic_data_fx( Word16 *pOutput_t60_e, //output e Word16 *pOutput_dsr_e //output e ); -void ivas_reverb_get_hrtf_set_properties_fx( - Word32 **ppHrtf_set_L_re, - Word32 **ppHrtf_set_L_im, - Word32 **ppHrtf_set_R_re, - Word32 **ppHrtf_set_R_im, - const AUDIO_CONFIG input_audio_config, - const Word16 hrtf_count, - const Word16 in_freq_count, - const Word16 out_freq_count, - Word32 *pOut_avg_pwr_L, //output in Q23 - Word32 *pOut_avg_pwr_R, //output in Q23 - Word32 *out_i_a_coherence //output in Q27 +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT +void ivas_reverb_interpolate_energies_fx( + const Word16 input_table_size, + const Word32 *pInput_fc, //input in Q16 + const Word32 *pInput_ene_l, //input in Q28 + const Word32 *pInput_ene_r, //input in Q28 + const Word16 output_table_size, + const Word32 *pOutput_fc, + Word32 *pOutput_ene_l_m, // output m + Word32 *pOutput_ene_r_m, // output m + Word16 *pOutput_ene_l_e, //output e + Word16 *pOutput_ene_r_e //output e ); - +#endif /*---------------------------------------------------------------------------------* * Shoebox Prototypes *-----------------------------------------------------------------------------------*/ @@ -1188,6 +1190,9 @@ void ivas_headTrack_close_fx( HEAD_TRACK_DATA_HANDLE *hHeadTrackData /* i/o: head track handle */ ); +float rad2deg( + float radians +); void Euler2Quat_fx( const Word32 yaw, /* i : yaw (x) Q22 */ const Word32 pitch, /* i : pitch (y) Q22 */ @@ -1498,6 +1503,84 @@ void masaPrerendClose_fx( MASA_PREREND_HANDLE *hMasaPrerendPtr /* i/o: prerenderer handle to be closed */ ); +/*----------------------------------------------------------------------------------* + * Split rendering + *----------------------------------------------------------------------------------*/ + +ivas_error ivas_td_binaural_renderer_sf_splitBinaural( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + Word32 *output[], /* i/o: SCE channels / Binaural synthesis */ + const int16_t nSamplesRendered /* i : number of samples to render */ +); + +ivas_error ivas_rend_crendProcessSubframesSplitBin( + const CREND_WRAPPER *pCrend, /* i/o: Crend wrapper handle */ + const AUDIO_CONFIG inConfig, /* i : input audio configuration */ + const AUDIO_CONFIG outConfig, /* i : output audio configuration */ + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const DECODER_CONFIG_HANDLE hDecoderConfig, /* i : decoder config. structure */ + const COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined orientation handle */ + const IVAS_OUTPUT_SETUP_HANDLE hIntSetup, /* i : internal setup handle */ + const EFAP_HANDLE hEFAPdata, /* i : EFAP handle */ + DECODER_TC_BUFFER_HANDLE hTcBuffer, /* i/o: JBM handle */ + Word32 *input_f[], /* i : transport channels */ + 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 */ +); + +ivas_error ivas_rend_crendProcessSplitBin( + const CREND_WRAPPER *pCrend, + const AUDIO_CONFIG inConfig, + const AUDIO_CONFIG outConfig, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const DECODER_CONFIG_HANDLE hDecoderConfig, + const COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, + const IVAS_OUTPUT_SETUP_HANDLE hIntSetup, + EFAP_HANDLE hEFAPdata, + Word32 *output[], + const Word32 output_Fs +); + +ivas_error ivas_rend_openMultiBinCrend( + CREND_WRAPPER_HANDLE *pCrend, + const AUDIO_CONFIG inConfig, + const AUDIO_CONFIG outConfig, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const Word32 output_Fs +); + +void ivas_rend_CldfbMultiBinRendProcess( + const BINAURAL_RENDERER_HANDLE hCldfbRend, + const COMBINED_ORIENTATION_HANDLE *pCombinedOrientationData, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + Word32 Cldfb_In_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_In_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_Out_Real[MAX_HEAD_ROT_POSES*BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals */ + Word32 Cldfb_Out_Imag[MAX_HEAD_ROT_POSES*BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const Word16 low_res_pre_rend_rot, + const Word16 num_subframes, + const Word16 Q_in +); + +ivas_error ivas_rend_openCldfb( + HANDLE_CLDFB_FILTER_BANK cldfbAna[MAX_INPUT_CHANNELS], + const AUDIO_CONFIG inConfig, + const Word32 output_Fs +); + +ivas_error ivas_rend_openCldfbRend( + CLDFB_REND_WRAPPER *pCldfbRend, + const AUDIO_CONFIG inConfig, + const AUDIO_CONFIG outConfig, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const Word32 output_Fs +); + +void ivas_rend_closeCldfbRend( + CLDFB_REND_WRAPPER *pCldfbRend +); + /* clang-format on */ diff --git a/lib_rend/ivas_reflections_fx.c b/lib_rend/ivas_reflections_fx.c index 310bc77e4cf3c62a6227926dcec3eb5ef55b5ef3..6bd0ed87c14b7a2cbbd9a3f6f89856361688c014 100644 --- a/lib_rend/ivas_reflections_fx.c +++ b/lib_rend/ivas_reflections_fx.c @@ -56,9 +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 }; -static UWord16 LC_mixing_5_1_4[9] = { 0, 1, 2, 3, 4, 0, 1, 2, 3 }; +static UWord16 LC_mixing_5_1_4[9] = { 0, 1, 2, 3, 4, 0, 1, 3, 4 }; -static UWord16 LC_mixing_7_1_4[11] = { 0, 1, 2, 3, 4, 3, 4, 0, 1, 2, 3 }; +static UWord16 LC_mixing_7_1_4[11] = { 0, 1, 2, 3, 4, 3, 4, 0, 1, 3, 4 }; /*-----------------------------------------------------------------------------------------* @@ -338,10 +338,13 @@ ivas_error ivas_er_encoder_init( p_y_fx = reflections->shoebox_data.az_angle.data_fx[i]; // Q23 move32(); move32(); + 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 - rad_el_angle = deg2rad_fx( p_x_fx ); // Q23 - rad_az_angle = deg2rad_fx( p_y_fx ); // Q23 - + rad_el_angle = L_shl( rad_el_angle, 1 ); // Q23 + rad_az_angle = L_shl( rad_az_angle, 1 ); // Q23 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 056ae1651d98ac3db2c5d519a5a01de150d2cba0..fc5c263510d659daf4507178a7402fc36b1a1e0d 100644 --- a/lib_rend/ivas_render_config_fx.c +++ b/lib_rend/ivas_render_config_fx.c @@ -137,5 +137,26 @@ ivas_error ivas_render_config_init_from_rom_fx( move16(); } + ( *hRenderConfig )->split_rend_config.splitRendBitRate = SPLIT_REND_768k; + move32(); + ( *hRenderConfig )->split_rend_config.dof = 3; + move16(); + ( *hRenderConfig )->split_rend_config.hq_mode = 0; + move16(); + ( *hRenderConfig )->split_rend_config.codec_delay_ms = 0; + move16(); + ( *hRenderConfig )->split_rend_config.isar_frame_size_ms = 20; + move16(); + ( *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; + move32(); + ( *hRenderConfig )->split_rend_config.poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; + move32(); + ( *hRenderConfig )->split_rend_config.rendererSelection = ISAR_SPLIT_REND_RENDERER_SELECTION_DEFAULT; + move32(); + ( *hRenderConfig )->split_rend_config.lc3plus_highres = 0; + move16(); + 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 c70e8d6675810ace15423786df165f98e72313d4..a40fcfac8ad78ea58061139c1ade2e8242263a0b 100644 --- a/lib_rend/ivas_reverb_filter_design_fx.c +++ b/lib_rend/ivas_reverb_filter_design_fx.c @@ -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,258 +919,86 @@ void ivas_reverb_interpolate_acoustic_data_fx( return; } + +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT /*-------------------------------------------------------------------* - * ivas_reverb_get_hrtf_set_properties() + * ivas_reverb_interpolate_energies_fx() * - * Function analyses the HRTF set and computes avarage left/right power spectrum - * and frequency-dependent IA coherence. Expects frequency-domain HRTF input + * Interpolates data from the input average energy to the FFT pFilter uniform grid + * Note: the fc frequencies both for the input and the output must be in the ascending order *-------------------------------------------------------------------*/ -void ivas_reverb_get_hrtf_set_properties_fx( - Word32 **ppHrtf_set_L_re, // Q29 - Word32 **ppHrtf_set_L_im, // Q29 - Word32 **ppHrtf_set_R_re, // Q29 - Word32 **ppHrtf_set_R_im, // Q29 - const AUDIO_CONFIG input_audio_config, - const Word16 hrtf_count, - const Word16 in_freq_count, - const Word16 out_freq_count, - Word32 *pOut_avg_pwr_L, // output in Q23 - Word32 *pOut_avg_pwr_R, // output in Q23 - Word32 *out_i_a_coherence ) // output in Q27 +void ivas_reverb_interpolate_energies_fx( + const Word16 input_table_size, + const Word32 *pInput_fc, // input in Q16 + const Word32 *pInput_ene_l, // input in Q28 + const Word32 *pInput_ene_r, // input in Q28 + const Word16 output_table_size, + const Word32 *pOutput_fc, // Q16 + Word32 *pOutput_ene_l_m, + Word32 *pOutput_ene_r_m, + Word16 *pOutput_ene_l_e, + Word16 *pOutput_ene_r_e ) { - const Word16 foa_sum_coeffs[4][3] = { - { MAX_WORD16, MAX_WORD16, 0 }, - { MAX_WORD16, -MAX_WORD16, 0 }, - { MAX_WORD16, 0, MAX_WORD16 }, - { MAX_WORD16, 0, -MAX_WORD16 } - }; - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); - move16(); + Word16 input_idx, output_idx; + Word32 rel_offset; + Word16 rel_offset_e; + input_idx = 0; move16(); - const Word32 inp_freq_step = divide3232( ONE_IN_Q22, L_shl( in_freq_count, 23 ) ); // q= 15 - const Word32 inp_freq_offset = L_shr( inp_freq_step, 1 ); // q= 15 - const Word16 out_freq_step = divide3232( ONE_IN_Q21, L_shl( L_sub( out_freq_count, 1 ), 22 ) ); // q = 15 - - Word16 hrtf_count_inverted, used_hrtf_count, freq_idx, hrtf_idx, out_bin_idx, ch_index, is_ambisonics; - Word32 relative_pos, weight_1st, base_idx; - Word32 avg_pwr_left[2]; - Word32 avg_pwr_right[2]; - Word32 IA_coherence[2]; - - test(); - test(); - IF( EQ_16( input_audio_config, IVAS_AUDIO_CONFIG_FOA ) || EQ_16( input_audio_config, IVAS_AUDIO_CONFIG_HOA2 ) || EQ_16( input_audio_config, IVAS_AUDIO_CONFIG_HOA3 ) ) - { - is_ambisonics = 1; - move16(); - used_hrtf_count = 4; /* Using only 1st order HRTFs */ - move16(); - } - ELSE - { - is_ambisonics = 0; - move16(); - used_hrtf_count = hrtf_count; - move16(); - } - - /* Interpolation (linear to a new grid) */ - base_idx = 0; - move32(); - relative_pos = 0; - move32(); - hrtf_count_inverted = divide1616( ONE_IN_Q11, shl( used_hrtf_count, 11 ) ); // q = 15 - /* Loop over output frequency bins */ - FOR( out_bin_idx = 0; out_bin_idx < out_freq_count; out_bin_idx++ ) + FOR( output_idx = 0; output_idx < output_table_size; output_idx++ ) { - /* Computing normalized frequency for the current bin (1.0 corresponds to sampling rate) */ - - const Word32 norm_freq = L_mult( out_freq_step, shl( out_bin_idx, 5 ) ); // q = 21 - - /* Computing the bin index in the source data */ - Word16 div_q = 0; - move16(); - // Word32 tbl_index = BASOP_Util_Divide3232_Scale(L_sub(norm_freq , L_shl(inp_freq_offset, 6)), L_shl(inp_freq_step, 6), &div_q);//q =15 - div_q - Word32 tbl_index = Mpy_32_32( L_sub( norm_freq, L_shl( inp_freq_offset, 6 ) ), L_shl( in_freq_count, 22 ) ); // q = 11 - IF( div_q < 0 ) + /* if the bin frequency is lower than the 1st frequency point in the input table, take this 1st point */ + IF( LT_32( pOutput_fc[output_idx], pInput_fc[0] ) ) { - tbl_index = L_shl( tbl_index, div_q ); - div_q = 0; + input_idx = 0; move16(); - } - IF( tbl_index <= 0 ) /* In case of extrapolation (below 1st bin), choose nearest */ - { - base_idx = 0; - move32(); - relative_pos = 0; + rel_offset = 0; move32(); + rel_offset_e = 0; + move16(); } ELSE { - base_idx = ( tbl_index ); // q = 21 - move32(); - relative_pos = L_shl( L_sub( tbl_index, L_shl( L_shr( base_idx, 11 ), 11 ) ), 20 ); // q = 31 - base_idx = L_shr( base_idx, 11 ); - IF( GT_32( base_idx, L_sub( in_freq_count, 2 ) ) ) /* In case of extrapolation (above last bin), choose nearest */ + /* if the bin frequency is higher than the last frequency point in the input table, take this last point */ + IF( GT_32( pOutput_fc[output_idx], pInput_fc[input_table_size - 1] ) ) { - base_idx = L_sub( in_freq_count, 2 ); - relative_pos = ONE_IN_Q31; // Q31 + input_idx = sub( input_table_size, 2 ); + rel_offset = ONE_IN_Q30; // Q30; move32(); + rel_offset_e = 1; + move16(); } - } - - /* Computing 2 bins data for later interpolation */ - - /* Zeroing before accumalation for average value computing */ - avg_pwr_left[0] = 0; - move32(); - avg_pwr_left[1] = 0; - move32(); - avg_pwr_right[0] = 0; - move32(); - avg_pwr_right[1] = 0; - move32(); - IA_coherence[0] = 0; - move32(); - IA_coherence[1] = 0; - move32(); - - /* Get power spectra and cross - correlation between left and right hrtfs */ - /* Loop over all the HRTFs available */ - FOR( hrtf_idx = 0; hrtf_idx < used_hrtf_count; hrtf_idx++ ) - { - /* Pointers to current HRTF data */ - Word32 *current_base_L_ptr_re, *current_base_L_ptr_im, *current_base_R_ptr_re, *current_base_R_ptr_im; - - /* combined HRTF data used for FOA */ - Word32 combined_channels_L_re[2]; - Word32 combined_channels_L_im[2]; - Word32 combined_channels_R_re[2]; - Word32 combined_channels_R_im[2]; - - /* Process the frequency bins containing both real and img parts */ - /* In case of 5.1 or 7.1 formats, use the available HRTF paires directly*/ - IF( !is_ambisonics ) - { - current_base_L_ptr_re = ( ppHrtf_set_L_re[hrtf_idx] + base_idx ); // Q29 - current_base_R_ptr_re = ( ppHrtf_set_R_re[hrtf_idx] + base_idx ); // Q29 - current_base_L_ptr_im = ( ppHrtf_set_L_im[hrtf_idx] + base_idx ); // Q29 - current_base_R_ptr_im = ( ppHrtf_set_R_im[hrtf_idx] + base_idx ); // Q29 - } - - /* In case of FOA format, combine the W channel with the X/Y channels */ + /* otherwise use linear interpolation between 2 consecutive points in the input table */ ELSE { - FOR( freq_idx = 0; freq_idx < 2; freq_idx++ ) + WHILE( GT_32( pOutput_fc[output_idx], pInput_fc[input_idx + 1] ) ) { - combined_channels_L_re[freq_idx] = 0; - move32(); - combined_channels_R_re[freq_idx] = 0; - move32(); - combined_channels_L_im[freq_idx] = 0; - move32(); - combined_channels_R_im[freq_idx] = 0; - move32(); - - FOR( ch_index = 0; ch_index < 3; ch_index++ ) - { - combined_channels_L_re[freq_idx] = L_add( combined_channels_L_re[freq_idx], Mpy_32_16_1( ppHrtf_set_L_re[ch_index][base_idx + freq_idx], foa_sum_coeffs[hrtf_idx][ch_index] ) ); // Q29 + Q15 - 15 - move32(); - combined_channels_R_re[freq_idx] = L_add( combined_channels_R_re[freq_idx], Mpy_32_16_1( ppHrtf_set_R_re[ch_index][base_idx + freq_idx], foa_sum_coeffs[hrtf_idx][ch_index] ) ); // Q29 + Q15 - 15 - move32(); - combined_channels_L_im[freq_idx] = L_add( combined_channels_L_im[freq_idx], Mpy_32_16_1( ppHrtf_set_L_im[ch_index][base_idx + freq_idx], foa_sum_coeffs[hrtf_idx][ch_index] ) ); // Q29 + Q15 - 15 - move32(); - combined_channels_R_im[freq_idx] = L_add( combined_channels_R_im[freq_idx], Mpy_32_16_1( ppHrtf_set_R_im[ch_index][base_idx + freq_idx], foa_sum_coeffs[hrtf_idx][ch_index] ) ); // Q29 + Q15 - 15 - move32(); - } + input_idx = add( input_idx, 1 ); } - - current_base_L_ptr_re = &combined_channels_L_re[0]; // Q29 - current_base_R_ptr_re = &combined_channels_R_re[0]; // Q29 - current_base_L_ptr_im = &combined_channels_L_im[0]; // Q29 - current_base_R_ptr_im = &combined_channels_R_im[0]; // Q29 - } - - FOR( freq_idx = 0; freq_idx < 2; freq_idx++ ) - { - Word32 L_re, L_im, R_re, R_im, C_re; - - L_re = current_base_L_ptr_re[freq_idx]; // Q29 - R_re = current_base_R_ptr_re[freq_idx]; // Q29 - L_im = current_base_L_ptr_im[freq_idx]; // Q29 - R_im = current_base_R_ptr_im[freq_idx]; // Q29 - move32(); - move32(); - move32(); - move32(); - avg_pwr_left[freq_idx] = L_add( L_shr( L_add( Mpy_32_32( L_re, L_re ), Mpy_32_32( L_im, L_im ) ), 4 ), avg_pwr_left[freq_idx] ); // q = 23 - move32(); - avg_pwr_right[freq_idx] = L_add( L_shr( L_add( Mpy_32_32( R_re, R_re ), Mpy_32_32( R_im, R_im ) ), 4 ), avg_pwr_right[freq_idx] ); // q = 23 - move32(); - /* Cross product (Re part) */ - C_re = L_add( Mpy_32_32( L_re, R_re ), Mpy_32_32( L_im, R_im ) ); // q = 27 - - IA_coherence[freq_idx] = L_add( C_re, IA_coherence[freq_idx] ); // q = 27 - move32(); - } - } - - /* Compute the averages and the IA coherence */ - FOR( freq_idx = 0; freq_idx < 2; freq_idx++ ) - { - Word16 sqrt_exp = 0; - move16(); - Word32 var1; - avg_pwr_left[freq_idx] = Mpy_32_16_1( avg_pwr_left[freq_idx], hrtf_count_inverted ); // q = 23 - move32(); - avg_pwr_right[freq_idx] = Mpy_32_16_1( avg_pwr_right[freq_idx], hrtf_count_inverted ); // q = 23 - move32(); - IF( EQ_32( avg_pwr_left[freq_idx], avg_pwr_right[freq_idx] ) ) - { - var1 = avg_pwr_left[freq_idx]; - move32(); - sqrt_exp = 4; + rel_offset = BASOP_Util_Divide3232_Scale( L_sub( pOutput_fc[output_idx], pInput_fc[input_idx] ), L_sub( pInput_fc[input_idx + 1], pInput_fc[input_idx] ), &rel_offset_e ); // q15 + rel_offset = L_shl_sat( rel_offset, add( 16, rel_offset_e ) ); + rel_offset_e = 0; move16(); } - ELSE - { - var1 = Sqrt32( Mpy_32_32( avg_pwr_left[freq_idx], avg_pwr_right[freq_idx] ), &sqrt_exp ); - move32(); - } - Word16 temp; - IA_coherence[freq_idx] = BASOP_Util_Divide3232_Scale( Mpy_32_16_1( IA_coherence[freq_idx], hrtf_count_inverted ), L_shl( var1, sqrt_exp ), &temp ); // q =15 - move32(); - IA_coherence[freq_idx] = L_shl( IA_coherence[freq_idx], sub( 27, sub( 15, temp ) ) ); // q = 27 - move32(); - /* Limiting to (0...1) range in case of small numerical errors or negative values */ - IA_coherence[freq_idx] = L_min( IA_coherence[freq_idx], ONE_IN_Q27 ); // Q27 - move32(); - IA_coherence[freq_idx] = L_max( IA_coherence[freq_idx], 0 ); // Q27 - move32(); } - - /* Computing weighted average of 2 nearest values (1 below + 1 above) for linear interpolation */ - weight_1st = L_sub( ONE_IN_Q31, relative_pos ); // q = 31 - - pOut_avg_pwr_L[out_bin_idx] = L_add( Mpy_32_32( weight_1st, avg_pwr_left[0] ), Mpy_32_32( relative_pos, avg_pwr_left[1] ) ); // q = 23 - move32(); - pOut_avg_pwr_R[out_bin_idx] = L_add( Mpy_32_32( weight_1st, avg_pwr_right[0] ), Mpy_32_32( relative_pos, avg_pwr_right[1] ) ); // q = 23 + Word32 mult1; + Word16 mult_e = 0; + move16(); + mult1 = Mpy_32_32( rel_offset, L_sub( pInput_ene_l[input_idx + 1], pInput_ene_l[input_idx] ) ); + pOutput_ene_l_m[output_idx] = BASOP_Util_Add_Mant32Exp( pInput_ene_l[input_idx], 3, mult1, add( 3, rel_offset_e ), &mult_e ); // 31 - (31 - rel_offset_e + 28 - 31) move32(); - out_i_a_coherence[out_bin_idx] = L_add( Mpy_32_32( weight_1st, IA_coherence[0] ), Mpy_32_32( relative_pos, IA_coherence[1] ) ); // q = 27 + pOutput_ene_l_e[output_idx] = mult_e; + move16(); + + mult1 = Mpy_32_32( rel_offset, L_sub( pInput_ene_r[input_idx + 1], pInput_ene_r[input_idx] ) ); + pOutput_ene_r_m[output_idx] = BASOP_Util_Add_Mant32Exp( pInput_ene_r[input_idx], 3, mult1, add( 3, rel_offset_e ), &mult_e ); // 31 - (31 - rel_offset_e + 28 - 31) move32(); + pOutput_ene_r_e[output_idx] = mult_e; + move16(); } return; } +#endif diff --git a/lib_rend/ivas_reverb_fx.c b/lib_rend/ivas_reverb_fx.c index b90cfa91adb4fa08b9c6e1d9a8d70d79e8ba4b0c..5156911f327f550c558d1169dad100ffb7afde06 100644 --- a/lib_rend/ivas_reverb_fx.c +++ b/lib_rend/ivas_reverb_fx.c @@ -219,8 +219,12 @@ static void ivas_binaural_reverb_setPreDelay_fx( static void ivas_binaural_reverb_setReverbTimes_fx( REVERB_STRUCT_HANDLE hReverb, /* i/o: binaural reverb handle */ const Word32 output_Fs, /* i : sampling_rate */ - const Word32 *revTimes_fx, /*Q31 i : reverberation times T60 for each CLDFB bin in seconds */ - const Word32 *revEnes_fx /*Q31 i : spectrum for reverberated sound at each CLDFB bin */ +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT + const Word32 *revTimes_fx, /*Q26 i : reverberation times T60 for each CLDFB bin in seconds */ +#else + const Word32 *revTimes_fx, /*Q31 i : reverberation times T60 for each CLDFB bin in seconds */ +#endif + const Word32 *revEnes_fx /*Q31 i : spectrum for reverberated sound at each CLDFB bin */ ) { Word16 bin, ch, tap, sample; @@ -324,7 +328,11 @@ static void ivas_binaural_reverb_setReverbTimes_fx( /* Determine attenuation factor that generates the appropriate energy decay according to reverberation time */ L_tmp = Mpy_32_32( 1677721600, revTimes_fx[bin] ); // e10 --> 800 * 2^21, + e0 tmp = BASOP_Util_Divide3232_Scale( 1073741824, L_tmp, &scale ); +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT + scale = add( scale, sub( 1, 15 ) ); // revTimes_fx in Q26 +#else scale = add( scale, sub( 1, 10 ) ); +#endif L_tmp = Mpy_32_16_1( -1610612736, tmp ); // * -3 scale = add( 2, scale ); L_tmp = Mpy_32_32( 1783446563, L_tmp ); // scale + 2 @@ -1257,25 +1265,18 @@ 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, - const AUDIO_CONFIG input_audio_config, - const HRTFS_HANDLE hHrtf, IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pRoomAcoustics, - const Word16 subframe_len, const Word16 nr_fc_input, const Word16 nr_fc_fft_filter ) { - Word16 nr_out_ch, hrtf_idx, offset, iter_idx, bin_idx; - 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]; + int16_t bin_idx; Word32 ln_1e6_inverted_fx, delay_diff_fx, L_tmp; Word16 exp_argument_fx, tmp, tmp_flag, exp_argument_e; Word16 pow_exp; @@ -1290,47 +1291,6 @@ static void set_reverb_acoustic_data_fx( Word32 *pDsr_fx = pParams->pDsr_fx; Word16 *pDsr_e = pParams->pDsr_e; - /* use crend hrtf filters */ - IF( hHrtf != NULL ) - { - /* Compute HRTF set properties: average left/right energies, IA coherence */ - /* First, find the offset of the frequency-domain data for the 1st frame and assign HRTF pointers */ - FOR( nr_out_ch = 0; nr_out_ch < BINAURAL_CHANNELS; nr_out_ch++ ) - { - FOR( hrtf_idx = 0; hrtf_idx < hHrtf->max_num_ir; hrtf_idx++ ) - { - offset = 0; - move16(); - FOR( iter_idx = 0; iter_idx < hHrtf->num_iterations[hrtf_idx][nr_out_ch] - 1; iter_idx++ ) - { - offset = add( offset, hHrtf->pIndex_frequency_max[hrtf_idx][nr_out_ch][iter_idx] ); - } - - IF( EQ_16( nr_out_ch, 0 ) ) - { - pHrtf_set_l_re_fx[hrtf_idx] = &hHrtf->pOut_to_bin_re_fx[hrtf_idx][0][offset]; - pHrtf_set_l_im_fx[hrtf_idx] = &hHrtf->pOut_to_bin_im_fx[hrtf_idx][0][offset]; - } - ELSE - { - pHrtf_set_r_re_fx[hrtf_idx] = &hHrtf->pOut_to_bin_re_fx[hrtf_idx][1][offset]; - pHrtf_set_r_im_fx[hrtf_idx] = &hHrtf->pOut_to_bin_im_fx[hrtf_idx][1][offset]; - } - } - } - - /* Compute HRTF set properties using frequency-domain HRTF data */ - Word32 *pHrtf_avg_pwr_response_l_fx = pParams->pHrtf_avg_pwr_response_l_fx; - Word32 *pHrtf_avg_pwr_response_r_fx = pParams->pHrtf_avg_pwr_response_r_fx; - Word32 *pHrtf_inter_aural_coherence_fx = pParams->pHrtf_inter_aural_coherence_fx; - ivas_reverb_get_hrtf_set_properties_fx( pHrtf_set_l_re_fx, pHrtf_set_l_im_fx, pHrtf_set_r_re_fx, pHrtf_set_r_im_fx, input_audio_config, hHrtf->max_num_ir, subframe_len, - nr_fc_fft_filter, pHrtf_avg_pwr_response_l_fx, pHrtf_avg_pwr_response_r_fx, pHrtf_inter_aural_coherence_fx ); - - pParams->pHrtf_avg_pwr_response_l_const_fx = (const Word32 *) pParams->pHrtf_avg_pwr_response_l_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; - } - /* 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 +1421,10 @@ static ivas_error setup_FDN_branches_fx( *------------------------------------------------------------------------*/ ivas_error ivas_reverb_open_fx( - REVERB_HANDLE *hReverb, /* i/o: Reverberator handle */ - 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 */ -) + REVERB_HANDLE *hReverb, /* i/o: Reverberator handle */ + const HRTFS_STATISTICS_HANDLE hHrtfStatistics, /* i : HRTF statistics handle */ + RENDER_CONFIG_HANDLE hRenderConfig, /* i : Renderer configuration handle */ + const int32_t output_Fs ) { ivas_error error; REVERB_HANDLE pState = NULL; @@ -1541,12 +1498,7 @@ ivas_error ivas_reverb_open_fx( } test(); - IF( hHrtf == NULL && lr_energy_and_iac_fx != NULL ) - { - params.pHrtf_avg_pwr_response_l_const_fx = lr_energy_and_iac_fx[0]; - params.pHrtf_avg_pwr_response_r_const_fx = lr_energy_and_iac_fx[1]; - params.pHrtf_inter_aural_coherence_const_fx = lr_energy_and_iac_fx[2]; - } + /* set up reverb acoustic data on the basis of HRTF data and renderer config */ Scale_sig32( params.pFc_fx, nr_fc_fft_filter, 2 ); Word16 *pRt60_e = (Word16 *) malloc( sizeof( Word16 ) * nr_fc_fft_filter ); @@ -1555,7 +1507,7 @@ ivas_error ivas_reverb_open_fx( params.pRt60_e = pRt60_e; params.pDsr_e = pDsr_e; - set_reverb_acoustic_data_fx( ¶ms, input_audio_config, hHrtf, &hRenderConfig->roomAcoustics, subframe_len, nr_fc_input, nr_fc_fft_filter ); + set_reverb_acoustic_data_fx( ¶ms, &hRenderConfig->roomAcoustics, nr_fc_input, nr_fc_fft_filter ); Scale_sig32( params.pFc_fx, nr_fc_fft_filter, -2 ); FOR( i = 0; i < nr_fc_fft_filter; i++ ) { @@ -1565,6 +1517,11 @@ ivas_error ivas_reverb_open_fx( move32(); } + 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; + + /* set reverb acoustic configuration based on renderer config */ pState->pConfig.roomAcoustics.override = hRenderConfig->roomAcoustics.override; move16(); @@ -1603,9 +1560,9 @@ ivas_error ivas_reverb_open_fx( { params.pDsr_fx[i] = L_shl( params.pDsr_fx[i], params.pDsr_e[i] ); move32(); - pHrtf_avg_pwr_response_l_const[i] = L_shl( params.pHrtf_avg_pwr_response_l_const_fx[i], 5 ); /*Q23+5*/ + pHrtf_avg_pwr_response_l_const[i] = params.pHrtf_avg_pwr_response_l_const_fx[i]; /*Q28*/ move32(); - pHrtf_avg_pwr_response_r_const[i] = L_shl( params.pHrtf_avg_pwr_response_r_const_fx[i], 5 ); /*Q23+5*/ + pHrtf_avg_pwr_response_r_const[i] = params.pHrtf_avg_pwr_response_r_const_fx[i]; /*Q23+5*/ move32(); } FOR( i = 0; i < lenT60_filter_coeff; i++ ) @@ -1727,8 +1684,6 @@ ivas_error ivas_reverb_open_fx( { return error; } - free( pDsr_e ); - free( pRt60_e ); *hReverb = pState; return error; @@ -2324,9 +2279,13 @@ static ivas_error ivas_binaural_reverb_open_fx( const Word16 numBins, /* i : Q0 number of CLDFB bins */ const Word16 numCldfbSlotsPerFrame, /* i : Q0 number of CLDFB slots per frame */ const Word32 sampling_rate, /* i : Q0 sampling rate */ - const Word32 *revTimes_fx, /* i : Q31 reverberation times T60 for each CLDFB bin in seconds */ - const Word32 *revEnes_fx, /* i : Q31 spectrum for reverberated sound at each CLDFB bin */ - const Word16 preDelay /* i : Q0 reverb pre-delay in CLDFB slots */ +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT + const Word32 *revTimes_fx, /* i : Q26 reverberation times T60 for each CLDFB bin in seconds */ +#else + const Word32 *revTimes_fx, /* i : Q31 reverberation times T60 for each CLDFB bin in seconds */ +#endif + const Word32 *revEnes_fx, /* i : Q31 spectrum for reverberated sound at each CLDFB bin */ + const Word16 preDelay /* i : Q0 reverb pre-delay in CLDFB slots */ ) { Word16 bin, chIdx, k, len, scale, tmp; @@ -2384,9 +2343,15 @@ static ivas_error ivas_binaural_reverb_open_fx( * but not excessively long loops to generate reverberation. */ /* Note: the resulted length is very sensitive to the precision of the constants below (e.g. 1.45 vs. 1.45f) */ // hReverb->loopBufLength[bin] = (int16_t) ( 1.45 * (int16_t) ( revTimes[bin] * 150.0 ) + 1 ); +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT + Word32 L_tmp_BufLength = L_shl( L_shr( Mpy_32_32( revTimes_fx[bin], 1258291200 /*150.0 in Q23*/ ), 18 ), 18 ); + L_tmp_BufLength = L_add( Mpy_32_32( 1556925645 /*1.45 in Q30*/, L_tmp_BufLength ), ONE_IN_Q17 ); + hReverb->loopBufLength[bin] = (Word16) L_shr( L_tmp_BufLength, 17 ); /*Q0*/ +#else Word32 L_tmp_BufLength = L_shl( L_shr( Mpy_32_32( revTimes_fx[bin], 1258291200 /*150.0 in Q23*/ ), 23 ), 23 ); L_tmp_BufLength = L_add( Mpy_32_32( 1556925645 /*1.45 in Q30*/, L_tmp_BufLength ), ONE_IN_Q22 ); hReverb->loopBufLength[bin] = (Word16) L_shr( L_tmp_BufLength, 22 ); /*Q0*/ +#endif move16(); hReverb->loopBufLength[bin] = s_min( hReverb->loopBufLength[bin], hReverb->loopBufLengthMax[bin] ); @@ -2439,18 +2404,20 @@ static ivas_error ivas_binaural_reverb_open_fx( } /*------------------------------------------------------------------------- - * ivas_binaural_reverb_open_fastconv() + * ivas_binaural_reverb_init() * - * Allocate and initialize binaural room reverberator handle for FastConv + * Allocate and initialize binaural room reverberator handle + * for CLDFB renderers *------------------------------------------------------------------------*/ -ivas_error ivas_binaural_reverb_open_fastconv_fx( - REVERB_STRUCT_HANDLE *hReverbPr, /* i/o: binaural reverb handle */ - const Word16 numBins, /* i : number of CLDFB bins */ - const Word16 numCldfbSlotsPerFrame, /* i : number of CLDFB slots per frame */ - IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */ - const AUDIO_CONFIG internal_config, /* i : internal audio config for FastConv */ - const Word32 sampling_rate, /* i : sampling rate */ - const HRTFS_FASTCONV_HANDLE hHrtfFastConv /* i : FastConv HRTF handle */ +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; @@ -2459,85 +2426,52 @@ ivas_error ivas_binaural_reverb_open_fastconv_fx( Word32 t60[CLDFB_NO_CHANNELS_MAX]; Word32 ene[CLDFB_NO_CHANNELS_MAX]; Word16 preDelay; +#ifdef FIX_1831_REVERB_REGRESSION + Word16 temp16, s; + Word32 temp32; +#endif error = IVAS_ERR_OK; - IF( ( roomAcoustics != NULL ) && roomAcoustics->override ) + if ( ( roomAcoustics != NULL ) && roomAcoustics->override ) { - /* 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]; + float t60_temp[CLDFB_NO_CHANNELS_MAX]; + float ene_temp[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 ( ( error = ivas_reverb_prepare_cldfb_params( roomAcoustics, hHrtfStatistics, sampling_rate, t60_temp, ene_temp ) ) != 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 ); - } - ELSE - { - revTimes = hHrtfFastConv->fastconvReverberationTimes_fx; /*Q31*/ - revEne = hHrtfFastConv->fastconvReverberationEneCorrections_fx; /*Q31*/ - preDelay = 10; - move16(); - } - - error = ivas_binaural_reverb_open_fx( hReverbPr, numBins, numCldfbSlotsPerFrame, sampling_rate, revTimes, revEne, preDelay ); - - 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 */ - IVAS_ROOM_ACOUSTICS_CONFIG_DATA *roomAcoustics, /* i/o: room acoustics parameters */ - const Word32 sampling_rate, /* i : sampling rate Q0 */ - const HRTFS_PARAMBIN_HANDLE hHrtfParambin /* i : Parametric binauralizer HRTF handle */ -) -{ - 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 ) - { - revTimes = t60; - revEne = ene; - preDelay = (Word16) L_shr_r( Mpy_32_32( 1677721600 /*800 in Q21*/, roomAcoustics->acousticPreDelay_fx /*Q27*/ ), Q17 ); /*Q0*/ - move16(); - } - ELSE - { - revTimes = hHrtfParambin->parametricReverberationTimes_fx; /*Q31*/ - revEne = hHrtfParambin->parametricReverberationEneCorrections_fx; /*Q31*/ +#ifdef FIX_1831_REVERB_REGRESSION + temp16 = BASOP_Util_Divide3216_Scale( 48000, CLDFB_NO_CHANNELS_MAX, &s ); + temp16 = shl( temp16, s ); // Q0 + temp32 = Mult_32_16( roomAcoustics->acousticPreDelay_fx, temp16 ); // Q11 + preDelay = extract_l( L_shr( L_add( temp32, L_shl( 1, 10 ) ), 11 ) ); // Q0 +#else + preDelay = (int16_t) roundf( 48000.0f * roomAcoustics->acousticPreDelay / CLDFB_NO_CHANNELS_MAX ); +#endif +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT + floatToFixed_arrL( t60_temp, t60, Q26, CLDFB_NO_CHANNELS_MAX ); +#else + floatToFixed_arrL( t60_temp, t60, Q31, CLDFB_NO_CHANNELS_MAX ); +#endif + floatToFixed_arrL( ene_temp, ene, Q31, CLDFB_NO_CHANNELS_MAX ); + } + else + { + revTimes = defaultTimes; + revEne = defaultEne; preDelay = 10; - move16(); } error = ivas_binaural_reverb_open_fx( hReverbPr, numBins, numCldfbSlotsPerFrame, sampling_rate, revTimes, revEne, preDelay ); return error; } - /*------------------------------------------------------------------------- * ivas_binaural_reverb_close() * diff --git a/lib_rend/ivas_reverb_utils_fx.c b/lib_rend/ivas_reverb_utils_fx.c index b3e1e72fa1f947d9930e486943970c422f2097a3..cfbfd7315531db353d9c2eda2fa0191edfdec682 100644 --- a/lib_rend/ivas_reverb_utils_fx.c +++ b/lib_rend/ivas_reverb_utils_fx.c @@ -64,8 +64,7 @@ typedef struct cldfb_convolver_state float filter_states_im[BINAURAL_CONVBANDS][CLDFB_CONVOLVER_NTAPS_MAX]; } cldfb_convolver_state; -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 ); - +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 ); /*-----------------------------------------------------------------------------------------* * Function ivas_reverb_prepare_cldfb_params() @@ -73,57 +72,45 @@ static ivas_error ivas_reverb_get_fastconv_hrtf_set_energies( const HRTFS_FASTCO * Prepares reverb parameters for CLDFB-based reverberator *-----------------------------------------------------------------------------------------*/ + ivas_error ivas_reverb_prepare_cldfb_params( - IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, - const HRTFS_FASTCONV_HANDLE hHrtfFastConv, - const AUDIO_CONFIG input_audio_config, - const int16_t use_brir, + const IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pInput_params, + const HRTFS_STATISTICS_HANDLE hHrtfStatistics, const int32_t output_Fs, float *pOutput_t60, float *pOutput_ene ) { int16_t idx; - float fc[CLDFB_NO_CHANNELS_MAX]; float avg_pwr_left[CLDFB_NO_CHANNELS_MAX]; float avg_pwr_right[CLDFB_NO_CHANNELS_MAX]; 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; - ivas_error error; - - 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 ) ); - } - Word32 *fc_fx = (Word32 *) malloc( pInput_params->nBands * sizeof( Word32 * ) ); - Word32 *pOutput_t60_fx = (Word32 *) malloc( pInput_params->nBands * sizeof( Word32 * ) ); - Word16 *pOutput_t60_e = (Word16 *) malloc( pInput_params->nBands * sizeof( Word16 * ) ); - Word32 *pOutput_ene_fx = (Word32 *) malloc( pInput_params->nBands * sizeof( Word32 * ) ); - Word16 *pOutput_ene_e = (Word16 *) malloc( pInput_params->nBands * sizeof( Word16 * ) ); + Word32 output_fc_fx[CLDFB_NO_CHANNELS_MAX]; + Word32 output_t60_fx[CLDFB_NO_CHANNELS_MAX]; + Word16 output_t60_e[CLDFB_NO_CHANNELS_MAX]; + Word32 output_ene_fx[CLDFB_NO_CHANNELS_MAX]; + Word16 output_ene_e[CLDFB_NO_CHANNELS_MAX]; Word32 delay_diff_fx; - for ( int i = 0; i < pInput_params->nBands; i++ ) + for ( idx = 0; idx < CLDFB_NO_CHANNELS_MAX; idx++ ) { - fc_fx[i] = (Word32) fc[i] * ONE_IN_Q16; + output_fc_fx[idx] = (Word32) ( ( idx + 0.5f ) * ( MAX_SAMPLING_RATE / ( 2 * CLDFB_NO_CHANNELS_MAX ) ) ) * ONE_IN_Q16; } ivas_reverb_interpolate_acoustic_data_fx( pInput_params->nBands, pInput_params->pFc_input_fx, pInput_params->pAcoustic_rt60_fx, pInput_params->pAcoustic_dsr_fx, - CLDFB_NO_CHANNELS_MAX, fc_fx, pOutput_t60_fx, pOutput_ene_fx, pOutput_t60_e, pOutput_ene_e ); + CLDFB_NO_CHANNELS_MAX, output_fc_fx, output_t60_fx, output_ene_fx, output_t60_e, output_ene_e ); /* adjust DSR for the delay difference */ delay_diff_fx = L_sub( pInput_params->inputPreDelay_fx, pInput_params->acousticPreDelay_fx ); delay_diff = (float) delay_diff_fx / ONE_IN_Q27; - for ( int i = 0; i < pInput_params->nBands; i++ ) + for ( int i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) { - pOutput_t60[i] = (float) fabs( me2f( pOutput_t60_fx[i], pOutput_t60_e[i] ) ); - pOutput_ene[i] = (float) fabs( me2f( pOutput_ene_fx[i], pOutput_ene_e[i] ) ); + pOutput_t60[i] = (float) fabs( me2f( output_t60_fx[i], output_t60_e[i] ) ); + pOutput_ene[i] = (float) fabs( me2f( output_ene_fx[i], output_ene_e[i] ) ); } - free( fc_fx ); - free( pOutput_t60_fx ); - free( pOutput_t60_e ); - free( pOutput_ene_fx ); - free( pOutput_ene_e ); + ln_1e6_inverted = 1.0f / logf( 1e06f ); for ( idx = 0; idx < CLDFB_NO_CHANNELS_MAX; idx++ ) { @@ -133,11 +120,7 @@ ivas_error ivas_reverb_prepare_cldfb_params( exp_argument = max( exp_argument, -23.0f ); pOutput_ene[idx] *= expf( exp_argument ); } - - 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; - } + ivas_reverb_set_energies( hHrtfStatistics->average_energy_l, hHrtfStatistics->average_energy_r, output_Fs, avg_pwr_left, avg_pwr_right ); for ( idx = 0; idx < CLDFB_NO_CHANNELS_MAX; idx++ ) { @@ -149,186 +132,92 @@ ivas_error ivas_reverb_prepare_cldfb_params( /*-----------------------------------------------------------------------------------------* - * Function ivas_cldfb_convolver() - * - * Function for convolving CLDFB-domain data with filter taps - *-----------------------------------------------------------------------------------------*/ - - -/*-----------------------------------------------------------------------------------------* - * Function get_IR_from_filter_taps() - * - * Function converts CLDFB filter taps into time-domain data - *-----------------------------------------------------------------------------------------*/ - - -/*-----------------------------------------------------------------------------------------* - * Function ivas_reverb_get_cldfb_hrtf_set_properties() + * Function ivas_reverb_set_energies() * - * Function analyses the HRTF set and computes avarage left/right power spectrum - * and frequency-dependent IA coherence. - * Uses fastconv renderer filter taps to compute energies + * Function gets the precalculated left/right energies and computes average + * left/right energies to CLDFB bin center frequencies. *-----------------------------------------------------------------------------------------*/ -static ivas_error ivas_reverb_get_cldfb_hrtf_set_properties( - AUDIO_CONFIG input_audio_config, - const HRTFS_FASTCONV_HANDLE hHrtfFastConv, - const int16_t use_brir, +static void ivas_reverb_set_energies( + const Word32 *avg_pwr_l, + const Word32 *avg_pwr_r, const int32_t sampling_rate, float *avg_pwr_left, float *avg_pwr_right ) { - float current_HRTF_data_L[L_FRAME48k]; - float current_HRTF_data_R[L_FRAME48k]; - int16_t freq_idx, hrtf_idx, hrtf_count; - float hrtf_count_inverted; - int16_t fft_size, log2_fft_size, half_fft_size, freq_count; - ivas_error error; - UNUSED_PARAM( error ); - fft_size = RV_FILTER_MAX_FFT_SIZE; - Word16 IR_length; - IR_length = CLDFB_NO_CHANNELS_MAX * ( ( fft_size + CLDFB_NO_CHANNELS_MAX - 1 ) / CLDFB_NO_CHANNELS_MAX ); - log2_fft_size = int_log2( fft_size ); - half_fft_size = fft_size >> 1; - freq_count = 1 + half_fft_size; - - /* chosing between ambisonics, 5.1 and 7.1 MC audio */ - if ( ( input_audio_config == IVAS_AUDIO_CONFIG_FOA ) || ( input_audio_config == IVAS_AUDIO_CONFIG_HOA2 ) || ( input_audio_config == IVAS_AUDIO_CONFIG_HOA3 ) ) - { - hrtf_count = 1; - } - else if ( input_audio_config == IVAS_AUDIO_CONFIG_7_1 ) - { - hrtf_count = 7; - } - else - { - hrtf_count = 5; - input_audio_config = IVAS_AUDIO_CONFIG_5_1; - } + int16_t freq_idx; + float input_fc[FFT_SPECTRUM_SIZE]; +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT + Word32 input_fc_fx[FFT_SPECTRUM_SIZE]; + Word32 output_fc_fx[CLDFB_NO_CHANNELS_MAX]; + Word32 avg_pwr_left_fx[CLDFB_NO_CHANNELS_MAX]; + Word16 avg_pwr_left_e[CLDFB_NO_CHANNELS_MAX]; + Word32 avg_pwr_right_fx[CLDFB_NO_CHANNELS_MAX]; + Word16 avg_pwr_right_e[CLDFB_NO_CHANNELS_MAX]; + const Word16 cldfb_freq_halfstep = MAX_SAMPLING_RATE / ( 4 * CLDFB_NO_CHANNELS_MAX ); +#endif - /* Zeroing before accumalation for average value computing */ - for ( freq_idx = 0; freq_idx < freq_count; freq_idx++ ) - { - avg_pwr_left[freq_idx] = 0.0f; - avg_pwr_right[freq_idx] = 0.0f; - } - /* Get power spectra and cross - correlation between left and right hrtfs - Loop over all the HRTFs available */ - for ( hrtf_idx = 0; hrtf_idx < hrtf_count; hrtf_idx++ ) - { - UNUSED_PARAM( hHrtfFastConv ); - UNUSED_PARAM( use_brir ); - UNUSED_PARAM( sampling_rate ); - UNUSED_PARAM( IR_length ); - - /* Perform forward FFT on both L/R channels */ - fft_rel( current_HRTF_data_L, (int16_t) fft_size, (int16_t) log2_fft_size ); - fft_rel( current_HRTF_data_R, (int16_t) fft_size, (int16_t) log2_fft_size ); - - /* Process the DC bin (without img part) */ - avg_pwr_left[0] += current_HRTF_data_L[0] * current_HRTF_data_L[0]; - avg_pwr_right[0] += current_HRTF_data_R[0] * current_HRTF_data_R[0]; - - /* Process the Nyquist frequency bin (without img part) */ - avg_pwr_left[half_fft_size] += current_HRTF_data_L[half_fft_size] * current_HRTF_data_L[half_fft_size]; - avg_pwr_right[half_fft_size] += current_HRTF_data_R[half_fft_size] * current_HRTF_data_R[half_fft_size]; - - /* Process the other frequency bins containing both real and img parts */ - for ( freq_idx = 1; freq_idx < half_fft_size; freq_idx++ ) - { - float L_re, L_im, R_re, R_im; - L_re = current_HRTF_data_L[freq_idx]; - R_re = current_HRTF_data_R[freq_idx]; - L_im = current_HRTF_data_L[fft_size - freq_idx]; - R_im = current_HRTF_data_R[fft_size - freq_idx]; - - avg_pwr_left[freq_idx] += L_re * L_re + L_im * L_im; - avg_pwr_right[freq_idx] += R_re * R_re + R_im * R_im; - } - } + const int16_t avg_pwr_len = sampling_rate == 16000 ? LR_IAC_LENGTH_NR_FC_16KHZ : LR_IAC_LENGTH_NR_FC; - /* Compute the averages and the IA coherence */ - hrtf_count_inverted = 1.0f / (float) hrtf_count; - for ( freq_idx = 0; freq_idx < freq_count; freq_idx++ ) + for ( freq_idx = 0; freq_idx < avg_pwr_len; freq_idx++ ) { - avg_pwr_left[freq_idx] *= hrtf_count_inverted; - avg_pwr_right[freq_idx] *= hrtf_count_inverted; + input_fc[freq_idx] = freq_idx * ( 0.5f * sampling_rate / (float) ( avg_pwr_len - 1 ) ); +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT + input_fc_fx[freq_idx] = input_fc[freq_idx] * ONE_IN_Q16; +#endif } - return IVAS_ERR_OK; -} - - -/*-----------------------------------------------------------------------------------------* - * Function ivas_reverb_get_fastconv_hrtf_set_energies() - * - * Function analyses the HRTF set and computes avarage left/right power spectrum. - * Uses fastconv renderer filter taps to compute energies. Output interpolated - * to CLDFB bin center frequencies - *-----------------------------------------------------------------------------------------*/ - -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 ) -{ - int16_t freq_idx; - float avg_pwr_left_fft[FFT_SPECTRUM_SIZE]; - float avg_pwr_right_fft[FFT_SPECTRUM_SIZE]; - float input_fc[FFT_SPECTRUM_SIZE]; - ivas_error error; - - for ( freq_idx = 0; freq_idx < FFT_SPECTRUM_SIZE; freq_idx++ ) +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT + for ( freq_idx = 0; freq_idx < CLDFB_NO_CHANNELS_MAX; freq_idx++ ) { - input_fc[freq_idx] = freq_idx * ( 0.5f * sampling_rate / (float) ( FFT_SPECTRUM_SIZE - 1 ) ); + output_fc_fx[freq_idx] = ( ( freq_idx << 1 ) + 1 ) * cldfb_freq_halfstep * ONE_IN_Q16; } +#endif +#ifndef FIX_1741_REVERB_TIMES_Q_FORMAT - 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; - } - Word32 *input_fc_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); - Word32 *avg_pwr_left_fft_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); - Word32 *avg_pwr_right_fft_fx = (Word32 *) malloc( 60 * sizeof( Word32 * ) ); + Word32 *input_fc_fx = (Word32 *) malloc( 60 * sizeof( Word32 ) ); - Word32 *output_fc_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) ); - Word32 *avg_pwr_left_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) ); - Word16 *avg_pwr_left_e = (Word16 *) malloc( 257 * sizeof( Word16 * ) ); - Word32 *avg_pwr_right_fx = (Word32 *) malloc( 257 * sizeof( Word32 * ) ); - Word16 *avg_pwr_right_e = (Word16 *) malloc( 257 * sizeof( Word16 * ) ); + Word32 *output_fc_fx = (Word32 *) malloc( avg_pwr_len * sizeof( Word32 ) ); + Word16 *avg_pwr_left_e = (Word16 *) malloc( avg_pwr_len * sizeof( Word16 ) ); + Word16 *avg_pwr_right_e = (Word16 *) malloc( avg_pwr_len * sizeof( Word16 ) ); + Word32 *avg_pwr_left_fx = (Word32 *) malloc( avg_pwr_len * sizeof( Word32 ) ); + Word32 *avg_pwr_right_fx = (Word32 *) malloc( avg_pwr_len * sizeof( Word32 ) ); +#endif +#ifndef FIX_1741_REVERB_TIMES_Q_FORMAT for ( int i = 0; i < 60; i++ ) { input_fc_fx[i] = (Word32) input_fc[i] * ( 1 << 16 ); - avg_pwr_left_fft_fx[i] = (Word32) ( avg_pwr_left_fft[i] ) * ONE_IN_Q26; - avg_pwr_right_fft_fx[i] = (Word32) avg_pwr_right_fft[i] * ONE_IN_Q30; } for ( int i = 0; i < 257; i++ ) { output_fc_fx[i] = (Word32) input_fc[i] * ONE_IN_Q16; } +#endif - ivas_reverb_interpolate_acoustic_data_fx( FFT_SPECTRUM_SIZE, input_fc_fx, avg_pwr_left_fft_fx, avg_pwr_right_fft_fx, +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT + ivas_reverb_interpolate_energies_fx( avg_pwr_len, 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 ); +#else + 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++ ) +#endif + + for ( int i = 0; i < 60; 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] ) ); } + +#ifndef FIX_1741_REVERB_TIMES_Q_FORMAT free( input_fc_fx ); - free( avg_pwr_left_fft_fx ); - free( avg_pwr_right_fft_fx ); free( output_fc_fx ); - free( avg_pwr_left_fx ); free( avg_pwr_left_e ); - free( avg_pwr_right_fx ); free( avg_pwr_right_e ); - return IVAS_ERR_OK; + free( avg_pwr_left_fx ); + free( avg_pwr_right_fx ); +#endif } diff --git a/lib_rend/ivas_rom_binauralRenderer.h b/lib_rend/ivas_rom_binauralRenderer.h index 4b1428ac8b572025872d6acbb27a371c452f1aec..1027c482b901b9e54b7ba92594539c10e688422c 100644 --- a/lib_rend/ivas_rom_binauralRenderer.h +++ b/lib_rend/ivas_rom_binauralRenderer.h @@ -60,7 +60,7 @@ extern Word32 rightHRIRImag_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NT extern Word32 FASTCONV_HOA3_latency_s_fx; extern Word32 FASTCONV_HOA2_latency_s_fx; extern Word32 FASTCONV_FOA_latency_s_fx; -extern Word16 hrtfShCoeffsRe_fx[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; /* Q15 */ +extern Word16 hrtfShCoeffsRe_fx[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; /* Q14 */ extern Word16 hrtfShCoeffsIm_fx[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; /* Q14 */ @@ -72,12 +72,20 @@ extern Word32 rightBRIRReal_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NT extern Word32 rightBRIRImag_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; /* Q29 */ /* Reverberation parameters based on BRIRs for fastconv */ -extern Word32 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT +extern Word32 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /* Q26 */ +#else +extern Word32 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ +#endif extern Word32 fastconvReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ /* Binaural rendering data set based on BRIRs, to be used in a combined manner * with the above binaural rendering data set based on HRIRs for parametric * renderer */ -extern const Word32 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT +extern const Word32 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /* Q26 */ +#else +extern const Word32 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ +#endif extern const Word32 parametricReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ extern const Word32 parametricEarlyPartEneCorrection_fx[CLDFB_NO_CHANNELS_MAX]; /* Q28 */ diff --git a/lib_rend/ivas_rom_binauralRenderer_fx.c b/lib_rend/ivas_rom_binauralRenderer_fx.c index e7dbbae70cec37257840afd3173d8aa4a751508f..7333868b077e51b76744a67c8058787b265df080 100644 --- a/lib_rend/ivas_rom_binauralRenderer_fx.c +++ b/lib_rend/ivas_rom_binauralRenderer_fx.c @@ -47155,10 +47155,24 @@ const Word32 rightBRIRImag_fx[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTA }, }; + +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT +const Word32 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX] /* Q26 */ = +{ + 28803192, 13764699, 13578673, 13984346, 14472966, 15874266, 15475170, 15327665, + 15265052, 14693888, 15172173, 14811061, 14864680, 14996885, 15012588, 15237940, + 15294043, 14970041, 14763950, 14668857, 14791934, 14646510, 14310965, 14115209, + 13919519, 13337887, 13170115, 13080658, 12773031, 12381585, 12101943, 11822367, + 11844714, 11917393, 12320047, 13147767, 13639877, 13986628, 14406059, 14763950, + 14959707, 15463023, 15698642, 15679785, 15860039, 15933523, 16215448, 16181155, + 16028751, 16266115, 16528376, 16505291, 16515491, 16468247, 16371274, 16382817 +}; +#else const Word32 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX] /* Q31 */= { 921702144, 440470368, 434517536, 447499072, 463134912, 507976512, 495205440, 490485280, 488481664, 470204416, 485509536, 473953952, 475669760, 479900320, 480402816, 487614080, 489409376, 479041312, 472446400, 469403424, 473341888, 468688320, 457950880, 451686688, 445424608, 426812384, 421443680, 418581056, 408736992, 396210720, 387262176, 378315744, 379030848, 381356576, 394241504, 420728544, 436476064, 447572096, 460993888, 472446400, 478710624, 494816736, 502356544, 501753120, 507521248, 509872736, 518894336, 517796960, 512920032, 520515680, 528908032, 528169312, 528495712, 526983904, 523880768, 524250144, 513828416, 518561472, 504280704, 543399232 }; +#endif const Word32 fastconvReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX] /* Q31 */= @@ -47167,6 +47181,19 @@ const Word32 fastconvReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX] /* Q }; +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT +const Word32 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX] /* Q26 */ = +{ + 23185710, 21438196, 22344634, 24221132, 25118780, 24882424, 24066916, 23360796, + 23025656, 22236590, 21240090, 20466526, 19787384, 19297086, 18785114, 18137982, + 17719558, 17206982, 16770438, 16243029, 15775549, 15411349, 15014266, 14683084, + 14267277, 13937773, 13561493, 13293863, 13012878, 12476075, 12259246, 12211129, + 12065368, 12017922, 11847533, 11564736, 11482528, 11271001, 11272544, 11355424, + 11229997, 11135105, 10976661, 10841974, 10630380, 10512671, 10425429, 10306579, + 10172093, 10063847, 9945802, 9827825, 9709847, 9591870, 9473893, 9355915, + 9237871, 9119893, 9001916, 8883939 +}; +#else const Word32 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX] /* Q31 */= { 741942720,686022272,715028288,775076224,803800960,796237568,770141312,747545472,736820992, @@ -47177,6 +47204,7 @@ const Word32 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX] /* Q31 */= 336405472,333613728,329810528,325506976,322043104,318265664,314490400,310715104,306939840, 303164576,299389280,295611872,291836576,288061312,284286048 }; +#endif const Word32 parametricReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX] /* Q31 */= diff --git a/lib_rend/ivas_rom_binaural_crend_head.h b/lib_rend/ivas_rom_binaural_crend_head.h index 2b4c3e919fcb39f74d9d8ae84b4a89ea1bf52ecf..77d54a5d3e9ee777b2db8d6d75f4893ea64a4994 100644 --- a/lib_rend/ivas_rom_binaural_crend_head.h +++ b/lib_rend/ivas_rom_binaural_crend_head.h @@ -57,42 +57,42 @@ 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]; +extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; 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]; +extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; 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]; +extern Word16 CRendBin_Combined_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; 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 +106,42 @@ 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]; +extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]; 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]; +extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]; 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]; +extern Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]; 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 +154,42 @@ 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]; +extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]; 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]; +extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]; 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]; +extern Word16 CRendBin_HOA2_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HOA2_CHANNELS]; 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 +201,42 @@ 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]; +extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]; 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]; +extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]; 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]; +extern Word16 CRendBin_HOA3_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HOA3_CHANNELS]; 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 +249,55 @@ 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]; +extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; 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]; +extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; 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]; +extern Word16 CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][HRTF_LS_CHANNELS]; 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]; + +extern float defaultHRIR_coherence_48kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-27*/ +extern float defaultHRIR_left_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ +extern float defaultHRIR_right_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ + +extern float defaultHRIR_coherence_32kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-27*/ +extern float defaultHRIR_left_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ +extern float defaultHRIR_right_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC]; /*Q-23*/ + +extern float defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-27*/ +extern float defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-23*/ +extern float defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ]; /*Q-23*/ + #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..a14d7513739b5a9bd7dbbf1db456be6597003ad9 100644 --- a/lib_rend/ivas_rom_binaural_crend_head_fx.c +++ b/lib_rend/ivas_rom_binaural_crend_head_fx.c @@ -57,33 +57,33 @@ 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,}; +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}}; 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,}; +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}}; 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,}; +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}}; 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 +97,33 @@ 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}; +const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_48kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]={{0, 0, 0, 0},{0, 0, 0, 0}}; 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}; +const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_32kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]={{0, 0, 0, 0},{0, 0, 0, 0}}; 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}; +const Word16 CRendBin_FOA_HRIR_inv_diffuse_weight_16kHz_fx[BINAURAL_CHANNELS][FOA_CHANNELS]={{0, 0, 0, 0},{0, 0, 0, 0}}; 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 +136,33 @@ 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}; +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}}; 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}; +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}}; 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}; +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}}; 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 +174,34 @@ 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}; +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}}; 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}; +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}}; 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}; +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}}; +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 +213,59691 @@ 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,}; +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}}; 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,}; +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}}; 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}; +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}}; 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, 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, }, }, { { -11621645, --12662637, 12901008, 18407156, -12460774, -26243860, 22013854, 87203944, 81292992, -10214506, -105698072, --122505888, -56635048, 34244312, 87755312, 70377872, -3514894, -68105296, -56239376, 24912958, 94054416, -88859656, 32216012, -11744588, -16888348, -3045132, 10651519, 24802900, 40087076, 47873852, 43004972, -29452738, 11979201, -7521562, -26468810, -42553464, -57022672, -71507984, -83610128, -89570472, -88812944, --83004536, -73455752, -61811560, -50697256, -41634340, -33958696, -26524108, -18781892, -10123238, -8590, -11195369, 22897008, 35459248, 49500572, 64513092, 79195440, 92606472, 104193760, 113225536, 118956096, -121067072, 119553632, 114368000, 105315816, 92148520, 74772160, 53405232, 28428388, 200790, -30688616, --63127428, -95725160, -127184720, -156271312, -181872544, -203371536, -220521344, -232880112, -240076864, -242724176, --242090128, -238572016, -231492288, -220755952, -207650400, -193449088, -178148272, -161212672, -142750752, -123226904, --102581000, -80419504, -56811144, -32329830, -7428146, 17716740, 42713448, 66690640, 88742616, 108476376, -125886032, 140656416, 151783072, 158158416, 159679360, 157684352, 154043296, 149673168, 144014544, 136032352, -125606856, 113885888, 102469328, 92425008, 83886080, 76293648, 69045360, 62086436, 55886652, 50864760, -46990164, 43880608, 41015864, 37846180, 33997888, 29450054, 24321862, 18562312, 12101607, 5170067, --1821603, -8575439, -14845554, -20320028, -24818468, -28407450, -31151934, -33056752, -34331820, -35319128, --36078264, -36451924, -36548024, -36649492, -36703180, -36425616, -35817880, -35015256, -33838436, -32111860, --30125974, -27972048, -24702504, -19210314, -12044699, -5477157, -1440962, 21475, 118112, }, +-12662637, 12901008, 18407156, -12460774, -26243860, 22013854, 87203944, 81292992, -10214506, -105698072, +-122505888, -56635048, 34244312, 87755312, 70377872, -3514894, -68105296, -56239376, 24912958, 94054416, +88859656, 32216012, -11744588, -16888348, -3045132, 10651519, 24802900, 40087076, 47873852, 43004972, +29452738, 11979201, -7521562, -26468810, -42553464, -57022672, -71507984, -83610128, -89570472, -88812944, +-83004536, -73455752, -61811560, -50697256, -41634340, -33958696, -26524108, -18781892, -10123238, -8590, +11195369, 22897008, 35459248, 49500572, 64513092, 79195440, 92606472, 104193760, 113225536, 118956096, +121067072, 119553632, 114368000, 105315816, 92148520, 74772160, 53405232, 28428388, 200790, -30688616, +-63127428, -95725160, -127184720, -156271312, -181872544, -203371536, -220521344, -232880112, -240076864, -242724176, +-242090128, -238572016, -231492288, -220755952, -207650400, -193449088, -178148272, -161212672, -142750752, -123226904, +-102581000, -80419504, -56811144, -32329830, -7428146, 17716740, 42713448, 66690640, 88742616, 108476376, +125886032, 140656416, 151783072, 158158416, 159679360, 157684352, 154043296, 149673168, 144014544, 136032352, +125606856, 113885888, 102469328, 92425008, 83886080, 76293648, 69045360, 62086436, 55886652, 50864760, +46990164, 43880608, 41015864, 37846180, 33997888, 29450054, 24321862, 18562312, 12101607, 5170067, +-1821603, -8575439, -14845554, -20320028, -24818468, -28407450, -31151934, -33056752, -34331820, -35319128, +-36078264, -36451924, -36548024, -36649492, -36703180, -36425616, -35817880, -35015256, -33838436, -32111860, +-30125974, -27972048, -24702504, -19210314, -12044699, -5477157, -1440962, 21475, 118112, }, { 11621645, -12662637, -12901008, -18407156, 12460774, 26243860, -22013854, -87203944, -81292992, 10214506, 105698072, -122505888, 56635048, -34244312, -87755312, -70377872, 3514894, 68105296, 56239376, -24912958, -94054416, --88859656, -32216012, 11744588, 16888348, 3045132, -10651519, -24802900, -40087076, -47873852, -43004972, --29452738, -11979201, 7521562, 26468810, 42553464, 57022672, 71507984, 83610128, 89570472, 88812944, -83004536, 73455752, 61811560, 50697256, 41634340, 33958696, 26524108, 18781892, 10123238, 8590, --11195369, -22897008, -35459248, -49500572, -64513092, -79195440, -92606472, -104193760, -113225536, -118956096, --121067072, -119553632, -114368000, -105315816, -92148520, -74772160, -53405232, -28428388, -200790, 30688616, -63127428, 95725160, 127184720, 156271312, 181872544, 203371536, 220521344, 232880112, 240076864, 242724176, -242090128, 238572016, 231492288, 220755952, 207650400, 193449088, 178148272, 161212672, 142750752, 123226904, -102581000, 80419504, 56811144, 32329830, 7428146, -17716740, -42713448, -66690640, -88742616, -108476376, --125886032, -140656416, -151783072, -158158416, -159679360, -157684352, -154043296, -149673168, -144014544, -136032352, --125606856, -113885888, -102469328, -92425008, -83886080, -76293648, -69045360, -62086436, -55886652, -50864760, --46990164, -43880608, -41015864, -37846180, -33997888, -29450054, -24321862, -18562312, -12101607, -5170067, -1821603, 8575439, 14845554, 20320028, 24818468, 28407450, 31151934, 33056752, 34331820, 35319128, -36078264, 36451924, 36548024, 36649492, 36703180, 36425616, 35817880, 35015256, 33838436, 32111860, -30125974, 27972048, 24702504, 19210314, 12044699, 5477157, 1440962, -21475, -118112, }, +12662637, -12901008, -18407156, 12460774, 26243860, -22013854, -87203944, -81292992, 10214506, 105698072, +122505888, 56635048, -34244312, -87755312, -70377872, 3514894, 68105296, 56239376, -24912958, -94054416, +-88859656, -32216012, 11744588, 16888348, 3045132, -10651519, -24802900, -40087076, -47873852, -43004972, +-29452738, -11979201, 7521562, 26468810, 42553464, 57022672, 71507984, 83610128, 89570472, 88812944, +83004536, 73455752, 61811560, 50697256, 41634340, 33958696, 26524108, 18781892, 10123238, 8590, +-11195369, -22897008, -35459248, -49500572, -64513092, -79195440, -92606472, -104193760, -113225536, -118956096, +-121067072, -119553632, -114368000, -105315816, -92148520, -74772160, -53405232, -28428388, -200790, 30688616, +63127428, 95725160, 127184720, 156271312, 181872544, 203371536, 220521344, 232880112, 240076864, 242724176, +242090128, 238572016, 231492288, 220755952, 207650400, 193449088, 178148272, 161212672, 142750752, 123226904, +102581000, 80419504, 56811144, 32329830, 7428146, -17716740, -42713448, -66690640, -88742616, -108476376, +-125886032, -140656416, -151783072, -158158416, -159679360, -157684352, -154043296, -149673168, -144014544, -136032352, +-125606856, -113885888, -102469328, -92425008, -83886080, -76293648, -69045360, -62086436, -55886652, -50864760, +-46990164, -43880608, -41015864, -37846180, -33997888, -29450054, -24321862, -18562312, -12101607, -5170067, +1821603, 8575439, 14845554, 20320028, 24818468, 28407450, 31151934, 33056752, 34331820, 35319128, +36078264, 36451924, 36548024, 36649492, 36703180, 36425616, 35817880, 35015256, 33838436, 32111860, +30125974, 27972048, 24702504, 19210314, 12044699, 5477157, 1440962, -21475, -118112, }, }, { { 1937567, --3154117, -18935438, -27222040, -21792128, -18682034, -23860690, -13433584, 36628556, 116389320, 188753072, -209408640, 135242080, -38696580, -218963344, -247807264, -70661872, 158391952, 221414688, 82856360, -86350856, --131750272, -72441064, -11758547, 14289893, 35926864, 60059212, 59903520, 32535452, 7328288, 1085016, -3496640, 4161287, 4872104, 6293738, 3827353, -2916820, -9754944, -15612206, -22289270, -29783450, --37481104, -46116136, -55024972, -61679488, -65843996, -69907576, -74480640, -77953656, -80207440, -82614232, --84932976, -85723256, -84875000, -82906288, -79136920, -72829224, -64595772, -55052352, -43778064, -30610768, --16187732, -662499, 16342887, 34379604, 52403968, 70061656, 87236152, 102935336, 116032840, 126399280, -134149544, 138639936, 139153184, 135712384, 128561256, 117670296, 103120016, 85248120, 64397128, 41117332, -16299938, -9499394, -36297844, -63786708, -90999616, -117286968, -142710496, -167188576, -190247728, -211719872, --231499280, -248521840, -261161936, -268768320, -271836544, -270715008, -265027392, -254280320, -238480208, -218527936, --196458240, -174670416, -154414816, -135574400, -118126632, -103066328, -91683056, -84716080, -82332912, -84169544, --89245664, -96442952, -105115032, -114949968, -125577328, -136683040, -148025504, -158953520, -168424992, -175831664, --181361968, -185451856, -188442224, -190755072, -192722704, -194242576, -195153120, -195759248, -196429248, -196955392, --196885056, -196125392, -194752608, -192678144, -189928816, -186760752, -183132032, -178535344, -172533136, -164956272, --155636192, -144592224, -132347808, -119421568, -105817256, -91629368, -77513424, -63801740, -50008988, -35935992, --21733608, -5660230, 15737834, 41821172, 63403380, 68656664, 54958400, 31762356, 9776956, }, +-3154117, -18935438, -27222040, -21792128, -18682034, -23860690, -13433584, 36628556, 116389320, 188753072, +209408640, 135242080, -38696580, -218963344, -247807264, -70661872, 158391952, 221414688, 82856360, -86350856, +-131750272, -72441064, -11758547, 14289893, 35926864, 60059212, 59903520, 32535452, 7328288, 1085016, +3496640, 4161287, 4872104, 6293738, 3827353, -2916820, -9754944, -15612206, -22289270, -29783450, +-37481104, -46116136, -55024972, -61679488, -65843996, -69907576, -74480640, -77953656, -80207440, -82614232, +-84932976, -85723256, -84875000, -82906288, -79136920, -72829224, -64595772, -55052352, -43778064, -30610768, +-16187732, -662499, 16342887, 34379604, 52403968, 70061656, 87236152, 102935336, 116032840, 126399280, +134149544, 138639936, 139153184, 135712384, 128561256, 117670296, 103120016, 85248120, 64397128, 41117332, +16299938, -9499394, -36297844, -63786708, -90999616, -117286968, -142710496, -167188576, -190247728, -211719872, +-231499280, -248521840, -261161936, -268768320, -271836544, -270715008, -265027392, -254280320, -238480208, -218527936, +-196458240, -174670416, -154414816, -135574400, -118126632, -103066328, -91683056, -84716080, -82332912, -84169544, +-89245664, -96442952, -105115032, -114949968, -125577328, -136683040, -148025504, -158953520, -168424992, -175831664, +-181361968, -185451856, -188442224, -190755072, -192722704, -194242576, -195153120, -195759248, -196429248, -196955392, +-196885056, -196125392, -194752608, -192678144, -189928816, -186760752, -183132032, -178535344, -172533136, -164956272, +-155636192, -144592224, -132347808, -119421568, -105817256, -91629368, -77513424, -63801740, -50008988, -35935992, +-21733608, -5660230, 15737834, 41821172, 63403380, 68656664, 54958400, 31762356, 9776956, }, { 1937567, --3154117, -18935438, -27222040, -21792128, -18682034, -23860690, -13433584, 36628556, 116389320, 188753072, -209408640, 135242080, -38696580, -218963344, -247807264, -70661872, 158391952, 221414688, 82856360, -86350856, --131750272, -72441064, -11758547, 14289893, 35926864, 60059212, 59903520, 32535452, 7328288, 1085016, -3496640, 4161287, 4872104, 6293738, 3827353, -2916820, -9754944, -15612206, -22289270, -29783450, --37481104, -46116136, -55024972, -61679488, -65843996, -69907576, -74480640, -77953656, -80207440, -82614232, --84932976, -85723256, -84875000, -82906288, -79136920, -72829224, -64595772, -55052352, -43778064, -30610768, --16187732, -662499, 16342887, 34379604, 52403968, 70061656, 87236152, 102935336, 116032840, 126399280, -134149544, 138639936, 139153184, 135712384, 128561256, 117670296, 103120016, 85248120, 64397128, 41117332, -16299938, -9499394, -36297844, -63786708, -90999616, -117286968, -142710496, -167188576, -190247728, -211719872, --231499280, -248521840, -261161936, -268768320, -271836544, -270715008, -265027392, -254280320, -238480208, -218527936, --196458240, -174670416, -154414816, -135574400, -118126632, -103066328, -91683056, -84716080, -82332912, -84169544, --89245664, -96442952, -105115032, -114949968, -125577328, -136683040, -148025504, -158953520, -168424992, -175831664, --181361968, -185451856, -188442224, -190755072, -192722704, -194242576, -195153120, -195759248, -196429248, -196955392, --196885056, -196125392, -194752608, -192678144, -189928816, -186760752, -183132032, -178535344, -172533136, -164956272, --155636192, -144592224, -132347808, -119421568, -105817256, -91629368, -77513424, -63801740, -50008988, -35935992, --21733608, -5660230, 15737834, 41821172, 63403380, 68656664, 54958400, 31762356, 9776956, }, +-3154117, -18935438, -27222040, -21792128, -18682034, -23860690, -13433584, 36628556, 116389320, 188753072, +209408640, 135242080, -38696580, -218963344, -247807264, -70661872, 158391952, 221414688, 82856360, -86350856, +-131750272, -72441064, -11758547, 14289893, 35926864, 60059212, 59903520, 32535452, 7328288, 1085016, +3496640, 4161287, 4872104, 6293738, 3827353, -2916820, -9754944, -15612206, -22289270, -29783450, +-37481104, -46116136, -55024972, -61679488, -65843996, -69907576, -74480640, -77953656, -80207440, -82614232, +-84932976, -85723256, -84875000, -82906288, -79136920, -72829224, -64595772, -55052352, -43778064, -30610768, +-16187732, -662499, 16342887, 34379604, 52403968, 70061656, 87236152, 102935336, 116032840, 126399280, +134149544, 138639936, 139153184, 135712384, 128561256, 117670296, 103120016, 85248120, 64397128, 41117332, +16299938, -9499394, -36297844, -63786708, -90999616, -117286968, -142710496, -167188576, -190247728, -211719872, +-231499280, -248521840, -261161936, -268768320, -271836544, -270715008, -265027392, -254280320, -238480208, -218527936, +-196458240, -174670416, -154414816, -135574400, -118126632, -103066328, -91683056, -84716080, -82332912, -84169544, +-89245664, -96442952, -105115032, -114949968, -125577328, -136683040, -148025504, -158953520, -168424992, -175831664, +-181361968, -185451856, -188442224, -190755072, -192722704, -194242576, -195153120, -195759248, -196429248, -196955392, +-196885056, -196125392, -194752608, -192678144, -189928816, -186760752, -183132032, -178535344, -172533136, -164956272, +-155636192, -144592224, -132347808, -119421568, -105817256, -91629368, -77513424, -63801740, -50008988, -35935992, +-21733608, -5660230, 15737834, 41821172, 63403380, 68656664, 54958400, 31762356, 9776956, }, }, { { -19097036, --44097504, -38590820, -1660005, 54663660, 102884864, 104016056, 40863928, -49285824, -99553584, -81158776, --28471338, 10191957, 23523000, 25673168, 19345606, -1676111, -25376814, -27127014, -3715684, 20526722, -26368414, 20985210, 20455318, 25950192, 26894548, 17848274, 1888175, -17679696, -39755828, -61020212, --76006424, -82653960, -84203904, -84907208, -86058800, -86341728, -83818968, -76833744, -64608656, -48231944, --30523796, -14159433, -113280, 11897596, 22209812, 31049392, 38930120, 46360952, 53340272, 59653876, -65395708, 70720392, 75431440, 79288856, 82416128, 84936736, 86519968, 86708408, 85507432, 83341696, -80612240, 77582680, 74634720, 72403488, 71481680, 71932112, 73285560, 75244608, 78113640, 82169168, -86955368, 91811904, 96782256, 102250288, 107901392, 112794432, 116279800, 118151328, 118082608, 115535696, -110136384, 101798776, 90710248, 77292768, 61738008, 43687332, 23098334, 1181653, -20657718, -42777876, --66949412, -93851480, -122040424, -149661888, -176182240, -202011104, -227126992, -250505040, -270749376, -287239360, --300546784, -311384064, -319296992, -323081408, -322467232, -318624832, -312945824, -305905824, -297029216, -285386624, --270367648, -252524752, -233423424, -214297392, -195262096, -176031376, -156713696, -137660144, -119254064, -102028560, --86310056, -71721656, -57650808, -44007308, -30907122, -18028662, -4916664, 8523363, 22249004, 36105104, -49336828, 61008936, 71157408, 80641232, 89880784, 98731096, 107202384, 115066472, 121261960, 125000728, -126878704, 127838624, 127981976, 127339872, 126459408, 125247688, 122752312, 118818120, 114362632, 109850768, -105385072, 101484168, 96779032, 86209656, 66095788, 40770512, 19630148, 7509751, 1865090, }, +-44097504, -38590820, -1660005, 54663660, 102884864, 104016056, 40863928, -49285824, -99553584, -81158776, +-28471338, 10191957, 23523000, 25673168, 19345606, -1676111, -25376814, -27127014, -3715684, 20526722, +26368414, 20985210, 20455318, 25950192, 26894548, 17848274, 1888175, -17679696, -39755828, -61020212, +-76006424, -82653960, -84203904, -84907208, -86058800, -86341728, -83818968, -76833744, -64608656, -48231944, +-30523796, -14159433, -113280, 11897596, 22209812, 31049392, 38930120, 46360952, 53340272, 59653876, +65395708, 70720392, 75431440, 79288856, 82416128, 84936736, 86519968, 86708408, 85507432, 83341696, +80612240, 77582680, 74634720, 72403488, 71481680, 71932112, 73285560, 75244608, 78113640, 82169168, +86955368, 91811904, 96782256, 102250288, 107901392, 112794432, 116279800, 118151328, 118082608, 115535696, +110136384, 101798776, 90710248, 77292768, 61738008, 43687332, 23098334, 1181653, -20657718, -42777876, +-66949412, -93851480, -122040424, -149661888, -176182240, -202011104, -227126992, -250505040, -270749376, -287239360, +-300546784, -311384064, -319296992, -323081408, -322467232, -318624832, -312945824, -305905824, -297029216, -285386624, +-270367648, -252524752, -233423424, -214297392, -195262096, -176031376, -156713696, -137660144, -119254064, -102028560, +-86310056, -71721656, -57650808, -44007308, -30907122, -18028662, -4916664, 8523363, 22249004, 36105104, +49336828, 61008936, 71157408, 80641232, 89880784, 98731096, 107202384, 115066472, 121261960, 125000728, +126878704, 127838624, 127981976, 127339872, 126459408, 125247688, 122752312, 118818120, 114362632, 109850768, +105385072, 101484168, 96779032, 86209656, 66095788, 40770512, 19630148, 7509751, 1865090, }, { -19097036, --44097504, -38590820, -1660005, 54663660, 102884864, 104016056, 40863928, -49285824, -99553584, -81158776, --28471338, 10191957, 23523000, 25673168, 19345606, -1676111, -25376814, -27127014, -3715684, 20526722, -26368414, 20985210, 20455318, 25950192, 26894548, 17848274, 1888175, -17679696, -39755828, -61020212, --76006424, -82653960, -84203904, -84907208, -86058800, -86341728, -83818968, -76833744, -64608656, -48231944, --30523796, -14159433, -113280, 11897596, 22209812, 31049392, 38930120, 46360952, 53340272, 59653876, -65395708, 70720392, 75431440, 79288856, 82416128, 84936736, 86519968, 86708408, 85507432, 83341696, -80612240, 77582680, 74634720, 72403488, 71481680, 71932112, 73285560, 75244608, 78113640, 82169168, -86955368, 91811904, 96782256, 102250288, 107901392, 112794432, 116279800, 118151328, 118082608, 115535696, -110136384, 101798776, 90710248, 77292768, 61738008, 43687332, 23098334, 1181653, -20657718, -42777876, --66949412, -93851480, -122040424, -149661888, -176182240, -202011104, -227126992, -250505040, -270749376, -287239360, --300546784, -311384064, -319296992, -323081408, -322467232, -318624832, -312945824, -305905824, -297029216, -285386624, --270367648, -252524752, -233423424, -214297392, -195262096, -176031376, -156713696, -137660144, -119254064, -102028560, --86310056, -71721656, -57650808, -44007308, -30907122, -18028662, -4916664, 8523363, 22249004, 36105104, -49336828, 61008936, 71157408, 80641232, 89880784, 98731096, 107202384, 115066472, 121261960, 125000728, -126878704, 127838624, 127981976, 127339872, 126459408, 125247688, 122752312, 118818120, 114362632, 109850768, -105385072, 101484168, 96779032, 86209656, 66095788, 40770512, 19630148, 7509751, 1865090, }, +-44097504, -38590820, -1660005, 54663660, 102884864, 104016056, 40863928, -49285824, -99553584, -81158776, +-28471338, 10191957, 23523000, 25673168, 19345606, -1676111, -25376814, -27127014, -3715684, 20526722, +26368414, 20985210, 20455318, 25950192, 26894548, 17848274, 1888175, -17679696, -39755828, -61020212, +-76006424, -82653960, -84203904, -84907208, -86058800, -86341728, -83818968, -76833744, -64608656, -48231944, +-30523796, -14159433, -113280, 11897596, 22209812, 31049392, 38930120, 46360952, 53340272, 59653876, +65395708, 70720392, 75431440, 79288856, 82416128, 84936736, 86519968, 86708408, 85507432, 83341696, +80612240, 77582680, 74634720, 72403488, 71481680, 71932112, 73285560, 75244608, 78113640, 82169168, +86955368, 91811904, 96782256, 102250288, 107901392, 112794432, 116279800, 118151328, 118082608, 115535696, +110136384, 101798776, 90710248, 77292768, 61738008, 43687332, 23098334, 1181653, -20657718, -42777876, +-66949412, -93851480, -122040424, -149661888, -176182240, -202011104, -227126992, -250505040, -270749376, -287239360, +-300546784, -311384064, -319296992, -323081408, -322467232, -318624832, -312945824, -305905824, -297029216, -285386624, +-270367648, -252524752, -233423424, -214297392, -195262096, -176031376, -156713696, -137660144, -119254064, -102028560, +-86310056, -71721656, -57650808, -44007308, -30907122, -18028662, -4916664, 8523363, 22249004, 36105104, +49336828, 61008936, 71157408, 80641232, 89880784, 98731096, 107202384, 115066472, 121261960, 125000728, +126878704, 127838624, 127981976, 127339872, 126459408, 125247688, 122752312, 118818120, 114362632, 109850768, +105385072, 101484168, 96779032, 86209656, 66095788, 40770512, 19630148, 7509751, 1865090, }, }, { { 22844394, -32909650, -15393163, -77620800, -120804008, -153344832, -163214656, -98879272, 52478596, 224605856, 341776864, -367739936, 261556528, -9730785, -335662976, -447413184, -189512752, 232476912, 428876096, 256723088, -56909928, --233360064, -236784768, -198009264, -186468160, -170963328, -131196752, -92145840, -64961380, -31695248, 12736726, -52081848, 79310864, 101933536, 121239944, 130664176, 129902360, 123666600, 112332184, 95456720, 77654080, -62691492, 48531520, 33186676, 18509698, 5400385, -7770670, -20495048, -30122216, -36809480, -43242268, --50261316, -57106960, -64260764, -72339064, -80247704, -87148104, -93848792, -100525856, -105907448, -109747152, --113176144, -116183160, -117611776, -117537688, -116905792, -115390736, -112120656, -107663552, -103142568, -98513664, --93455808, -88604640, -84488448, -80620832, -76587320, -72689640, -69058240, -65542276, -62505732, -60363080, --58583892, -56403120, -53912040, -51351704, -48185240, -43943956, -39109972, -34375844, -29983704, -26271778, --23819352, -22798760, -23212150, -25606596, -30336428, -36339720, -41874320, -46194520, -49443664, -51316268, --50843824, -47189880, -40026412, -29606284, -16843788, -2742874, 12445205, 28867012, 45981384, 62622772, -78007880, 91937000, 104316168, 115215720, 125001264, 133735616, 140881376, 146136256, 150063472, 153525216, -157035808, 160791760, 164606240, 167716864, 169412832, 169911056, 170004464, 170063520, 170014128, 169894416, -169681808, 168951664, 167393664, 165290736, 162986496, 160383744, 157356864, 154039536, 150337280, 145769584, -140077680, 133437120, 125952064, 117530704, 108336256, 98785856, 89065272, 79058000, 68738808, 58292908, -47700444, 36189396, 22434224, 6406481, -8493835, -16772384, -16004122, -9655623, -2934537, }, +32909650, -15393163, -77620800, -120804008, -153344832, -163214656, -98879272, 52478596, 224605856, 341776864, +367739936, 261556528, -9730785, -335662976, -447413184, -189512752, 232476912, 428876096, 256723088, -56909928, +-233360064, -236784768, -198009264, -186468160, -170963328, -131196752, -92145840, -64961380, -31695248, 12736726, +52081848, 79310864, 101933536, 121239944, 130664176, 129902360, 123666600, 112332184, 95456720, 77654080, +62691492, 48531520, 33186676, 18509698, 5400385, -7770670, -20495048, -30122216, -36809480, -43242268, +-50261316, -57106960, -64260764, -72339064, -80247704, -87148104, -93848792, -100525856, -105907448, -109747152, +-113176144, -116183160, -117611776, -117537688, -116905792, -115390736, -112120656, -107663552, -103142568, -98513664, +-93455808, -88604640, -84488448, -80620832, -76587320, -72689640, -69058240, -65542276, -62505732, -60363080, +-58583892, -56403120, -53912040, -51351704, -48185240, -43943956, -39109972, -34375844, -29983704, -26271778, +-23819352, -22798760, -23212150, -25606596, -30336428, -36339720, -41874320, -46194520, -49443664, -51316268, +-50843824, -47189880, -40026412, -29606284, -16843788, -2742874, 12445205, 28867012, 45981384, 62622772, +78007880, 91937000, 104316168, 115215720, 125001264, 133735616, 140881376, 146136256, 150063472, 153525216, +157035808, 160791760, 164606240, 167716864, 169412832, 169911056, 170004464, 170063520, 170014128, 169894416, +169681808, 168951664, 167393664, 165290736, 162986496, 160383744, 157356864, 154039536, 150337280, 145769584, +140077680, 133437120, 125952064, 117530704, 108336256, 98785856, 89065272, 79058000, 68738808, 58292908, +47700444, 36189396, 22434224, 6406481, -8493835, -16772384, -16004122, -9655623, -2934537, }, { 22844394, -32909650, -15393163, -77620800, -120804008, -153344832, -163214656, -98879272, 52478596, 224605856, 341776864, -367739936, 261556528, -9730785, -335662976, -447413184, -189512752, 232476912, 428876096, 256723088, -56909928, --233360064, -236784768, -198009264, -186468160, -170963328, -131196752, -92145840, -64961380, -31695248, 12736726, -52081848, 79310864, 101933536, 121239944, 130664176, 129902360, 123666600, 112332184, 95456720, 77654080, -62691492, 48531520, 33186676, 18509698, 5400385, -7770670, -20495048, -30122216, -36809480, -43242268, --50261316, -57106960, -64260764, -72339064, -80247704, -87148104, -93848792, -100525856, -105907448, -109747152, --113176144, -116183160, -117611776, -117537688, -116905792, -115390736, -112120656, -107663552, -103142568, -98513664, --93455808, -88604640, -84488448, -80620832, -76587320, -72689640, -69058240, -65542276, -62505732, -60363080, --58583892, -56403120, -53912040, -51351704, -48185240, -43943956, -39109972, -34375844, -29983704, -26271778, --23819352, -22798760, -23212150, -25606596, -30336428, -36339720, -41874320, -46194520, -49443664, -51316268, --50843824, -47189880, -40026412, -29606284, -16843788, -2742874, 12445205, 28867012, 45981384, 62622772, -78007880, 91937000, 104316168, 115215720, 125001264, 133735616, 140881376, 146136256, 150063472, 153525216, -157035808, 160791760, 164606240, 167716864, 169412832, 169911056, 170004464, 170063520, 170014128, 169894416, -169681808, 168951664, 167393664, 165290736, 162986496, 160383744, 157356864, 154039536, 150337280, 145769584, -140077680, 133437120, 125952064, 117530704, 108336256, 98785856, 89065272, 79058000, 68738808, 58292908, -47700444, 36189396, 22434224, 6406481, -8493835, -16772384, -16004122, -9655623, -2934537, }, +32909650, -15393163, -77620800, -120804008, -153344832, -163214656, -98879272, 52478596, 224605856, 341776864, +367739936, 261556528, -9730785, -335662976, -447413184, -189512752, 232476912, 428876096, 256723088, -56909928, +-233360064, -236784768, -198009264, -186468160, -170963328, -131196752, -92145840, -64961380, -31695248, 12736726, +52081848, 79310864, 101933536, 121239944, 130664176, 129902360, 123666600, 112332184, 95456720, 77654080, +62691492, 48531520, 33186676, 18509698, 5400385, -7770670, -20495048, -30122216, -36809480, -43242268, +-50261316, -57106960, -64260764, -72339064, -80247704, -87148104, -93848792, -100525856, -105907448, -109747152, +-113176144, -116183160, -117611776, -117537688, -116905792, -115390736, -112120656, -107663552, -103142568, -98513664, +-93455808, -88604640, -84488448, -80620832, -76587320, -72689640, -69058240, -65542276, -62505732, -60363080, +-58583892, -56403120, -53912040, -51351704, -48185240, -43943956, -39109972, -34375844, -29983704, -26271778, +-23819352, -22798760, -23212150, -25606596, -30336428, -36339720, -41874320, -46194520, -49443664, -51316268, +-50843824, -47189880, -40026412, -29606284, -16843788, -2742874, 12445205, 28867012, 45981384, 62622772, +78007880, 91937000, 104316168, 115215720, 125001264, 133735616, 140881376, 146136256, 150063472, 153525216, +157035808, 160791760, 164606240, 167716864, 169412832, 169911056, 170004464, 170063520, 170014128, 169894416, +169681808, 168951664, 167393664, 165290736, 162986496, 160383744, 157356864, 154039536, 150337280, 145769584, +140077680, 133437120, 125952064, 117530704, 108336256, 98785856, 89065272, 79058000, 68738808, 58292908, +47700444, 36189396, 22434224, 6406481, -8493835, -16772384, -16004122, -9655623, -2934537, }, }, { { 2709588, -11341935, 24164022, 37824168, 48972292, 42486352, -3062849, -79568568, -149920128, -196602672, -214368256, --144205680, 77959560, 347087040, 392520288, 92602720, -296709216, -393664896, -139867216, 160926512, 242814896, -146233968, 54702316, 31922882, 18806588, -16871168, -45679124, -50996296, -50842212, -54457500, -50628536, --35736812, -20008642, -9170292, -780610, 5867462, 9701257, 12484933, 15276662, 15848429, 13904420, -12628278, 12879533, 12058658, 9613211, 7916699, 7660611, 7406671, 7144141, 8097087, 9909026, -11210938, 11767674, 11806328, 10767483, 8333311, 5125507, 1481227, -2884071, -7704635, -12288438, --16731045, -21560198, -26567594, -31265752, -35827544, -40514428, -44970456, -48920216, -52687436, -56478820, --60071560, -63505924, -67145368, -70923328, -74355008, -77193448, -79366160, -80595600, -80738408, -80030808, --78453480, -75420160, -70591544, -64421288, -57504244, -49912352, -41438380, -32058710, -22058416, -12040941, --2745021, 5396090, 12326556, 17893908, 21741662, 23833848, 24593520, 24358908, 23168664, 21221434, -19105088, 17416092, 16371342, 15782931, 15292768, 14787572, 14678051, 15534897, 17454210, 20044076, -22972170, 26204670, 29848948, 34091304, 39089036, 44647260, 50229644, 55514064, 60679296, 66076460, -71948216, 78428248, 85371600, 92261800, 98683320, 104746736, 110726944, 116595480, 122185912, 127372624, -131826504, 135100336, 137170512, 138383840, 138876160, 138605568, 137763760, 136496752, 134513008, 131615512, -128205312, 124721016, 121202368, 117805048, 114904336, 112378360, 109732120, 106923744, 104035920, 100594576, -96302832, 90974384, 82011328, 64709052, 38907036, 13247827, -1968169, -5075578, -2077154, }, +11341935, 24164022, 37824168, 48972292, 42486352, -3062849, -79568568, -149920128, -196602672, -214368256, +-144205680, 77959560, 347087040, 392520288, 92602720, -296709216, -393664896, -139867216, 160926512, 242814896, +146233968, 54702316, 31922882, 18806588, -16871168, -45679124, -50996296, -50842212, -54457500, -50628536, +-35736812, -20008642, -9170292, -780610, 5867462, 9701257, 12484933, 15276662, 15848429, 13904420, +12628278, 12879533, 12058658, 9613211, 7916699, 7660611, 7406671, 7144141, 8097087, 9909026, +11210938, 11767674, 11806328, 10767483, 8333311, 5125507, 1481227, -2884071, -7704635, -12288438, +-16731045, -21560198, -26567594, -31265752, -35827544, -40514428, -44970456, -48920216, -52687436, -56478820, +-60071560, -63505924, -67145368, -70923328, -74355008, -77193448, -79366160, -80595600, -80738408, -80030808, +-78453480, -75420160, -70591544, -64421288, -57504244, -49912352, -41438380, -32058710, -22058416, -12040941, +-2745021, 5396090, 12326556, 17893908, 21741662, 23833848, 24593520, 24358908, 23168664, 21221434, +19105088, 17416092, 16371342, 15782931, 15292768, 14787572, 14678051, 15534897, 17454210, 20044076, +22972170, 26204670, 29848948, 34091304, 39089036, 44647260, 50229644, 55514064, 60679296, 66076460, +71948216, 78428248, 85371600, 92261800, 98683320, 104746736, 110726944, 116595480, 122185912, 127372624, +131826504, 135100336, 137170512, 138383840, 138876160, 138605568, 137763760, 136496752, 134513008, 131615512, +128205312, 124721016, 121202368, 117805048, 114904336, 112378360, 109732120, 106923744, 104035920, 100594576, +96302832, 90974384, 82011328, 64709052, 38907036, 13247827, -1968169, -5075578, -2077154, }, { -2709588, --11341935, -24164022, -37824168, -48972292, -42486352, 3062849, 79568568, 149920128, 196602672, 214368256, -144205680, -77959560, -347087040, -392520288, -92602720, 296709216, 393664896, 139867216, -160926512, -242814896, --146233968, -54702316, -31922882, -18806588, 16871168, 45679124, 50996296, 50842212, 54457500, 50628536, -35736812, 20008642, 9170292, 780610, -5867462, -9701257, -12484933, -15276662, -15848429, -13904420, --12628278, -12879533, -12058658, -9613211, -7916699, -7660611, -7406671, -7144141, -8097087, -9909026, --11210938, -11767674, -11806328, -10767483, -8333311, -5125507, -1481227, 2884071, 7704635, 12288438, -16731045, 21560198, 26567594, 31265752, 35827544, 40514428, 44970456, 48920216, 52687436, 56478820, -60071560, 63505924, 67145368, 70923328, 74355008, 77193448, 79366160, 80595600, 80738408, 80030808, -78453480, 75420160, 70591544, 64421288, 57504244, 49912352, 41438380, 32058710, 22058416, 12040941, -2745021, -5396090, -12326556, -17893908, -21741662, -23833848, -24593520, -24358908, -23168664, -21221434, --19105088, -17416092, -16371342, -15782931, -15292768, -14787572, -14678051, -15534897, -17454210, -20044076, --22972170, -26204670, -29848948, -34091304, -39089036, -44647260, -50229644, -55514064, -60679296, -66076460, --71948216, -78428248, -85371600, -92261800, -98683320, -104746736, -110726944, -116595480, -122185912, -127372624, --131826504, -135100336, -137170512, -138383840, -138876160, -138605568, -137763760, -136496752, -134513008, -131615512, --128205312, -124721016, -121202368, -117805048, -114904336, -112378360, -109732120, -106923744, -104035920, -100594576, --96302832, -90974384, -82011328, -64709052, -38907036, -13247827, 1968169, 5075578, 2077154, }, +-11341935, -24164022, -37824168, -48972292, -42486352, 3062849, 79568568, 149920128, 196602672, 214368256, +144205680, -77959560, -347087040, -392520288, -92602720, 296709216, 393664896, 139867216, -160926512, -242814896, +-146233968, -54702316, -31922882, -18806588, 16871168, 45679124, 50996296, 50842212, 54457500, 50628536, +35736812, 20008642, 9170292, 780610, -5867462, -9701257, -12484933, -15276662, -15848429, -13904420, +-12628278, -12879533, -12058658, -9613211, -7916699, -7660611, -7406671, -7144141, -8097087, -9909026, +-11210938, -11767674, -11806328, -10767483, -8333311, -5125507, -1481227, 2884071, 7704635, 12288438, +16731045, 21560198, 26567594, 31265752, 35827544, 40514428, 44970456, 48920216, 52687436, 56478820, +60071560, 63505924, 67145368, 70923328, 74355008, 77193448, 79366160, 80595600, 80738408, 80030808, +78453480, 75420160, 70591544, 64421288, 57504244, 49912352, 41438380, 32058710, 22058416, 12040941, +2745021, -5396090, -12326556, -17893908, -21741662, -23833848, -24593520, -24358908, -23168664, -21221434, +-19105088, -17416092, -16371342, -15782931, -15292768, -14787572, -14678051, -15534897, -17454210, -20044076, +-22972170, -26204670, -29848948, -34091304, -39089036, -44647260, -50229644, -55514064, -60679296, -66076460, +-71948216, -78428248, -85371600, -92261800, -98683320, -104746736, -110726944, -116595480, -122185912, -127372624, +-131826504, -135100336, -137170512, -138383840, -138876160, -138605568, -137763760, -136496752, -134513008, -131615512, +-128205312, -124721016, -121202368, -117805048, -114904336, -112378360, -109732120, -106923744, -104035920, -100594576, +-96302832, -90974384, -82011328, -64709052, -38907036, -13247827, 1968169, 5075578, 2077154, }, }, { { 1752347, -2318209, -3129421, -13364328, -22068078, -13906030, 23338316, 68938520, 71941240, 11290395, -61519500, --75093208, -26613228, 19918984, 22327388, 4521527, 2712272, 10649908, 3675955, -14254996, -20063402, --11353209, -6714108, -12883291, -16463683, -7989176, 4802847, 10709501, 8565775, 3003256, -3887482, --12086038, -20115480, -25625922, -27375584, -25383256, -20718922, -15309948, -10429254, -5472862, 678068, -7601555, 13700946, 17974976, 20415590, 21309480, 21220360, 21272436, 22553410, 25330106, 29222420, -33808372, 38672424, 43266428, 47165720, 50313396, 52808232, 54654532, 55847996, 56485264, 56649544, -56301116, 55363740, 53883048, 52083996, 50264004, 48584672, 47058884, 45802604, 45097156, 45042932, -45411764, 46103788, 47441672, 49701360, 52670256, 56014428, 59743532, 63888712, 68016176, 71476312, -73917464, 75246752, 75291848, 73703248, 69972536, 63533304, 54155780, 42167452, 27892592, 11008001, --9009768, -31874026, -56412784, -81407344, -106045960, -129645200, -151357328, -170186464, -185207040, -196040560, --203181488, -207441008, -209008672, -207558592, -203382800, -197860560, -192569696, -188201712, -184324432, -179907056, --174222672, -167572976, -161031216, -155325344, -150254592, -145263312, -140111504, -134852848, -129680632, -124933616, --120787904, -116880016, -112634440, -107862736, -102680320, -97099544, -91144576, -85032296, -78863656, -72510856, --66088272, -60015188, -54439248, -49138184, -44054016, -39272644, -34603476, -29887604, -25502978, -21810918, --18476412, -15020574, -11469173, -7778723, -3459059, 1539209, 6551436, 11398843, 16697759, 22694608, -29481192, 38444252, 50652696, 62598612, 66469452, 57299160, 38711076, 19604916, 5549098, }, +2318209, -3129421, -13364328, -22068078, -13906030, 23338316, 68938520, 71941240, 11290395, -61519500, +-75093208, -26613228, 19918984, 22327388, 4521527, 2712272, 10649908, 3675955, -14254996, -20063402, +-11353209, -6714108, -12883291, -16463683, -7989176, 4802847, 10709501, 8565775, 3003256, -3887482, +-12086038, -20115480, -25625922, -27375584, -25383256, -20718922, -15309948, -10429254, -5472862, 678068, +7601555, 13700946, 17974976, 20415590, 21309480, 21220360, 21272436, 22553410, 25330106, 29222420, +33808372, 38672424, 43266428, 47165720, 50313396, 52808232, 54654532, 55847996, 56485264, 56649544, +56301116, 55363740, 53883048, 52083996, 50264004, 48584672, 47058884, 45802604, 45097156, 45042932, +45411764, 46103788, 47441672, 49701360, 52670256, 56014428, 59743532, 63888712, 68016176, 71476312, +73917464, 75246752, 75291848, 73703248, 69972536, 63533304, 54155780, 42167452, 27892592, 11008001, +-9009768, -31874026, -56412784, -81407344, -106045960, -129645200, -151357328, -170186464, -185207040, -196040560, +-203181488, -207441008, -209008672, -207558592, -203382800, -197860560, -192569696, -188201712, -184324432, -179907056, +-174222672, -167572976, -161031216, -155325344, -150254592, -145263312, -140111504, -134852848, -129680632, -124933616, +-120787904, -116880016, -112634440, -107862736, -102680320, -97099544, -91144576, -85032296, -78863656, -72510856, +-66088272, -60015188, -54439248, -49138184, -44054016, -39272644, -34603476, -29887604, -25502978, -21810918, +-18476412, -15020574, -11469173, -7778723, -3459059, 1539209, 6551436, 11398843, 16697759, 22694608, +29481192, 38444252, 50652696, 62598612, 66469452, 57299160, 38711076, 19604916, 5549098, }, { -1752347, --2318209, 3129421, 13364328, 22068078, 13906030, -23338316, -68938520, -71941240, -11290395, 61519500, -75093208, 26613228, -19918984, -22327388, -4521527, -2712272, -10649908, -3675955, 14254996, 20063402, -11353209, 6714108, 12883291, 16463683, 7989176, -4802847, -10709501, -8565775, -3003256, 3887482, -12086038, 20115480, 25625922, 27375584, 25383256, 20718922, 15309948, 10429254, 5472862, -678068, --7601555, -13700946, -17974976, -20415590, -21309480, -21220360, -21272436, -22553410, -25330106, -29222420, --33808372, -38672424, -43266428, -47165720, -50313396, -52808232, -54654532, -55847996, -56485264, -56649544, --56301116, -55363740, -53883048, -52083996, -50264004, -48584672, -47058884, -45802604, -45097156, -45042932, --45411764, -46103788, -47441672, -49701360, -52670256, -56014428, -59743532, -63888712, -68016176, -71476312, --73917464, -75246752, -75291848, -73703248, -69972536, -63533304, -54155780, -42167452, -27892592, -11008001, -9009768, 31874026, 56412784, 81407344, 106045960, 129645200, 151357328, 170186464, 185207040, 196040560, -203181488, 207441008, 209008672, 207558592, 203382800, 197860560, 192569696, 188201712, 184324432, 179907056, -174222672, 167572976, 161031216, 155325344, 150254592, 145263312, 140111504, 134852848, 129680632, 124933616, -120787904, 116880016, 112634440, 107862736, 102680320, 97099544, 91144576, 85032296, 78863656, 72510856, -66088272, 60015188, 54439248, 49138184, 44054016, 39272644, 34603476, 29887604, 25502978, 21810918, -18476412, 15020574, 11469173, 7778723, 3459059, -1539209, -6551436, -11398843, -16697759, -22694608, --29481192, -38444252, -50652696, -62598612, -66469452, -57299160, -38711076, -19604916, -5549098, }, +-2318209, 3129421, 13364328, 22068078, 13906030, -23338316, -68938520, -71941240, -11290395, 61519500, +75093208, 26613228, -19918984, -22327388, -4521527, -2712272, -10649908, -3675955, 14254996, 20063402, +11353209, 6714108, 12883291, 16463683, 7989176, -4802847, -10709501, -8565775, -3003256, 3887482, +12086038, 20115480, 25625922, 27375584, 25383256, 20718922, 15309948, 10429254, 5472862, -678068, +-7601555, -13700946, -17974976, -20415590, -21309480, -21220360, -21272436, -22553410, -25330106, -29222420, +-33808372, -38672424, -43266428, -47165720, -50313396, -52808232, -54654532, -55847996, -56485264, -56649544, +-56301116, -55363740, -53883048, -52083996, -50264004, -48584672, -47058884, -45802604, -45097156, -45042932, +-45411764, -46103788, -47441672, -49701360, -52670256, -56014428, -59743532, -63888712, -68016176, -71476312, +-73917464, -75246752, -75291848, -73703248, -69972536, -63533304, -54155780, -42167452, -27892592, -11008001, +9009768, 31874026, 56412784, 81407344, 106045960, 129645200, 151357328, 170186464, 185207040, 196040560, +203181488, 207441008, 209008672, 207558592, 203382800, 197860560, 192569696, 188201712, 184324432, 179907056, +174222672, 167572976, 161031216, 155325344, 150254592, 145263312, 140111504, 134852848, 129680632, 124933616, +120787904, 116880016, 112634440, 107862736, 102680320, 97099544, 91144576, 85032296, 78863656, 72510856, +66088272, 60015188, 54439248, 49138184, 44054016, 39272644, 34603476, 29887604, 25502978, 21810918, +18476412, 15020574, 11469173, 7778723, 3459059, -1539209, -6551436, -11398843, -16697759, -22694608, +-29481192, -38444252, -50652696, -62598612, -66469452, -57299160, -38711076, -19604916, -5549098, }, }, { { 6022081, -17711372, 19808926, 5702106, -1069984, 26598732, 60575144, 30136174, -86081344, -207033536, -210641296, --51190104, 176310560, 291438752, 184795264, -56688200, -214403696, -161382320, 9672266, 114938696, 91175176, -20908974, -15001247, -22431004, -32042604, -34917012, -13038984, 17381196, 29633126, 25831544, 26075820, -37205156, 52308408, 67342936, 81734840, 91005528, 90618976, 82400024, 70903464, 57972396, 44236552, -31173410, 19136764, 6932077, -5563594, -17260400, -28190554, -39239896, -50185620, -60355564, -70269424, --80538688, -90162104, -97526896, -102055400, -103766408, -102488656, -98518496, -92877592, -86127520, -77828032, --67520104, -55291800, -41150620, -24761024, -6062347, 14438606, 35991288, 57763016, 78866336, 98627480, -116608896, 132132520, 144197088, 152177664, 156192928, 156476400, 152789168, 144825216, 132918504, 117959664, -100683696, 81301584, 59863256, 36761700, 12690018, -11863773, -36840080, -62242128, -87801480, -113138032, --137922672, -161553040, -182911920, -200827840, -214623280, -223893968, -227962912, -226051648, -218062464, -204918800, --188054064, -168620960, -147109072, -123661776, -98896992, -74404400, -52142512, -33224256, -17482128, -4221416, -6915971, 15874736, 22513682, 26737782, 28529858, 28082106, 25817048, 22249004, 17916456, 13336410, -8747238, 3869229, -1880122, -8884140, -17067664, -25989920, -35050692, -43759276, -51981452, -59895468, --67640904, -75084616, -81900192, -87727392, -92288648, -95513096, -97520992, -98360656, -97869416, -95914136, --92604864, -88149368, -82709792, -76492296, -69763152, -62685048, -55346560, -47927540, -40649716, -33641940, --26855356, -19616726, -10412611, 1456531, 13294534, 19794430, 18117782, 11077258, 3459059, }, +17711372, 19808926, 5702106, -1069984, 26598732, 60575144, 30136174, -86081344, -207033536, -210641296, +-51190104, 176310560, 291438752, 184795264, -56688200, -214403696, -161382320, 9672266, 114938696, 91175176, +20908974, -15001247, -22431004, -32042604, -34917012, -13038984, 17381196, 29633126, 25831544, 26075820, +37205156, 52308408, 67342936, 81734840, 91005528, 90618976, 82400024, 70903464, 57972396, 44236552, +31173410, 19136764, 6932077, -5563594, -17260400, -28190554, -39239896, -50185620, -60355564, -70269424, +-80538688, -90162104, -97526896, -102055400, -103766408, -102488656, -98518496, -92877592, -86127520, -77828032, +-67520104, -55291800, -41150620, -24761024, -6062347, 14438606, 35991288, 57763016, 78866336, 98627480, +116608896, 132132520, 144197088, 152177664, 156192928, 156476400, 152789168, 144825216, 132918504, 117959664, +100683696, 81301584, 59863256, 36761700, 12690018, -11863773, -36840080, -62242128, -87801480, -113138032, +-137922672, -161553040, -182911920, -200827840, -214623280, -223893968, -227962912, -226051648, -218062464, -204918800, +-188054064, -168620960, -147109072, -123661776, -98896992, -74404400, -52142512, -33224256, -17482128, -4221416, +6915971, 15874736, 22513682, 26737782, 28529858, 28082106, 25817048, 22249004, 17916456, 13336410, +8747238, 3869229, -1880122, -8884140, -17067664, -25989920, -35050692, -43759276, -51981452, -59895468, +-67640904, -75084616, -81900192, -87727392, -92288648, -95513096, -97520992, -98360656, -97869416, -95914136, +-92604864, -88149368, -82709792, -76492296, -69763152, -62685048, -55346560, -47927540, -40649716, -33641940, +-26855356, -19616726, -10412611, 1456531, 13294534, 19794430, 18117782, 11077258, 3459059, }, { -6022081, --17711372, -19808926, -5702106, 1069984, -26598732, -60575144, -30136174, 86081344, 207033536, 210641296, -51190104, -176310560, -291438752, -184795264, 56688200, 214403696, 161382320, -9672266, -114938696, -91175176, --20908974, 15001247, 22431004, 32042604, 34917012, 13038984, -17381196, -29633126, -25831544, -26075820, --37205156, -52308408, -67342936, -81734840, -91005528, -90618976, -82400024, -70903464, -57972396, -44236552, --31173410, -19136764, -6932077, 5563594, 17260400, 28190554, 39239896, 50185620, 60355564, 70269424, -80538688, 90162104, 97526896, 102055400, 103766408, 102488656, 98518496, 92877592, 86127520, 77828032, -67520104, 55291800, 41150620, 24761024, 6062347, -14438606, -35991288, -57763016, -78866336, -98627480, --116608896, -132132520, -144197088, -152177664, -156192928, -156476400, -152789168, -144825216, -132918504, -117959664, --100683696, -81301584, -59863256, -36761700, -12690018, 11863773, 36840080, 62242128, 87801480, 113138032, -137922672, 161553040, 182911920, 200827840, 214623280, 223893968, 227962912, 226051648, 218062464, 204918800, -188054064, 168620960, 147109072, 123661776, 98896992, 74404400, 52142512, 33224256, 17482128, 4221416, --6915971, -15874736, -22513682, -26737782, -28529858, -28082106, -25817048, -22249004, -17916456, -13336410, --8747238, -3869229, 1880122, 8884140, 17067664, 25989920, 35050692, 43759276, 51981452, 59895468, -67640904, 75084616, 81900192, 87727392, 92288648, 95513096, 97520992, 98360656, 97869416, 95914136, -92604864, 88149368, 82709792, 76492296, 69763152, 62685048, 55346560, 47927540, 40649716, 33641940, -26855356, 19616726, 10412611, -1456531, -13294534, -19794430, -18117782, -11077258, -3459059, }, +-17711372, -19808926, -5702106, 1069984, -26598732, -60575144, -30136174, 86081344, 207033536, 210641296, +51190104, -176310560, -291438752, -184795264, 56688200, 214403696, 161382320, -9672266, -114938696, -91175176, +-20908974, 15001247, 22431004, 32042604, 34917012, 13038984, -17381196, -29633126, -25831544, -26075820, +-37205156, -52308408, -67342936, -81734840, -91005528, -90618976, -82400024, -70903464, -57972396, -44236552, +-31173410, -19136764, -6932077, 5563594, 17260400, 28190554, 39239896, 50185620, 60355564, 70269424, +80538688, 90162104, 97526896, 102055400, 103766408, 102488656, 98518496, 92877592, 86127520, 77828032, +67520104, 55291800, 41150620, 24761024, 6062347, -14438606, -35991288, -57763016, -78866336, -98627480, +-116608896, -132132520, -144197088, -152177664, -156192928, -156476400, -152789168, -144825216, -132918504, -117959664, +-100683696, -81301584, -59863256, -36761700, -12690018, 11863773, 36840080, 62242128, 87801480, 113138032, +137922672, 161553040, 182911920, 200827840, 214623280, 223893968, 227962912, 226051648, 218062464, 204918800, +188054064, 168620960, 147109072, 123661776, 98896992, 74404400, 52142512, 33224256, 17482128, 4221416, +-6915971, -15874736, -22513682, -26737782, -28529858, -28082106, -25817048, -22249004, -17916456, -13336410, +-8747238, -3869229, 1880122, 8884140, 17067664, 25989920, 35050692, 43759276, 51981452, 59895468, +67640904, 75084616, 81900192, 87727392, 92288648, 95513096, 97520992, 98360656, 97869416, 95914136, +92604864, 88149368, 82709792, 76492296, 69763152, 62685048, 55346560, 47927540, 40649716, 33641940, +26855356, 19616726, 10412611, -1456531, -13294534, -19794430, -18117782, -11077258, -3459059, }, }, { { 44560, -2703682, 9866077, 17234630, 17793512, 7589207, -12143483, -35052840, -48142824, -35460324, 5149129, -48207788, 57437136, 24556476, -18523120, -35033512, -21419538, 41876, 15292231, 27706834, 38851200, -40580460, 29954712, 16558173, 8228621, 3758, -16033113, -37292664, -53191560, -56425668, -47314972, --30891552, -13847511, -1938641, 3282429, 4975183, 7279433, 11693585, 16974248, 21048560, 22660248, -22146998, 20931524, 20030116, 19392852, 18677740, 17743584, 16189879, 13386876, 9232032, 4176856, --1509681, -7846905, -14711874, -21900038, -29304024, -36559300, -42951284, -48014512, -51728048, -54012436, --54712516, -54047332, -52337936, -49394808, -44904420, -39068096, -32057100, -23302882, -12154221, 1221918, -16305843, 32928978, 50787988, 68921880, 86341728, 102611600, 117358368, 129918464, 139881184, 147379120, -152497104, 154865248, 154043296, 149988848, 143081472, 133786624, 122117728, 107490144, 89568856, 69164008, -47685948, 25841744, 3575024, -18859202, -40482752, -60081760, -76539536, -89067424, -97762048, -103586024, --107260904, -108474232, -106427144, -100741680, -91825864, -80963352, -69916160, -59686624, -49751292, -39126616, --27851252, -16859358, -6990060, 1244467, 7595113, 12449500, 16635482, 20393042, 23147726, 24417962, -24137180, 22142168, 18325552, 13180718, 7290707, 540092, -7393786, -16309601, -25978646, -36615668, --48160544, -59928216, -71496176, -83015816, -94371168, -105088720, -115143776, -124732832, -133423160, -140608640, --146365504, -150849984, -153621856, -154467968, -153848944, -151803472, -147736672, -141726400, -134540384, -126354176, --116902568, -105653512, -89784680, -65000572, -32832340, -4391067, 9228811, 8695698, 2960843, }, +2703682, 9866077, 17234630, 17793512, 7589207, -12143483, -35052840, -48142824, -35460324, 5149129, +48207788, 57437136, 24556476, -18523120, -35033512, -21419538, 41876, 15292231, 27706834, 38851200, +40580460, 29954712, 16558173, 8228621, 3758, -16033113, -37292664, -53191560, -56425668, -47314972, +-30891552, -13847511, -1938641, 3282429, 4975183, 7279433, 11693585, 16974248, 21048560, 22660248, +22146998, 20931524, 20030116, 19392852, 18677740, 17743584, 16189879, 13386876, 9232032, 4176856, +-1509681, -7846905, -14711874, -21900038, -29304024, -36559300, -42951284, -48014512, -51728048, -54012436, +-54712516, -54047332, -52337936, -49394808, -44904420, -39068096, -32057100, -23302882, -12154221, 1221918, +16305843, 32928978, 50787988, 68921880, 86341728, 102611600, 117358368, 129918464, 139881184, 147379120, +152497104, 154865248, 154043296, 149988848, 143081472, 133786624, 122117728, 107490144, 89568856, 69164008, +47685948, 25841744, 3575024, -18859202, -40482752, -60081760, -76539536, -89067424, -97762048, -103586024, +-107260904, -108474232, -106427144, -100741680, -91825864, -80963352, -69916160, -59686624, -49751292, -39126616, +-27851252, -16859358, -6990060, 1244467, 7595113, 12449500, 16635482, 20393042, 23147726, 24417962, +24137180, 22142168, 18325552, 13180718, 7290707, 540092, -7393786, -16309601, -25978646, -36615668, +-48160544, -59928216, -71496176, -83015816, -94371168, -105088720, -115143776, -124732832, -133423160, -140608640, +-146365504, -150849984, -153621856, -154467968, -153848944, -151803472, -147736672, -141726400, -134540384, -126354176, +-116902568, -105653512, -89784680, -65000572, -32832340, -4391067, 9228811, 8695698, 2960843, }, { 44560, -2703682, 9866077, 17234630, 17793512, 7589207, -12143483, -35052840, -48142824, -35460324, 5149129, -48207788, 57437136, 24556476, -18523120, -35033512, -21419538, 41876, 15292231, 27706834, 38851200, -40580460, 29954712, 16558173, 8228621, 3758, -16033113, -37292664, -53191560, -56425668, -47314972, --30891552, -13847511, -1938641, 3282429, 4975183, 7279433, 11693585, 16974248, 21048560, 22660248, -22146998, 20931524, 20030116, 19392852, 18677740, 17743584, 16189879, 13386876, 9232032, 4176856, --1509681, -7846905, -14711874, -21900038, -29304024, -36559300, -42951284, -48014512, -51728048, -54012436, --54712516, -54047332, -52337936, -49394808, -44904420, -39068096, -32057100, -23302882, -12154221, 1221918, -16305843, 32928978, 50787988, 68921880, 86341728, 102611600, 117358368, 129918464, 139881184, 147379120, -152497104, 154865248, 154043296, 149988848, 143081472, 133786624, 122117728, 107490144, 89568856, 69164008, -47685948, 25841744, 3575024, -18859202, -40482752, -60081760, -76539536, -89067424, -97762048, -103586024, --107260904, -108474232, -106427144, -100741680, -91825864, -80963352, -69916160, -59686624, -49751292, -39126616, --27851252, -16859358, -6990060, 1244467, 7595113, 12449500, 16635482, 20393042, 23147726, 24417962, -24137180, 22142168, 18325552, 13180718, 7290707, 540092, -7393786, -16309601, -25978646, -36615668, --48160544, -59928216, -71496176, -83015816, -94371168, -105088720, -115143776, -124732832, -133423160, -140608640, --146365504, -150849984, -153621856, -154467968, -153848944, -151803472, -147736672, -141726400, -134540384, -126354176, --116902568, -105653512, -89784680, -65000572, -32832340, -4391067, 9228811, 8695698, 2960843, }, +2703682, 9866077, 17234630, 17793512, 7589207, -12143483, -35052840, -48142824, -35460324, 5149129, +48207788, 57437136, 24556476, -18523120, -35033512, -21419538, 41876, 15292231, 27706834, 38851200, +40580460, 29954712, 16558173, 8228621, 3758, -16033113, -37292664, -53191560, -56425668, -47314972, +-30891552, -13847511, -1938641, 3282429, 4975183, 7279433, 11693585, 16974248, 21048560, 22660248, +22146998, 20931524, 20030116, 19392852, 18677740, 17743584, 16189879, 13386876, 9232032, 4176856, +-1509681, -7846905, -14711874, -21900038, -29304024, -36559300, -42951284, -48014512, -51728048, -54012436, +-54712516, -54047332, -52337936, -49394808, -44904420, -39068096, -32057100, -23302882, -12154221, 1221918, +16305843, 32928978, 50787988, 68921880, 86341728, 102611600, 117358368, 129918464, 139881184, 147379120, +152497104, 154865248, 154043296, 149988848, 143081472, 133786624, 122117728, 107490144, 89568856, 69164008, +47685948, 25841744, 3575024, -18859202, -40482752, -60081760, -76539536, -89067424, -97762048, -103586024, +-107260904, -108474232, -106427144, -100741680, -91825864, -80963352, -69916160, -59686624, -49751292, -39126616, +-27851252, -16859358, -6990060, 1244467, 7595113, 12449500, 16635482, 20393042, 23147726, 24417962, +24137180, 22142168, 18325552, 13180718, 7290707, 540092, -7393786, -16309601, -25978646, -36615668, +-48160544, -59928216, -71496176, -83015816, -94371168, -105088720, -115143776, -124732832, -133423160, -140608640, +-146365504, -150849984, -153621856, -154467968, -153848944, -151803472, -147736672, -141726400, -134540384, -126354176, +-116902568, -105653512, -89784680, -65000572, -32832340, -4391067, 9228811, 8695698, 2960843, }, }, { { 1759326, -11070278, 25192130, 28666760, 14779519, -9762461, -40301824, -69774432, -71958952, -22061636, 57765700, -103101760, 74360376, 1267552, -52283712, -52460880, -14944876, 22100292, 29719026, 4831838, -28944858, --40509596, -19877646, 14618458, 39270496, 47271484, 45476724, 39869644, 32147294, 24026584, 16596291, -7829726, -4108136, -16990890, -27270894, -34506840, -40266392, -44603236, -46227808, -45040248, -42559368, --40435508, -39600672, -40327060, -42376832, -45249092, -48373680, -50870668, -51521892, -49539764, -45176612, --39297876, -32735704, -26308286, -20878372, -16865800, -13962402, -11606612, -9465034, -7307887, -4727686, --1206349, 3718905, 10382547, 18842022, 28738164, 39454644, 50397148, 60966524, 70414912, 78094856, -83916144, 88226144, 91133840, 92317640, 91731912, 90075664, 88051128, 85455888, 81696720, 77112376, -72987064, 70102992, 68074696, 66493608, 65974456, 67392872, 70428336, 73550240, 75418552, 75933952, -75894216, 75944152, 75982264, 75457208, 73991552, 71586904, 68410776, 64745560, 61116312, 58018028, -55267640, 51893404, 46910168, 40071508, 31758598, 22332220, 11759620, -209380, -13596793, -27944130, --42563124, -57054884, -71468256, -85903104, -100104416, -113471960, -125301376, -135047200, -142590224, -148284816, --152554016, -155416080, -156509680, -155479424, -152256048, -147157392, -140896400, -134246176, -127440808, -119999776, --111275624, -101080984, -89829240, -78299400, -67261336, -57073136, -47571056, -38373384, -29178398, -19800336, --10293426, -1107028, 7255274, 14736570, 21460878, 27151172, 31449362, 34608848, 37118180, 38982196, -40195524, 41229540, 41705208, 39342436, 32184874, 21709450, 11916387, 5348308, 1483911, }, +11070278, 25192130, 28666760, 14779519, -9762461, -40301824, -69774432, -71958952, -22061636, 57765700, +103101760, 74360376, 1267552, -52283712, -52460880, -14944876, 22100292, 29719026, 4831838, -28944858, +-40509596, -19877646, 14618458, 39270496, 47271484, 45476724, 39869644, 32147294, 24026584, 16596291, +7829726, -4108136, -16990890, -27270894, -34506840, -40266392, -44603236, -46227808, -45040248, -42559368, +-40435508, -39600672, -40327060, -42376832, -45249092, -48373680, -50870668, -51521892, -49539764, -45176612, +-39297876, -32735704, -26308286, -20878372, -16865800, -13962402, -11606612, -9465034, -7307887, -4727686, +-1206349, 3718905, 10382547, 18842022, 28738164, 39454644, 50397148, 60966524, 70414912, 78094856, +83916144, 88226144, 91133840, 92317640, 91731912, 90075664, 88051128, 85455888, 81696720, 77112376, +72987064, 70102992, 68074696, 66493608, 65974456, 67392872, 70428336, 73550240, 75418552, 75933952, +75894216, 75944152, 75982264, 75457208, 73991552, 71586904, 68410776, 64745560, 61116312, 58018028, +55267640, 51893404, 46910168, 40071508, 31758598, 22332220, 11759620, -209380, -13596793, -27944130, +-42563124, -57054884, -71468256, -85903104, -100104416, -113471960, -125301376, -135047200, -142590224, -148284816, +-152554016, -155416080, -156509680, -155479424, -152256048, -147157392, -140896400, -134246176, -127440808, -119999776, +-111275624, -101080984, -89829240, -78299400, -67261336, -57073136, -47571056, -38373384, -29178398, -19800336, +-10293426, -1107028, 7255274, 14736570, 21460878, 27151172, 31449362, 34608848, 37118180, 38982196, +40195524, 41229540, 41705208, 39342436, 32184874, 21709450, 11916387, 5348308, 1483911, }, { 1759326, -11070278, 25192130, 28666760, 14779519, -9762461, -40301824, -69774432, -71958952, -22061636, 57765700, -103101760, 74360376, 1267552, -52283712, -52460880, -14944876, 22100292, 29719026, 4831838, -28944858, --40509596, -19877646, 14618458, 39270496, 47271484, 45476724, 39869644, 32147294, 24026584, 16596291, -7829726, -4108136, -16990890, -27270894, -34506840, -40266392, -44603236, -46227808, -45040248, -42559368, --40435508, -39600672, -40327060, -42376832, -45249092, -48373680, -50870668, -51521892, -49539764, -45176612, --39297876, -32735704, -26308286, -20878372, -16865800, -13962402, -11606612, -9465034, -7307887, -4727686, --1206349, 3718905, 10382547, 18842022, 28738164, 39454644, 50397148, 60966524, 70414912, 78094856, -83916144, 88226144, 91133840, 92317640, 91731912, 90075664, 88051128, 85455888, 81696720, 77112376, -72987064, 70102992, 68074696, 66493608, 65974456, 67392872, 70428336, 73550240, 75418552, 75933952, -75894216, 75944152, 75982264, 75457208, 73991552, 71586904, 68410776, 64745560, 61116312, 58018028, -55267640, 51893404, 46910168, 40071508, 31758598, 22332220, 11759620, -209380, -13596793, -27944130, --42563124, -57054884, -71468256, -85903104, -100104416, -113471960, -125301376, -135047200, -142590224, -148284816, --152554016, -155416080, -156509680, -155479424, -152256048, -147157392, -140896400, -134246176, -127440808, -119999776, --111275624, -101080984, -89829240, -78299400, -67261336, -57073136, -47571056, -38373384, -29178398, -19800336, --10293426, -1107028, 7255274, 14736570, 21460878, 27151172, 31449362, 34608848, 37118180, 38982196, -40195524, 41229540, 41705208, 39342436, 32184874, 21709450, 11916387, 5348308, 1483911, }, +11070278, 25192130, 28666760, 14779519, -9762461, -40301824, -69774432, -71958952, -22061636, 57765700, +103101760, 74360376, 1267552, -52283712, -52460880, -14944876, 22100292, 29719026, 4831838, -28944858, +-40509596, -19877646, 14618458, 39270496, 47271484, 45476724, 39869644, 32147294, 24026584, 16596291, +7829726, -4108136, -16990890, -27270894, -34506840, -40266392, -44603236, -46227808, -45040248, -42559368, +-40435508, -39600672, -40327060, -42376832, -45249092, -48373680, -50870668, -51521892, -49539764, -45176612, +-39297876, -32735704, -26308286, -20878372, -16865800, -13962402, -11606612, -9465034, -7307887, -4727686, +-1206349, 3718905, 10382547, 18842022, 28738164, 39454644, 50397148, 60966524, 70414912, 78094856, +83916144, 88226144, 91133840, 92317640, 91731912, 90075664, 88051128, 85455888, 81696720, 77112376, +72987064, 70102992, 68074696, 66493608, 65974456, 67392872, 70428336, 73550240, 75418552, 75933952, +75894216, 75944152, 75982264, 75457208, 73991552, 71586904, 68410776, 64745560, 61116312, 58018028, +55267640, 51893404, 46910168, 40071508, 31758598, 22332220, 11759620, -209380, -13596793, -27944130, +-42563124, -57054884, -71468256, -85903104, -100104416, -113471960, -125301376, -135047200, -142590224, -148284816, +-152554016, -155416080, -156509680, -155479424, -152256048, -147157392, -140896400, -134246176, -127440808, -119999776, +-111275624, -101080984, -89829240, -78299400, -67261336, -57073136, -47571056, -38373384, -29178398, -19800336, +-10293426, -1107028, 7255274, 14736570, 21460878, 27151172, 31449362, 34608848, 37118180, 38982196, +40195524, 41229540, 41705208, 39342436, 32184874, 21709450, 11916387, 5348308, 1483911, }, }, { { -4452271, --7500087, -3624416, -2251637, -519154, 14617921, 32093070, 12177306, -56947508, -114948360, -82408608, -34436512, 127896608, 103851232, -7760469, -89002456, -71117680, 912681, 44779328, 41342820, 32260574, -44262324, 56810608, 43316892, 9867687, -20316270, -39855148, -58272504, -80997176, -102027488, -113800528, --114110304, -104249592, -87111600, -67213016, -48554604, -32237488, -17758080, -5370857, 4229469, 10980084, -14884209, 15707769, 14190572, 12344273, 11856794, 13141526, 16093242, 20577726, 26002268, 31431644, -36322540, 40476308, 43420508, 44550084, 43748000, 41371808, 37846180, 33631204, 29341606, 25579752, -22799834, 21365314, 21520470, 23321672, 26781806, 31941672, 38691748, 46775952, 56064356, 66494684, -77703472, 89050240, 99985768, 110070888, 118769808, 125605784, 130366752, 132929776, 133261560, 131814160, -129377840, 126279016, 122268056, 117357832, 112035832, 106537736, 100799128, 95228016, 90406376, 85642184, -78858280, 68473592, 54687820, 38485592, 20015622, -1562831, -26934276, -55621972, -86015312, -116332944, --145534432, -173169856, -198556336, -220646432, -238789984, -253151280, -264224784, -272182272, -276668896, -277043104, --273021408, -265308720, -255301440, -243944480, -231167488, -216527552, -200001056, -182089440, -163630208, -145534432, --128217656, -111236968, -93836984, -75738528, -57142392, -38294464, -19366544, -416075, 18755048, 38290172, -57758184, 76446656, 94111864, 110891760, 126710128, 141369920, 154847536, 166826736, 176450144, 183179280, -187335744, 189352768, 189299616, 187444720, 184237456, 179489904, 172672176, 163960912, 153935392, 142774384, -130659344, 117202680, 99061808, 71684080, 37193880, 7276749, -7205882, -7443715, -2540473, }, +-7500087, -3624416, -2251637, -519154, 14617921, 32093070, 12177306, -56947508, -114948360, -82408608, +34436512, 127896608, 103851232, -7760469, -89002456, -71117680, 912681, 44779328, 41342820, 32260574, +44262324, 56810608, 43316892, 9867687, -20316270, -39855148, -58272504, -80997176, -102027488, -113800528, +-114110304, -104249592, -87111600, -67213016, -48554604, -32237488, -17758080, -5370857, 4229469, 10980084, +14884209, 15707769, 14190572, 12344273, 11856794, 13141526, 16093242, 20577726, 26002268, 31431644, +36322540, 40476308, 43420508, 44550084, 43748000, 41371808, 37846180, 33631204, 29341606, 25579752, +22799834, 21365314, 21520470, 23321672, 26781806, 31941672, 38691748, 46775952, 56064356, 66494684, +77703472, 89050240, 99985768, 110070888, 118769808, 125605784, 130366752, 132929776, 133261560, 131814160, +129377840, 126279016, 122268056, 117357832, 112035832, 106537736, 100799128, 95228016, 90406376, 85642184, +78858280, 68473592, 54687820, 38485592, 20015622, -1562831, -26934276, -55621972, -86015312, -116332944, +-145534432, -173169856, -198556336, -220646432, -238789984, -253151280, -264224784, -272182272, -276668896, -277043104, +-273021408, -265308720, -255301440, -243944480, -231167488, -216527552, -200001056, -182089440, -163630208, -145534432, +-128217656, -111236968, -93836984, -75738528, -57142392, -38294464, -19366544, -416075, 18755048, 38290172, +57758184, 76446656, 94111864, 110891760, 126710128, 141369920, 154847536, 166826736, 176450144, 183179280, +187335744, 189352768, 189299616, 187444720, 184237456, 179489904, 172672176, 163960912, 153935392, 142774384, +130659344, 117202680, 99061808, 71684080, 37193880, 7276749, -7205882, -7443715, -2540473, }, { -4452271, --7500087, -3624416, -2251637, -519154, 14617921, 32093070, 12177306, -56947508, -114948360, -82408608, -34436512, 127896608, 103851232, -7760469, -89002456, -71117680, 912681, 44779328, 41342820, 32260574, -44262324, 56810608, 43316892, 9867687, -20316270, -39855148, -58272504, -80997176, -102027488, -113800528, --114110304, -104249592, -87111600, -67213016, -48554604, -32237488, -17758080, -5370857, 4229469, 10980084, -14884209, 15707769, 14190572, 12344273, 11856794, 13141526, 16093242, 20577726, 26002268, 31431644, -36322540, 40476308, 43420508, 44550084, 43748000, 41371808, 37846180, 33631204, 29341606, 25579752, -22799834, 21365314, 21520470, 23321672, 26781806, 31941672, 38691748, 46775952, 56064356, 66494684, -77703472, 89050240, 99985768, 110070888, 118769808, 125605784, 130366752, 132929776, 133261560, 131814160, -129377840, 126279016, 122268056, 117357832, 112035832, 106537736, 100799128, 95228016, 90406376, 85642184, -78858280, 68473592, 54687820, 38485592, 20015622, -1562831, -26934276, -55621972, -86015312, -116332944, --145534432, -173169856, -198556336, -220646432, -238789984, -253151280, -264224784, -272182272, -276668896, -277043104, --273021408, -265308720, -255301440, -243944480, -231167488, -216527552, -200001056, -182089440, -163630208, -145534432, --128217656, -111236968, -93836984, -75738528, -57142392, -38294464, -19366544, -416075, 18755048, 38290172, -57758184, 76446656, 94111864, 110891760, 126710128, 141369920, 154847536, 166826736, 176450144, 183179280, -187335744, 189352768, 189299616, 187444720, 184237456, 179489904, 172672176, 163960912, 153935392, 142774384, -130659344, 117202680, 99061808, 71684080, 37193880, 7276749, -7205882, -7443715, -2540473, }, +-7500087, -3624416, -2251637, -519154, 14617921, 32093070, 12177306, -56947508, -114948360, -82408608, +34436512, 127896608, 103851232, -7760469, -89002456, -71117680, 912681, 44779328, 41342820, 32260574, +44262324, 56810608, 43316892, 9867687, -20316270, -39855148, -58272504, -80997176, -102027488, -113800528, +-114110304, -104249592, -87111600, -67213016, -48554604, -32237488, -17758080, -5370857, 4229469, 10980084, +14884209, 15707769, 14190572, 12344273, 11856794, 13141526, 16093242, 20577726, 26002268, 31431644, +36322540, 40476308, 43420508, 44550084, 43748000, 41371808, 37846180, 33631204, 29341606, 25579752, +22799834, 21365314, 21520470, 23321672, 26781806, 31941672, 38691748, 46775952, 56064356, 66494684, +77703472, 89050240, 99985768, 110070888, 118769808, 125605784, 130366752, 132929776, 133261560, 131814160, +129377840, 126279016, 122268056, 117357832, 112035832, 106537736, 100799128, 95228016, 90406376, 85642184, +78858280, 68473592, 54687820, 38485592, 20015622, -1562831, -26934276, -55621972, -86015312, -116332944, +-145534432, -173169856, -198556336, -220646432, -238789984, -253151280, -264224784, -272182272, -276668896, -277043104, +-273021408, -265308720, -255301440, -243944480, -231167488, -216527552, -200001056, -182089440, -163630208, -145534432, +-128217656, -111236968, -93836984, -75738528, -57142392, -38294464, -19366544, -416075, 18755048, 38290172, +57758184, 76446656, 94111864, 110891760, 126710128, 141369920, 154847536, 166826736, 176450144, 183179280, +187335744, 189352768, 189299616, 187444720, 184237456, 179489904, 172672176, 163960912, 153935392, 142774384, +130659344, 117202680, 99061808, 71684080, 37193880, 7276749, -7205882, -7443715, -2540473, }, }, { { 95026, -121333, -286689, -1526861, -3704409, -4636417, -490163, 6609955, 3957812, -16376173, -34094524, --12255152, 49355080, 89414776, 47789564, -48562660, -100550016, -52124260, 41663868, 84414896, 49460308, --8843338, -35082904, -25318832, -3728032, 15545634, 30092152, 35791572, 28868622, 13333726, -3234647, --17113834, -27649388, -34395708, -38820060, -44844292, -54616952, -66028680, -75620416, -81532440, -83032992, --79790288, -72682120, -63753956, -54773180, -46706160, -40330816, -36155572, -33837364, -32576254, -31920734, --31610422, -31074088, -29732984, -27550068, -24888262, -22152904, -19811074, -18334142, -17840220, -18063558, --18738942, -19659140, -20390894, -20398948, -19520090, -17939004, -15714212, -12709345, -8958228, -4674535, -82141, 5354751, 10898480, 16254841, 21288542, 26264798, 31280246, 35985384, 40132176, 44128640, -48680768, 53914188, 59191092, 63964948, 68518152, 73470248, 78630112, 82803208, 84906136, 84932976, -83589728, 81289232, 77855944, 73096584, 67385888, 61640832, 56737592, 52874268, 49592912, 46602544, -44493712, 44381508, 46887084, 51655036, 57703424, 64018636, 70019240, 75797584, 81821272, 88200376, -94386200, 99693704, 103846400, 106935560, 109211352, 111065168, 112856712, 114575768, 115938344, 116819888, -117329920, 117506008, 117264416, 116545552, 115250616, 113193328, 110393544, 107202920, 103961832, 100808248, -97913440, 95516848, 93628680, 92104496, 91001232, 90433224, 90185720, 89945208, 89672472, 89262840, -88194472, 86022288, 82761872, 78343960, 72357312, 64792804, 56205552, 46743204, 36020280, 24197308, -11628087, -2854006, -20797842, -39668316, -51709260, -50203336, -36630704, -19493246, -5658620, }, +121333, -286689, -1526861, -3704409, -4636417, -490163, 6609955, 3957812, -16376173, -34094524, +-12255152, 49355080, 89414776, 47789564, -48562660, -100550016, -52124260, 41663868, 84414896, 49460308, +-8843338, -35082904, -25318832, -3728032, 15545634, 30092152, 35791572, 28868622, 13333726, -3234647, +-17113834, -27649388, -34395708, -38820060, -44844292, -54616952, -66028680, -75620416, -81532440, -83032992, +-79790288, -72682120, -63753956, -54773180, -46706160, -40330816, -36155572, -33837364, -32576254, -31920734, +-31610422, -31074088, -29732984, -27550068, -24888262, -22152904, -19811074, -18334142, -17840220, -18063558, +-18738942, -19659140, -20390894, -20398948, -19520090, -17939004, -15714212, -12709345, -8958228, -4674535, +82141, 5354751, 10898480, 16254841, 21288542, 26264798, 31280246, 35985384, 40132176, 44128640, +48680768, 53914188, 59191092, 63964948, 68518152, 73470248, 78630112, 82803208, 84906136, 84932976, +83589728, 81289232, 77855944, 73096584, 67385888, 61640832, 56737592, 52874268, 49592912, 46602544, +44493712, 44381508, 46887084, 51655036, 57703424, 64018636, 70019240, 75797584, 81821272, 88200376, +94386200, 99693704, 103846400, 106935560, 109211352, 111065168, 112856712, 114575768, 115938344, 116819888, +117329920, 117506008, 117264416, 116545552, 115250616, 113193328, 110393544, 107202920, 103961832, 100808248, +97913440, 95516848, 93628680, 92104496, 91001232, 90433224, 90185720, 89945208, 89672472, 89262840, +88194472, 86022288, 82761872, 78343960, 72357312, 64792804, 56205552, 46743204, 36020280, 24197308, +11628087, -2854006, -20797842, -39668316, -51709260, -50203336, -36630704, -19493246, -5658620, }, { 95026, -121333, -286689, -1526861, -3704409, -4636417, -490163, 6609955, 3957812, -16376173, -34094524, --12255152, 49355080, 89414776, 47789564, -48562660, -100550016, -52124260, 41663868, 84414896, 49460308, --8843338, -35082904, -25318832, -3728032, 15545634, 30092152, 35791572, 28868622, 13333726, -3234647, --17113834, -27649388, -34395708, -38820060, -44844292, -54616952, -66028680, -75620416, -81532440, -83032992, --79790288, -72682120, -63753956, -54773180, -46706160, -40330816, -36155572, -33837364, -32576254, -31920734, --31610422, -31074088, -29732984, -27550068, -24888262, -22152904, -19811074, -18334142, -17840220, -18063558, --18738942, -19659140, -20390894, -20398948, -19520090, -17939004, -15714212, -12709345, -8958228, -4674535, -82141, 5354751, 10898480, 16254841, 21288542, 26264798, 31280246, 35985384, 40132176, 44128640, -48680768, 53914188, 59191092, 63964948, 68518152, 73470248, 78630112, 82803208, 84906136, 84932976, -83589728, 81289232, 77855944, 73096584, 67385888, 61640832, 56737592, 52874268, 49592912, 46602544, -44493712, 44381508, 46887084, 51655036, 57703424, 64018636, 70019240, 75797584, 81821272, 88200376, -94386200, 99693704, 103846400, 106935560, 109211352, 111065168, 112856712, 114575768, 115938344, 116819888, -117329920, 117506008, 117264416, 116545552, 115250616, 113193328, 110393544, 107202920, 103961832, 100808248, -97913440, 95516848, 93628680, 92104496, 91001232, 90433224, 90185720, 89945208, 89672472, 89262840, -88194472, 86022288, 82761872, 78343960, 72357312, 64792804, 56205552, 46743204, 36020280, 24197308, -11628087, -2854006, -20797842, -39668316, -51709260, -50203336, -36630704, -19493246, -5658620, }, +121333, -286689, -1526861, -3704409, -4636417, -490163, 6609955, 3957812, -16376173, -34094524, +-12255152, 49355080, 89414776, 47789564, -48562660, -100550016, -52124260, 41663868, 84414896, 49460308, +-8843338, -35082904, -25318832, -3728032, 15545634, 30092152, 35791572, 28868622, 13333726, -3234647, +-17113834, -27649388, -34395708, -38820060, -44844292, -54616952, -66028680, -75620416, -81532440, -83032992, +-79790288, -72682120, -63753956, -54773180, -46706160, -40330816, -36155572, -33837364, -32576254, -31920734, +-31610422, -31074088, -29732984, -27550068, -24888262, -22152904, -19811074, -18334142, -17840220, -18063558, +-18738942, -19659140, -20390894, -20398948, -19520090, -17939004, -15714212, -12709345, -8958228, -4674535, +82141, 5354751, 10898480, 16254841, 21288542, 26264798, 31280246, 35985384, 40132176, 44128640, +48680768, 53914188, 59191092, 63964948, 68518152, 73470248, 78630112, 82803208, 84906136, 84932976, +83589728, 81289232, 77855944, 73096584, 67385888, 61640832, 56737592, 52874268, 49592912, 46602544, +44493712, 44381508, 46887084, 51655036, 57703424, 64018636, 70019240, 75797584, 81821272, 88200376, +94386200, 99693704, 103846400, 106935560, 109211352, 111065168, 112856712, 114575768, 115938344, 116819888, +117329920, 117506008, 117264416, 116545552, 115250616, 113193328, 110393544, 107202920, 103961832, 100808248, +97913440, 95516848, 93628680, 92104496, 91001232, 90433224, 90185720, 89945208, 89672472, 89262840, +88194472, 86022288, 82761872, 78343960, 72357312, 64792804, 56205552, 46743204, 36020280, 24197308, +11628087, -2854006, -20797842, -39668316, -51709260, -50203336, -36630704, -19493246, -5658620, }, }, }; -const Word32 CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[16][BINAURAL_CHANNELS][80] ={ +const Word32 CRendBin_HOA3_HRIR_coeff_re_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80] ={ { { 474517120, -393749184, 262211504, 117985432, -10480794, -110985712, -191049280, -267038512, -336338368, -371476032, -353389376, --287532480, -171644080, 6297496, 192329712, 242526608, 72079216, -182587648, -260212208, -67530848, 209416704, -328129600, 241918320, 74428024, -73858944, -198710960, -313772064, -400587296, -445658688, -464703104, -473818656, --471214272, -454585792, -431268416, -406896608, -380733280, -352922304, -325544576, -298700480, -272249376, -247473328, --223824160, -199292928, -174677936, -151928560, -129886256, -107092328, -85339392, -65715684, -46066208, -25864294, --7434589, 9564355, 27704150, 45774152, 60977260, 75160856, 90906208, 105588016, 117123224, 129179728, -143516336, 155936848, 165762656, 178110144, 192645392, 203760224, 213555968, 228452528, 244631680, 255759392, -268987904, 291244960, 312113664, 327424160, 358783328, 411108896, 436517376, 395435488, 333884864, }, +393749184, 262211504, 117985432, -10480794, -110985712, -191049280, -267038512, -336338368, -371476032, -353389376, +-287532480, -171644080, 6297496, 192329712, 242526608, 72079216, -182587648, -260212208, -67530848, 209416704, +328129600, 241918320, 74428024, -73858944, -198710960, -313772064, -400587296, -445658688, -464703104, -473818656, +-471214272, -454585792, -431268416, -406896608, -380733280, -352922304, -325544576, -298700480, -272249376, -247473328, +-223824160, -199292928, -174677936, -151928560, -129886256, -107092328, -85339392, -65715684, -46066208, -25864294, +-7434589, 9564355, 27704150, 45774152, 60977260, 75160856, 90906208, 105588016, 117123224, 129179728, +143516336, 155936848, 165762656, 178110144, 192645392, 203760224, 213555968, 228452528, 244631680, 255759392, +268987904, 291244960, 312113664, 327424160, 358783328, 411108896, 436517376, 395435488, 333884864, }, { 474517120, -393749184, 262211504, 117985432, -10480794, -110985712, -191049280, -267038512, -336338368, -371476032, -353389376, --287532480, -171644080, 6297496, 192329712, 242526608, 72079216, -182587648, -260212208, -67530848, 209416704, -328129600, 241918320, 74428024, -73858944, -198710960, -313772064, -400587296, -445658688, -464703104, -473818656, --471214272, -454585792, -431268416, -406896608, -380733280, -352922304, -325544576, -298700480, -272249376, -247473328, --223824160, -199292928, -174677936, -151928560, -129886256, -107092328, -85339392, -65715684, -46066208, -25864294, --7434589, 9564355, 27704150, 45774152, 60977260, 75160856, 90906208, 105588016, 117123224, 129179728, -143516336, 155936848, 165762656, 178110144, 192645392, 203760224, 213555968, 228452528, 244631680, 255759392, -268987904, 291244960, 312113664, 327424160, 358783328, 411108896, 436517376, 395435488, 333884864, }, +393749184, 262211504, 117985432, -10480794, -110985712, -191049280, -267038512, -336338368, -371476032, -353389376, +-287532480, -171644080, 6297496, 192329712, 242526608, 72079216, -182587648, -260212208, -67530848, 209416704, +328129600, 241918320, 74428024, -73858944, -198710960, -313772064, -400587296, -445658688, -464703104, -473818656, +-471214272, -454585792, -431268416, -406896608, -380733280, -352922304, -325544576, -298700480, -272249376, -247473328, +-223824160, -199292928, -174677936, -151928560, -129886256, -107092328, -85339392, -65715684, -46066208, -25864294, +-7434589, 9564355, 27704150, 45774152, 60977260, 75160856, 90906208, 105588016, 117123224, 129179728, +143516336, 155936848, 165762656, 178110144, 192645392, 203760224, 213555968, 228452528, 244631680, 255759392, +268987904, 291244960, 312113664, 327424160, 358783328, 411108896, 436517376, 395435488, 333884864, }, }, { { -14667313, -109007344, 300884480, 459067584, 490658688, 373444736, 147811296, -130092952, -394527104, -569486336, -623482688, --591592576, -477895648, -203745728, 216717072, 505419936, 342454912, -187842000, -574587712, -431045056, 74300248, -468669504, 522579424, 375879424, 221147872, 87966832, -57102128, -187308352, -264547968, -307544352, -350313088, --389952416, -411228608, -420155712, -428318304, -433704192, -432025376, -426204096, -417957216, -405028288, -387838784, --368521600, -346348320, -320995104, -295042784, -269352960, -242227568, -214230816, -187539216, -161874096, -136570304, --113043000, -91045792, -67981280, -44285944, -22613540, -1644436, 21249350, 43590696, 62576600, 81269912, -101752608, 119903672, 134431936, 150395792, 167950944, 181327072, 192286752, 207711600, 223999728, 234186848, -245695216, 266763632, 286735232, 300152192, 330441376, 387059776, 423103136, 394020288, 339865056, }, +109007344, 300884480, 459067584, 490658688, 373444736, 147811296, -130092952, -394527104, -569486336, -623482688, +-591592576, -477895648, -203745728, 216717072, 505419936, 342454912, -187842000, -574587712, -431045056, 74300248, +468669504, 522579424, 375879424, 221147872, 87966832, -57102128, -187308352, -264547968, -307544352, -350313088, +-389952416, -411228608, -420155712, -428318304, -433704192, -432025376, -426204096, -417957216, -405028288, -387838784, +-368521600, -346348320, -320995104, -295042784, -269352960, -242227568, -214230816, -187539216, -161874096, -136570304, +-113043000, -91045792, -67981280, -44285944, -22613540, -1644436, 21249350, 43590696, 62576600, 81269912, +101752608, 119903672, 134431936, 150395792, 167950944, 181327072, 192286752, 207711600, 223999728, 234186848, +245695216, 266763632, 286735232, 300152192, 330441376, 387059776, 423103136, 394020288, 339865056, }, { 14667313, --109007344, -300884480, -459067584, -490658688, -373444736, -147811296, 130092952, 394527104, 569486336, 623482688, -591592576, 477895648, 203745728, -216717072, -505419936, -342454912, 187842000, 574587712, 431045056, -74300248, --468669504, -522579424, -375879424, -221147872, -87966832, 57102128, 187308352, 264547968, 307544352, 350313088, -389952416, 411228608, 420155712, 428318304, 433704192, 432025376, 426204096, 417957216, 405028288, 387838784, -368521600, 346348320, 320995104, 295042784, 269352960, 242227568, 214230816, 187539216, 161874096, 136570304, -113043000, 91045792, 67981280, 44285944, 22613540, 1644436, -21249350, -43590696, -62576600, -81269912, --101752608, -119903672, -134431936, -150395792, -167950944, -181327072, -192286752, -207711600, -223999728, -234186848, --245695216, -266763632, -286735232, -300152192, -330441376, -387059776, -423103136, -394020288, -339865056, }, +-109007344, -300884480, -459067584, -490658688, -373444736, -147811296, 130092952, 394527104, 569486336, 623482688, +591592576, 477895648, 203745728, -216717072, -505419936, -342454912, 187842000, 574587712, 431045056, -74300248, +-468669504, -522579424, -375879424, -221147872, -87966832, 57102128, 187308352, 264547968, 307544352, 350313088, +389952416, 411228608, 420155712, 428318304, 433704192, 432025376, 426204096, 417957216, 405028288, 387838784, +368521600, 346348320, 320995104, 295042784, 269352960, 242227568, 214230816, 187539216, 161874096, 136570304, +113043000, 91045792, 67981280, 44285944, 22613540, 1644436, -21249350, -43590696, -62576600, -81269912, +-101752608, -119903672, -134431936, -150395792, -167950944, -181327072, -192286752, -207711600, -223999728, -234186848, +-245695216, -266763632, -286735232, -300152192, -330441376, -387059776, -423103136, -394020288, -339865056, }, }, { { 63584844, -61867932, 35822176, -16645683, -59343564, -56361784, -14022531, 29422136, 46156404, 36439040, 11818139, --18567680, -41300404, -36649492, 654446, 42820288, 47975860, 6956774, -37008124, -29559576, 33152852, -97268128, 110028472, 71801112, 21268678, -14348949, -36198520, -52268680, -63071056, -69157560, -74681968, --79523464, -79209936, -73945912, -68701760, -65478924, -63816772, -66236984, -74942888, -86210192, -95153928, --102194992, -109113104, -114073792, -115841176, -117046984, -118933016, -118941600, -116276576, -113024208, -108315320, --98741832, -84825608, -69585984, -51991116, -29500520, -4359929, 20286204, 46400680, 75974752, 105691096, -133309880, 162058240, 192782288, 220608304, 244149568, 267417008, 289217184, 303198400, 310272192, 316390368, -318068096, 307477248, 290040224, 275691808, 254662576, 207049104, 137422848, 75828184, 44052944, }, +61867932, 35822176, -16645683, -59343564, -56361784, -14022531, 29422136, 46156404, 36439040, 11818139, +-18567680, -41300404, -36649492, 654446, 42820288, 47975860, 6956774, -37008124, -29559576, 33152852, +97268128, 110028472, 71801112, 21268678, -14348949, -36198520, -52268680, -63071056, -69157560, -74681968, +-79523464, -79209936, -73945912, -68701760, -65478924, -63816772, -66236984, -74942888, -86210192, -95153928, +-102194992, -109113104, -114073792, -115841176, -117046984, -118933016, -118941600, -116276576, -113024208, -108315320, +-98741832, -84825608, -69585984, -51991116, -29500520, -4359929, 20286204, 46400680, 75974752, 105691096, +133309880, 162058240, 192782288, 220608304, 244149568, 267417008, 289217184, 303198400, 310272192, 316390368, +318068096, 307477248, 290040224, 275691808, 254662576, 207049104, 137422848, 75828184, 44052944, }, { 63584844, -61867932, 35822176, -16645683, -59343564, -56361784, -14022531, 29422136, 46156404, 36439040, 11818139, --18567680, -41300404, -36649492, 654446, 42820288, 47975860, 6956774, -37008124, -29559576, 33152852, -97268128, 110028472, 71801112, 21268678, -14348949, -36198520, -52268680, -63071056, -69157560, -74681968, --79523464, -79209936, -73945912, -68701760, -65478924, -63816772, -66236984, -74942888, -86210192, -95153928, --102194992, -109113104, -114073792, -115841176, -117046984, -118933016, -118941600, -116276576, -113024208, -108315320, --98741832, -84825608, -69585984, -51991116, -29500520, -4359929, 20286204, 46400680, 75974752, 105691096, -133309880, 162058240, 192782288, 220608304, 244149568, 267417008, 289217184, 303198400, 310272192, 316390368, -318068096, 307477248, 290040224, 275691808, 254662576, 207049104, 137422848, 75828184, 44052944, }, +61867932, 35822176, -16645683, -59343564, -56361784, -14022531, 29422136, 46156404, 36439040, 11818139, +-18567680, -41300404, -36649492, 654446, 42820288, 47975860, 6956774, -37008124, -29559576, 33152852, +97268128, 110028472, 71801112, 21268678, -14348949, -36198520, -52268680, -63071056, -69157560, -74681968, +-79523464, -79209936, -73945912, -68701760, -65478924, -63816772, -66236984, -74942888, -86210192, -95153928, +-102194992, -109113104, -114073792, -115841176, -117046984, -118933016, -118941600, -116276576, -113024208, -108315320, +-98741832, -84825608, -69585984, -51991116, -29500520, -4359929, 20286204, 46400680, 75974752, 105691096, +133309880, 162058240, 192782288, 220608304, 244149568, 267417008, 289217184, 303198400, 310272192, 316390368, +318068096, 307477248, 290040224, 275691808, 254662576, 207049104, 137422848, 75828184, 44052944, }, }, { { 17322140, -31187906, 39309152, 22240952, -14697915, -40109624, -29441464, 2966212, 17942226, -2493766, -39815956, --70690328, -88434448, -83261696, -35551592, 40590124, 75310104, 14615237, -92039000, -126762200, -37784436, -101995272, 186789200, 188059968, 148041616, 101429408, 46439332, -21973052, -92030952, -152505168, -204940272, --252362608, -290860032, -316288896, -329120128, -330478944, -320509792, -301369792, -276755360, -248831072, -218876368, --189064992, -160720368, -133050568, -105711496, -80083424, -56609816, -33839512, -11282342, 9620727, 27951648, -43906912, 56876104, 65904124, 72072776, 77758232, 83885008, 90192704, 97200480, 105432320, 113842944, -121302224, 128338992, 135533056, 142001824, 147348512, 152970624, 159588640, 165846944, 171091632, 176687968, -182724016, 186785984, 188384240, 190518304, 192627680, 185383680, 159393216, 120320288, 90364504, }, +31187906, 39309152, 22240952, -14697915, -40109624, -29441464, 2966212, 17942226, -2493766, -39815956, +-70690328, -88434448, -83261696, -35551592, 40590124, 75310104, 14615237, -92039000, -126762200, -37784436, +101995272, 186789200, 188059968, 148041616, 101429408, 46439332, -21973052, -92030952, -152505168, -204940272, +-252362608, -290860032, -316288896, -329120128, -330478944, -320509792, -301369792, -276755360, -248831072, -218876368, +-189064992, -160720368, -133050568, -105711496, -80083424, -56609816, -33839512, -11282342, 9620727, 27951648, +43906912, 56876104, 65904124, 72072776, 77758232, 83885008, 90192704, 97200480, 105432320, 113842944, +121302224, 128338992, 135533056, 142001824, 147348512, 152970624, 159588640, 165846944, 171091632, 176687968, +182724016, 186785984, 188384240, 190518304, 192627680, 185383680, 159393216, 120320288, 90364504, }, { 17322140, -31187906, 39309152, 22240952, -14697915, -40109624, -29441464, 2966212, 17942226, -2493766, -39815956, --70690328, -88434448, -83261696, -35551592, 40590124, 75310104, 14615237, -92039000, -126762200, -37784436, -101995272, 186789200, 188059968, 148041616, 101429408, 46439332, -21973052, -92030952, -152505168, -204940272, --252362608, -290860032, -316288896, -329120128, -330478944, -320509792, -301369792, -276755360, -248831072, -218876368, --189064992, -160720368, -133050568, -105711496, -80083424, -56609816, -33839512, -11282342, 9620727, 27951648, -43906912, 56876104, 65904124, 72072776, 77758232, 83885008, 90192704, 97200480, 105432320, 113842944, -121302224, 128338992, 135533056, 142001824, 147348512, 152970624, 159588640, 165846944, 171091632, 176687968, -182724016, 186785984, 188384240, 190518304, 192627680, 185383680, 159393216, 120320288, 90364504, }, +31187906, 39309152, 22240952, -14697915, -40109624, -29441464, 2966212, 17942226, -2493766, -39815956, +-70690328, -88434448, -83261696, -35551592, 40590124, 75310104, 14615237, -92039000, -126762200, -37784436, +101995272, 186789200, 188059968, 148041616, 101429408, 46439332, -21973052, -92030952, -152505168, -204940272, +-252362608, -290860032, -316288896, -329120128, -330478944, -320509792, -301369792, -276755360, -248831072, -218876368, +-189064992, -160720368, -133050568, -105711496, -80083424, -56609816, -33839512, -11282342, 9620727, 27951648, +43906912, 56876104, 65904124, 72072776, 77758232, 83885008, 90192704, 97200480, 105432320, 113842944, +121302224, 128338992, 135533056, 142001824, 147348512, 152970624, 159588640, 165846944, 171091632, 176687968, +182724016, 186785984, 188384240, 190518304, 192627680, 185383680, 159393216, 120320288, 90364504, }, }, { { 6201933, -303332, -1778117, 6503654, 18598820, 23028540, 20786568, 25465934, 41975252, 52989160, 32604170, --28302760, -105976704, -145849040, -96549792, 28359670, 128144104, 98512056, -45183056, -164794672, -144955152, --12104828, 117671904, 174167360, 173926304, 152256048, 113789256, 55066312, -9612137, -64184528, -108850040, --148930144, -181961120, -204718544, -220194928, -230445936, -231651744, -220868160, -200911584, -176357264, -150281440, --125502168, -104079408, -85437640, -68207840, -52620864, -38723964, -24820616, -10057740, 4121558, 16736951, -28503550, 39352100, 48028472, 54768888, 61201136, 67616208, 73394552, 79361872, 86609088, 94278288, -101434776, 109201688, 118283400, 126990912, 134377712, 142158048, 151016960, 158850976, 165027680, 171845936, -179373936, 184241744, 186285072, 189771520, 193235408, 184292208, 152493888, 106336408, 71842992, }, +303332, -1778117, 6503654, 18598820, 23028540, 20786568, 25465934, 41975252, 52989160, 32604170, +-28302760, -105976704, -145849040, -96549792, 28359670, 128144104, 98512056, -45183056, -164794672, -144955152, +-12104828, 117671904, 174167360, 173926304, 152256048, 113789256, 55066312, -9612137, -64184528, -108850040, +-148930144, -181961120, -204718544, -220194928, -230445936, -231651744, -220868160, -200911584, -176357264, -150281440, +-125502168, -104079408, -85437640, -68207840, -52620864, -38723964, -24820616, -10057740, 4121558, 16736951, +28503550, 39352100, 48028472, 54768888, 61201136, 67616208, 73394552, 79361872, 86609088, 94278288, +101434776, 109201688, 118283400, 126990912, 134377712, 142158048, 151016960, 158850976, 165027680, 171845936, +179373936, 184241744, 186285072, 189771520, 193235408, 184292208, 152493888, 106336408, 71842992, }, { -6201933, --303332, 1778117, -6503654, -18598820, -23028540, -20786568, -25465934, -41975252, -52989160, -32604170, -28302760, 105976704, 145849040, 96549792, -28359670, -128144104, -98512056, 45183056, 164794672, 144955152, -12104828, -117671904, -174167360, -173926304, -152256048, -113789256, -55066312, 9612137, 64184528, 108850040, -148930144, 181961120, 204718544, 220194928, 230445936, 231651744, 220868160, 200911584, 176357264, 150281440, -125502168, 104079408, 85437640, 68207840, 52620864, 38723964, 24820616, 10057740, -4121558, -16736951, --28503550, -39352100, -48028472, -54768888, -61201136, -67616208, -73394552, -79361872, -86609088, -94278288, --101434776, -109201688, -118283400, -126990912, -134377712, -142158048, -151016960, -158850976, -165027680, -171845936, --179373936, -184241744, -186285072, -189771520, -193235408, -184292208, -152493888, -106336408, -71842992, }, +-303332, 1778117, -6503654, -18598820, -23028540, -20786568, -25465934, -41975252, -52989160, -32604170, +28302760, 105976704, 145849040, 96549792, -28359670, -128144104, -98512056, 45183056, 164794672, 144955152, +12104828, -117671904, -174167360, -173926304, -152256048, -113789256, -55066312, 9612137, 64184528, 108850040, +148930144, 181961120, 204718544, 220194928, 230445936, 231651744, 220868160, 200911584, 176357264, 150281440, +125502168, 104079408, 85437640, 68207840, 52620864, 38723964, 24820616, 10057740, -4121558, -16736951, +-28503550, -39352100, -48028472, -54768888, -61201136, -67616208, -73394552, -79361872, -86609088, -94278288, +-101434776, -109201688, -118283400, -126990912, -134377712, -142158048, -151016960, -158850976, -165027680, -171845936, +-179373936, -184241744, -186285072, -189771520, -193235408, -184292208, -152493888, -106336408, -71842992, }, }, { { 27467390, -2485712, -658741, 27040040, 33897492, -6876243, -39722540, 1653026, 93714040, 141894448, 92704184, --10971494, -85444616, -83779776, -17631378, 61112552, 89751928, 40414032, -42704860, -75765368, -25393458, -53360672, 86494200, 64158220, 30455076, 15159087, 11920145, 12123619, 21956410, 43373800, 65676492, -81234472, 91583200, 96871912, 94500016, 87269976, 79865456, 69784632, 52569324, 31410706, 12203613, --4763656, -20226074, -30743376, -35179540, -38381440, -43128988, -46829104, -49121004, -53146464, -57859652, --59115392, -58056148, -58328340, -57390428, -50747724, -40503688, -29918742, -15891916, 3874597, 24592982, -43498892, 64919504, 89533424, 111123688, 128989680, 148818464, 168397616, 179598352, 184638496, 190617088, -191139472, 176601008, 155666256, 138311904, 107942728, 46190764, -24148454, -62047244, -66298724, }, +2485712, -658741, 27040040, 33897492, -6876243, -39722540, 1653026, 93714040, 141894448, 92704184, +-10971494, -85444616, -83779776, -17631378, 61112552, 89751928, 40414032, -42704860, -75765368, -25393458, +53360672, 86494200, 64158220, 30455076, 15159087, 11920145, 12123619, 21956410, 43373800, 65676492, +81234472, 91583200, 96871912, 94500016, 87269976, 79865456, 69784632, 52569324, 31410706, 12203613, +-4763656, -20226074, -30743376, -35179540, -38381440, -43128988, -46829104, -49121004, -53146464, -57859652, +-59115392, -58056148, -58328340, -57390428, -50747724, -40503688, -29918742, -15891916, 3874597, 24592982, +43498892, 64919504, 89533424, 111123688, 128989680, 148818464, 168397616, 179598352, 184638496, 190617088, +191139472, 176601008, 155666256, 138311904, 107942728, 46190764, -24148454, -62047244, -66298724, }, { -27467390, --2485712, 658741, -27040040, -33897492, 6876243, 39722540, -1653026, -93714040, -141894448, -92704184, -10971494, 85444616, 83779776, 17631378, -61112552, -89751928, -40414032, 42704860, 75765368, 25393458, --53360672, -86494200, -64158220, -30455076, -15159087, -11920145, -12123619, -21956410, -43373800, -65676492, --81234472, -91583200, -96871912, -94500016, -87269976, -79865456, -69784632, -52569324, -31410706, -12203613, -4763656, 20226074, 30743376, 35179540, 38381440, 43128988, 46829104, 49121004, 53146464, 57859652, -59115392, 58056148, 58328340, 57390428, 50747724, 40503688, 29918742, 15891916, -3874597, -24592982, --43498892, -64919504, -89533424, -111123688, -128989680, -148818464, -168397616, -179598352, -184638496, -190617088, --191139472, -176601008, -155666256, -138311904, -107942728, -46190764, 24148454, 62047244, 66298724, }, +-2485712, 658741, -27040040, -33897492, 6876243, 39722540, -1653026, -93714040, -141894448, -92704184, +10971494, 85444616, 83779776, 17631378, -61112552, -89751928, -40414032, 42704860, 75765368, 25393458, +-53360672, -86494200, -64158220, -30455076, -15159087, -11920145, -12123619, -21956410, -43373800, -65676492, +-81234472, -91583200, -96871912, -94500016, -87269976, -79865456, -69784632, -52569324, -31410706, -12203613, +4763656, 20226074, 30743376, 35179540, 38381440, 43128988, 46829104, 49121004, 53146464, 57859652, +59115392, 58056148, 58328340, 57390428, 50747724, 40503688, 29918742, 15891916, -3874597, -24592982, +-43498892, -64919504, -89533424, -111123688, -128989680, -148818464, -168397616, -179598352, -184638496, -190617088, +-191139472, -176601008, -155666256, -138311904, -107942728, -46190764, 24148454, 62047244, 66298724, }, }, { { -705448, -7508677, 5253819, -11579232, -25637196, -30896920, -46382964, -82768848, -115529248, -106844824, -38469484, -81976968, 213182848, 266282608, 157711728, -70983464, -231924480, -170874208, 44229036, 192235760, 155120800, -24892020, -54510652, -57131120, -42320460, -34080564, -9823127, 29956324, 53076132, 47967268, 35619236, -31935766, 32671280, 33468532, 37842420, 45331768, 50308564, 51933132, 53520660, 55144696, 55122684, -54221276, 52611200, 48027400, 40636296, 33889440, 28547574, 21951578, 13768591, 6218039, -1031866, --10213969, -20859046, -31143344, -41762652, -53775140, -65463892, -75291848, -84485224, -93593776, -100692288, --105207368, -108724952, -110714592, -108741592, -103163504, -95911992, -85653992, -70381096, -52398600, -34105800, --12992276, 12082280, 36379984, 59146532, 87079392, 115597968, 120755152, 90703800, 54766740, }, +7508677, 5253819, -11579232, -25637196, -30896920, -46382964, -82768848, -115529248, -106844824, -38469484, +81976968, 213182848, 266282608, 157711728, -70983464, -231924480, -170874208, 44229036, 192235760, 155120800, +24892020, -54510652, -57131120, -42320460, -34080564, -9823127, 29956324, 53076132, 47967268, 35619236, +31935766, 32671280, 33468532, 37842420, 45331768, 50308564, 51933132, 53520660, 55144696, 55122684, +54221276, 52611200, 48027400, 40636296, 33889440, 28547574, 21951578, 13768591, 6218039, -1031866, +-10213969, -20859046, -31143344, -41762652, -53775140, -65463892, -75291848, -84485224, -93593776, -100692288, +-105207368, -108724952, -110714592, -108741592, -103163504, -95911992, -85653992, -70381096, -52398600, -34105800, +-12992276, 12082280, 36379984, 59146532, 87079392, 115597968, 120755152, 90703800, 54766740, }, { -705448, -7508677, 5253819, -11579232, -25637196, -30896920, -46382964, -82768848, -115529248, -106844824, -38469484, -81976968, 213182848, 266282608, 157711728, -70983464, -231924480, -170874208, 44229036, 192235760, 155120800, -24892020, -54510652, -57131120, -42320460, -34080564, -9823127, 29956324, 53076132, 47967268, 35619236, -31935766, 32671280, 33468532, 37842420, 45331768, 50308564, 51933132, 53520660, 55144696, 55122684, -54221276, 52611200, 48027400, 40636296, 33889440, 28547574, 21951578, 13768591, 6218039, -1031866, --10213969, -20859046, -31143344, -41762652, -53775140, -65463892, -75291848, -84485224, -93593776, -100692288, --105207368, -108724952, -110714592, -108741592, -103163504, -95911992, -85653992, -70381096, -52398600, -34105800, --12992276, 12082280, 36379984, 59146532, 87079392, 115597968, 120755152, 90703800, 54766740, }, +7508677, 5253819, -11579232, -25637196, -30896920, -46382964, -82768848, -115529248, -106844824, -38469484, +81976968, 213182848, 266282608, 157711728, -70983464, -231924480, -170874208, 44229036, 192235760, 155120800, +24892020, -54510652, -57131120, -42320460, -34080564, -9823127, 29956324, 53076132, 47967268, 35619236, +31935766, 32671280, 33468532, 37842420, 45331768, 50308564, 51933132, 53520660, 55144696, 55122684, +54221276, 52611200, 48027400, 40636296, 33889440, 28547574, 21951578, 13768591, 6218039, -1031866, +-10213969, -20859046, -31143344, -41762652, -53775140, -65463892, -75291848, -84485224, -93593776, -100692288, +-105207368, -108724952, -110714592, -108741592, -103163504, -95911992, -85653992, -70381096, -52398600, -34105800, +-12992276, 12082280, 36379984, 59146532, 87079392, 115597968, 120755152, 90703800, 54766740, }, }, { { 22603876, --7221988, -49116708, -79632448, -77375984, -29621852, 49382996, 110023640, 103060424, 33597380, -39041788, --65136936, -50224812, -27392228, -9287867, 9259413, 20324322, 7736310, -21227876, -37613176, -28081034, --9184251, 227633, 2462627, 9927280, 25286084, 41665476, 53599580, 59563144, 58180700, 48233556, -31579284, 13106630, -2745558, -15305116, -27499602, -42119132, -58886148, -75693968, -90777888, -102259416, --108061912, -108416248, -106223672, -103357848, -99264744, -94078040, -89418536, -85260472, -79918064, -73578160, --67833640, -62113280, -54834920, -46960636, -40078488, -32923072, -24091008, -15411953, -8589398, -2209761, -4378183, 8904541, 10871099, 12869870, 15257871, 15999290, 16421807, 19524922, 23485418, 25606596, -29661044, 39075612, 48743048, 56302728, 72059352, 99793568, 118729000, 109183976, 87719872, }, +-7221988, -49116708, -79632448, -77375984, -29621852, 49382996, 110023640, 103060424, 33597380, -39041788, +-65136936, -50224812, -27392228, -9287867, 9259413, 20324322, 7736310, -21227876, -37613176, -28081034, +-9184251, 227633, 2462627, 9927280, 25286084, 41665476, 53599580, 59563144, 58180700, 48233556, +31579284, 13106630, -2745558, -15305116, -27499602, -42119132, -58886148, -75693968, -90777888, -102259416, +-108061912, -108416248, -106223672, -103357848, -99264744, -94078040, -89418536, -85260472, -79918064, -73578160, +-67833640, -62113280, -54834920, -46960636, -40078488, -32923072, -24091008, -15411953, -8589398, -2209761, +4378183, 8904541, 10871099, 12869870, 15257871, 15999290, 16421807, 19524922, 23485418, 25606596, +29661044, 39075612, 48743048, 56302728, 72059352, 99793568, 118729000, 109183976, 87719872, }, { 22603876, --7221988, -49116708, -79632448, -77375984, -29621852, 49382996, 110023640, 103060424, 33597380, -39041788, --65136936, -50224812, -27392228, -9287867, 9259413, 20324322, 7736310, -21227876, -37613176, -28081034, --9184251, 227633, 2462627, 9927280, 25286084, 41665476, 53599580, 59563144, 58180700, 48233556, -31579284, 13106630, -2745558, -15305116, -27499602, -42119132, -58886148, -75693968, -90777888, -102259416, --108061912, -108416248, -106223672, -103357848, -99264744, -94078040, -89418536, -85260472, -79918064, -73578160, --67833640, -62113280, -54834920, -46960636, -40078488, -32923072, -24091008, -15411953, -8589398, -2209761, -4378183, 8904541, 10871099, 12869870, 15257871, 15999290, 16421807, 19524922, 23485418, 25606596, -29661044, 39075612, 48743048, 56302728, 72059352, 99793568, 118729000, 109183976, 87719872, }, +-7221988, -49116708, -79632448, -77375984, -29621852, 49382996, 110023640, 103060424, 33597380, -39041788, +-65136936, -50224812, -27392228, -9287867, 9259413, 20324322, 7736310, -21227876, -37613176, -28081034, +-9184251, 227633, 2462627, 9927280, 25286084, 41665476, 53599580, 59563144, 58180700, 48233556, +31579284, 13106630, -2745558, -15305116, -27499602, -42119132, -58886148, -75693968, -90777888, -102259416, +-108061912, -108416248, -106223672, -103357848, -99264744, -94078040, -89418536, -85260472, -79918064, -73578160, +-67833640, -62113280, -54834920, -46960636, -40078488, -32923072, -24091008, -15411953, -8589398, -2209761, +4378183, 8904541, 10871099, 12869870, 15257871, 15999290, 16421807, 19524922, 23485418, 25606596, +29661044, 39075612, 48743048, 56302728, 72059352, 99793568, 118729000, 109183976, 87719872, }, }, { { -9419400, -41321880, 79047800, 67264016, 26528940, -31041876, -125323928, -240709296, -300726080, -248581440, -100945688, -102328672, 320818496, 442890592, 309921632, -67858336, -396835648, -363421344, -3670587, 329390176, 376628352, -214554016, 61891552, -1806571, -38725036, -89168352, -128088272, -142241264, -152928752, -167772160, -170083392, --154229584, -132369280, -109843792, -81601696, -48437568, -17170742, 10256382, 34843996, 53967876, 65718368, -73473472, 80379776, 85296440, 87221120, 87615184, 86742232, 83217672, 77797960, 73125576, 69989176, -67245232, 64345588, 61274688, 57396868, 52281028, 46337328, 39731132, 32087164, 23515482, 14594836, -5459441, -4110284, -14071923, -24159728, -34084324, -43646532, -52882320, -61583388, -68936376, -74838728, --80607944, -86543592, -91094648, -95179696, -102670120, -111155368, -108656232, -89623080, -69366944, }, +41321880, 79047800, 67264016, 26528940, -31041876, -125323928, -240709296, -300726080, -248581440, -100945688, +102328672, 320818496, 442890592, 309921632, -67858336, -396835648, -363421344, -3670587, 329390176, 376628352, +214554016, 61891552, -1806571, -38725036, -89168352, -128088272, -142241264, -152928752, -167772160, -170083392, +-154229584, -132369280, -109843792, -81601696, -48437568, -17170742, 10256382, 34843996, 53967876, 65718368, +73473472, 80379776, 85296440, 87221120, 87615184, 86742232, 83217672, 77797960, 73125576, 69989176, +67245232, 64345588, 61274688, 57396868, 52281028, 46337328, 39731132, 32087164, 23515482, 14594836, +5459441, -4110284, -14071923, -24159728, -34084324, -43646532, -52882320, -61583388, -68936376, -74838728, +-80607944, -86543592, -91094648, -95179696, -102670120, -111155368, -108656232, -89623080, -69366944, }, { -9419400, -41321880, 79047800, 67264016, 26528940, -31041876, -125323928, -240709296, -300726080, -248581440, -100945688, -102328672, 320818496, 442890592, 309921632, -67858336, -396835648, -363421344, -3670587, 329390176, 376628352, -214554016, 61891552, -1806571, -38725036, -89168352, -128088272, -142241264, -152928752, -167772160, -170083392, --154229584, -132369280, -109843792, -81601696, -48437568, -17170742, 10256382, 34843996, 53967876, 65718368, -73473472, 80379776, 85296440, 87221120, 87615184, 86742232, 83217672, 77797960, 73125576, 69989176, -67245232, 64345588, 61274688, 57396868, 52281028, 46337328, 39731132, 32087164, 23515482, 14594836, -5459441, -4110284, -14071923, -24159728, -34084324, -43646532, -52882320, -61583388, -68936376, -74838728, --80607944, -86543592, -91094648, -95179696, -102670120, -111155368, -108656232, -89623080, -69366944, }, +41321880, 79047800, 67264016, 26528940, -31041876, -125323928, -240709296, -300726080, -248581440, -100945688, +102328672, 320818496, 442890592, 309921632, -67858336, -396835648, -363421344, -3670587, 329390176, 376628352, +214554016, 61891552, -1806571, -38725036, -89168352, -128088272, -142241264, -152928752, -167772160, -170083392, +-154229584, -132369280, -109843792, -81601696, -48437568, -17170742, 10256382, 34843996, 53967876, 65718368, +73473472, 80379776, 85296440, 87221120, 87615184, 86742232, 83217672, 77797960, 73125576, 69989176, +67245232, 64345588, 61274688, 57396868, 52281028, 46337328, 39731132, 32087164, 23515482, 14594836, +5459441, -4110284, -14071923, -24159728, -34084324, -43646532, -52882320, -61583388, -68936376, -74838728, +-80607944, -86543592, -91094648, -95179696, -102670120, -111155368, -108656232, -89623080, -69366944, }, }, { { -3726421, --4905390, -550293, 12445205, 38268160, 81759000, 124758600, 129797672, 85855320, 10437307, -102676560, --256617312, -344373152, -196594080, 162747056, 421756672, 301686560, -81485728, -338718304, -270162560, -44135620, -89901184, 92062624, 71720584, 81324672, 84869624, 61480308, 35527968, 21602612, 7235946, -12939663, --27393838, -30405148, -28365038, -25742424, -21561272, -16509317, -12374875, -7998303, -2522757, 1645509, -3288871, 4905927, 7898982, 10081899, 10088878, 9747428, 10390063, 10888279, 10763725, 11661910, -14477798, 18012556, 21446382, 25411174, 29873108, 33535642, 36019744, 38237020, 40196064, 40926208, -40725416, 40797356, 40727028, 39200704, 36813776, 34959960, 32791538, 28916404, 24681566, 21641804, -17919678, 11828877, 5825050, 991601, -7748121, -22736484, -34851512, -34499860, -27521076, }, +-4905390, -550293, 12445205, 38268160, 81759000, 124758600, 129797672, 85855320, 10437307, -102676560, +-256617312, -344373152, -196594080, 162747056, 421756672, 301686560, -81485728, -338718304, -270162560, -44135620, +89901184, 92062624, 71720584, 81324672, 84869624, 61480308, 35527968, 21602612, 7235946, -12939663, +-27393838, -30405148, -28365038, -25742424, -21561272, -16509317, -12374875, -7998303, -2522757, 1645509, +3288871, 4905927, 7898982, 10081899, 10088878, 9747428, 10390063, 10888279, 10763725, 11661910, +14477798, 18012556, 21446382, 25411174, 29873108, 33535642, 36019744, 38237020, 40196064, 40926208, +40725416, 40797356, 40727028, 39200704, 36813776, 34959960, 32791538, 28916404, 24681566, 21641804, +17919678, 11828877, 5825050, 991601, -7748121, -22736484, -34851512, -34499860, -27521076, }, { 3726421, -4905390, 550293, -12445205, -38268160, -81759000, -124758600, -129797672, -85855320, -10437307, 102676560, -256617312, 344373152, 196594080, -162747056, -421756672, -301686560, 81485728, 338718304, 270162560, 44135620, --89901184, -92062624, -71720584, -81324672, -84869624, -61480308, -35527968, -21602612, -7235946, 12939663, -27393838, 30405148, 28365038, 25742424, 21561272, 16509317, 12374875, 7998303, 2522757, -1645509, --3288871, -4905927, -7898982, -10081899, -10088878, -9747428, -10390063, -10888279, -10763725, -11661910, --14477798, -18012556, -21446382, -25411174, -29873108, -33535642, -36019744, -38237020, -40196064, -40926208, --40725416, -40797356, -40727028, -39200704, -36813776, -34959960, -32791538, -28916404, -24681566, -21641804, --17919678, -11828877, -5825050, -991601, 7748121, 22736484, 34851512, 34499860, 27521076, }, +4905390, 550293, -12445205, -38268160, -81759000, -124758600, -129797672, -85855320, -10437307, 102676560, +256617312, 344373152, 196594080, -162747056, -421756672, -301686560, 81485728, 338718304, 270162560, 44135620, +-89901184, -92062624, -71720584, -81324672, -84869624, -61480308, -35527968, -21602612, -7235946, 12939663, +27393838, 30405148, 28365038, 25742424, 21561272, 16509317, 12374875, 7998303, 2522757, -1645509, +-3288871, -4905927, -7898982, -10081899, -10088878, -9747428, -10390063, -10888279, -10763725, -11661910, +-14477798, -18012556, -21446382, -25411174, -29873108, -33535642, -36019744, -38237020, -40196064, -40926208, +-40725416, -40797356, -40727028, -39200704, -36813776, -34959960, -32791538, -28916404, -24681566, -21641804, +-17919678, -11828877, -5825050, -991601, 7748121, 22736484, 34851512, 34499860, 27521076, }, }, { { -4889821, --342524, 3532074, 972273, -13593571, -39178156, -53621592, -24791088, 41968808, 86767464, 58815284, --13867376, -55325620, -37217504, -3175592, 4268124, -3515431, 1946157, 15576773, 14221710, -1054415, --9167071, -4754529, -3166465, -12531641, -22008486, -20215338, -10042707, -641561, 4719096, 7508677, -7569343, 3358128, -4560182, -13816373, -22486838, -29368450, -33820720, -36604932, -39212516, -41504416, --41713260, -39269960, -35690640, -32337346, -29443074, -27575838, -27660664, -29154774, -30347166, -30591442, --30244622, -28885266, -25828860, -21779242, -17788680, -13510893, -8437463, -3421478, 920197, 5463199, -10562398, 15039902, 18501108, 21978422, 25392920, 27537720, 28916404, 30988726, 33019172, 33803004, -35061964, 38326676, 41264436, 43054900, 48853104, 60483340, 67997920, 62146568, 51134272, }, +-342524, 3532074, 972273, -13593571, -39178156, -53621592, -24791088, 41968808, 86767464, 58815284, +-13867376, -55325620, -37217504, -3175592, 4268124, -3515431, 1946157, 15576773, 14221710, -1054415, +-9167071, -4754529, -3166465, -12531641, -22008486, -20215338, -10042707, -641561, 4719096, 7508677, +7569343, 3358128, -4560182, -13816373, -22486838, -29368450, -33820720, -36604932, -39212516, -41504416, +-41713260, -39269960, -35690640, -32337346, -29443074, -27575838, -27660664, -29154774, -30347166, -30591442, +-30244622, -28885266, -25828860, -21779242, -17788680, -13510893, -8437463, -3421478, 920197, 5463199, +10562398, 15039902, 18501108, 21978422, 25392920, 27537720, 28916404, 30988726, 33019172, 33803004, +35061964, 38326676, 41264436, 43054900, 48853104, 60483340, 67997920, 62146568, 51134272, }, { 4889821, -342524, -3532074, -972273, 13593571, 39178156, 53621592, 24791088, -41968808, -86767464, -58815284, -13867376, 55325620, 37217504, 3175592, -4268124, 3515431, -1946157, -15576773, -14221710, 1054415, -9167071, 4754529, 3166465, 12531641, 22008486, 20215338, 10042707, 641561, -4719096, -7508677, --7569343, -3358128, 4560182, 13816373, 22486838, 29368450, 33820720, 36604932, 39212516, 41504416, -41713260, 39269960, 35690640, 32337346, 29443074, 27575838, 27660664, 29154774, 30347166, 30591442, -30244622, 28885266, 25828860, 21779242, 17788680, 13510893, 8437463, 3421478, -920197, -5463199, --10562398, -15039902, -18501108, -21978422, -25392920, -27537720, -28916404, -30988726, -33019172, -33803004, --35061964, -38326676, -41264436, -43054900, -48853104, -60483340, -67997920, -62146568, -51134272, }, +342524, -3532074, -972273, 13593571, 39178156, 53621592, 24791088, -41968808, -86767464, -58815284, +13867376, 55325620, 37217504, 3175592, -4268124, 3515431, -1946157, -15576773, -14221710, 1054415, +9167071, 4754529, 3166465, 12531641, 22008486, 20215338, 10042707, 641561, -4719096, -7508677, +-7569343, -3358128, 4560182, 13816373, 22486838, 29368450, 33820720, 36604932, 39212516, 41504416, +41713260, 39269960, 35690640, 32337346, 29443074, 27575838, 27660664, 29154774, 30347166, 30591442, +30244622, 28885266, 25828860, 21779242, 17788680, 13510893, 8437463, 3421478, -920197, -5463199, +-10562398, -15039902, -18501108, -21978422, -25392920, -27537720, -28916404, -30988726, -33019172, -33803004, +-35061964, -38326676, -41264436, -43054900, -48853104, -60483340, -67997920, -62146568, -51134272, }, }, { { -19487878, --11583527, 4476967, 11824045, -3235184, -12584791, 29283624, 109043312, 139014672, 44827112, -139646032, --277102688, -236251648, -20240570, 204973024, 246190208, 78254840, -122839288, -173505936, -74751224, 31737660, -55711096, 30462592, 12132209, -1471563, -29320668, -54413476, -52803400, -35593468, -28465432, -34099356, --38771208, -36869072, -29972966, -16141561, 5407364, 28610388, 47796008, 62867584, 74308840, 81188304, -85045720, 88492968, 90726352, 90090696, 88160112, 86411520, 83108152, 77392088, 71344776, 65213172, -56276956, 44019656, 30570504, 16008417, -677531, -17338246, -31462782, -44628468, -58690728, -71698576, --82425792, -93255016, -104423536, -112355272, -116525680, -119679264, -120098024, -113599736, -102504224, -91154240, --75778256, -52141976, -26696442, -3887482, 26867168, 69371240, 98732168, 91459184, 67642512, }, +-11583527, 4476967, 11824045, -3235184, -12584791, 29283624, 109043312, 139014672, 44827112, -139646032, +-277102688, -236251648, -20240570, 204973024, 246190208, 78254840, -122839288, -173505936, -74751224, 31737660, +55711096, 30462592, 12132209, -1471563, -29320668, -54413476, -52803400, -35593468, -28465432, -34099356, +-38771208, -36869072, -29972966, -16141561, 5407364, 28610388, 47796008, 62867584, 74308840, 81188304, +85045720, 88492968, 90726352, 90090696, 88160112, 86411520, 83108152, 77392088, 71344776, 65213172, +56276956, 44019656, 30570504, 16008417, -677531, -17338246, -31462782, -44628468, -58690728, -71698576, +-82425792, -93255016, -104423536, -112355272, -116525680, -119679264, -120098024, -113599736, -102504224, -91154240, +-75778256, -52141976, -26696442, -3887482, 26867168, 69371240, 98732168, 91459184, 67642512, }, { 19487878, -11583527, -4476967, -11824045, 3235184, 12584791, -29283624, -109043312, -139014672, -44827112, 139646032, -277102688, 236251648, 20240570, -204973024, -246190208, -78254840, 122839288, 173505936, 74751224, -31737660, --55711096, -30462592, -12132209, 1471563, 29320668, 54413476, 52803400, 35593468, 28465432, 34099356, -38771208, 36869072, 29972966, 16141561, -5407364, -28610388, -47796008, -62867584, -74308840, -81188304, --85045720, -88492968, -90726352, -90090696, -88160112, -86411520, -83108152, -77392088, -71344776, -65213172, --56276956, -44019656, -30570504, -16008417, 677531, 17338246, 31462782, 44628468, 58690728, 71698576, -82425792, 93255016, 104423536, 112355272, 116525680, 119679264, 120098024, 113599736, 102504224, 91154240, -75778256, 52141976, 26696442, 3887482, -26867168, -69371240, -98732168, -91459184, -67642512, }, +11583527, -4476967, -11824045, 3235184, 12584791, -29283624, -109043312, -139014672, -44827112, 139646032, +277102688, 236251648, 20240570, -204973024, -246190208, -78254840, 122839288, 173505936, 74751224, -31737660, +-55711096, -30462592, -12132209, 1471563, 29320668, 54413476, 52803400, 35593468, 28465432, 34099356, +38771208, 36869072, 29972966, 16141561, -5407364, -28610388, -47796008, -62867584, -74308840, -81188304, +-85045720, -88492968, -90726352, -90090696, -88160112, -86411520, -83108152, -77392088, -71344776, -65213172, +-56276956, -44019656, -30570504, -16008417, 677531, 17338246, 31462782, 44628468, 58690728, 71698576, +82425792, 93255016, 104423536, 112355272, 116525680, 119679264, 120098024, 113599736, 102504224, 91154240, +75778256, 52141976, 26696442, 3887482, -26867168, -69371240, -98732168, -91459184, -67642512, }, }, { { -13447006, --15437186, -15337865, -8318815, 5473936, 19134080, 23803246, 13018583, -15075872, -50674708, -68482720, --46862924, 2273648, 37122476, 29987998, -3798362, -30385284, -37065032, -33677912, -26914950, -13136157, -6638409, 22264036, 28156194, 30261266, 35209604, 39506720, 33935612, 15321759, -9609452, -30800822, --42454140, -44469016, -39946952, -33484638, -29549912, -29195040, -29076392, -25866978, -20243792, -14707042, --9924059, -5625334, -2419140, -177704, 2801929, 7062537, 11181947, 14747307, 18733574, 22507240, -24340654, 24764782, 25312926, 24883966, 21612812, 16559246, 11263552, 4413079, -4876399, -14206141, --22242562, -31212064, -41726680, -50947440, -58571004, -67672576, -77786152, -85235240, -90859496, -97880160, --103053448, -101211976, -95937224, -91939144, -80863496, -52128020, -14814416, 10315975, 18066244, }, +-15437186, -15337865, -8318815, 5473936, 19134080, 23803246, 13018583, -15075872, -50674708, -68482720, +-46862924, 2273648, 37122476, 29987998, -3798362, -30385284, -37065032, -33677912, -26914950, -13136157, +6638409, 22264036, 28156194, 30261266, 35209604, 39506720, 33935612, 15321759, -9609452, -30800822, +-42454140, -44469016, -39946952, -33484638, -29549912, -29195040, -29076392, -25866978, -20243792, -14707042, +-9924059, -5625334, -2419140, -177704, 2801929, 7062537, 11181947, 14747307, 18733574, 22507240, +24340654, 24764782, 25312926, 24883966, 21612812, 16559246, 11263552, 4413079, -4876399, -14206141, +-22242562, -31212064, -41726680, -50947440, -58571004, -67672576, -77786152, -85235240, -90859496, -97880160, +-103053448, -101211976, -95937224, -91939144, -80863496, -52128020, -14814416, 10315975, 18066244, }, { -13447006, --15437186, -15337865, -8318815, 5473936, 19134080, 23803246, 13018583, -15075872, -50674708, -68482720, --46862924, 2273648, 37122476, 29987998, -3798362, -30385284, -37065032, -33677912, -26914950, -13136157, -6638409, 22264036, 28156194, 30261266, 35209604, 39506720, 33935612, 15321759, -9609452, -30800822, --42454140, -44469016, -39946952, -33484638, -29549912, -29195040, -29076392, -25866978, -20243792, -14707042, --9924059, -5625334, -2419140, -177704, 2801929, 7062537, 11181947, 14747307, 18733574, 22507240, -24340654, 24764782, 25312926, 24883966, 21612812, 16559246, 11263552, 4413079, -4876399, -14206141, --22242562, -31212064, -41726680, -50947440, -58571004, -67672576, -77786152, -85235240, -90859496, -97880160, --103053448, -101211976, -95937224, -91939144, -80863496, -52128020, -14814416, 10315975, 18066244, }, +-15437186, -15337865, -8318815, 5473936, 19134080, 23803246, 13018583, -15075872, -50674708, -68482720, +-46862924, 2273648, 37122476, 29987998, -3798362, -30385284, -37065032, -33677912, -26914950, -13136157, +6638409, 22264036, 28156194, 30261266, 35209604, 39506720, 33935612, 15321759, -9609452, -30800822, +-42454140, -44469016, -39946952, -33484638, -29549912, -29195040, -29076392, -25866978, -20243792, -14707042, +-9924059, -5625334, -2419140, -177704, 2801929, 7062537, 11181947, 14747307, 18733574, 22507240, +24340654, 24764782, 25312926, 24883966, 21612812, 16559246, 11263552, 4413079, -4876399, -14206141, +-22242562, -31212064, -41726680, -50947440, -58571004, -67672576, -77786152, -85235240, -90859496, -97880160, +-103053448, -101211976, -95937224, -91939144, -80863496, -52128020, -14814416, 10315975, 18066244, }, }, { { -17719424, --19465328, -10439455, 10909754, 31063350, 40038224, 34177740, 4187593, -51797304, -100851736, -93000000, --21596170, 56580288, 78688632, 38936564, -16989280, -44022340, -30846456, 3275986, 26647588, 17479444, --17430588, -48388176, -53091164, -35808752, -13846438, 3738232, 17264158, 27108760, 33263448, 38486128, -44350908, 47777216, 45907296, 40481140, 34288872, 27378270, 19193136, 10905459, 3950296, -1097364, --3863860, -4734665, -5491116, -7457137, -10365367, -14367739, -20726438, -29211146, -37582576, -44572096, --50488416, -54773716, -56360172, -56250648, -56406880, -56860000, -56986164, -57897768, -60495152, -63541892, --66344896, -70165808, -74739408, -77426448, -77547784, -76788112, -74449496, -68090264, -58958628, -50159312, --40458592, -27459874, -14231374, -3525095, 10242960, 31209916, 49187040, 51644296, 44649408, }, +-19465328, -10439455, 10909754, 31063350, 40038224, 34177740, 4187593, -51797304, -100851736, -93000000, +-21596170, 56580288, 78688632, 38936564, -16989280, -44022340, -30846456, 3275986, 26647588, 17479444, +-17430588, -48388176, -53091164, -35808752, -13846438, 3738232, 17264158, 27108760, 33263448, 38486128, +44350908, 47777216, 45907296, 40481140, 34288872, 27378270, 19193136, 10905459, 3950296, -1097364, +-3863860, -4734665, -5491116, -7457137, -10365367, -14367739, -20726438, -29211146, -37582576, -44572096, +-50488416, -54773716, -56360172, -56250648, -56406880, -56860000, -56986164, -57897768, -60495152, -63541892, +-66344896, -70165808, -74739408, -77426448, -77547784, -76788112, -74449496, -68090264, -58958628, -50159312, +-40458592, -27459874, -14231374, -3525095, 10242960, 31209916, 49187040, 51644296, 44649408, }, { -17719424, --19465328, -10439455, 10909754, 31063350, 40038224, 34177740, 4187593, -51797304, -100851736, -93000000, --21596170, 56580288, 78688632, 38936564, -16989280, -44022340, -30846456, 3275986, 26647588, 17479444, --17430588, -48388176, -53091164, -35808752, -13846438, 3738232, 17264158, 27108760, 33263448, 38486128, -44350908, 47777216, 45907296, 40481140, 34288872, 27378270, 19193136, 10905459, 3950296, -1097364, --3863860, -4734665, -5491116, -7457137, -10365367, -14367739, -20726438, -29211146, -37582576, -44572096, --50488416, -54773716, -56360172, -56250648, -56406880, -56860000, -56986164, -57897768, -60495152, -63541892, --66344896, -70165808, -74739408, -77426448, -77547784, -76788112, -74449496, -68090264, -58958628, -50159312, --40458592, -27459874, -14231374, -3525095, 10242960, 31209916, 49187040, 51644296, 44649408, }, +-19465328, -10439455, 10909754, 31063350, 40038224, 34177740, 4187593, -51797304, -100851736, -93000000, +-21596170, 56580288, 78688632, 38936564, -16989280, -44022340, -30846456, 3275986, 26647588, 17479444, +-17430588, -48388176, -53091164, -35808752, -13846438, 3738232, 17264158, 27108760, 33263448, 38486128, +44350908, 47777216, 45907296, 40481140, 34288872, 27378270, 19193136, 10905459, 3950296, -1097364, +-3863860, -4734665, -5491116, -7457137, -10365367, -14367739, -20726438, -29211146, -37582576, -44572096, +-50488416, -54773716, -56360172, -56250648, -56406880, -56860000, -56986164, -57897768, -60495152, -63541892, +-66344896, -70165808, -74739408, -77426448, -77547784, -76788112, -74449496, -68090264, -58958628, -50159312, +-40458592, -27459874, -14231374, -3525095, 10242960, 31209916, 49187040, 51644296, 44649408, }, }, { { 667867, --6288906, -10187126, -10408853, -15162308, -16886738, 7102802, 51078972, 60318520, -9038759, -112977504, --145011520, -58855548, 64550136, 103756208, 33980708, -56674776, -81592568, -46154256, -11977590, -6857989, --4037269, 22369800, 58718108, 77199888, 74336224, 66762584, 62137976, 52446384, 31241056, 2430952, --27460948, -54652920, -75504992, -87207704, -91644400, -92828200, -91470992, -86566680, -79617960, -72695544, --65450468, -58036284, -53288732, -52592948, -53606560, -54540716, -56122336, -57767848, -57040924, -53947472, --50586660, -46590196, -40249212, -33004140, -27427662, -22848690, -18099530, -15264314, -15820512, -17430052, --18829674, -22328998, -28017682, -32376000, -35120484, -39361228, -43814036, -44273596, -42357504, -41875396, --39014408, -28842852, -16483548, -6364605, 11662984, 45099840, 76302240, 82672216, 72620920, }, +-6288906, -10187126, -10408853, -15162308, -16886738, 7102802, 51078972, 60318520, -9038759, -112977504, +-145011520, -58855548, 64550136, 103756208, 33980708, -56674776, -81592568, -46154256, -11977590, -6857989, +-4037269, 22369800, 58718108, 77199888, 74336224, 66762584, 62137976, 52446384, 31241056, 2430952, +-27460948, -54652920, -75504992, -87207704, -91644400, -92828200, -91470992, -86566680, -79617960, -72695544, +-65450468, -58036284, -53288732, -52592948, -53606560, -54540716, -56122336, -57767848, -57040924, -53947472, +-50586660, -46590196, -40249212, -33004140, -27427662, -22848690, -18099530, -15264314, -15820512, -17430052, +-18829674, -22328998, -28017682, -32376000, -35120484, -39361228, -43814036, -44273596, -42357504, -41875396, +-39014408, -28842852, -16483548, -6364605, 11662984, 45099840, 76302240, 82672216, 72620920, }, { 667867, --6288906, -10187126, -10408853, -15162308, -16886738, 7102802, 51078972, 60318520, -9038759, -112977504, --145011520, -58855548, 64550136, 103756208, 33980708, -56674776, -81592568, -46154256, -11977590, -6857989, --4037269, 22369800, 58718108, 77199888, 74336224, 66762584, 62137976, 52446384, 31241056, 2430952, --27460948, -54652920, -75504992, -87207704, -91644400, -92828200, -91470992, -86566680, -79617960, -72695544, --65450468, -58036284, -53288732, -52592948, -53606560, -54540716, -56122336, -57767848, -57040924, -53947472, --50586660, -46590196, -40249212, -33004140, -27427662, -22848690, -18099530, -15264314, -15820512, -17430052, --18829674, -22328998, -28017682, -32376000, -35120484, -39361228, -43814036, -44273596, -42357504, -41875396, --39014408, -28842852, -16483548, -6364605, 11662984, 45099840, 76302240, 82672216, 72620920, }, +-6288906, -10187126, -10408853, -15162308, -16886738, 7102802, 51078972, 60318520, -9038759, -112977504, +-145011520, -58855548, 64550136, 103756208, 33980708, -56674776, -81592568, -46154256, -11977590, -6857989, +-4037269, 22369800, 58718108, 77199888, 74336224, 66762584, 62137976, 52446384, 31241056, 2430952, +-27460948, -54652920, -75504992, -87207704, -91644400, -92828200, -91470992, -86566680, -79617960, -72695544, +-65450468, -58036284, -53288732, -52592948, -53606560, -54540716, -56122336, -57767848, -57040924, -53947472, +-50586660, -46590196, -40249212, -33004140, -27427662, -22848690, -18099530, -15264314, -15820512, -17430052, +-18829674, -22328998, -28017682, -32376000, -35120484, -39361228, -43814036, -44273596, -42357504, -41875396, +-39014408, -28842852, -16483548, -6364605, 11662984, 45099840, 76302240, 82672216, 72620920, }, }, { { -6998649, --6445136, -5876589, -5549098, -6338298, -9783399, -13504451, -9632538, 3009698, 6265821, -20397874, --61070140, -62327492, 2799245, 80664856, 83809304, -1217623, -87422448, -87861072, -14525579, 49264348, -52332564, 16460462, -14287209, -24394340, -20737176, -7818988, 12781286, 33522756, 46147812, 49983756, -48574468, 44018048, 38555384, 35584340, 35335232, 33735896, 27512486, 16987132, 3606699, -11391327, --25731150, -36897528, -44295072, -48573932, -49903224, -48784924, -46949360, -45679124, -44795972, -44305808, --45021456, -46874736, -48736604, -50210316, -51539072, -52110840, -51286204, -50001472, -49417356, -49181672, --48970680, -49908592, -52512956, -55440512, -57990112, -61183956, -65010236, -67820216, -69580080, -71920304, --74211128, -74067784, -72268728, -71680320, -70314520, -61509300, -43222404, -22516366, -9305047, }, +-6445136, -5876589, -5549098, -6338298, -9783399, -13504451, -9632538, 3009698, 6265821, -20397874, +-61070140, -62327492, 2799245, 80664856, 83809304, -1217623, -87422448, -87861072, -14525579, 49264348, +52332564, 16460462, -14287209, -24394340, -20737176, -7818988, 12781286, 33522756, 46147812, 49983756, +48574468, 44018048, 38555384, 35584340, 35335232, 33735896, 27512486, 16987132, 3606699, -11391327, +-25731150, -36897528, -44295072, -48573932, -49903224, -48784924, -46949360, -45679124, -44795972, -44305808, +-45021456, -46874736, -48736604, -50210316, -51539072, -52110840, -51286204, -50001472, -49417356, -49181672, +-48970680, -49908592, -52512956, -55440512, -57990112, -61183956, -65010236, -67820216, -69580080, -71920304, +-74211128, -74067784, -72268728, -71680320, -70314520, -61509300, -43222404, -22516366, -9305047, }, { -6998649, --6445136, -5876589, -5549098, -6338298, -9783399, -13504451, -9632538, 3009698, 6265821, -20397874, --61070140, -62327492, 2799245, 80664856, 83809304, -1217623, -87422448, -87861072, -14525579, 49264348, -52332564, 16460462, -14287209, -24394340, -20737176, -7818988, 12781286, 33522756, 46147812, 49983756, -48574468, 44018048, 38555384, 35584340, 35335232, 33735896, 27512486, 16987132, 3606699, -11391327, --25731150, -36897528, -44295072, -48573932, -49903224, -48784924, -46949360, -45679124, -44795972, -44305808, --45021456, -46874736, -48736604, -50210316, -51539072, -52110840, -51286204, -50001472, -49417356, -49181672, --48970680, -49908592, -52512956, -55440512, -57990112, -61183956, -65010236, -67820216, -69580080, -71920304, --74211128, -74067784, -72268728, -71680320, -70314520, -61509300, -43222404, -22516366, -9305047, }, +-6445136, -5876589, -5549098, -6338298, -9783399, -13504451, -9632538, 3009698, 6265821, -20397874, +-61070140, -62327492, 2799245, 80664856, 83809304, -1217623, -87422448, -87861072, -14525579, 49264348, +52332564, 16460462, -14287209, -24394340, -20737176, -7818988, 12781286, 33522756, 46147812, 49983756, +48574468, 44018048, 38555384, 35584340, 35335232, 33735896, 27512486, 16987132, 3606699, -11391327, +-25731150, -36897528, -44295072, -48573932, -49903224, -48784924, -46949360, -45679124, -44795972, -44305808, +-45021456, -46874736, -48736604, -50210316, -51539072, -52110840, -51286204, -50001472, -49417356, -49181672, +-48970680, -49908592, -52512956, -55440512, -57990112, -61183956, -65010236, -67820216, -69580080, -71920304, +-74211128, -74067784, -72268728, -71680320, -70314520, -61509300, -43222404, -22516366, -9305047, }, }, }; -const Word32 CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[16][BINAURAL_CHANNELS][80] ={ +const Word32 CRendBin_HOA3_HRIR_coeff_im_16kHz_fx[HOA3_CHANNELS][BINAURAL_CHANNELS][80] ={ { { -95201168, --261487808, -369519136, -412615360, -404252512, -367495648, -322004448, -266368496, -181466128, -63362040, 63136556, -175570752, 264952768, 290376832, 178081152, -61641372, -254110672, -207646640, 42662448, 236334336, 173758800, --78313360, -311243392, -417897632, -437003808, -422943680, -377025120, -296157312, -205951200, -127701192, -57491896, -10853919, 71386648, 119672288, 159669168, 194378944, 222988256, 246227792, 265816592, 281690272, 294566560, -306515168, 317100128, 324461696, 329706912, 334694464, 338081024, 338716160, 338725280, 339054912, 337549536, -334171552, 331427072, 328584320, 322998176, 316280864, 311258432, 305812960, 297692768, 290134720, 285150400, -278833568, 269938144, 263123648, 258594080, 250957088, 241354080, 235775984, 231270032, 221318048, 211121808, -207134464, 200413904, 184450048, 172849344, 167500496, 133703408, 53686016, -19186692, -21186000, }, +-261487808, -369519136, -412615360, -404252512, -367495648, -322004448, -266368496, -181466128, -63362040, 63136556, +175570752, 264952768, 290376832, 178081152, -61641372, -254110672, -207646640, 42662448, 236334336, 173758800, +-78313360, -311243392, -417897632, -437003808, -422943680, -377025120, -296157312, -205951200, -127701192, -57491896, +10853919, 71386648, 119672288, 159669168, 194378944, 222988256, 246227792, 265816592, 281690272, 294566560, +306515168, 317100128, 324461696, 329706912, 334694464, 338081024, 338716160, 338725280, 339054912, 337549536, +334171552, 331427072, 328584320, 322998176, 316280864, 311258432, 305812960, 297692768, 290134720, 285150400, +278833568, 269938144, 263123648, 258594080, 250957088, 241354080, 235775984, 231270032, 221318048, 211121808, +207134464, 200413904, 184450048, 172849344, 167500496, 133703408, 53686016, -19186692, -21186000, }, { -95201168, --261487808, -369519136, -412615360, -404252512, -367495648, -322004448, -266368496, -181466128, -63362040, 63136556, -175570752, 264952768, 290376832, 178081152, -61641372, -254110672, -207646640, 42662448, 236334336, 173758800, --78313360, -311243392, -417897632, -437003808, -422943680, -377025120, -296157312, -205951200, -127701192, -57491896, -10853919, 71386648, 119672288, 159669168, 194378944, 222988256, 246227792, 265816592, 281690272, 294566560, -306515168, 317100128, 324461696, 329706912, 334694464, 338081024, 338716160, 338725280, 339054912, 337549536, -334171552, 331427072, 328584320, 322998176, 316280864, 311258432, 305812960, 297692768, 290134720, 285150400, -278833568, 269938144, 263123648, 258594080, 250957088, 241354080, 235775984, 231270032, 221318048, 211121808, -207134464, 200413904, 184450048, 172849344, 167500496, 133703408, 53686016, -19186692, -21186000, }, +-261487808, -369519136, -412615360, -404252512, -367495648, -322004448, -266368496, -181466128, -63362040, 63136556, +175570752, 264952768, 290376832, 178081152, -61641372, -254110672, -207646640, 42662448, 236334336, 173758800, +-78313360, -311243392, -417897632, -437003808, -422943680, -377025120, -296157312, -205951200, -127701192, -57491896, +10853919, 71386648, 119672288, 159669168, 194378944, 222988256, 246227792, 265816592, 281690272, 294566560, +306515168, 317100128, 324461696, 329706912, 334694464, 338081024, 338716160, 338725280, 339054912, 337549536, +334171552, 331427072, 328584320, 322998176, 316280864, 311258432, 305812960, 297692768, 290134720, 285150400, +278833568, 269938144, 263123648, 258594080, 250957088, 241354080, 235775984, 231270032, 221318048, 211121808, +207134464, 200413904, 184450048, 172849344, 167500496, 133703408, 53686016, -19186692, -21186000, }, }, { { 74828528, -179569904, 162359424, -934155, -252682048, -492879712, -647132416, -679114880, -573558016, -358526688, -111054432, -121229744, 356839296, 552497088, 514685248, 120202712, -382224160, -514852224, -117430312, 417020928, 584300224, -313930432, -70863736, -308226176, -408039072, -465042944, -484762208, -443226144, -373642816, -319809184, -276554016, --222665056, -163996352, -114508656, -70787504, -25404732, 19091666, 59804736, 99188512, 137526464, 172307648, -203887472, 233259136, 258566160, 279182016, 297342720, 313283520, 325154784, 333576160, 340281120, 344762400, -347125696, 349632896, 352061152, 351769088, 349595296, 348179584, 345620320, 339195584, 331745952, 325862912, -318082048, 306809376, 296772576, 288880576, 277835520, 264487840, 255271376, 247653184, 234710832, 221795328, -216443808, 209594400, 193566656, 182967216, 182154928, 155035440, 77873664, -201863, -14085345, }, +179569904, 162359424, -934155, -252682048, -492879712, -647132416, -679114880, -573558016, -358526688, -111054432, +121229744, 356839296, 552497088, 514685248, 120202712, -382224160, -514852224, -117430312, 417020928, 584300224, +313930432, -70863736, -308226176, -408039072, -465042944, -484762208, -443226144, -373642816, -319809184, -276554016, +-222665056, -163996352, -114508656, -70787504, -25404732, 19091666, 59804736, 99188512, 137526464, 172307648, +203887472, 233259136, 258566160, 279182016, 297342720, 313283520, 325154784, 333576160, 340281120, 344762400, +347125696, 349632896, 352061152, 351769088, 349595296, 348179584, 345620320, 339195584, 331745952, 325862912, +318082048, 306809376, 296772576, 288880576, 277835520, 264487840, 255271376, 247653184, 234710832, 221795328, +216443808, 209594400, 193566656, 182967216, 182154928, 155035440, 77873664, -201863, -14085345, }, { -74828528, --179569904, -162359424, 934155, 252682048, 492879712, 647132416, 679114880, 573558016, 358526688, 111054432, --121229744, -356839296, -552497088, -514685248, -120202712, 382224160, 514852224, 117430312, -417020928, -584300224, --313930432, 70863736, 308226176, 408039072, 465042944, 484762208, 443226144, 373642816, 319809184, 276554016, -222665056, 163996352, 114508656, 70787504, 25404732, -19091666, -59804736, -99188512, -137526464, -172307648, --203887472, -233259136, -258566160, -279182016, -297342720, -313283520, -325154784, -333576160, -340281120, -344762400, --347125696, -349632896, -352061152, -351769088, -349595296, -348179584, -345620320, -339195584, -331745952, -325862912, --318082048, -306809376, -296772576, -288880576, -277835520, -264487840, -255271376, -247653184, -234710832, -221795328, --216443808, -209594400, -193566656, -182967216, -182154928, -155035440, -77873664, 201863, 14085345, }, +-179569904, -162359424, 934155, 252682048, 492879712, 647132416, 679114880, 573558016, 358526688, 111054432, +-121229744, -356839296, -552497088, -514685248, -120202712, 382224160, 514852224, 117430312, -417020928, -584300224, +-313930432, 70863736, 308226176, 408039072, 465042944, 484762208, 443226144, 373642816, 319809184, 276554016, +222665056, 163996352, 114508656, 70787504, 25404732, -19091666, -59804736, -99188512, -137526464, -172307648, +-203887472, -233259136, -258566160, -279182016, -297342720, -313283520, -325154784, -333576160, -340281120, -344762400, +-347125696, -349632896, -352061152, -351769088, -349595296, -348179584, -345620320, -339195584, -331745952, -325862912, +-318082048, -306809376, -296772576, -288880576, -277835520, -264487840, -255271376, -247653184, -234710832, -221795328, +-216443808, -209594400, -193566656, -182967216, -182154928, -155035440, -77873664, 201863, 14085345, }, }, { { -9317395, --36821292, -69657928, -75525392, -36439040, 20711942, 51296404, 39745092, 6192269, -23994372, -39681740, --36297844, -10059350, 29302952, 52118356, 33219962, -13837848, -40058624, -11268384, 48121888, 75580152, -37813964, -35274028, -89531816, -103560792, -94278824, -81204408, -67761160, -53076668, -40245456, -29352344, --16449725, -2290291, 7725036, 12230993, 13965086, 13299903, 10004053, 8395050, 12896176, 21770652, -31536334, 42917996, 56999584, 71239552, 84259744, 98653248, 115497576, 132492224, 149590496, 169309216, -190560176, 209627696, 226769440, 244284848, 260102688, 271007072, 278817472, 285900928, 289446976, 287174400, -282213184, 275995136, 264371344, 246168736, 225895408, 203880480, 175305536, 141681840, 109760576, 78130824, -40762996, 2810519, -26260504, -52909164, -89442696, -124522376, -129005784, -92731568, -32746978, }, +-36821292, -69657928, -75525392, -36439040, 20711942, 51296404, 39745092, 6192269, -23994372, -39681740, +-36297844, -10059350, 29302952, 52118356, 33219962, -13837848, -40058624, -11268384, 48121888, 75580152, +37813964, -35274028, -89531816, -103560792, -94278824, -81204408, -67761160, -53076668, -40245456, -29352344, +-16449725, -2290291, 7725036, 12230993, 13965086, 13299903, 10004053, 8395050, 12896176, 21770652, +31536334, 42917996, 56999584, 71239552, 84259744, 98653248, 115497576, 132492224, 149590496, 169309216, +190560176, 209627696, 226769440, 244284848, 260102688, 271007072, 278817472, 285900928, 289446976, 287174400, +282213184, 275995136, 264371344, 246168736, 225895408, 203880480, 175305536, 141681840, 109760576, 78130824, +40762996, 2810519, -26260504, -52909164, -89442696, -124522376, -129005784, -92731568, -32746978, }, { -9317395, --36821292, -69657928, -75525392, -36439040, 20711942, 51296404, 39745092, 6192269, -23994372, -39681740, --36297844, -10059350, 29302952, 52118356, 33219962, -13837848, -40058624, -11268384, 48121888, 75580152, -37813964, -35274028, -89531816, -103560792, -94278824, -81204408, -67761160, -53076668, -40245456, -29352344, --16449725, -2290291, 7725036, 12230993, 13965086, 13299903, 10004053, 8395050, 12896176, 21770652, -31536334, 42917996, 56999584, 71239552, 84259744, 98653248, 115497576, 132492224, 149590496, 169309216, -190560176, 209627696, 226769440, 244284848, 260102688, 271007072, 278817472, 285900928, 289446976, 287174400, -282213184, 275995136, 264371344, 246168736, 225895408, 203880480, 175305536, 141681840, 109760576, 78130824, -40762996, 2810519, -26260504, -52909164, -89442696, -124522376, -129005784, -92731568, -32746978, }, +-36821292, -69657928, -75525392, -36439040, 20711942, 51296404, 39745092, 6192269, -23994372, -39681740, +-36297844, -10059350, 29302952, 52118356, 33219962, -13837848, -40058624, -11268384, 48121888, 75580152, +37813964, -35274028, -89531816, -103560792, -94278824, -81204408, -67761160, -53076668, -40245456, -29352344, +-16449725, -2290291, 7725036, 12230993, 13965086, 13299903, 10004053, 8395050, 12896176, 21770652, +31536334, 42917996, 56999584, 71239552, 84259744, 98653248, 115497576, 132492224, 149590496, 169309216, +190560176, 209627696, 226769440, 244284848, 260102688, 271007072, 278817472, 285900928, 289446976, 287174400, +282213184, 275995136, 264371344, 246168736, 225895408, 203880480, 175305536, 141681840, 109760576, 78130824, +40762996, 2810519, -26260504, -52909164, -89442696, -124522376, -129005784, -92731568, -32746978, }, }, { { 3206730, --760209, -24588688, -53230752, -58679452, -31832150, 557809, 2557653, -28212566, -59016072, -63398012, --43799004, -9107478, 39424580, 80919872, 67487896, -14019847, -91020560, -69074352, 48401596, 150138640, -141599168, 40451076, -70834208, -146562000, -197603392, -238845280, -262780064, -261969920, -244105536, -217789744, --182208624, -135817072, -82862808, -28186796, 26032334, 77111840, 121609848, 158477312, 188456720, 211574928, -228198048, 240359248, 249442576, 254848864, 256604432, 256453040, 255078640, 251162176, 244128096, 235041008, -224493648, 212524112, 200652816, 191093840, 184047408, 178163840, 172973904, 168506064, 163650608, 157370288, -150373248, 143538880, 136241728, 128071632, 120195736, 113128904, 105392056, 96147136, 86589224, 76972256, -65361348, 51391968, 37546604, 23663122, 4324495, -22551262, -45995880, -47598976, -20342038, }, +-760209, -24588688, -53230752, -58679452, -31832150, 557809, 2557653, -28212566, -59016072, -63398012, +-43799004, -9107478, 39424580, 80919872, 67487896, -14019847, -91020560, -69074352, 48401596, 150138640, +141599168, 40451076, -70834208, -146562000, -197603392, -238845280, -262780064, -261969920, -244105536, -217789744, +-182208624, -135817072, -82862808, -28186796, 26032334, 77111840, 121609848, 158477312, 188456720, 211574928, +228198048, 240359248, 249442576, 254848864, 256604432, 256453040, 255078640, 251162176, 244128096, 235041008, +224493648, 212524112, 200652816, 191093840, 184047408, 178163840, 172973904, 168506064, 163650608, 157370288, +150373248, 143538880, 136241728, 128071632, 120195736, 113128904, 105392056, 96147136, 86589224, 76972256, +65361348, 51391968, 37546604, 23663122, 4324495, -22551262, -45995880, -47598976, -20342038, }, { 3206730, --760209, -24588688, -53230752, -58679452, -31832150, 557809, 2557653, -28212566, -59016072, -63398012, --43799004, -9107478, 39424580, 80919872, 67487896, -14019847, -91020560, -69074352, 48401596, 150138640, -141599168, 40451076, -70834208, -146562000, -197603392, -238845280, -262780064, -261969920, -244105536, -217789744, --182208624, -135817072, -82862808, -28186796, 26032334, 77111840, 121609848, 158477312, 188456720, 211574928, -228198048, 240359248, 249442576, 254848864, 256604432, 256453040, 255078640, 251162176, 244128096, 235041008, -224493648, 212524112, 200652816, 191093840, 184047408, 178163840, 172973904, 168506064, 163650608, 157370288, -150373248, 143538880, 136241728, 128071632, 120195736, 113128904, 105392056, 96147136, 86589224, 76972256, -65361348, 51391968, 37546604, 23663122, 4324495, -22551262, -45995880, -47598976, -20342038, }, +-760209, -24588688, -53230752, -58679452, -31832150, 557809, 2557653, -28212566, -59016072, -63398012, +-43799004, -9107478, 39424580, 80919872, 67487896, -14019847, -91020560, -69074352, 48401596, 150138640, +141599168, 40451076, -70834208, -146562000, -197603392, -238845280, -262780064, -261969920, -244105536, -217789744, +-182208624, -135817072, -82862808, -28186796, 26032334, 77111840, 121609848, 158477312, 188456720, 211574928, +228198048, 240359248, 249442576, 254848864, 256604432, 256453040, 255078640, 251162176, 244128096, 235041008, +224493648, 212524112, 200652816, 191093840, 184047408, 178163840, 172973904, 168506064, 163650608, 157370288, +150373248, 143538880, 136241728, 128071632, 120195736, 113128904, 105392056, 96147136, 86589224, 76972256, +65361348, 51391968, 37546604, 23663122, 4324495, -22551262, -45995880, -47598976, -20342038, }, }, { { -2380486, --2201708, 6032282, 13530758, 10633265, 857383, -3568581, -1665374, -9763534, -41570452, -86909200, --112731080, -83443160, 8054675, 112200112, 139479056, 45113800, -96580928, -144677584, -42420856, 115654880, -192026912, 149331712, 53525492, -31199716, -96998080, -153833376, -192797328, -203361872, -193656848, -176281568, --152326384, -119745296, -82905752, -45694692, -5987722, 37148784, 78603808, 112886776, 138612016, 156223536, -166643120, 172502528, 176550000, 179240800, 180459488, 181491360, 182870048, 182965600, 180790208, 177448192, -173547280, 168362720, 162371232, 157321424, 153461872, 149761216, 146456768, 144288352, 142253072, 139164464, -135849280, 132984536, 129053032, 123152280, 116941224, 111209592, 104015520, 94634776, 85179936, 75937168, -64041184, 49254148, 35070020, 20654498, -1403381, -32753958, -58780924, -58144192, -24373402, }, +-2201708, 6032282, 13530758, 10633265, 857383, -3568581, -1665374, -9763534, -41570452, -86909200, +-112731080, -83443160, 8054675, 112200112, 139479056, 45113800, -96580928, -144677584, -42420856, 115654880, +192026912, 149331712, 53525492, -31199716, -96998080, -153833376, -192797328, -203361872, -193656848, -176281568, +-152326384, -119745296, -82905752, -45694692, -5987722, 37148784, 78603808, 112886776, 138612016, 156223536, +166643120, 172502528, 176550000, 179240800, 180459488, 181491360, 182870048, 182965600, 180790208, 177448192, +173547280, 168362720, 162371232, 157321424, 153461872, 149761216, 146456768, 144288352, 142253072, 139164464, +135849280, 132984536, 129053032, 123152280, 116941224, 111209592, 104015520, 94634776, 85179936, 75937168, +64041184, 49254148, 35070020, 20654498, -1403381, -32753958, -58780924, -58144192, -24373402, }, { 2380486, -2201708, -6032282, -13530758, -10633265, -857383, 3568581, 1665374, 9763534, 41570452, 86909200, -112731080, 83443160, -8054675, -112200112, -139479056, -45113800, 96580928, 144677584, 42420856, -115654880, --192026912, -149331712, -53525492, 31199716, 96998080, 153833376, 192797328, 203361872, 193656848, 176281568, -152326384, 119745296, 82905752, 45694692, 5987722, -37148784, -78603808, -112886776, -138612016, -156223536, --166643120, -172502528, -176550000, -179240800, -180459488, -181491360, -182870048, -182965600, -180790208, -177448192, --173547280, -168362720, -162371232, -157321424, -153461872, -149761216, -146456768, -144288352, -142253072, -139164464, --135849280, -132984536, -129053032, -123152280, -116941224, -111209592, -104015520, -94634776, -85179936, -75937168, --64041184, -49254148, -35070020, -20654498, 1403381, 32753958, 58780924, 58144192, 24373402, }, +2201708, -6032282, -13530758, -10633265, -857383, 3568581, 1665374, 9763534, 41570452, 86909200, +112731080, 83443160, -8054675, -112200112, -139479056, -45113800, 96580928, 144677584, 42420856, -115654880, +-192026912, -149331712, -53525492, 31199716, 96998080, 153833376, 192797328, 203361872, 193656848, 176281568, +152326384, 119745296, 82905752, 45694692, 5987722, -37148784, -78603808, -112886776, -138612016, -156223536, +-166643120, -172502528, -176550000, -179240800, -180459488, -181491360, -182870048, -182965600, -180790208, -177448192, +-173547280, -168362720, -162371232, -157321424, -153461872, -149761216, -146456768, -144288352, -142253072, -139164464, +-135849280, -132984536, -129053032, -123152280, -116941224, -111209592, -104015520, -94634776, -85179936, -75937168, +-64041184, -49254148, -35070020, -20654498, 1403381, 32753958, 58780924, 58144192, 24373402, }, }, { { -11930882, --12633646, 14035416, 19539416, -11880416, -24995100, 24242942, 89128624, 82855824, -7707319, -102444632, --119779120, -53979684, 38026028, 91971352, 73959872, 350577, -63051732, -51099912, 29446296, 99244344, -95165736, 38272452, -6125697, -10269267, 4490389, 17663054, 31674846, 48226576, 56620552, 51063404, -37772628, 21715892, 2442226, -17212082, -32573032, -45621144, -60280940, -72937672, -77700256, -75676248, --70407400, -61078728, -47806744, -35735200, -27477054, -19511500, -10116795, -1858110, 5894843, 16966732, -30312806, 41998336, 53784800, 69578472, 86721296, 100822208, 113888040, 128117800, 139034000, 143659680, -146247392, 148334752, 144509008, 133968080, 122643864, 109887272, 88977760, 62406948, 38290708, 13117904, --20552492, -54335632, -77318536, -99966976, -132959840, -152890640, -128148936, -70697848, -19562502, }, +-12633646, 14035416, 19539416, -11880416, -24995100, 24242942, 89128624, 82855824, -7707319, -102444632, +-119779120, -53979684, 38026028, 91971352, 73959872, 350577, -63051732, -51099912, 29446296, 99244344, +95165736, 38272452, -6125697, -10269267, 4490389, 17663054, 31674846, 48226576, 56620552, 51063404, +37772628, 21715892, 2442226, -17212082, -32573032, -45621144, -60280940, -72937672, -77700256, -75676248, +-70407400, -61078728, -47806744, -35735200, -27477054, -19511500, -10116795, -1858110, 5894843, 16966732, +30312806, 41998336, 53784800, 69578472, 86721296, 100822208, 113888040, 128117800, 139034000, 143659680, +146247392, 148334752, 144509008, 133968080, 122643864, 109887272, 88977760, 62406948, 38290708, 13117904, +-20552492, -54335632, -77318536, -99966976, -132959840, -152890640, -128148936, -70697848, -19562502, }, { 11930882, -12633646, -14035416, -19539416, 11880416, 24995100, -24242942, -89128624, -82855824, 7707319, 102444632, -119779120, 53979684, -38026028, -91971352, -73959872, -350577, 63051732, 51099912, -29446296, -99244344, --95165736, -38272452, 6125697, 10269267, -4490389, -17663054, -31674846, -48226576, -56620552, -51063404, --37772628, -21715892, -2442226, 17212082, 32573032, 45621144, 60280940, 72937672, 77700256, 75676248, -70407400, 61078728, 47806744, 35735200, 27477054, 19511500, 10116795, 1858110, -5894843, -16966732, --30312806, -41998336, -53784800, -69578472, -86721296, -100822208, -113888040, -128117800, -139034000, -143659680, --146247392, -148334752, -144509008, -133968080, -122643864, -109887272, -88977760, -62406948, -38290708, -13117904, -20552492, 54335632, 77318536, 99966976, 132959840, 152890640, 128148936, 70697848, 19562502, }, +12633646, -14035416, -19539416, 11880416, 24995100, -24242942, -89128624, -82855824, 7707319, 102444632, +119779120, 53979684, -38026028, -91971352, -73959872, -350577, 63051732, 51099912, -29446296, -99244344, +-95165736, -38272452, 6125697, 10269267, -4490389, -17663054, -31674846, -48226576, -56620552, -51063404, +-37772628, -21715892, -2442226, 17212082, 32573032, 45621144, 60280940, 72937672, 77700256, 75676248, +70407400, 61078728, 47806744, 35735200, 27477054, 19511500, 10116795, 1858110, -5894843, -16966732, +-30312806, -41998336, -53784800, -69578472, -86721296, -100822208, -113888040, -128117800, -139034000, -143659680, +-146247392, -148334752, -144509008, -133968080, -122643864, -109887272, -88977760, -62406948, -38290708, -13117904, +20552492, 54335632, 77318536, 99966976, 132959840, 152890640, 128148936, 70697848, 19562502, }, }, { { 2073396, --2979634, -18908056, -27071178, -21386252, -18320184, -23614268, -12989055, 37278704, 116928336, 189235184, -210141472, 136106432, -37988448, -218234272, -246803856, -69617664, 159266512, 222396096, 84098680, -85161152, --130710352, -71215392, -10320270, 15589121, 37127844, 61506616, 61480848, 33908228, 8679592, 2712809, -5145908, 5570573, 6349036, 8035884, 5467494, -1516660, -8196945, -13848585, -20753818, -28450400, --35919884, -44459352, -53712324, -60499448, -64401424, -68532112, -73542728, -77055472, -79073032, -81757920, --84574888, -85309864, -84337592, -82905216, -79657688, -73227048, -65103652, -56403120, -45642080, -32365262, --18467822, -4152160, 12357158, 30300994, 47081432, 63054952, 79679696, 94618664, 105121472, 113066624, -119806504, 121319944, 115937808, 108282032, 95906616, 65061776, 16160888, -19744502, -14417668, }, +-2979634, -18908056, -27071178, -21386252, -18320184, -23614268, -12989055, 37278704, 116928336, 189235184, +210141472, 136106432, -37988448, -218234272, -246803856, -69617664, 159266512, 222396096, 84098680, -85161152, +-130710352, -71215392, -10320270, 15589121, 37127844, 61506616, 61480848, 33908228, 8679592, 2712809, +5145908, 5570573, 6349036, 8035884, 5467494, -1516660, -8196945, -13848585, -20753818, -28450400, +-35919884, -44459352, -53712324, -60499448, -64401424, -68532112, -73542728, -77055472, -79073032, -81757920, +-84574888, -85309864, -84337592, -82905216, -79657688, -73227048, -65103652, -56403120, -45642080, -32365262, +-18467822, -4152160, 12357158, 30300994, 47081432, 63054952, 79679696, 94618664, 105121472, 113066624, +119806504, 121319944, 115937808, 108282032, 95906616, 65061776, 16160888, -19744502, -14417668, }, { 2073396, --2979634, -18908056, -27071178, -21386252, -18320184, -23614268, -12989055, 37278704, 116928336, 189235184, -210141472, 136106432, -37988448, -218234272, -246803856, -69617664, 159266512, 222396096, 84098680, -85161152, --130710352, -71215392, -10320270, 15589121, 37127844, 61506616, 61480848, 33908228, 8679592, 2712809, -5145908, 5570573, 6349036, 8035884, 5467494, -1516660, -8196945, -13848585, -20753818, -28450400, --35919884, -44459352, -53712324, -60499448, -64401424, -68532112, -73542728, -77055472, -79073032, -81757920, --84574888, -85309864, -84337592, -82905216, -79657688, -73227048, -65103652, -56403120, -45642080, -32365262, --18467822, -4152160, 12357158, 30300994, 47081432, 63054952, 79679696, 94618664, 105121472, 113066624, -119806504, 121319944, 115937808, 108282032, 95906616, 65061776, 16160888, -19744502, -14417668, }, +-2979634, -18908056, -27071178, -21386252, -18320184, -23614268, -12989055, 37278704, 116928336, 189235184, +210141472, 136106432, -37988448, -218234272, -246803856, -69617664, 159266512, 222396096, 84098680, -85161152, +-130710352, -71215392, -10320270, 15589121, 37127844, 61506616, 61480848, 33908228, 8679592, 2712809, +5145908, 5570573, 6349036, 8035884, 5467494, -1516660, -8196945, -13848585, -20753818, -28450400, +-35919884, -44459352, -53712324, -60499448, -64401424, -68532112, -73542728, -77055472, -79073032, -81757920, +-84574888, -85309864, -84337592, -82905216, -79657688, -73227048, -65103652, -56403120, -45642080, -32365262, +-18467822, -4152160, 12357158, 30300994, 47081432, 63054952, 79679696, 94618664, 105121472, 113066624, +119806504, 121319944, 115937808, 108282032, 95906616, 65061776, 16160888, -19744502, -14417668, }, }, { { -18935438, --43985296, -38830800, -1818382, 54804320, 102846752, 103673528, 40720048, -49203684, -99759208, -81579680, --28606092, 10171019, 23140210, 25193742, 19196894, -1850057, -25942140, -27653684, -3920768, 20147154, -25619480, 20407000, 20134270, 25312926, 25960392, 17194364, 1374390, -18625126, -40882184, -61797600, --76807440, -83958560, -85541256, -85887536, -87257096, -88059176, -85411328, -78131896, -66332548, -50427212, --32447942, -15933792, -2511482, 9138617, 19825570, 28585154, 35676684, 42913704, 50294068, 56216828, -61058864, 66391604, 71415104, 74494600, 76685568, 79417168, 81063216, 80016312, 77930032, 76124536, -72977400, 68185288, 64491080, 62619012, 60442536, 58506044, 59319940, 61267172, 61372400, 62210992, -66633732, 69985416, 68818264, 69603168, 73902432, 65627636, 34381212, 1323924, -5399311, }, +-43985296, -38830800, -1818382, 54804320, 102846752, 103673528, 40720048, -49203684, -99759208, -81579680, +-28606092, 10171019, 23140210, 25193742, 19196894, -1850057, -25942140, -27653684, -3920768, 20147154, +25619480, 20407000, 20134270, 25312926, 25960392, 17194364, 1374390, -18625126, -40882184, -61797600, +-76807440, -83958560, -85541256, -85887536, -87257096, -88059176, -85411328, -78131896, -66332548, -50427212, +-32447942, -15933792, -2511482, 9138617, 19825570, 28585154, 35676684, 42913704, 50294068, 56216828, +61058864, 66391604, 71415104, 74494600, 76685568, 79417168, 81063216, 80016312, 77930032, 76124536, +72977400, 68185288, 64491080, 62619012, 60442536, 58506044, 59319940, 61267172, 61372400, 62210992, +66633732, 69985416, 68818264, 69603168, 73902432, 65627636, 34381212, 1323924, -5399311, }, { -18935438, --43985296, -38830800, -1818382, 54804320, 102846752, 103673528, 40720048, -49203684, -99759208, -81579680, --28606092, 10171019, 23140210, 25193742, 19196894, -1850057, -25942140, -27653684, -3920768, 20147154, -25619480, 20407000, 20134270, 25312926, 25960392, 17194364, 1374390, -18625126, -40882184, -61797600, --76807440, -83958560, -85541256, -85887536, -87257096, -88059176, -85411328, -78131896, -66332548, -50427212, --32447942, -15933792, -2511482, 9138617, 19825570, 28585154, 35676684, 42913704, 50294068, 56216828, -61058864, 66391604, 71415104, 74494600, 76685568, 79417168, 81063216, 80016312, 77930032, 76124536, -72977400, 68185288, 64491080, 62619012, 60442536, 58506044, 59319940, 61267172, 61372400, 62210992, -66633732, 69985416, 68818264, 69603168, 73902432, 65627636, 34381212, 1323924, -5399311, }, +-43985296, -38830800, -1818382, 54804320, 102846752, 103673528, 40720048, -49203684, -99759208, -81579680, +-28606092, 10171019, 23140210, 25193742, 19196894, -1850057, -25942140, -27653684, -3920768, 20147154, +25619480, 20407000, 20134270, 25312926, 25960392, 17194364, 1374390, -18625126, -40882184, -61797600, +-76807440, -83958560, -85541256, -85887536, -87257096, -88059176, -85411328, -78131896, -66332548, -50427212, +-32447942, -15933792, -2511482, 9138617, 19825570, 28585154, 35676684, 42913704, 50294068, 56216828, +61058864, 66391604, 71415104, 74494600, 76685568, 79417168, 81063216, 80016312, 77930032, 76124536, +72977400, 68185288, 64491080, 62619012, 60442536, 58506044, 59319940, 61267172, 61372400, 62210992, +66633732, 69985416, 68818264, 69603168, 73902432, 65627636, 34381212, 1323924, -5399311, }, }, { { 22884122, -33165738, -14810121, -76870248, -119964344, -152239952, -161800000, -97338992, 54136988, 226571872, 344021504, -370080704, 264061024, -6888054, -332583488, -444249408, -186128320, 236213536, 432803328, 260745312, -52605296, --228708080, -231985136, -193081872, -181198224, -165368592, -125485520, -86251000, -58675160, -25121264, 19414862, -59017144, 86671368, 109536696, 128960152, 138729584, 138406400, 132367136, 121195928, 104757472, 87383256, -72582800, 58667644, 43847856, 29568702, 16611860, 3802120, -8322573, -17597554, -24101746, -30022896, --36389648, -42929808, -49812492, -57200376, -64430952, -71055936, -77319608, -83103320, -87808992, -91350200, --94069984, -95959232, -96729104, -96223376, -94447944, -91560648, -87623776, -82350096, -75940392, -69602096, --63686312, -56837448, -49156976, -42819212, -35799088, -20797306, 1918240, 16711718, 9657771, }, +33165738, -14810121, -76870248, -119964344, -152239952, -161800000, -97338992, 54136988, 226571872, 344021504, +370080704, 264061024, -6888054, -332583488, -444249408, -186128320, 236213536, 432803328, 260745312, -52605296, +-228708080, -231985136, -193081872, -181198224, -165368592, -125485520, -86251000, -58675160, -25121264, 19414862, +59017144, 86671368, 109536696, 128960152, 138729584, 138406400, 132367136, 121195928, 104757472, 87383256, +72582800, 58667644, 43847856, 29568702, 16611860, 3802120, -8322573, -17597554, -24101746, -30022896, +-36389648, -42929808, -49812492, -57200376, -64430952, -71055936, -77319608, -83103320, -87808992, -91350200, +-94069984, -95959232, -96729104, -96223376, -94447944, -91560648, -87623776, -82350096, -75940392, -69602096, +-63686312, -56837448, -49156976, -42819212, -35799088, -20797306, 1918240, 16711718, 9657771, }, { 22884122, -33165738, -14810121, -76870248, -119964344, -152239952, -161800000, -97338992, 54136988, 226571872, 344021504, -370080704, 264061024, -6888054, -332583488, -444249408, -186128320, 236213536, 432803328, 260745312, -52605296, --228708080, -231985136, -193081872, -181198224, -165368592, -125485520, -86251000, -58675160, -25121264, 19414862, -59017144, 86671368, 109536696, 128960152, 138729584, 138406400, 132367136, 121195928, 104757472, 87383256, -72582800, 58667644, 43847856, 29568702, 16611860, 3802120, -8322573, -17597554, -24101746, -30022896, --36389648, -42929808, -49812492, -57200376, -64430952, -71055936, -77319608, -83103320, -87808992, -91350200, --94069984, -95959232, -96729104, -96223376, -94447944, -91560648, -87623776, -82350096, -75940392, -69602096, --63686312, -56837448, -49156976, -42819212, -35799088, -20797306, 1918240, 16711718, 9657771, }, +33165738, -14810121, -76870248, -119964344, -152239952, -161800000, -97338992, 54136988, 226571872, 344021504, +370080704, 264061024, -6888054, -332583488, -444249408, -186128320, 236213536, 432803328, 260745312, -52605296, +-228708080, -231985136, -193081872, -181198224, -165368592, -125485520, -86251000, -58675160, -25121264, 19414862, +59017144, 86671368, 109536696, 128960152, 138729584, 138406400, 132367136, 121195928, 104757472, 87383256, +72582800, 58667644, 43847856, 29568702, 16611860, 3802120, -8322573, -17597554, -24101746, -30022896, +-36389648, -42929808, -49812492, -57200376, -64430952, -71055936, -77319608, -83103320, -87808992, -91350200, +-94069984, -95959232, -96729104, -96223376, -94447944, -91560648, -87623776, -82350096, -75940392, -69602096, +-63686312, -56837448, -49156976, -42819212, -35799088, -20797306, 1918240, 16711718, 9657771, }, }, { { 2676838, -11518565, 24768540, 38539280, 49642304, 43461848, -1695438, -78177528, -148516208, -194812208, -212254592, --142130128, 80136040, 349703232, 395369984, 95388536, -293716704, -390215488, -136282000, 164463424, 246670704, -150524640, 59037008, 36267776, 23570780, -11730093, -40562744, -45773612, -45122928, -48447768, -44677324, --29554206, -13287018, -2261300, 6082748, 13103408, 17475686, 20345260, 23156316, 24241332, 22792318, -21519396, 21908092, 21725556, 19693498, 17955110, 18005040, 18484466, 18526342, 19449760, 21778168, -23864986, 24606942, 24705188, 24425480, 22779432, 19651086, 16250009, 12910135, 8831527, 4265977, -374736, -3143379, -7501161, -12150462, -15678778, -18737868, -22670448, -26356066, -28297392, -30069066, --33279018, -35760436, -35962300, -37124624, -40197672, -37626060, -23779086, -7109245, -69793, }, +11518565, 24768540, 38539280, 49642304, 43461848, -1695438, -78177528, -148516208, -194812208, -212254592, +-142130128, 80136040, 349703232, 395369984, 95388536, -293716704, -390215488, -136282000, 164463424, 246670704, +150524640, 59037008, 36267776, 23570780, -11730093, -40562744, -45773612, -45122928, -48447768, -44677324, +-29554206, -13287018, -2261300, 6082748, 13103408, 17475686, 20345260, 23156316, 24241332, 22792318, +21519396, 21908092, 21725556, 19693498, 17955110, 18005040, 18484466, 18526342, 19449760, 21778168, +23864986, 24606942, 24705188, 24425480, 22779432, 19651086, 16250009, 12910135, 8831527, 4265977, +374736, -3143379, -7501161, -12150462, -15678778, -18737868, -22670448, -26356066, -28297392, -30069066, +-33279018, -35760436, -35962300, -37124624, -40197672, -37626060, -23779086, -7109245, -69793, }, { -2676838, --11518565, -24768540, -38539280, -49642304, -43461848, 1695438, 78177528, 148516208, 194812208, 212254592, -142130128, -80136040, -349703232, -395369984, -95388536, 293716704, 390215488, 136282000, -164463424, -246670704, --150524640, -59037008, -36267776, -23570780, 11730093, 40562744, 45773612, 45122928, 48447768, 44677324, -29554206, 13287018, 2261300, -6082748, -13103408, -17475686, -20345260, -23156316, -24241332, -22792318, --21519396, -21908092, -21725556, -19693498, -17955110, -18005040, -18484466, -18526342, -19449760, -21778168, --23864986, -24606942, -24705188, -24425480, -22779432, -19651086, -16250009, -12910135, -8831527, -4265977, --374736, 3143379, 7501161, 12150462, 15678778, 18737868, 22670448, 26356066, 28297392, 30069066, -33279018, 35760436, 35962300, 37124624, 40197672, 37626060, 23779086, 7109245, 69793, }, +-11518565, -24768540, -38539280, -49642304, -43461848, 1695438, 78177528, 148516208, 194812208, 212254592, +142130128, -80136040, -349703232, -395369984, -95388536, 293716704, 390215488, 136282000, -164463424, -246670704, +-150524640, -59037008, -36267776, -23570780, 11730093, 40562744, 45773612, 45122928, 48447768, 44677324, +29554206, 13287018, 2261300, -6082748, -13103408, -17475686, -20345260, -23156316, -24241332, -22792318, +-21519396, -21908092, -21725556, -19693498, -17955110, -18005040, -18484466, -18526342, -19449760, -21778168, +-23864986, -24606942, -24705188, -24425480, -22779432, -19651086, -16250009, -12910135, -8831527, -4265977, +-374736, 3143379, 7501161, 12150462, 15678778, 18737868, 22670448, 26356066, 28297392, 30069066, +33279018, 35760436, 35962300, 37124624, 40197672, 37626060, 23779086, 7109245, 69793, }, }, { { 1826435, -2365990, -3248606, -13448616, -22016002, -13940390, 23158464, 68848328, 71952512, 11164231, -61750356, --75194680, -26665842, 19692962, 22051436, 4394826, 2568391, 10317585, 3354906, -14431627, -20328080, --11798812, -7087770, -13144747, -16881906, -8556112, 4356708, 10319196, 7961259, 2301566, -4439386, --12662100, -20942798, -26485990, -28083718, -26211112, -21811454, -16364362, -11366631, -6633040, -730144, -6294275, 12436615, 16386374, 18624052, 19660750, 19497540, 19136764, 20284056, 23205708, 26865020, -30972620, 35785668, 40469328, 43934832, 46569792, 49092012, 50889456, 51408612, 51532628, 51770464, -51113868, 49217640, 47254840, 45489608, 42914776, 39926552, 37963216, 36498096, 34237868, 32390496, -32307818, 31949188, 29954176, 29531122, 31299574, 27438398, 13022878, -1730335, -3430605, }, +2365990, -3248606, -13448616, -22016002, -13940390, 23158464, 68848328, 71952512, 11164231, -61750356, +-75194680, -26665842, 19692962, 22051436, 4394826, 2568391, 10317585, 3354906, -14431627, -20328080, +-11798812, -7087770, -13144747, -16881906, -8556112, 4356708, 10319196, 7961259, 2301566, -4439386, +-12662100, -20942798, -26485990, -28083718, -26211112, -21811454, -16364362, -11366631, -6633040, -730144, +6294275, 12436615, 16386374, 18624052, 19660750, 19497540, 19136764, 20284056, 23205708, 26865020, +30972620, 35785668, 40469328, 43934832, 46569792, 49092012, 50889456, 51408612, 51532628, 51770464, +51113868, 49217640, 47254840, 45489608, 42914776, 39926552, 37963216, 36498096, 34237868, 32390496, +32307818, 31949188, 29954176, 29531122, 31299574, 27438398, 13022878, -1730335, -3430605, }, { -1826435, --2365990, 3248606, 13448616, 22016002, 13940390, -23158464, -68848328, -71952512, -11164231, 61750356, -75194680, 26665842, -19692962, -22051436, -4394826, -2568391, -10317585, -3354906, 14431627, 20328080, -11798812, 7087770, 13144747, 16881906, 8556112, -4356708, -10319196, -7961259, -2301566, 4439386, -12662100, 20942798, 26485990, 28083718, 26211112, 21811454, 16364362, 11366631, 6633040, 730144, --6294275, -12436615, -16386374, -18624052, -19660750, -19497540, -19136764, -20284056, -23205708, -26865020, --30972620, -35785668, -40469328, -43934832, -46569792, -49092012, -50889456, -51408612, -51532628, -51770464, --51113868, -49217640, -47254840, -45489608, -42914776, -39926552, -37963216, -36498096, -34237868, -32390496, --32307818, -31949188, -29954176, -29531122, -31299574, -27438398, -13022878, 1730335, 3430605, }, +-2365990, 3248606, 13448616, 22016002, 13940390, -23158464, -68848328, -71952512, -11164231, 61750356, +75194680, 26665842, -19692962, -22051436, -4394826, -2568391, -10317585, -3354906, 14431627, 20328080, +11798812, 7087770, 13144747, 16881906, 8556112, -4356708, -10319196, -7961259, -2301566, 4439386, +12662100, 20942798, 26485990, 28083718, 26211112, 21811454, 16364362, 11366631, 6633040, 730144, +-6294275, -12436615, -16386374, -18624052, -19660750, -19497540, -19136764, -20284056, -23205708, -26865020, +-30972620, -35785668, -40469328, -43934832, -46569792, -49092012, -50889456, -51408612, -51532628, -51770464, +-51113868, -49217640, -47254840, -45489608, -42914776, -39926552, -37963216, -36498096, -34237868, -32390496, +-32307818, -31949188, -29954176, -29531122, -31299574, -27438398, -13022878, 1730335, 3430605, }, }, { { 6216965, -17775796, 19325742, 5274757, -1144072, 26213260, 59710784, 29491930, -86476480, -207889840, -211848720, --52057152, 175533696, 290100352, 183276992, -57808112, -215628832, -163201776, 7863012, 113510616, 89436248, -18616536, -17101486, -24245090, -34355444, -37672768, -15455440, 15083388, 26690538, 22615150, 23285166, -34309272, 48685600, 63653564, 78474424, 87381112, 86266568, 78198472, 67035848, 53475564, 39097624, -26377004, 14476187, 1400159, -11567958, -22792318, -33887828, -45995880, -57177824, -66847408, -77320688, --88754424, -98337568, -105320112, -110883168, -113760800, -112169512, -108133320, -104066520, -98369784, -89551680, --79765592, -69713224, -56391308, -39460548, -22283900, -4645007, 16423955, 38332048, 56144348, 72164576, -90016608, 103996728, 108877424, 111673448, 114932784, 100724496, 57576184, 11511049, -3173444, }, +17775796, 19325742, 5274757, -1144072, 26213260, 59710784, 29491930, -86476480, -207889840, -211848720, +-52057152, 175533696, 290100352, 183276992, -57808112, -215628832, -163201776, 7863012, 113510616, 89436248, +18616536, -17101486, -24245090, -34355444, -37672768, -15455440, 15083388, 26690538, 22615150, 23285166, +34309272, 48685600, 63653564, 78474424, 87381112, 86266568, 78198472, 67035848, 53475564, 39097624, +26377004, 14476187, 1400159, -11567958, -22792318, -33887828, -45995880, -57177824, -66847408, -77320688, +-88754424, -98337568, -105320112, -110883168, -113760800, -112169512, -108133320, -104066520, -98369784, -89551680, +-79765592, -69713224, -56391308, -39460548, -22283900, -4645007, 16423955, 38332048, 56144348, 72164576, +90016608, 103996728, 108877424, 111673448, 114932784, 100724496, 57576184, 11511049, -3173444, }, { -6216965, --17775796, -19325742, -5274757, 1144072, -26213260, -59710784, -29491930, 86476480, 207889840, 211848720, -52057152, -175533696, -290100352, -183276992, 57808112, 215628832, 163201776, -7863012, -113510616, -89436248, --18616536, 17101486, 24245090, 34355444, 37672768, 15455440, -15083388, -26690538, -22615150, -23285166, --34309272, -48685600, -63653564, -78474424, -87381112, -86266568, -78198472, -67035848, -53475564, -39097624, --26377004, -14476187, -1400159, 11567958, 22792318, 33887828, 45995880, 57177824, 66847408, 77320688, -88754424, 98337568, 105320112, 110883168, 113760800, 112169512, 108133320, 104066520, 98369784, 89551680, -79765592, 69713224, 56391308, 39460548, 22283900, 4645007, -16423955, -38332048, -56144348, -72164576, --90016608, -103996728, -108877424, -111673448, -114932784, -100724496, -57576184, -11511049, 3173444, }, +-17775796, -19325742, -5274757, 1144072, -26213260, -59710784, -29491930, 86476480, 207889840, 211848720, +52057152, -175533696, -290100352, -183276992, 57808112, 215628832, 163201776, -7863012, -113510616, -89436248, +-18616536, 17101486, 24245090, 34355444, 37672768, 15455440, -15083388, -26690538, -22615150, -23285166, +-34309272, -48685600, -63653564, -78474424, -87381112, -86266568, -78198472, -67035848, -53475564, -39097624, +-26377004, -14476187, -1400159, 11567958, 22792318, 33887828, 45995880, 57177824, 66847408, 77320688, +88754424, 98337568, 105320112, 110883168, 113760800, 112169512, 108133320, 104066520, 98369784, 89551680, +79765592, 69713224, 56391308, 39460548, 22283900, 4645007, -16423955, -38332048, -56144348, -72164576, +-90016608, -103996728, -108877424, -111673448, -114932784, -100724496, -57576184, -11511049, 3173444, }, }, { { 189515, -2603824, 9093520, 16408923, 17219060, 6584185, -13749801, -36543728, -49490372, -37393060, 2747169, -46044196, 55252068, 21684754, -21689048, -37904160, -24512452, -3768834, 11381126, 24070070, 34782792, -35836132, 25294674, 12073153, 3120831, -5666136, -21471078, -42727408, -59395640, -63018980, -53593140, --37393596, -21197812, -9469866, -3933653, -2723009, -1264868, 3184182, 8684424, 12015708, 12869870, -12582107, 11391327, 9513353, 8288213, 7928510, 6730214, 4024384, 868657, -2894808, -8582955, --15516643, -21930104, -28495498, -36749888, -45392972, -52441012, -58786828, -65393560, -70221104, -72049152, --73160472, -74549360, -73696272, -70130376, -66786204, -63549948, -56963076, -47561396, -38742752, -28575492, --13094282, 4017942, 17359184, 31820876, 53082036, 69996152, 65097744, 40224516, 12428562, }, +2603824, 9093520, 16408923, 17219060, 6584185, -13749801, -36543728, -49490372, -37393060, 2747169, +46044196, 55252068, 21684754, -21689048, -37904160, -24512452, -3768834, 11381126, 24070070, 34782792, +35836132, 25294674, 12073153, 3120831, -5666136, -21471078, -42727408, -59395640, -63018980, -53593140, +-37393596, -21197812, -9469866, -3933653, -2723009, -1264868, 3184182, 8684424, 12015708, 12869870, +12582107, 11391327, 9513353, 8288213, 7928510, 6730214, 4024384, 868657, -2894808, -8582955, +-15516643, -21930104, -28495498, -36749888, -45392972, -52441012, -58786828, -65393560, -70221104, -72049152, +-73160472, -74549360, -73696272, -70130376, -66786204, -63549948, -56963076, -47561396, -38742752, -28575492, +-13094282, 4017942, 17359184, 31820876, 53082036, 69996152, 65097744, 40224516, 12428562, }, { 189515, -2603824, 9093520, 16408923, 17219060, 6584185, -13749801, -36543728, -49490372, -37393060, 2747169, -46044196, 55252068, 21684754, -21689048, -37904160, -24512452, -3768834, 11381126, 24070070, 34782792, -35836132, 25294674, 12073153, 3120831, -5666136, -21471078, -42727408, -59395640, -63018980, -53593140, --37393596, -21197812, -9469866, -3933653, -2723009, -1264868, 3184182, 8684424, 12015708, 12869870, -12582107, 11391327, 9513353, 8288213, 7928510, 6730214, 4024384, 868657, -2894808, -8582955, --15516643, -21930104, -28495498, -36749888, -45392972, -52441012, -58786828, -65393560, -70221104, -72049152, --73160472, -74549360, -73696272, -70130376, -66786204, -63549948, -56963076, -47561396, -38742752, -28575492, --13094282, 4017942, 17359184, 31820876, 53082036, 69996152, 65097744, 40224516, 12428562, }, +2603824, 9093520, 16408923, 17219060, 6584185, -13749801, -36543728, -49490372, -37393060, 2747169, +46044196, 55252068, 21684754, -21689048, -37904160, -24512452, -3768834, 11381126, 24070070, 34782792, +35836132, 25294674, 12073153, 3120831, -5666136, -21471078, -42727408, -59395640, -63018980, -53593140, +-37393596, -21197812, -9469866, -3933653, -2723009, -1264868, 3184182, 8684424, 12015708, 12869870, +12582107, 11391327, 9513353, 8288213, 7928510, 6730214, 4024384, 868657, -2894808, -8582955, +-15516643, -21930104, -28495498, -36749888, -45392972, -52441012, -58786828, -65393560, -70221104, -72049152, +-73160472, -74549360, -73696272, -70130376, -66786204, -63549948, -56963076, -47561396, -38742752, -28575492, +-13094282, 4017942, 17359184, 31820876, 53082036, 69996152, 65097744, 40224516, 12428562, }, }, { { 1822677, -10966125, 24683178, 28093918, 14313515, -10498511, -41405096, -70848168, -72985456, -23443542, 56086368, -101519608, 72735808, -771484, -54526220, -54574000, -17211008, 19396610, 26918708, 2150705, -31897648, --43881680, -23245436, 11316165, 35585416, 43225088, 41516764, 35880156, 27685896, 19294604, 11999602, -3074123, -9389335, -22429392, -32571958, -40118752, -46413564, -50786916, -52326660, -51607792, -49622980, --47427176, -46620796, -47962436, -50420232, -53144852, -56469692, -59701120, -60630980, -58479200, -54543936, --49472656, -43031276, -36491116, -31762894, -28569048, -25620554, -23313620, -22183506, -20781200, -18009872, --14838575, -11260331, -5197448, 3537979, 12585865, 21601002, 32216012, 43009804, 50777252, 56388088, -62372588, 66507568, 66082368, 64952792, 65838092, 60432876, 40850508, 16411607, 2739652, }, +10966125, 24683178, 28093918, 14313515, -10498511, -41405096, -70848168, -72985456, -23443542, 56086368, +101519608, 72735808, -771484, -54526220, -54574000, -17211008, 19396610, 26918708, 2150705, -31897648, +-43881680, -23245436, 11316165, 35585416, 43225088, 41516764, 35880156, 27685896, 19294604, 11999602, +3074123, -9389335, -22429392, -32571958, -40118752, -46413564, -50786916, -52326660, -51607792, -49622980, +-47427176, -46620796, -47962436, -50420232, -53144852, -56469692, -59701120, -60630980, -58479200, -54543936, +-49472656, -43031276, -36491116, -31762894, -28569048, -25620554, -23313620, -22183506, -20781200, -18009872, +-14838575, -11260331, -5197448, 3537979, 12585865, 21601002, 32216012, 43009804, 50777252, 56388088, +62372588, 66507568, 66082368, 64952792, 65838092, 60432876, 40850508, 16411607, 2739652, }, { 1822677, -10966125, 24683178, 28093918, 14313515, -10498511, -41405096, -70848168, -72985456, -23443542, 56086368, -101519608, 72735808, -771484, -54526220, -54574000, -17211008, 19396610, 26918708, 2150705, -31897648, --43881680, -23245436, 11316165, 35585416, 43225088, 41516764, 35880156, 27685896, 19294604, 11999602, -3074123, -9389335, -22429392, -32571958, -40118752, -46413564, -50786916, -52326660, -51607792, -49622980, --47427176, -46620796, -47962436, -50420232, -53144852, -56469692, -59701120, -60630980, -58479200, -54543936, --49472656, -43031276, -36491116, -31762894, -28569048, -25620554, -23313620, -22183506, -20781200, -18009872, --14838575, -11260331, -5197448, 3537979, 12585865, 21601002, 32216012, 43009804, 50777252, 56388088, -62372588, 66507568, 66082368, 64952792, 65838092, 60432876, 40850508, 16411607, 2739652, }, +10966125, 24683178, 28093918, 14313515, -10498511, -41405096, -70848168, -72985456, -23443542, 56086368, +101519608, 72735808, -771484, -54526220, -54574000, -17211008, 19396610, 26918708, 2150705, -31897648, +-43881680, -23245436, 11316165, 35585416, 43225088, 41516764, 35880156, 27685896, 19294604, 11999602, +3074123, -9389335, -22429392, -32571958, -40118752, -46413564, -50786916, -52326660, -51607792, -49622980, +-47427176, -46620796, -47962436, -50420232, -53144852, -56469692, -59701120, -60630980, -58479200, -54543936, +-49472656, -43031276, -36491116, -31762894, -28569048, -25620554, -23313620, -22183506, -20781200, -18009872, +-14838575, -11260331, -5197448, 3537979, 12585865, 21601002, 32216012, 43009804, 50777252, 56388088, +62372588, 66507568, 66082368, 64952792, 65838092, 60432876, 40850508, 16411607, 2739652, }, }, { { -4294968, --7507066, -4181688, -2804077, -789200, 14018236, 31004296, 11244224, -57692684, -116162224, -83996672, -33115272, 126618320, 102010304, -9821516, -90741920, -72991896, -1560147, 42258720, 39131984, 29724394, -41158136, 53827216, 40559524, 6607271, -24050206, -43329776, -61671972, -85042496, -106395464, -117824376, --118264608, -109136192, -92132952, -71879496, -53593676, -38022272, -23476292, -10812580, -1838246, 4233227, -8389145, 9313100, 6932614, 4554276, 4452271, 5563057, 7459822, 11628087, 17483738, 22373558, -26091390, 30193084, 33485712, 33631204, 31635656, 29486562, 26051662, 20342038, 14958834, 11668352, -8486855, 4993437, 4293357, 6699612, 8923331, 11404212, 17710834, 26282516, 32901596, 39942660, -51406464, 62460636, 67791760, 73733848, 84428320, 84616760, 59421408, 23559506, 3558917, }, +-7507066, -4181688, -2804077, -789200, 14018236, 31004296, 11244224, -57692684, -116162224, -83996672, +33115272, 126618320, 102010304, -9821516, -90741920, -72991896, -1560147, 42258720, 39131984, 29724394, +41158136, 53827216, 40559524, 6607271, -24050206, -43329776, -61671972, -85042496, -106395464, -117824376, +-118264608, -109136192, -92132952, -71879496, -53593676, -38022272, -23476292, -10812580, -1838246, 4233227, +8389145, 9313100, 6932614, 4554276, 4452271, 5563057, 7459822, 11628087, 17483738, 22373558, +26091390, 30193084, 33485712, 33631204, 31635656, 29486562, 26051662, 20342038, 14958834, 11668352, +8486855, 4993437, 4293357, 6699612, 8923331, 11404212, 17710834, 26282516, 32901596, 39942660, +51406464, 62460636, 67791760, 73733848, 84428320, 84616760, 59421408, 23559506, 3558917, }, { -4294968, --7507066, -4181688, -2804077, -789200, 14018236, 31004296, 11244224, -57692684, -116162224, -83996672, -33115272, 126618320, 102010304, -9821516, -90741920, -72991896, -1560147, 42258720, 39131984, 29724394, -41158136, 53827216, 40559524, 6607271, -24050206, -43329776, -61671972, -85042496, -106395464, -117824376, --118264608, -109136192, -92132952, -71879496, -53593676, -38022272, -23476292, -10812580, -1838246, 4233227, -8389145, 9313100, 6932614, 4554276, 4452271, 5563057, 7459822, 11628087, 17483738, 22373558, -26091390, 30193084, 33485712, 33631204, 31635656, 29486562, 26051662, 20342038, 14958834, 11668352, -8486855, 4993437, 4293357, 6699612, 8923331, 11404212, 17710834, 26282516, 32901596, 39942660, -51406464, 62460636, 67791760, 73733848, 84428320, 84616760, 59421408, 23559506, 3558917, }, +-7507066, -4181688, -2804077, -789200, 14018236, 31004296, 11244224, -57692684, -116162224, -83996672, +33115272, 126618320, 102010304, -9821516, -90741920, -72991896, -1560147, 42258720, 39131984, 29724394, +41158136, 53827216, 40559524, 6607271, -24050206, -43329776, -61671972, -85042496, -106395464, -117824376, +-118264608, -109136192, -92132952, -71879496, -53593676, -38022272, -23476292, -10812580, -1838246, 4233227, +8389145, 9313100, 6932614, 4554276, 4452271, 5563057, 7459822, 11628087, 17483738, 22373558, +26091390, 30193084, 33485712, 33631204, 31635656, 29486562, 26051662, 20342038, 14958834, 11668352, +8486855, 4993437, 4293357, 6699612, 8923331, 11404212, 17710834, 26282516, 32901596, 39942660, +51406464, 62460636, 67791760, 73733848, 84428320, 84616760, 59421408, 23559506, 3558917, }, }, { { 130997, -32749, -657130, -1952063, -4070555, -5195300, -1305133, 5801964, 3170223, -17411798, -35338992, --13445932, 48125644, 87900264, 46130632, -50145892, -102243840, -54114976, 39600136, 82422568, 47283296, --11302743, -37545532, -27742804, -6405407, 12627204, 27227946, 32908576, 25679610, 9967545, -6510634, --20486458, -31356482, -38201588, -42526620, -48736068, -58842664, -70268352, -79784384, -85971288, -87773024, --84463752, -77336792, -68763504, -60016800, -51819316, -45513232, -41750840, -39570608, -38140384, -37666864, --37796248, -37277096, -35762044, -33891588, -31652298, -28792924, -26312580, -25286084, -25139518, -25078850, --25694104, -27195196, -28119688, -27651536, -26830124, -25931938, -23602992, -19831474, -16272020, -12678207, --7124814, -360777, 5003637, 10241886, 19488950, 31398358, 37372120, 30353608, 11592654, }, +32749, -657130, -1952063, -4070555, -5195300, -1305133, 5801964, 3170223, -17411798, -35338992, +-13445932, 48125644, 87900264, 46130632, -50145892, -102243840, -54114976, 39600136, 82422568, 47283296, +-11302743, -37545532, -27742804, -6405407, 12627204, 27227946, 32908576, 25679610, 9967545, -6510634, +-20486458, -31356482, -38201588, -42526620, -48736068, -58842664, -70268352, -79784384, -85971288, -87773024, +-84463752, -77336792, -68763504, -60016800, -51819316, -45513232, -41750840, -39570608, -38140384, -37666864, +-37796248, -37277096, -35762044, -33891588, -31652298, -28792924, -26312580, -25286084, -25139518, -25078850, +-25694104, -27195196, -28119688, -27651536, -26830124, -25931938, -23602992, -19831474, -16272020, -12678207, +-7124814, -360777, 5003637, 10241886, 19488950, 31398358, 37372120, 30353608, 11592654, }, { 130997, -32749, -657130, -1952063, -4070555, -5195300, -1305133, 5801964, 3170223, -17411798, -35338992, --13445932, 48125644, 87900264, 46130632, -50145892, -102243840, -54114976, 39600136, 82422568, 47283296, --11302743, -37545532, -27742804, -6405407, 12627204, 27227946, 32908576, 25679610, 9967545, -6510634, --20486458, -31356482, -38201588, -42526620, -48736068, -58842664, -70268352, -79784384, -85971288, -87773024, --84463752, -77336792, -68763504, -60016800, -51819316, -45513232, -41750840, -39570608, -38140384, -37666864, --37796248, -37277096, -35762044, -33891588, -31652298, -28792924, -26312580, -25286084, -25139518, -25078850, --25694104, -27195196, -28119688, -27651536, -26830124, -25931938, -23602992, -19831474, -16272020, -12678207, --7124814, -360777, 5003637, 10241886, 19488950, 31398358, 37372120, 30353608, 11592654, }, +32749, -657130, -1952063, -4070555, -5195300, -1305133, 5801964, 3170223, -17411798, -35338992, +-13445932, 48125644, 87900264, 46130632, -50145892, -102243840, -54114976, 39600136, 82422568, 47283296, +-11302743, -37545532, -27742804, -6405407, 12627204, 27227946, 32908576, 25679610, 9967545, -6510634, +-20486458, -31356482, -38201588, -42526620, -48736068, -58842664, -70268352, -79784384, -85971288, -87773024, +-84463752, -77336792, -68763504, -60016800, -51819316, -45513232, -41750840, -39570608, -38140384, -37666864, +-37796248, -37277096, -35762044, -33891588, -31652298, -28792924, -26312580, -25286084, -25139518, -25078850, +-25694104, -27195196, -28119688, -27651536, -26830124, -25931938, -23602992, -19831474, -16272020, -12678207, +-7124814, -360777, 5003637, 10241886, 19488950, 31398358, 37372120, 30353608, 11592654, }, }, }; -const Word32 CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[9][BINAURAL_CHANNELS][240] ={ +const Word32 CRendBin_HOA2_HRIR_coeff_re_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240] ={ { { 512962432, -341278624, 89471152, -133512280, -273079936, -336122528, -349119104, -324554560, -262216880, -165630048, -48346836, -71613208, 178208400, 260153680, 312068576, 334596736, 332439584, 311149984, 274952000, 226719520, 169514304, -107816568, 46557444, -11423539, -66238596, -118599080, -167255696, -209594400, -244145264, -271385568, -292355200, --307673728, -318017088, -324545984, -328378176, -330089184, -330015616, -328703520, -326799776, -324659264, -322200928, --319094048, -315034784, -309916256, -303793760, -296752704, -288858016, -280184864, -270791232, -260669616, -249816240, --238352432, -226495632, -214416576, -202232832, -190123168, -178318992, -166931424, -155884768, -145072192, -134496368, --124182000, -114053928, -104028400, -94160712, -84567368, -75240848, -66096864, -57156352, -48493400, -40037148, --31628140, -23242216, -14948097, -6672769, 1749125, 10307385, 18875308, 27525908, 36488968, 45755360, -55016920, 64084132, 73094440, 82186344, 91185376, 99786584, 107938432, 115887344, 123832496, 131617128, -138845552, 145306800, 151179632, 156724960, 161890736, 166396160, 170170896, 173537616, 176927424, 180539488, -184295440, 188059968, 191885712, 196051296, 200819248, 206168096, 211840672, 217638880, 223553584, 229627200, -235830208, 242074016, 248225488, 254111744, 259614672, 264742864, 269561824, 274113952, 278446496, 282621184, -286661696, 290560448, 294354496, 298083616, 301694080, 305092992, 308258944, 311198304, 313860640, 316228256, -318407392, 320516768, 322582656, 324619520, 326685952, 328788864, 330859584, 332886272, 334947328, 337102304, -339371680, 341797792, 344388736, 347055904, 349720928, 352393472, 355058496, 357624224, 360061600, 362436736, -364735072, 366851936, 368770720, 370553664, 372156768, 373476928, 374532416, 375398944, 376060352, 376523136, -376932224, 377384832, 377836864, 378318976, 378977184, 379788384, 380547520, 381205184, 381878976, 382534496, -383036448, 383457888, 383944320, 384410304, 384740480, 385069056, 385508224, 385921056, 386296352, 386908384, -387834464, 388840576, 389929344, 391359552, 393029248, 394594208, 396151680, 397985088, 399829248, 401337312, -402847520, 404673440, 406299616, 407403968, 408692448, 410470560, 411757984, 412218624, 413173184, 414995840, -415814048, 414951296, 414971136, 417450432, 419495904, 417959904, 414614144, 413365376, 414550784, 415673920, -415281472, 412165472, 403878336, 391482496, 383384352, 387701344, 400877760, 409806464, 406541728, 396224704, -388697760, 386601280, 385393856, 383336032, 387025408, 404428608, 433276288, 459798784, 471420992, 468912192, -462834272, 459868576, 458020160, 454963200, 453582368, 455604224, 456054656, 450368128, 443227744, }, +341278624, 89471152, -133512280, -273079936, -336122528, -349119104, -324554560, -262216880, -165630048, -48346836, +71613208, 178208400, 260153680, 312068576, 334596736, 332439584, 311149984, 274952000, 226719520, 169514304, +107816568, 46557444, -11423539, -66238596, -118599080, -167255696, -209594400, -244145264, -271385568, -292355200, +-307673728, -318017088, -324545984, -328378176, -330089184, -330015616, -328703520, -326799776, -324659264, -322200928, +-319094048, -315034784, -309916256, -303793760, -296752704, -288858016, -280184864, -270791232, -260669616, -249816240, +-238352432, -226495632, -214416576, -202232832, -190123168, -178318992, -166931424, -155884768, -145072192, -134496368, +-124182000, -114053928, -104028400, -94160712, -84567368, -75240848, -66096864, -57156352, -48493400, -40037148, +-31628140, -23242216, -14948097, -6672769, 1749125, 10307385, 18875308, 27525908, 36488968, 45755360, +55016920, 64084132, 73094440, 82186344, 91185376, 99786584, 107938432, 115887344, 123832496, 131617128, +138845552, 145306800, 151179632, 156724960, 161890736, 166396160, 170170896, 173537616, 176927424, 180539488, +184295440, 188059968, 191885712, 196051296, 200819248, 206168096, 211840672, 217638880, 223553584, 229627200, +235830208, 242074016, 248225488, 254111744, 259614672, 264742864, 269561824, 274113952, 278446496, 282621184, +286661696, 290560448, 294354496, 298083616, 301694080, 305092992, 308258944, 311198304, 313860640, 316228256, +318407392, 320516768, 322582656, 324619520, 326685952, 328788864, 330859584, 332886272, 334947328, 337102304, +339371680, 341797792, 344388736, 347055904, 349720928, 352393472, 355058496, 357624224, 360061600, 362436736, +364735072, 366851936, 368770720, 370553664, 372156768, 373476928, 374532416, 375398944, 376060352, 376523136, +376932224, 377384832, 377836864, 378318976, 378977184, 379788384, 380547520, 381205184, 381878976, 382534496, +383036448, 383457888, 383944320, 384410304, 384740480, 385069056, 385508224, 385921056, 386296352, 386908384, +387834464, 388840576, 389929344, 391359552, 393029248, 394594208, 396151680, 397985088, 399829248, 401337312, +402847520, 404673440, 406299616, 407403968, 408692448, 410470560, 411757984, 412218624, 413173184, 414995840, +415814048, 414951296, 414971136, 417450432, 419495904, 417959904, 414614144, 413365376, 414550784, 415673920, +415281472, 412165472, 403878336, 391482496, 383384352, 387701344, 400877760, 409806464, 406541728, 396224704, +388697760, 386601280, 385393856, 383336032, 387025408, 404428608, 433276288, 459798784, 471420992, 468912192, +462834272, 459868576, 458020160, 454963200, 453582368, 455604224, 456054656, 450368128, 443227744, }, { 512962432, -341278624, 89471152, -133512280, -273079936, -336122528, -349119104, -324554560, -262216880, -165630048, -48346836, -71613208, 178208400, 260153680, 312068576, 334596736, 332439584, 311149984, 274952000, 226719520, 169514304, -107816568, 46557444, -11423539, -66238596, -118599080, -167255696, -209594400, -244145264, -271385568, -292355200, --307673728, -318017088, -324545984, -328378176, -330089184, -330015616, -328703520, -326799776, -324659264, -322200928, --319094048, -315034784, -309916256, -303793760, -296752704, -288858016, -280184864, -270791232, -260669616, -249816240, --238352432, -226495632, -214416576, -202232832, -190123168, -178318992, -166931424, -155884768, -145072192, -134496368, --124182000, -114053928, -104028400, -94160712, -84567368, -75240848, -66096864, -57156352, -48493400, -40037148, --31628140, -23242216, -14948097, -6672769, 1749125, 10307385, 18875308, 27525908, 36488968, 45755360, -55016920, 64084132, 73094440, 82186344, 91185376, 99786584, 107938432, 115887344, 123832496, 131617128, -138845552, 145306800, 151179632, 156724960, 161890736, 166396160, 170170896, 173537616, 176927424, 180539488, -184295440, 188059968, 191885712, 196051296, 200819248, 206168096, 211840672, 217638880, 223553584, 229627200, -235830208, 242074016, 248225488, 254111744, 259614672, 264742864, 269561824, 274113952, 278446496, 282621184, -286661696, 290560448, 294354496, 298083616, 301694080, 305092992, 308258944, 311198304, 313860640, 316228256, -318407392, 320516768, 322582656, 324619520, 326685952, 328788864, 330859584, 332886272, 334947328, 337102304, -339371680, 341797792, 344388736, 347055904, 349720928, 352393472, 355058496, 357624224, 360061600, 362436736, -364735072, 366851936, 368770720, 370553664, 372156768, 373476928, 374532416, 375398944, 376060352, 376523136, -376932224, 377384832, 377836864, 378318976, 378977184, 379788384, 380547520, 381205184, 381878976, 382534496, -383036448, 383457888, 383944320, 384410304, 384740480, 385069056, 385508224, 385921056, 386296352, 386908384, -387834464, 388840576, 389929344, 391359552, 393029248, 394594208, 396151680, 397985088, 399829248, 401337312, -402847520, 404673440, 406299616, 407403968, 408692448, 410470560, 411757984, 412218624, 413173184, 414995840, -415814048, 414951296, 414971136, 417450432, 419495904, 417959904, 414614144, 413365376, 414550784, 415673920, -415281472, 412165472, 403878336, 391482496, 383384352, 387701344, 400877760, 409806464, 406541728, 396224704, -388697760, 386601280, 385393856, 383336032, 387025408, 404428608, 433276288, 459798784, 471420992, 468912192, -462834272, 459868576, 458020160, 454963200, 453582368, 455604224, 456054656, 450368128, 443227744, }, +341278624, 89471152, -133512280, -273079936, -336122528, -349119104, -324554560, -262216880, -165630048, -48346836, +71613208, 178208400, 260153680, 312068576, 334596736, 332439584, 311149984, 274952000, 226719520, 169514304, +107816568, 46557444, -11423539, -66238596, -118599080, -167255696, -209594400, -244145264, -271385568, -292355200, +-307673728, -318017088, -324545984, -328378176, -330089184, -330015616, -328703520, -326799776, -324659264, -322200928, +-319094048, -315034784, -309916256, -303793760, -296752704, -288858016, -280184864, -270791232, -260669616, -249816240, +-238352432, -226495632, -214416576, -202232832, -190123168, -178318992, -166931424, -155884768, -145072192, -134496368, +-124182000, -114053928, -104028400, -94160712, -84567368, -75240848, -66096864, -57156352, -48493400, -40037148, +-31628140, -23242216, -14948097, -6672769, 1749125, 10307385, 18875308, 27525908, 36488968, 45755360, +55016920, 64084132, 73094440, 82186344, 91185376, 99786584, 107938432, 115887344, 123832496, 131617128, +138845552, 145306800, 151179632, 156724960, 161890736, 166396160, 170170896, 173537616, 176927424, 180539488, +184295440, 188059968, 191885712, 196051296, 200819248, 206168096, 211840672, 217638880, 223553584, 229627200, +235830208, 242074016, 248225488, 254111744, 259614672, 264742864, 269561824, 274113952, 278446496, 282621184, +286661696, 290560448, 294354496, 298083616, 301694080, 305092992, 308258944, 311198304, 313860640, 316228256, +318407392, 320516768, 322582656, 324619520, 326685952, 328788864, 330859584, 332886272, 334947328, 337102304, +339371680, 341797792, 344388736, 347055904, 349720928, 352393472, 355058496, 357624224, 360061600, 362436736, +364735072, 366851936, 368770720, 370553664, 372156768, 373476928, 374532416, 375398944, 376060352, 376523136, +376932224, 377384832, 377836864, 378318976, 378977184, 379788384, 380547520, 381205184, 381878976, 382534496, +383036448, 383457888, 383944320, 384410304, 384740480, 385069056, 385508224, 385921056, 386296352, 386908384, +387834464, 388840576, 389929344, 391359552, 393029248, 394594208, 396151680, 397985088, 399829248, 401337312, +402847520, 404673440, 406299616, 407403968, 408692448, 410470560, 411757984, 412218624, 413173184, 414995840, +415814048, 414951296, 414971136, 417450432, 419495904, 417959904, 414614144, 413365376, 414550784, 415673920, +415281472, 412165472, 403878336, 391482496, 383384352, 387701344, 400877760, 409806464, 406541728, 396224704, +388697760, 386601280, 385393856, 383336032, 387025408, 404428608, 433276288, 459798784, 471420992, 468912192, +462834272, 459868576, 458020160, 454963200, 453582368, 455604224, 456054656, 450368128, 443227744, }, }, { { 52245056, -222357440, 401378656, 405117408, 177587776, -175398416, -484049792, -639197952, -636222080, -529849184, -372046176, --190520992, -1207423, 180006368, 338932512, 467017568, 559677696, 613684800, 628635008, 609800512, 567096768, -509938784, 443115008, 367884352, 286288032, 202992496, 122816200, 47916804, -21818970, -86701968, -146555552, --201343232, -251326992, -296677536, -337539328, -374389088, -407893568, -438432960, -465938464, -490061664, -510374176, --526579648, -538713472, -547120320, -552200192, -554222592, -553347456, -549751488, -543766464, -535939456, -526901760, --517067360, -506422816, -494632608, -481365440, -466567136, -450447584, -433289184, -415364128, -397026784, -378695328, --360628000, -342847360, -325416256, -308596096, -292586048, -277312064, -262696848, -248960464, -236373520, -224892000, --214347328, -204829680, -196494224, -189083248, -182072784, -175281904, -168897440, -162823824, -156483920, -149478288, --142028128, -134456640, -126554432, -117843168, -108263240, -98220000, -88029112, -77636368, -66831840, -55431384, --43236900, -30057792, -15797427, -396748, 16277389, 34321620, 53564684, 73533064, 93622768, 113299624, -132184064, 149990464, 166375216, 180912608, 193301984, 203518096, 211669408, 217803168, 221992368, 224550016, -226047344, 227133440, 228310256, 229737808, 231250704, 232713680, 234367776, 236709600, 240074720, 244437856, -249490896, 254743104, 259698416, 264169472, 268354384, 272495264, 276597504, 280563904, 284394496, 288109632, -291644384, 294928960, 297945088, 300674560, 303140928, 305479552, 307833728, 310224960, 312618848, 315017056, -317417952, 319834400, 322408160, 325350208, 328767936, 332695136, 337183936, 342184864, 347478432, 352943776, -358699552, 364821504, 371184480, 377744512, 384615936, 391724640, 398746368, 405488928, 411961440, 418068352, -423652352, 428781088, 433596800, 438024384, 441962336, 445481536, 448564768, 451039200, 453010080, 454851008, -456647904, 458242400, 459807392, 461649376, 463540256, 464983360, 465905152, 466422176, 466403936, 465932000, -465512192, 465289920, 464921632, 464530784, 464633856, 465020416, 465081600, 465055840, 465463328, 465917504, -466071584, 466539200, 467415936, 467811584, 468096672, 469604192, 471310368, 471249728, 471386624, 474611072, -477533792, 475729376, 474826336, 482493408, 490060064, 481175936, 461027168, 453999520, 466616000, 478818528, -481039552, 489577952, 509314944, 512657504, 480248736, 437299072, 422137312, 437084864, 454490208, 455429728, -441966080, 425956064, 420154624, 421830208, 396297696, 307272160, 179973088, 99357624, 118199648, 194585104, -249248224, 258870032, 258446432, 271055936, 276278080, 246866128, 186275952, 122813520, 84121232, }, +222357440, 401378656, 405117408, 177587776, -175398416, -484049792, -639197952, -636222080, -529849184, -372046176, +-190520992, -1207423, 180006368, 338932512, 467017568, 559677696, 613684800, 628635008, 609800512, 567096768, +509938784, 443115008, 367884352, 286288032, 202992496, 122816200, 47916804, -21818970, -86701968, -146555552, +-201343232, -251326992, -296677536, -337539328, -374389088, -407893568, -438432960, -465938464, -490061664, -510374176, +-526579648, -538713472, -547120320, -552200192, -554222592, -553347456, -549751488, -543766464, -535939456, -526901760, +-517067360, -506422816, -494632608, -481365440, -466567136, -450447584, -433289184, -415364128, -397026784, -378695328, +-360628000, -342847360, -325416256, -308596096, -292586048, -277312064, -262696848, -248960464, -236373520, -224892000, +-214347328, -204829680, -196494224, -189083248, -182072784, -175281904, -168897440, -162823824, -156483920, -149478288, +-142028128, -134456640, -126554432, -117843168, -108263240, -98220000, -88029112, -77636368, -66831840, -55431384, +-43236900, -30057792, -15797427, -396748, 16277389, 34321620, 53564684, 73533064, 93622768, 113299624, +132184064, 149990464, 166375216, 180912608, 193301984, 203518096, 211669408, 217803168, 221992368, 224550016, +226047344, 227133440, 228310256, 229737808, 231250704, 232713680, 234367776, 236709600, 240074720, 244437856, +249490896, 254743104, 259698416, 264169472, 268354384, 272495264, 276597504, 280563904, 284394496, 288109632, +291644384, 294928960, 297945088, 300674560, 303140928, 305479552, 307833728, 310224960, 312618848, 315017056, +317417952, 319834400, 322408160, 325350208, 328767936, 332695136, 337183936, 342184864, 347478432, 352943776, +358699552, 364821504, 371184480, 377744512, 384615936, 391724640, 398746368, 405488928, 411961440, 418068352, +423652352, 428781088, 433596800, 438024384, 441962336, 445481536, 448564768, 451039200, 453010080, 454851008, +456647904, 458242400, 459807392, 461649376, 463540256, 464983360, 465905152, 466422176, 466403936, 465932000, +465512192, 465289920, 464921632, 464530784, 464633856, 465020416, 465081600, 465055840, 465463328, 465917504, +466071584, 466539200, 467415936, 467811584, 468096672, 469604192, 471310368, 471249728, 471386624, 474611072, +477533792, 475729376, 474826336, 482493408, 490060064, 481175936, 461027168, 453999520, 466616000, 478818528, +481039552, 489577952, 509314944, 512657504, 480248736, 437299072, 422137312, 437084864, 454490208, 455429728, +441966080, 425956064, 420154624, 421830208, 396297696, 307272160, 179973088, 99357624, 118199648, 194585104, +249248224, 258870032, 258446432, 271055936, 276278080, 246866128, 186275952, 122813520, 84121232, }, { -52245056, --222357440, -401378656, -405117408, -177587776, 175398416, 484049792, 639197952, 636222080, 529849184, 372046176, -190520992, 1207423, -180006368, -338932512, -467017568, -559677696, -613684800, -628635008, -609800512, -567096768, --509938784, -443115008, -367884352, -286288032, -202992496, -122816200, -47916804, 21818970, 86701968, 146555552, -201343232, 251326992, 296677536, 337539328, 374389088, 407893568, 438432960, 465938464, 490061664, 510374176, -526579648, 538713472, 547120320, 552200192, 554222592, 553347456, 549751488, 543766464, 535939456, 526901760, -517067360, 506422816, 494632608, 481365440, 466567136, 450447584, 433289184, 415364128, 397026784, 378695328, -360628000, 342847360, 325416256, 308596096, 292586048, 277312064, 262696848, 248960464, 236373520, 224892000, -214347328, 204829680, 196494224, 189083248, 182072784, 175281904, 168897440, 162823824, 156483920, 149478288, -142028128, 134456640, 126554432, 117843168, 108263240, 98220000, 88029112, 77636368, 66831840, 55431384, -43236900, 30057792, 15797427, 396748, -16277389, -34321620, -53564684, -73533064, -93622768, -113299624, --132184064, -149990464, -166375216, -180912608, -193301984, -203518096, -211669408, -217803168, -221992368, -224550016, --226047344, -227133440, -228310256, -229737808, -231250704, -232713680, -234367776, -236709600, -240074720, -244437856, --249490896, -254743104, -259698416, -264169472, -268354384, -272495264, -276597504, -280563904, -284394496, -288109632, --291644384, -294928960, -297945088, -300674560, -303140928, -305479552, -307833728, -310224960, -312618848, -315017056, --317417952, -319834400, -322408160, -325350208, -328767936, -332695136, -337183936, -342184864, -347478432, -352943776, --358699552, -364821504, -371184480, -377744512, -384615936, -391724640, -398746368, -405488928, -411961440, -418068352, --423652352, -428781088, -433596800, -438024384, -441962336, -445481536, -448564768, -451039200, -453010080, -454851008, --456647904, -458242400, -459807392, -461649376, -463540256, -464983360, -465905152, -466422176, -466403936, -465932000, --465512192, -465289920, -464921632, -464530784, -464633856, -465020416, -465081600, -465055840, -465463328, -465917504, --466071584, -466539200, -467415936, -467811584, -468096672, -469604192, -471310368, -471249728, -471386624, -474611072, --477533792, -475729376, -474826336, -482493408, -490060064, -481175936, -461027168, -453999520, -466616000, -478818528, --481039552, -489577952, -509314944, -512657504, -480248736, -437299072, -422137312, -437084864, -454490208, -455429728, --441966080, -425956064, -420154624, -421830208, -396297696, -307272160, -179973088, -99357624, -118199648, -194585104, --249248224, -258870032, -258446432, -271055936, -276278080, -246866128, -186275952, -122813520, -84121232, }, +-222357440, -401378656, -405117408, -177587776, 175398416, 484049792, 639197952, 636222080, 529849184, 372046176, +190520992, 1207423, -180006368, -338932512, -467017568, -559677696, -613684800, -628635008, -609800512, -567096768, +-509938784, -443115008, -367884352, -286288032, -202992496, -122816200, -47916804, 21818970, 86701968, 146555552, +201343232, 251326992, 296677536, 337539328, 374389088, 407893568, 438432960, 465938464, 490061664, 510374176, +526579648, 538713472, 547120320, 552200192, 554222592, 553347456, 549751488, 543766464, 535939456, 526901760, +517067360, 506422816, 494632608, 481365440, 466567136, 450447584, 433289184, 415364128, 397026784, 378695328, +360628000, 342847360, 325416256, 308596096, 292586048, 277312064, 262696848, 248960464, 236373520, 224892000, +214347328, 204829680, 196494224, 189083248, 182072784, 175281904, 168897440, 162823824, 156483920, 149478288, +142028128, 134456640, 126554432, 117843168, 108263240, 98220000, 88029112, 77636368, 66831840, 55431384, +43236900, 30057792, 15797427, 396748, -16277389, -34321620, -53564684, -73533064, -93622768, -113299624, +-132184064, -149990464, -166375216, -180912608, -193301984, -203518096, -211669408, -217803168, -221992368, -224550016, +-226047344, -227133440, -228310256, -229737808, -231250704, -232713680, -234367776, -236709600, -240074720, -244437856, +-249490896, -254743104, -259698416, -264169472, -268354384, -272495264, -276597504, -280563904, -284394496, -288109632, +-291644384, -294928960, -297945088, -300674560, -303140928, -305479552, -307833728, -310224960, -312618848, -315017056, +-317417952, -319834400, -322408160, -325350208, -328767936, -332695136, -337183936, -342184864, -347478432, -352943776, +-358699552, -364821504, -371184480, -377744512, -384615936, -391724640, -398746368, -405488928, -411961440, -418068352, +-423652352, -428781088, -433596800, -438024384, -441962336, -445481536, -448564768, -451039200, -453010080, -454851008, +-456647904, -458242400, -459807392, -461649376, -463540256, -464983360, -465905152, -466422176, -466403936, -465932000, +-465512192, -465289920, -464921632, -464530784, -464633856, -465020416, -465081600, -465055840, -465463328, -465917504, +-466071584, -466539200, -467415936, -467811584, -468096672, -469604192, -471310368, -471249728, -471386624, -474611072, +-477533792, -475729376, -474826336, -482493408, -490060064, -481175936, -461027168, -453999520, -466616000, -478818528, +-481039552, -489577952, -509314944, -512657504, -480248736, -437299072, -422137312, -437084864, -454490208, -455429728, +-441966080, -425956064, -420154624, -421830208, -396297696, -307272160, -179973088, -99357624, -118199648, -194585104, +-249248224, -258870032, -258446432, -271055936, -276278080, -246866128, -186275952, -122813520, -84121232, }, }, { { 62659816, -38722352, -11076184, -60224032, -64550676, -17122960, 36206036, 49209052, 21104396, -18492518, -45760192, --51160576, -33653752, -3940096, 18916110, 27378806, 33587716, 49711564, 70036424, 80460840, 76390288, -62512712, 42136852, 16138340, -11113765, -32715302, -45996416, -54346368, -62400508, -71465568, -79259328, --82685640, -80657336, -74535400, -66313220, -57463980, -49786188, -45816564, -47165720, -53153980, -61890480, --72054520, -83056080, -94266480, -104957192, -114767432, -123768608, -132179768, -140125456, -147380736, -153205776, --156636928, -157067488, -154404608, -148668688, -139690048, -127354904, -111901080, -93701688, -72853920, -49290656, --23210540, 4962298, 34977140, 66672388, 99487552, 132486320, 164877360, 196077600, 225302704, 251551408, -274001184, 292006240, 304865920, 312142112, 314117280, 311378688, 304061664, 292163008, 276567968, 258962368, -240438176, 220876752, 200222256, 179760480, 161236832, 144897168, 129446560, 114223584, 100441032, 89645632, -81753088, 75438952, 69926896, 65512208, 62658740, 61415348, 61547956, 62589484, 63835564, 64725156, -65174520, 65392488, 65549792, 65541736, 64729452, 62083216, 57110180, 50492172, 43350180, 36120676, -28581934, 20549272, 12043625, 3192771, -5557151, -13465796, -20022064, -25061672, -28369332, -29724932, --29306172, -27434640, -24060406, -19061602, -12779675, -5724655, 1852742, 9672266, 17251274, 24357296, -31011812, 36879272, 41431940, 44782552, 47552804, 50098648, 52689048, 55994564, 60378112, 65176128, -69586520, 73636144, 77542416, 81007376, 83853328, 86369104, 88510688, 89804544, 90308128, 90538984, -90499256, 89949504, 89303648, 89043264, 88824752, 88268024, 87730072, 87346752, 86524264, 85144504, -83846888, 82624968, 80781352, 78412680, 76166416, 73822432, 70982928, 68426880, 66885524, 65678104, -64276868, 63483376, 63561756, 63418412, 62732292, 62209916, 61218852, 58342300, 54159000, 49993956, -44940392, 37859600, 30307436, 23600846, 16100759, 7088307, -1053878, -7720741, -15330349, -23497230, --29404956, -34690452, -42556148, -49550500, -52049636, -56297896, -66867272, -73780024, -70877696, -73289320, --89980104, -98395016, -84137872, -82304992, -124999120, -167590160, -137833552, -51009180, 2131378, -13793287, --42914776, -47504484, -63734632, -112846504, -139538656, -94187024, -16139950, 21853330, 10275172, -6083285, --2624762, 3426310, -12224551, -53722524, -98392872, -104956656, -52281028, 21005074, 46271292, 6119792, --45652280, -58137216, -42524472, -37187436, -46717968, -46745352, -29186988, -10275709, -1818919, }, +38722352, -11076184, -60224032, -64550676, -17122960, 36206036, 49209052, 21104396, -18492518, -45760192, +-51160576, -33653752, -3940096, 18916110, 27378806, 33587716, 49711564, 70036424, 80460840, 76390288, +62512712, 42136852, 16138340, -11113765, -32715302, -45996416, -54346368, -62400508, -71465568, -79259328, +-82685640, -80657336, -74535400, -66313220, -57463980, -49786188, -45816564, -47165720, -53153980, -61890480, +-72054520, -83056080, -94266480, -104957192, -114767432, -123768608, -132179768, -140125456, -147380736, -153205776, +-156636928, -157067488, -154404608, -148668688, -139690048, -127354904, -111901080, -93701688, -72853920, -49290656, +-23210540, 4962298, 34977140, 66672388, 99487552, 132486320, 164877360, 196077600, 225302704, 251551408, +274001184, 292006240, 304865920, 312142112, 314117280, 311378688, 304061664, 292163008, 276567968, 258962368, +240438176, 220876752, 200222256, 179760480, 161236832, 144897168, 129446560, 114223584, 100441032, 89645632, +81753088, 75438952, 69926896, 65512208, 62658740, 61415348, 61547956, 62589484, 63835564, 64725156, +65174520, 65392488, 65549792, 65541736, 64729452, 62083216, 57110180, 50492172, 43350180, 36120676, +28581934, 20549272, 12043625, 3192771, -5557151, -13465796, -20022064, -25061672, -28369332, -29724932, +-29306172, -27434640, -24060406, -19061602, -12779675, -5724655, 1852742, 9672266, 17251274, 24357296, +31011812, 36879272, 41431940, 44782552, 47552804, 50098648, 52689048, 55994564, 60378112, 65176128, +69586520, 73636144, 77542416, 81007376, 83853328, 86369104, 88510688, 89804544, 90308128, 90538984, +90499256, 89949504, 89303648, 89043264, 88824752, 88268024, 87730072, 87346752, 86524264, 85144504, +83846888, 82624968, 80781352, 78412680, 76166416, 73822432, 70982928, 68426880, 66885524, 65678104, +64276868, 63483376, 63561756, 63418412, 62732292, 62209916, 61218852, 58342300, 54159000, 49993956, +44940392, 37859600, 30307436, 23600846, 16100759, 7088307, -1053878, -7720741, -15330349, -23497230, +-29404956, -34690452, -42556148, -49550500, -52049636, -56297896, -66867272, -73780024, -70877696, -73289320, +-89980104, -98395016, -84137872, -82304992, -124999120, -167590160, -137833552, -51009180, 2131378, -13793287, +-42914776, -47504484, -63734632, -112846504, -139538656, -94187024, -16139950, 21853330, 10275172, -6083285, +-2624762, 3426310, -12224551, -53722524, -98392872, -104956656, -52281028, 21005074, 46271292, 6119792, +-45652280, -58137216, -42524472, -37187436, -46717968, -46745352, -29186988, -10275709, -1818919, }, { 62659816, -38722352, -11076184, -60224032, -64550676, -17122960, 36206036, 49209052, 21104396, -18492518, -45760192, --51160576, -33653752, -3940096, 18916110, 27378806, 33587716, 49711564, 70036424, 80460840, 76390288, -62512712, 42136852, 16138340, -11113765, -32715302, -45996416, -54346368, -62400508, -71465568, -79259328, --82685640, -80657336, -74535400, -66313220, -57463980, -49786188, -45816564, -47165720, -53153980, -61890480, --72054520, -83056080, -94266480, -104957192, -114767432, -123768608, -132179768, -140125456, -147380736, -153205776, --156636928, -157067488, -154404608, -148668688, -139690048, -127354904, -111901080, -93701688, -72853920, -49290656, --23210540, 4962298, 34977140, 66672388, 99487552, 132486320, 164877360, 196077600, 225302704, 251551408, -274001184, 292006240, 304865920, 312142112, 314117280, 311378688, 304061664, 292163008, 276567968, 258962368, -240438176, 220876752, 200222256, 179760480, 161236832, 144897168, 129446560, 114223584, 100441032, 89645632, -81753088, 75438952, 69926896, 65512208, 62658740, 61415348, 61547956, 62589484, 63835564, 64725156, -65174520, 65392488, 65549792, 65541736, 64729452, 62083216, 57110180, 50492172, 43350180, 36120676, -28581934, 20549272, 12043625, 3192771, -5557151, -13465796, -20022064, -25061672, -28369332, -29724932, --29306172, -27434640, -24060406, -19061602, -12779675, -5724655, 1852742, 9672266, 17251274, 24357296, -31011812, 36879272, 41431940, 44782552, 47552804, 50098648, 52689048, 55994564, 60378112, 65176128, -69586520, 73636144, 77542416, 81007376, 83853328, 86369104, 88510688, 89804544, 90308128, 90538984, -90499256, 89949504, 89303648, 89043264, 88824752, 88268024, 87730072, 87346752, 86524264, 85144504, -83846888, 82624968, 80781352, 78412680, 76166416, 73822432, 70982928, 68426880, 66885524, 65678104, -64276868, 63483376, 63561756, 63418412, 62732292, 62209916, 61218852, 58342300, 54159000, 49993956, -44940392, 37859600, 30307436, 23600846, 16100759, 7088307, -1053878, -7720741, -15330349, -23497230, --29404956, -34690452, -42556148, -49550500, -52049636, -56297896, -66867272, -73780024, -70877696, -73289320, --89980104, -98395016, -84137872, -82304992, -124999120, -167590160, -137833552, -51009180, 2131378, -13793287, --42914776, -47504484, -63734632, -112846504, -139538656, -94187024, -16139950, 21853330, 10275172, -6083285, --2624762, 3426310, -12224551, -53722524, -98392872, -104956656, -52281028, 21005074, 46271292, 6119792, --45652280, -58137216, -42524472, -37187436, -46717968, -46745352, -29186988, -10275709, -1818919, }, +38722352, -11076184, -60224032, -64550676, -17122960, 36206036, 49209052, 21104396, -18492518, -45760192, +-51160576, -33653752, -3940096, 18916110, 27378806, 33587716, 49711564, 70036424, 80460840, 76390288, +62512712, 42136852, 16138340, -11113765, -32715302, -45996416, -54346368, -62400508, -71465568, -79259328, +-82685640, -80657336, -74535400, -66313220, -57463980, -49786188, -45816564, -47165720, -53153980, -61890480, +-72054520, -83056080, -94266480, -104957192, -114767432, -123768608, -132179768, -140125456, -147380736, -153205776, +-156636928, -157067488, -154404608, -148668688, -139690048, -127354904, -111901080, -93701688, -72853920, -49290656, +-23210540, 4962298, 34977140, 66672388, 99487552, 132486320, 164877360, 196077600, 225302704, 251551408, +274001184, 292006240, 304865920, 312142112, 314117280, 311378688, 304061664, 292163008, 276567968, 258962368, +240438176, 220876752, 200222256, 179760480, 161236832, 144897168, 129446560, 114223584, 100441032, 89645632, +81753088, 75438952, 69926896, 65512208, 62658740, 61415348, 61547956, 62589484, 63835564, 64725156, +65174520, 65392488, 65549792, 65541736, 64729452, 62083216, 57110180, 50492172, 43350180, 36120676, +28581934, 20549272, 12043625, 3192771, -5557151, -13465796, -20022064, -25061672, -28369332, -29724932, +-29306172, -27434640, -24060406, -19061602, -12779675, -5724655, 1852742, 9672266, 17251274, 24357296, +31011812, 36879272, 41431940, 44782552, 47552804, 50098648, 52689048, 55994564, 60378112, 65176128, +69586520, 73636144, 77542416, 81007376, 83853328, 86369104, 88510688, 89804544, 90308128, 90538984, +90499256, 89949504, 89303648, 89043264, 88824752, 88268024, 87730072, 87346752, 86524264, 85144504, +83846888, 82624968, 80781352, 78412680, 76166416, 73822432, 70982928, 68426880, 66885524, 65678104, +64276868, 63483376, 63561756, 63418412, 62732292, 62209916, 61218852, 58342300, 54159000, 49993956, +44940392, 37859600, 30307436, 23600846, 16100759, 7088307, -1053878, -7720741, -15330349, -23497230, +-29404956, -34690452, -42556148, -49550500, -52049636, -56297896, -66867272, -73780024, -70877696, -73289320, +-89980104, -98395016, -84137872, -82304992, -124999120, -167590160, -137833552, -51009180, 2131378, -13793287, +-42914776, -47504484, -63734632, -112846504, -139538656, -94187024, -16139950, 21853330, 10275172, -6083285, +-2624762, 3426310, -12224551, -53722524, -98392872, -104956656, -52281028, 21005074, 46271292, 6119792, +-45652280, -58137216, -42524472, -37187436, -46717968, -46745352, -29186988, -10275709, -1818919, }, }, { { 30986042, -41208064, 31604516, -7399155, -42646876, -39767640, -8690329, 9193377, -9797894, -50169512, -80211200, --82558400, -61758408, -32665374, -6299107, 17018808, 44122736, 78785808, 115747760, 145393776, 161863360, -164769440, 156054960, 138911584, 118105696, 97078608, 74432320, 46010376, 10551661, -29061896, -69958040, --111732504, -154016992, -194130912, -228740288, -256414384, -277224576, -290905664, -296850944, -295474944, -288444640, --277581600, -264112576, -248858464, -232574624, -215908000, -199137776, -182061520, -164289472, -145810384, -127242704, --109562472, -93752696, -80578952, -70182984, -61754652, -53999552, -46059768, -37711424, -28867548, -19485730, --9903658, -617938, 8284992, 16995722, 25460566, 33608120, 41878616, 50787988, 60144576, 69420096, -78682728, 88327080, 98025648, 106839992, 114352432, 120786288, 125909112, 128759360, 128811440, 126640328, -122903712, 117325624, 109403016, 99716792, 89660664, 79934712, 70110512, 59742996, 49027588, 38056096, -26288958, 13349832, -290447, -14012331, -27895812, -42229728, -56575992, -69955888, -81798192, -92246232, --101595304, -109661792, -115653808, -118719336, -118834768, -117011016, -114291768, -110680232, -105365208, -97847408, --88574576, -78688632, -69342248, -60915520, -52671868, -43502112, -33178086, -22635014, -13069585, -5121212, -1269700, 6783364, 12419972, 18757732, 25522306, 32154272, 38526392, 44866840, 51430084, 58572616, -66713728, 75898512, 85738288, 95884072, 106171592, 116355496, 126199024, 135748880, 145082928, 153948272, -162009920, 169149232, 175212112, 179893632, 183124528, 185137792, 186045104, 185845376, 184825872, 183374704, -181551488, 179378768, 177229136, 175403776, 173817328, 172571792, 172180944, 172819280, 174104016, 175875152, -178309328, 181149376, 183806880, 186217968, 188689728, 191221600, 193850672, 197067600, 201028096, 205163616, -209240064, 213670336, 218358816, 222652176, 226637904, 230825504, 234698480, 237382304, 239169552, 240502064, -240591712, 238975200, 236730000, 234369392, 230888848, 226354976, 222320928, 218723888, 214212560, 209614272, -206391968, 202894256, 197778944, 194057904, 192942272, 189404304, 182277872, 179474880, 182312768, 178666880, -166541120, 164434432, 176035680, 170421088, 132294656, 105728136, 138884208, 204635872, 234144976, 216945776, -202112576, 205021344, 188581808, 148576880, 140651056, 192015632, 251442960, 265291008, 249755040, 247953824, -261581232, 266896240, 260015712, 244418000, 205954416, 143459968, 99007584, 113309824, 165628432, 198232064, -192291584, 181625584, 192703376, 208599040, 204571984, 191691376, 202913040, 245402080, 285669536, }, +41208064, 31604516, -7399155, -42646876, -39767640, -8690329, 9193377, -9797894, -50169512, -80211200, +-82558400, -61758408, -32665374, -6299107, 17018808, 44122736, 78785808, 115747760, 145393776, 161863360, +164769440, 156054960, 138911584, 118105696, 97078608, 74432320, 46010376, 10551661, -29061896, -69958040, +-111732504, -154016992, -194130912, -228740288, -256414384, -277224576, -290905664, -296850944, -295474944, -288444640, +-277581600, -264112576, -248858464, -232574624, -215908000, -199137776, -182061520, -164289472, -145810384, -127242704, +-109562472, -93752696, -80578952, -70182984, -61754652, -53999552, -46059768, -37711424, -28867548, -19485730, +-9903658, -617938, 8284992, 16995722, 25460566, 33608120, 41878616, 50787988, 60144576, 69420096, +78682728, 88327080, 98025648, 106839992, 114352432, 120786288, 125909112, 128759360, 128811440, 126640328, +122903712, 117325624, 109403016, 99716792, 89660664, 79934712, 70110512, 59742996, 49027588, 38056096, +26288958, 13349832, -290447, -14012331, -27895812, -42229728, -56575992, -69955888, -81798192, -92246232, +-101595304, -109661792, -115653808, -118719336, -118834768, -117011016, -114291768, -110680232, -105365208, -97847408, +-88574576, -78688632, -69342248, -60915520, -52671868, -43502112, -33178086, -22635014, -13069585, -5121212, +1269700, 6783364, 12419972, 18757732, 25522306, 32154272, 38526392, 44866840, 51430084, 58572616, +66713728, 75898512, 85738288, 95884072, 106171592, 116355496, 126199024, 135748880, 145082928, 153948272, +162009920, 169149232, 175212112, 179893632, 183124528, 185137792, 186045104, 185845376, 184825872, 183374704, +181551488, 179378768, 177229136, 175403776, 173817328, 172571792, 172180944, 172819280, 174104016, 175875152, +178309328, 181149376, 183806880, 186217968, 188689728, 191221600, 193850672, 197067600, 201028096, 205163616, +209240064, 213670336, 218358816, 222652176, 226637904, 230825504, 234698480, 237382304, 239169552, 240502064, +240591712, 238975200, 236730000, 234369392, 230888848, 226354976, 222320928, 218723888, 214212560, 209614272, +206391968, 202894256, 197778944, 194057904, 192942272, 189404304, 182277872, 179474880, 182312768, 178666880, +166541120, 164434432, 176035680, 170421088, 132294656, 105728136, 138884208, 204635872, 234144976, 216945776, +202112576, 205021344, 188581808, 148576880, 140651056, 192015632, 251442960, 265291008, 249755040, 247953824, +261581232, 266896240, 260015712, 244418000, 205954416, 143459968, 99007584, 113309824, 165628432, 198232064, +192291584, 181625584, 192703376, 208599040, 204571984, 191691376, 202913040, 245402080, 285669536, }, { 30986042, -41208064, 31604516, -7399155, -42646876, -39767640, -8690329, 9193377, -9797894, -50169512, -80211200, --82558400, -61758408, -32665374, -6299107, 17018808, 44122736, 78785808, 115747760, 145393776, 161863360, -164769440, 156054960, 138911584, 118105696, 97078608, 74432320, 46010376, 10551661, -29061896, -69958040, --111732504, -154016992, -194130912, -228740288, -256414384, -277224576, -290905664, -296850944, -295474944, -288444640, --277581600, -264112576, -248858464, -232574624, -215908000, -199137776, -182061520, -164289472, -145810384, -127242704, --109562472, -93752696, -80578952, -70182984, -61754652, -53999552, -46059768, -37711424, -28867548, -19485730, --9903658, -617938, 8284992, 16995722, 25460566, 33608120, 41878616, 50787988, 60144576, 69420096, -78682728, 88327080, 98025648, 106839992, 114352432, 120786288, 125909112, 128759360, 128811440, 126640328, -122903712, 117325624, 109403016, 99716792, 89660664, 79934712, 70110512, 59742996, 49027588, 38056096, -26288958, 13349832, -290447, -14012331, -27895812, -42229728, -56575992, -69955888, -81798192, -92246232, --101595304, -109661792, -115653808, -118719336, -118834768, -117011016, -114291768, -110680232, -105365208, -97847408, --88574576, -78688632, -69342248, -60915520, -52671868, -43502112, -33178086, -22635014, -13069585, -5121212, -1269700, 6783364, 12419972, 18757732, 25522306, 32154272, 38526392, 44866840, 51430084, 58572616, -66713728, 75898512, 85738288, 95884072, 106171592, 116355496, 126199024, 135748880, 145082928, 153948272, -162009920, 169149232, 175212112, 179893632, 183124528, 185137792, 186045104, 185845376, 184825872, 183374704, -181551488, 179378768, 177229136, 175403776, 173817328, 172571792, 172180944, 172819280, 174104016, 175875152, -178309328, 181149376, 183806880, 186217968, 188689728, 191221600, 193850672, 197067600, 201028096, 205163616, -209240064, 213670336, 218358816, 222652176, 226637904, 230825504, 234698480, 237382304, 239169552, 240502064, -240591712, 238975200, 236730000, 234369392, 230888848, 226354976, 222320928, 218723888, 214212560, 209614272, -206391968, 202894256, 197778944, 194057904, 192942272, 189404304, 182277872, 179474880, 182312768, 178666880, -166541120, 164434432, 176035680, 170421088, 132294656, 105728136, 138884208, 204635872, 234144976, 216945776, -202112576, 205021344, 188581808, 148576880, 140651056, 192015632, 251442960, 265291008, 249755040, 247953824, -261581232, 266896240, 260015712, 244418000, 205954416, 143459968, 99007584, 113309824, 165628432, 198232064, -192291584, 181625584, 192703376, 208599040, 204571984, 191691376, 202913040, 245402080, 285669536, }, +41208064, 31604516, -7399155, -42646876, -39767640, -8690329, 9193377, -9797894, -50169512, -80211200, +-82558400, -61758408, -32665374, -6299107, 17018808, 44122736, 78785808, 115747760, 145393776, 161863360, +164769440, 156054960, 138911584, 118105696, 97078608, 74432320, 46010376, 10551661, -29061896, -69958040, +-111732504, -154016992, -194130912, -228740288, -256414384, -277224576, -290905664, -296850944, -295474944, -288444640, +-277581600, -264112576, -248858464, -232574624, -215908000, -199137776, -182061520, -164289472, -145810384, -127242704, +-109562472, -93752696, -80578952, -70182984, -61754652, -53999552, -46059768, -37711424, -28867548, -19485730, +-9903658, -617938, 8284992, 16995722, 25460566, 33608120, 41878616, 50787988, 60144576, 69420096, +78682728, 88327080, 98025648, 106839992, 114352432, 120786288, 125909112, 128759360, 128811440, 126640328, +122903712, 117325624, 109403016, 99716792, 89660664, 79934712, 70110512, 59742996, 49027588, 38056096, +26288958, 13349832, -290447, -14012331, -27895812, -42229728, -56575992, -69955888, -81798192, -92246232, +-101595304, -109661792, -115653808, -118719336, -118834768, -117011016, -114291768, -110680232, -105365208, -97847408, +-88574576, -78688632, -69342248, -60915520, -52671868, -43502112, -33178086, -22635014, -13069585, -5121212, +1269700, 6783364, 12419972, 18757732, 25522306, 32154272, 38526392, 44866840, 51430084, 58572616, +66713728, 75898512, 85738288, 95884072, 106171592, 116355496, 126199024, 135748880, 145082928, 153948272, +162009920, 169149232, 175212112, 179893632, 183124528, 185137792, 186045104, 185845376, 184825872, 183374704, +181551488, 179378768, 177229136, 175403776, 173817328, 172571792, 172180944, 172819280, 174104016, 175875152, +178309328, 181149376, 183806880, 186217968, 188689728, 191221600, 193850672, 197067600, 201028096, 205163616, +209240064, 213670336, 218358816, 222652176, 226637904, 230825504, 234698480, 237382304, 239169552, 240502064, +240591712, 238975200, 236730000, 234369392, 230888848, 226354976, 222320928, 218723888, 214212560, 209614272, +206391968, 202894256, 197778944, 194057904, 192942272, 189404304, 182277872, 179474880, 182312768, 178666880, +166541120, 164434432, 176035680, 170421088, 132294656, 105728136, 138884208, 204635872, 234144976, 216945776, +202112576, 205021344, 188581808, 148576880, 140651056, 192015632, 251442960, 265291008, 249755040, 247953824, +261581232, 266896240, 260015712, 244418000, 205954416, 143459968, 99007584, 113309824, 165628432, 198232064, +192291584, 181625584, 192703376, 208599040, 204571984, 191691376, 202913040, 245402080, 285669536, }, }, { { 11927661, -8254391, 9876814, 18951544, 25066502, 20257214, 11820287, 10667088, 10446971, -9302362, -55198920, --104534136, -125722816, -109843248, -74312064, -38511360, -5645198, 30492658, 71030704, 110766136, 145943520, -176026016, 199234400, 212091920, 213726160, 206675968, 192827392, 171563536, 142487152, 107303312, 68175624, -26241176, -17527762, -61694520, -105109664, -146663472, -183782720, -212766768, -231493904, -240935856, -243704496, --242107840, -237774224, -231883680, -225010112, -217201872, -208442816, -198703984, -187731952, -175365664, -161985232, --148284288, -134872704, -122400664, -111573584, -102565432, -94773824, -87489560, -80411448, -73331736, -65885872, --57874148, -49357228, -40272836, -30412664, -19817516, -8664023, 3191161, 16006269, 29560650, 43398496, -57560076, 72373424, 87538952, 102159016, 115723064, 128294432, 139524704, 148304144, 153923568, 156971920, -158372624, 157951712, 154864704, 149269984, 142480704, 135179808, 126514704, 115569520, 102871984, 89632744, -76167488, 62046708, 47436840, 33361158, 20686710, 9515500, -448824, -9395241, -17293148, -24054502, --29786136, -34851512, -39529268, -43786656, -47688096, -51757576, -56459492, -61477624, -65965864, -69410432, --71972912, -74226160, -76795088, -79890152, -82914880, -84863184, -85312008, -84779968, -84113176, -83900576, --84370872, -85315232, -86102816, -86176368, -85496152, -84269408, -82502560, -80073760, -76879912, -72683192, --67184024, -60457032, -52966072, -45120780, -37196028, -29571386, -22559852, -16127065, -10208064, -5068062, --988379, 2062121, 4139275, 5170067, 5339181, 5119601, 4758824, 4228396, 3674882, 3360812, -3291556, 3446175, 4119948, 5566815, 7716446, 10654740, 14766098, 20049982, 26006026, 32377074, -39221640, 46223512, 52858164, 59122908, 65221764, 70902928, 75974216, 80866720, 85869816, 90633472, -95081984, 99736656, 104685536, 109496968, 114285320, 119390968, 124223336, 128051768, 131315400, 134485088, -136825312, 137965616, 138964208, 140230688, 140711712, 140338064, 140336448, 140453488, 139494096, 138376864, -138341968, 137693424, 135427296, 134630576, 136169248, 135092288, 130763504, 130876784, 135851968, 133693744, -123466888, 123273080, 134919952, 127440272, 88057568, 62094488, 96197600, 162636992, 193965024, 178560576, -161589552, 159551056, 143084144, 110318920, 107009112, 151814208, 200674288, 212477408, 201375984, 198243872, -203621712, 203391392, 192545536, 163330096, 109403016, 60814588, 71439800, 145763680, 217600224, 230700416, -205281184, 193948912, 206018304, 213945200, 208341344, 202911440, 198481184, 183370944, 164960560, }, +8254391, 9876814, 18951544, 25066502, 20257214, 11820287, 10667088, 10446971, -9302362, -55198920, +-104534136, -125722816, -109843248, -74312064, -38511360, -5645198, 30492658, 71030704, 110766136, 145943520, +176026016, 199234400, 212091920, 213726160, 206675968, 192827392, 171563536, 142487152, 107303312, 68175624, +26241176, -17527762, -61694520, -105109664, -146663472, -183782720, -212766768, -231493904, -240935856, -243704496, +-242107840, -237774224, -231883680, -225010112, -217201872, -208442816, -198703984, -187731952, -175365664, -161985232, +-148284288, -134872704, -122400664, -111573584, -102565432, -94773824, -87489560, -80411448, -73331736, -65885872, +-57874148, -49357228, -40272836, -30412664, -19817516, -8664023, 3191161, 16006269, 29560650, 43398496, +57560076, 72373424, 87538952, 102159016, 115723064, 128294432, 139524704, 148304144, 153923568, 156971920, +158372624, 157951712, 154864704, 149269984, 142480704, 135179808, 126514704, 115569520, 102871984, 89632744, +76167488, 62046708, 47436840, 33361158, 20686710, 9515500, -448824, -9395241, -17293148, -24054502, +-29786136, -34851512, -39529268, -43786656, -47688096, -51757576, -56459492, -61477624, -65965864, -69410432, +-71972912, -74226160, -76795088, -79890152, -82914880, -84863184, -85312008, -84779968, -84113176, -83900576, +-84370872, -85315232, -86102816, -86176368, -85496152, -84269408, -82502560, -80073760, -76879912, -72683192, +-67184024, -60457032, -52966072, -45120780, -37196028, -29571386, -22559852, -16127065, -10208064, -5068062, +-988379, 2062121, 4139275, 5170067, 5339181, 5119601, 4758824, 4228396, 3674882, 3360812, +3291556, 3446175, 4119948, 5566815, 7716446, 10654740, 14766098, 20049982, 26006026, 32377074, +39221640, 46223512, 52858164, 59122908, 65221764, 70902928, 75974216, 80866720, 85869816, 90633472, +95081984, 99736656, 104685536, 109496968, 114285320, 119390968, 124223336, 128051768, 131315400, 134485088, +136825312, 137965616, 138964208, 140230688, 140711712, 140338064, 140336448, 140453488, 139494096, 138376864, +138341968, 137693424, 135427296, 134630576, 136169248, 135092288, 130763504, 130876784, 135851968, 133693744, +123466888, 123273080, 134919952, 127440272, 88057568, 62094488, 96197600, 162636992, 193965024, 178560576, +161589552, 159551056, 143084144, 110318920, 107009112, 151814208, 200674288, 212477408, 201375984, 198243872, +203621712, 203391392, 192545536, 163330096, 109403016, 60814588, 71439800, 145763680, 217600224, 230700416, +205281184, 193948912, 206018304, 213945200, 208341344, 202911440, 198481184, 183370944, 164960560, }, { -11927661, --8254391, -9876814, -18951544, -25066502, -20257214, -11820287, -10667088, -10446971, 9302362, 55198920, -104534136, 125722816, 109843248, 74312064, 38511360, 5645198, -30492658, -71030704, -110766136, -145943520, --176026016, -199234400, -212091920, -213726160, -206675968, -192827392, -171563536, -142487152, -107303312, -68175624, --26241176, 17527762, 61694520, 105109664, 146663472, 183782720, 212766768, 231493904, 240935856, 243704496, -242107840, 237774224, 231883680, 225010112, 217201872, 208442816, 198703984, 187731952, 175365664, 161985232, -148284288, 134872704, 122400664, 111573584, 102565432, 94773824, 87489560, 80411448, 73331736, 65885872, -57874148, 49357228, 40272836, 30412664, 19817516, 8664023, -3191161, -16006269, -29560650, -43398496, --57560076, -72373424, -87538952, -102159016, -115723064, -128294432, -139524704, -148304144, -153923568, -156971920, --158372624, -157951712, -154864704, -149269984, -142480704, -135179808, -126514704, -115569520, -102871984, -89632744, --76167488, -62046708, -47436840, -33361158, -20686710, -9515500, 448824, 9395241, 17293148, 24054502, -29786136, 34851512, 39529268, 43786656, 47688096, 51757576, 56459492, 61477624, 65965864, 69410432, -71972912, 74226160, 76795088, 79890152, 82914880, 84863184, 85312008, 84779968, 84113176, 83900576, -84370872, 85315232, 86102816, 86176368, 85496152, 84269408, 82502560, 80073760, 76879912, 72683192, -67184024, 60457032, 52966072, 45120780, 37196028, 29571386, 22559852, 16127065, 10208064, 5068062, -988379, -2062121, -4139275, -5170067, -5339181, -5119601, -4758824, -4228396, -3674882, -3360812, --3291556, -3446175, -4119948, -5566815, -7716446, -10654740, -14766098, -20049982, -26006026, -32377074, --39221640, -46223512, -52858164, -59122908, -65221764, -70902928, -75974216, -80866720, -85869816, -90633472, --95081984, -99736656, -104685536, -109496968, -114285320, -119390968, -124223336, -128051768, -131315400, -134485088, --136825312, -137965616, -138964208, -140230688, -140711712, -140338064, -140336448, -140453488, -139494096, -138376864, --138341968, -137693424, -135427296, -134630576, -136169248, -135092288, -130763504, -130876784, -135851968, -133693744, --123466888, -123273080, -134919952, -127440272, -88057568, -62094488, -96197600, -162636992, -193965024, -178560576, --161589552, -159551056, -143084144, -110318920, -107009112, -151814208, -200674288, -212477408, -201375984, -198243872, --203621712, -203391392, -192545536, -163330096, -109403016, -60814588, -71439800, -145763680, -217600224, -230700416, --205281184, -193948912, -206018304, -213945200, -208341344, -202911440, -198481184, -183370944, -164960560, }, +-8254391, -9876814, -18951544, -25066502, -20257214, -11820287, -10667088, -10446971, 9302362, 55198920, +104534136, 125722816, 109843248, 74312064, 38511360, 5645198, -30492658, -71030704, -110766136, -145943520, +-176026016, -199234400, -212091920, -213726160, -206675968, -192827392, -171563536, -142487152, -107303312, -68175624, +-26241176, 17527762, 61694520, 105109664, 146663472, 183782720, 212766768, 231493904, 240935856, 243704496, +242107840, 237774224, 231883680, 225010112, 217201872, 208442816, 198703984, 187731952, 175365664, 161985232, +148284288, 134872704, 122400664, 111573584, 102565432, 94773824, 87489560, 80411448, 73331736, 65885872, +57874148, 49357228, 40272836, 30412664, 19817516, 8664023, -3191161, -16006269, -29560650, -43398496, +-57560076, -72373424, -87538952, -102159016, -115723064, -128294432, -139524704, -148304144, -153923568, -156971920, +-158372624, -157951712, -154864704, -149269984, -142480704, -135179808, -126514704, -115569520, -102871984, -89632744, +-76167488, -62046708, -47436840, -33361158, -20686710, -9515500, 448824, 9395241, 17293148, 24054502, +29786136, 34851512, 39529268, 43786656, 47688096, 51757576, 56459492, 61477624, 65965864, 69410432, +71972912, 74226160, 76795088, 79890152, 82914880, 84863184, 85312008, 84779968, 84113176, 83900576, +84370872, 85315232, 86102816, 86176368, 85496152, 84269408, 82502560, 80073760, 76879912, 72683192, +67184024, 60457032, 52966072, 45120780, 37196028, 29571386, 22559852, 16127065, 10208064, 5068062, +988379, -2062121, -4139275, -5170067, -5339181, -5119601, -4758824, -4228396, -3674882, -3360812, +-3291556, -3446175, -4119948, -5566815, -7716446, -10654740, -14766098, -20049982, -26006026, -32377074, +-39221640, -46223512, -52858164, -59122908, -65221764, -70902928, -75974216, -80866720, -85869816, -90633472, +-95081984, -99736656, -104685536, -109496968, -114285320, -119390968, -124223336, -128051768, -131315400, -134485088, +-136825312, -137965616, -138964208, -140230688, -140711712, -140338064, -140336448, -140453488, -139494096, -138376864, +-138341968, -137693424, -135427296, -134630576, -136169248, -135092288, -130763504, -130876784, -135851968, -133693744, +-123466888, -123273080, -134919952, -127440272, -88057568, -62094488, -96197600, -162636992, -193965024, -178560576, +-161589552, -159551056, -143084144, -110318920, -107009112, -151814208, -200674288, -212477408, -201375984, -198243872, +-203621712, -203391392, -192545536, -163330096, -109403016, -60814588, -71439800, -145763680, -217600224, -230700416, +-205281184, -193948912, -206018304, -213945200, -208341344, -202911440, -198481184, -183370944, -164960560, }, }, { { 1845225, --6548752, -645856, 11326366, -1323924, -23360328, 516470, 70470752, 103799160, 39323108, -75782016, --143958176, -129812168, -75616656, -29047400, 1406065, 27227946, 53433688, 77974592, 97599912, 107780056, -105458088, 93229784, 76283984, 57622892, 39669928, 26154204, 18576808, 14652818, 12916040, 14906758, -20847772, 27242440, 30925376, 32439352, 33878164, 35633196, 36080408, 32869384, 24407762, 11307575, --3862249, -18832358, -32844152, -45603424, -56769268, -66952636, -77589656, -89338544, -101743480, -114375512, --127040840, -139149968, -149981872, -159129616, -165848544, -168823888, -167367360, -161885904, -152643136, -139270752, --121952912, -101701608, -79026864, -53646824, -25821880, 3289408, 32758252, 62168040, 90734408, 117222008, -140673600, 160389648, 175473568, 185248384, 189831120, 189608304, 184527360, 174534592, 160388032, 143417008, -124507344, 103677824, 80807128, 56646860, 32723892, 9984725, -11984032, -33844880, -55168320, -74984224, --93070328, -109669304, -124435936, -136741024, -146563616, -154035248, -158579312, -159456560, -156764688, -151126480, --142818944, -131737384, -117827056, -101433168, -83825416, -67174360, -53031572, -40934260, -29385630, -17978734, --7737921, 177167, 5261335, 7716983, 8515846, 8907225, 9329206, 9336722, 8757975, 8089571, -7758859, 7969312, 9200357, 11858942, 15609522, 19887310, 24648280, 29855928, 34891240, 39198020, -42775728, 45536316, 47085728, 47491064, 47281684, 46593416, 45326400, 43938052, 42950208, 42043972, -40720584, 39240968, 37930468, 36420248, 34454764, 32409286, 30368104, 27900108, 25135222, 22725746, -20629802, 18361522, 16196859, 14656576, 13375602, 11931956, 10887742, 10683731, 10726144, 10692858, -11195906, 12278238, 13072270, 13478681, 14211510, 15105937, 15531139, 16049756, 17460652, 19108310, -20259898, 21661668, 23775866, 25526064, 26405996, 27226872, 27671400, 26280368, 23406498, 20561620, -17145510, 11816529, 5853504, 878858, -4474282, -11355357, -17719424, -22552874, -28112708, -34612604, --39279088, -42917996, -48835388, -54687820, -56460568, -58741732, -66727148, -72850160, -70095480, -70104600, --82972328, -91474752, -80050136, -74722232, -105705584, -140526496, -115971096, -38424388, 14111652, 2777770, --27246736, -34520264, -43823700, -82118168, -112770272, -86500640, -19781008, 26624502, 25559350, 1846299, --14041859, -22708028, -49884436, -112187768, -181869312, -195415648, -123007328, -21627844, 17504676, -25101936, --81594176, -91303488, -68420440, -59377384, -72649368, -81596328, -73004784, -59483148, -52861920, }, +-6548752, -645856, 11326366, -1323924, -23360328, 516470, 70470752, 103799160, 39323108, -75782016, +-143958176, -129812168, -75616656, -29047400, 1406065, 27227946, 53433688, 77974592, 97599912, 107780056, +105458088, 93229784, 76283984, 57622892, 39669928, 26154204, 18576808, 14652818, 12916040, 14906758, +20847772, 27242440, 30925376, 32439352, 33878164, 35633196, 36080408, 32869384, 24407762, 11307575, +-3862249, -18832358, -32844152, -45603424, -56769268, -66952636, -77589656, -89338544, -101743480, -114375512, +-127040840, -139149968, -149981872, -159129616, -165848544, -168823888, -167367360, -161885904, -152643136, -139270752, +-121952912, -101701608, -79026864, -53646824, -25821880, 3289408, 32758252, 62168040, 90734408, 117222008, +140673600, 160389648, 175473568, 185248384, 189831120, 189608304, 184527360, 174534592, 160388032, 143417008, +124507344, 103677824, 80807128, 56646860, 32723892, 9984725, -11984032, -33844880, -55168320, -74984224, +-93070328, -109669304, -124435936, -136741024, -146563616, -154035248, -158579312, -159456560, -156764688, -151126480, +-142818944, -131737384, -117827056, -101433168, -83825416, -67174360, -53031572, -40934260, -29385630, -17978734, +-7737921, 177167, 5261335, 7716983, 8515846, 8907225, 9329206, 9336722, 8757975, 8089571, +7758859, 7969312, 9200357, 11858942, 15609522, 19887310, 24648280, 29855928, 34891240, 39198020, +42775728, 45536316, 47085728, 47491064, 47281684, 46593416, 45326400, 43938052, 42950208, 42043972, +40720584, 39240968, 37930468, 36420248, 34454764, 32409286, 30368104, 27900108, 25135222, 22725746, +20629802, 18361522, 16196859, 14656576, 13375602, 11931956, 10887742, 10683731, 10726144, 10692858, +11195906, 12278238, 13072270, 13478681, 14211510, 15105937, 15531139, 16049756, 17460652, 19108310, +20259898, 21661668, 23775866, 25526064, 26405996, 27226872, 27671400, 26280368, 23406498, 20561620, +17145510, 11816529, 5853504, 878858, -4474282, -11355357, -17719424, -22552874, -28112708, -34612604, +-39279088, -42917996, -48835388, -54687820, -56460568, -58741732, -66727148, -72850160, -70095480, -70104600, +-82972328, -91474752, -80050136, -74722232, -105705584, -140526496, -115971096, -38424388, 14111652, 2777770, +-27246736, -34520264, -43823700, -82118168, -112770272, -86500640, -19781008, 26624502, 25559350, 1846299, +-14041859, -22708028, -49884436, -112187768, -181869312, -195415648, -123007328, -21627844, 17504676, -25101936, +-81594176, -91303488, -68420440, -59377384, -72649368, -81596328, -73004784, -59483148, -52861920, }, { -1845225, -6548752, 645856, -11326366, 1323924, 23360328, -516470, -70470752, -103799160, -39323108, 75782016, -143958176, 129812168, 75616656, 29047400, -1406065, -27227946, -53433688, -77974592, -97599912, -107780056, --105458088, -93229784, -76283984, -57622892, -39669928, -26154204, -18576808, -14652818, -12916040, -14906758, --20847772, -27242440, -30925376, -32439352, -33878164, -35633196, -36080408, -32869384, -24407762, -11307575, -3862249, 18832358, 32844152, 45603424, 56769268, 66952636, 77589656, 89338544, 101743480, 114375512, -127040840, 139149968, 149981872, 159129616, 165848544, 168823888, 167367360, 161885904, 152643136, 139270752, -121952912, 101701608, 79026864, 53646824, 25821880, -3289408, -32758252, -62168040, -90734408, -117222008, --140673600, -160389648, -175473568, -185248384, -189831120, -189608304, -184527360, -174534592, -160388032, -143417008, --124507344, -103677824, -80807128, -56646860, -32723892, -9984725, 11984032, 33844880, 55168320, 74984224, -93070328, 109669304, 124435936, 136741024, 146563616, 154035248, 158579312, 159456560, 156764688, 151126480, -142818944, 131737384, 117827056, 101433168, 83825416, 67174360, 53031572, 40934260, 29385630, 17978734, -7737921, -177167, -5261335, -7716983, -8515846, -8907225, -9329206, -9336722, -8757975, -8089571, --7758859, -7969312, -9200357, -11858942, -15609522, -19887310, -24648280, -29855928, -34891240, -39198020, --42775728, -45536316, -47085728, -47491064, -47281684, -46593416, -45326400, -43938052, -42950208, -42043972, --40720584, -39240968, -37930468, -36420248, -34454764, -32409286, -30368104, -27900108, -25135222, -22725746, --20629802, -18361522, -16196859, -14656576, -13375602, -11931956, -10887742, -10683731, -10726144, -10692858, --11195906, -12278238, -13072270, -13478681, -14211510, -15105937, -15531139, -16049756, -17460652, -19108310, --20259898, -21661668, -23775866, -25526064, -26405996, -27226872, -27671400, -26280368, -23406498, -20561620, --17145510, -11816529, -5853504, -878858, 4474282, 11355357, 17719424, 22552874, 28112708, 34612604, -39279088, 42917996, 48835388, 54687820, 56460568, 58741732, 66727148, 72850160, 70095480, 70104600, -82972328, 91474752, 80050136, 74722232, 105705584, 140526496, 115971096, 38424388, -14111652, -2777770, -27246736, 34520264, 43823700, 82118168, 112770272, 86500640, 19781008, -26624502, -25559350, -1846299, -14041859, 22708028, 49884436, 112187768, 181869312, 195415648, 123007328, 21627844, -17504676, 25101936, -81594176, 91303488, 68420440, 59377384, 72649368, 81596328, 73004784, 59483148, 52861920, }, +6548752, 645856, -11326366, 1323924, 23360328, -516470, -70470752, -103799160, -39323108, 75782016, +143958176, 129812168, 75616656, 29047400, -1406065, -27227946, -53433688, -77974592, -97599912, -107780056, +-105458088, -93229784, -76283984, -57622892, -39669928, -26154204, -18576808, -14652818, -12916040, -14906758, +-20847772, -27242440, -30925376, -32439352, -33878164, -35633196, -36080408, -32869384, -24407762, -11307575, +3862249, 18832358, 32844152, 45603424, 56769268, 66952636, 77589656, 89338544, 101743480, 114375512, +127040840, 139149968, 149981872, 159129616, 165848544, 168823888, 167367360, 161885904, 152643136, 139270752, +121952912, 101701608, 79026864, 53646824, 25821880, -3289408, -32758252, -62168040, -90734408, -117222008, +-140673600, -160389648, -175473568, -185248384, -189831120, -189608304, -184527360, -174534592, -160388032, -143417008, +-124507344, -103677824, -80807128, -56646860, -32723892, -9984725, 11984032, 33844880, 55168320, 74984224, +93070328, 109669304, 124435936, 136741024, 146563616, 154035248, 158579312, 159456560, 156764688, 151126480, +142818944, 131737384, 117827056, 101433168, 83825416, 67174360, 53031572, 40934260, 29385630, 17978734, +7737921, -177167, -5261335, -7716983, -8515846, -8907225, -9329206, -9336722, -8757975, -8089571, +-7758859, -7969312, -9200357, -11858942, -15609522, -19887310, -24648280, -29855928, -34891240, -39198020, +-42775728, -45536316, -47085728, -47491064, -47281684, -46593416, -45326400, -43938052, -42950208, -42043972, +-40720584, -39240968, -37930468, -36420248, -34454764, -32409286, -30368104, -27900108, -25135222, -22725746, +-20629802, -18361522, -16196859, -14656576, -13375602, -11931956, -10887742, -10683731, -10726144, -10692858, +-11195906, -12278238, -13072270, -13478681, -14211510, -15105937, -15531139, -16049756, -17460652, -19108310, +-20259898, -21661668, -23775866, -25526064, -26405996, -27226872, -27671400, -26280368, -23406498, -20561620, +-17145510, -11816529, -5853504, -878858, 4474282, 11355357, 17719424, 22552874, 28112708, 34612604, +39279088, 42917996, 48835388, 54687820, 56460568, 58741732, 66727148, 72850160, 70095480, 70104600, +82972328, 91474752, 80050136, 74722232, 105705584, 140526496, 115971096, 38424388, -14111652, -2777770, +27246736, 34520264, 43823700, 82118168, 112770272, 86500640, 19781008, -26624502, -25559350, -1846299, +14041859, 22708028, 49884436, 112187768, 181869312, 195415648, 123007328, 21627844, -17504676, 25101936, +81594176, 91303488, 68420440, 59377384, 72649368, 81596328, 73004784, 59483148, 52861920, }, }, { { -7046431, --6595996, -15714212, -32926294, -43859132, -45169096, -49223008, -55187644, -35014184, 33172180, 127528320, -196871632, 209954112, 176739520, 124306552, 69076496, 16124918, -29955786, -64915208, -90075664, -109764872, --125263256, -135164768, -139116144, -137467952, -129359584, -114974128, -98802504, -87378960, -83409872, -83839376, --83728776, -80569832, -74706664, -67144296, -58140436, -47568912, -35586488, -22458920, -8252243, 6661495, -20977158, 33047088, 42269996, 49456012, 55735252, 61524868, 66627828, 70803608, 73946448, 75984952, -76842872, 76411760, 74481712, 70841728, 65519728, 58886148, 51526184, 44047036, 36909340, 30363808, -24545738, 19638202, 15870441, 13397614, 12285217, 12667469, 14854681, 19190988, 25785910, 34442416, -44936632, 57326540, 71794136, 88185344, 105971872, 124750008, 144440288, 164774816, 184924112, 203962624, -221463552, 237294800, 251020976, 261918912, 269517792, 273794496, 274895616, 272934432, 267964080, 259810080, -247952752, 231975472, 212308816, 190321808, 167449504, 144289968, 120732608, 96992176, 74397960, 54987392, -40226664, 30084098, 23371064, 18984292, 16791174, 17363480, 20999168, 27120570, 34506304, 41897404, -48382808, 53475028, 57052736, 59212568, 60022168, 59326920, 56791280, 52143588, 45437532, 37138044, -27927488, 18377092, 8764418, -850940, -10451266, -19975892, -29326036, -38453380, -47488916, -56699472, --66202088, -75788456, -85160072, -94262720, -103266584, -112363864, -121757488, -131678864, -142156976, -152831040, --163162048, -172762368, -181412432, -188911456, -195065600, -199749808, -202918944, -204654112, -205204944, -204860272, --203810160, -202237664, -200407472, -198504800, -196525360, -194462704, -192439760, -190548368, -188756304, -187067296, --185547424, -184138128, -182657440, -181013552, -179228992, -177363360, -175599200, -174196896, -173178448, -172281872, --171363296, -170486048, -169535248, -168204336, -166423008, -164318464, -161801088, -158703872, -155160528, -151312240, --146953376, -142001824, -136815648, -131554848, -125957432, -120161912, -114798032, -109952240, -105170864, -100570416, --96573952, -92794376, -88781808, -85132160, -82048904, -78303160, -73764456, -70451424, -68511704, -65061776, --60248192, -58631136, -60058676, -57418880, -50366008, -50744500, -63768992, -75478144, -73326904, -66725540, --68320584, -68286760, -52987548, -38466800, -53093848, -90649576, -114169360, -107969576, -93619016, -90817080, --94996624, -98737000, -101857296, -94393184, -66017404, -40611064, -60850560, -124140664, -174951728, -179190336, --163824016, -161033888, -161131072, -152438592, -156139248, -173953152, -149530896, -48320528, 56821880, }, +-6595996, -15714212, -32926294, -43859132, -45169096, -49223008, -55187644, -35014184, 33172180, 127528320, +196871632, 209954112, 176739520, 124306552, 69076496, 16124918, -29955786, -64915208, -90075664, -109764872, +-125263256, -135164768, -139116144, -137467952, -129359584, -114974128, -98802504, -87378960, -83409872, -83839376, +-83728776, -80569832, -74706664, -67144296, -58140436, -47568912, -35586488, -22458920, -8252243, 6661495, +20977158, 33047088, 42269996, 49456012, 55735252, 61524868, 66627828, 70803608, 73946448, 75984952, +76842872, 76411760, 74481712, 70841728, 65519728, 58886148, 51526184, 44047036, 36909340, 30363808, +24545738, 19638202, 15870441, 13397614, 12285217, 12667469, 14854681, 19190988, 25785910, 34442416, +44936632, 57326540, 71794136, 88185344, 105971872, 124750008, 144440288, 164774816, 184924112, 203962624, +221463552, 237294800, 251020976, 261918912, 269517792, 273794496, 274895616, 272934432, 267964080, 259810080, +247952752, 231975472, 212308816, 190321808, 167449504, 144289968, 120732608, 96992176, 74397960, 54987392, +40226664, 30084098, 23371064, 18984292, 16791174, 17363480, 20999168, 27120570, 34506304, 41897404, +48382808, 53475028, 57052736, 59212568, 60022168, 59326920, 56791280, 52143588, 45437532, 37138044, +27927488, 18377092, 8764418, -850940, -10451266, -19975892, -29326036, -38453380, -47488916, -56699472, +-66202088, -75788456, -85160072, -94262720, -103266584, -112363864, -121757488, -131678864, -142156976, -152831040, +-163162048, -172762368, -181412432, -188911456, -195065600, -199749808, -202918944, -204654112, -205204944, -204860272, +-203810160, -202237664, -200407472, -198504800, -196525360, -194462704, -192439760, -190548368, -188756304, -187067296, +-185547424, -184138128, -182657440, -181013552, -179228992, -177363360, -175599200, -174196896, -173178448, -172281872, +-171363296, -170486048, -169535248, -168204336, -166423008, -164318464, -161801088, -158703872, -155160528, -151312240, +-146953376, -142001824, -136815648, -131554848, -125957432, -120161912, -114798032, -109952240, -105170864, -100570416, +-96573952, -92794376, -88781808, -85132160, -82048904, -78303160, -73764456, -70451424, -68511704, -65061776, +-60248192, -58631136, -60058676, -57418880, -50366008, -50744500, -63768992, -75478144, -73326904, -66725540, +-68320584, -68286760, -52987548, -38466800, -53093848, -90649576, -114169360, -107969576, -93619016, -90817080, +-94996624, -98737000, -101857296, -94393184, -66017404, -40611064, -60850560, -124140664, -174951728, -179190336, +-163824016, -161033888, -161131072, -152438592, -156139248, -173953152, -149530896, -48320528, 56821880, }, { -7046431, --6595996, -15714212, -32926294, -43859132, -45169096, -49223008, -55187644, -35014184, 33172180, 127528320, -196871632, 209954112, 176739520, 124306552, 69076496, 16124918, -29955786, -64915208, -90075664, -109764872, --125263256, -135164768, -139116144, -137467952, -129359584, -114974128, -98802504, -87378960, -83409872, -83839376, --83728776, -80569832, -74706664, -67144296, -58140436, -47568912, -35586488, -22458920, -8252243, 6661495, -20977158, 33047088, 42269996, 49456012, 55735252, 61524868, 66627828, 70803608, 73946448, 75984952, -76842872, 76411760, 74481712, 70841728, 65519728, 58886148, 51526184, 44047036, 36909340, 30363808, -24545738, 19638202, 15870441, 13397614, 12285217, 12667469, 14854681, 19190988, 25785910, 34442416, -44936632, 57326540, 71794136, 88185344, 105971872, 124750008, 144440288, 164774816, 184924112, 203962624, -221463552, 237294800, 251020976, 261918912, 269517792, 273794496, 274895616, 272934432, 267964080, 259810080, -247952752, 231975472, 212308816, 190321808, 167449504, 144289968, 120732608, 96992176, 74397960, 54987392, -40226664, 30084098, 23371064, 18984292, 16791174, 17363480, 20999168, 27120570, 34506304, 41897404, -48382808, 53475028, 57052736, 59212568, 60022168, 59326920, 56791280, 52143588, 45437532, 37138044, -27927488, 18377092, 8764418, -850940, -10451266, -19975892, -29326036, -38453380, -47488916, -56699472, --66202088, -75788456, -85160072, -94262720, -103266584, -112363864, -121757488, -131678864, -142156976, -152831040, --163162048, -172762368, -181412432, -188911456, -195065600, -199749808, -202918944, -204654112, -205204944, -204860272, --203810160, -202237664, -200407472, -198504800, -196525360, -194462704, -192439760, -190548368, -188756304, -187067296, --185547424, -184138128, -182657440, -181013552, -179228992, -177363360, -175599200, -174196896, -173178448, -172281872, --171363296, -170486048, -169535248, -168204336, -166423008, -164318464, -161801088, -158703872, -155160528, -151312240, --146953376, -142001824, -136815648, -131554848, -125957432, -120161912, -114798032, -109952240, -105170864, -100570416, --96573952, -92794376, -88781808, -85132160, -82048904, -78303160, -73764456, -70451424, -68511704, -65061776, --60248192, -58631136, -60058676, -57418880, -50366008, -50744500, -63768992, -75478144, -73326904, -66725540, --68320584, -68286760, -52987548, -38466800, -53093848, -90649576, -114169360, -107969576, -93619016, -90817080, --94996624, -98737000, -101857296, -94393184, -66017404, -40611064, -60850560, -124140664, -174951728, -179190336, --163824016, -161033888, -161131072, -152438592, -156139248, -173953152, -149530896, -48320528, 56821880, }, +-6595996, -15714212, -32926294, -43859132, -45169096, -49223008, -55187644, -35014184, 33172180, 127528320, +196871632, 209954112, 176739520, 124306552, 69076496, 16124918, -29955786, -64915208, -90075664, -109764872, +-125263256, -135164768, -139116144, -137467952, -129359584, -114974128, -98802504, -87378960, -83409872, -83839376, +-83728776, -80569832, -74706664, -67144296, -58140436, -47568912, -35586488, -22458920, -8252243, 6661495, +20977158, 33047088, 42269996, 49456012, 55735252, 61524868, 66627828, 70803608, 73946448, 75984952, +76842872, 76411760, 74481712, 70841728, 65519728, 58886148, 51526184, 44047036, 36909340, 30363808, +24545738, 19638202, 15870441, 13397614, 12285217, 12667469, 14854681, 19190988, 25785910, 34442416, +44936632, 57326540, 71794136, 88185344, 105971872, 124750008, 144440288, 164774816, 184924112, 203962624, +221463552, 237294800, 251020976, 261918912, 269517792, 273794496, 274895616, 272934432, 267964080, 259810080, +247952752, 231975472, 212308816, 190321808, 167449504, 144289968, 120732608, 96992176, 74397960, 54987392, +40226664, 30084098, 23371064, 18984292, 16791174, 17363480, 20999168, 27120570, 34506304, 41897404, +48382808, 53475028, 57052736, 59212568, 60022168, 59326920, 56791280, 52143588, 45437532, 37138044, +27927488, 18377092, 8764418, -850940, -10451266, -19975892, -29326036, -38453380, -47488916, -56699472, +-66202088, -75788456, -85160072, -94262720, -103266584, -112363864, -121757488, -131678864, -142156976, -152831040, +-163162048, -172762368, -181412432, -188911456, -195065600, -199749808, -202918944, -204654112, -205204944, -204860272, +-203810160, -202237664, -200407472, -198504800, -196525360, -194462704, -192439760, -190548368, -188756304, -187067296, +-185547424, -184138128, -182657440, -181013552, -179228992, -177363360, -175599200, -174196896, -173178448, -172281872, +-171363296, -170486048, -169535248, -168204336, -166423008, -164318464, -161801088, -158703872, -155160528, -151312240, +-146953376, -142001824, -136815648, -131554848, -125957432, -120161912, -114798032, -109952240, -105170864, -100570416, +-96573952, -92794376, -88781808, -85132160, -82048904, -78303160, -73764456, -70451424, -68511704, -65061776, +-60248192, -58631136, -60058676, -57418880, -50366008, -50744500, -63768992, -75478144, -73326904, -66725540, +-68320584, -68286760, -52987548, -38466800, -53093848, -90649576, -114169360, -107969576, -93619016, -90817080, +-94996624, -98737000, -101857296, -94393184, -66017404, -40611064, -60850560, -124140664, -174951728, -179190336, +-163824016, -161033888, -161131072, -152438592, -156139248, -173953152, -149530896, -48320528, 56821880, }, }, { { 27171036, --11462731, -54041428, -56250112, -792421, 79816064, 120961312, 82116552, -9214852, -80828600, -88135416, --51418276, -17627082, -5667210, -3959960, -2867965, -3746822, -2963528, 8109972, 25592100, 34102040, -28623272, 21260624, 23161148, 31855772, 40087076, 46668040, 53553948, 59299004, 60382944, 55612312, -46720656, 36820756, 28845538, 23300734, 17404818, 7913477, -5710159, -21782464, -38393248, -53689776, --65853124, -74299176, -79911624, -83453360, -84879288, -84442280, -83029232, -81143208, -78727824, -76015016, --73440720, -70876624, -67899136, -64530272, -60923036, -56743496, -51612620, -45780056, -39832064, -34133180, --28903520, -24467892, -21179558, -19245748, -18563386, -18611168, -18833432, -19230180, -20046760, -20867636, --20792474, -19539416, -17479444, -14470819, -9571335, -2090575, 7872138, 20029044, 34344704, 50779400, -69050192, 88562224, 108419472, 127905736, 146983440, 165609104, 182670320, 196808816, 208435296, 219484640, -230620416, 239943184, 245161024, 246006064, 243747440, 239059488, 231200240, 219135680, 202981232, 184127392, -163848176, 142009328, 117646672, 90771984, 62952408, 35974648, 10460393, -14150307, -38755636, -63661080, --87979720, -110035992, -128729832, -144301776, -157552816, -168799200, -177886800, -184668032, -189119216, -191449248, --192279248, -192278704, -191592048, -190071088, -187894624, -185443264, -182765888, -179586000, -175521888, -170055472, --162886640, -154620432, -146471264, -139066208, -132131448, -125266480, -118172800, -110337176, -101534104, -92527552, --84378392, -77287400, -70873936, -65020972, -59594280, -54016728, -48020420, -42218992, -37269040, -33144262, --29650306, -26781806, -24214488, -21324512, -17926120, -14277008, -10492605, -6687801, -3264175, -325344, -2621004, 5818607, 8962523, 12122008, 15790984, 19717122, 23000086, 25480968, 27674084, 29479044, -30463666, 31004296, 31666258, 32123672, 32067300, 32099512, 32511292, 32637456, 32460826, 32998234, -34337188, 35512400, 36698348, 38945688, 41819560, 44173200, 46582140, 49968188, 53239340, 55529096, -58347668, 62236224, 64938832, 66233228, 69305736, 73911016, 75461504, 74622912, 77919296, 84312352, -84362288, 79118128, 83010440, 97546760, 101596912, 84407920, 69243464, 81434728, 108487656, 119098904, -110885320, 108326592, 117222544, 114166136, 88067232, 63752348, 68513856, 93551368, 107158896, 97117264, -81243064, 75681080, 69503312, 42180336, -511638, -24007794, -4394289, 39977020, 67706400, 61245696, -42284488, 39489540, 53516904, 62232464, 54181012, 45533096, 60391536, 99313600, 133702328, }, +-11462731, -54041428, -56250112, -792421, 79816064, 120961312, 82116552, -9214852, -80828600, -88135416, +-51418276, -17627082, -5667210, -3959960, -2867965, -3746822, -2963528, 8109972, 25592100, 34102040, +28623272, 21260624, 23161148, 31855772, 40087076, 46668040, 53553948, 59299004, 60382944, 55612312, +46720656, 36820756, 28845538, 23300734, 17404818, 7913477, -5710159, -21782464, -38393248, -53689776, +-65853124, -74299176, -79911624, -83453360, -84879288, -84442280, -83029232, -81143208, -78727824, -76015016, +-73440720, -70876624, -67899136, -64530272, -60923036, -56743496, -51612620, -45780056, -39832064, -34133180, +-28903520, -24467892, -21179558, -19245748, -18563386, -18611168, -18833432, -19230180, -20046760, -20867636, +-20792474, -19539416, -17479444, -14470819, -9571335, -2090575, 7872138, 20029044, 34344704, 50779400, +69050192, 88562224, 108419472, 127905736, 146983440, 165609104, 182670320, 196808816, 208435296, 219484640, +230620416, 239943184, 245161024, 246006064, 243747440, 239059488, 231200240, 219135680, 202981232, 184127392, +163848176, 142009328, 117646672, 90771984, 62952408, 35974648, 10460393, -14150307, -38755636, -63661080, +-87979720, -110035992, -128729832, -144301776, -157552816, -168799200, -177886800, -184668032, -189119216, -191449248, +-192279248, -192278704, -191592048, -190071088, -187894624, -185443264, -182765888, -179586000, -175521888, -170055472, +-162886640, -154620432, -146471264, -139066208, -132131448, -125266480, -118172800, -110337176, -101534104, -92527552, +-84378392, -77287400, -70873936, -65020972, -59594280, -54016728, -48020420, -42218992, -37269040, -33144262, +-29650306, -26781806, -24214488, -21324512, -17926120, -14277008, -10492605, -6687801, -3264175, -325344, +2621004, 5818607, 8962523, 12122008, 15790984, 19717122, 23000086, 25480968, 27674084, 29479044, +30463666, 31004296, 31666258, 32123672, 32067300, 32099512, 32511292, 32637456, 32460826, 32998234, +34337188, 35512400, 36698348, 38945688, 41819560, 44173200, 46582140, 49968188, 53239340, 55529096, +58347668, 62236224, 64938832, 66233228, 69305736, 73911016, 75461504, 74622912, 77919296, 84312352, +84362288, 79118128, 83010440, 97546760, 101596912, 84407920, 69243464, 81434728, 108487656, 119098904, +110885320, 108326592, 117222544, 114166136, 88067232, 63752348, 68513856, 93551368, 107158896, 97117264, +81243064, 75681080, 69503312, 42180336, -511638, -24007794, -4394289, 39977020, 67706400, 61245696, +42284488, 39489540, 53516904, 62232464, 54181012, 45533096, 60391536, 99313600, 133702328, }, { 27171036, --11462731, -54041428, -56250112, -792421, 79816064, 120961312, 82116552, -9214852, -80828600, -88135416, --51418276, -17627082, -5667210, -3959960, -2867965, -3746822, -2963528, 8109972, 25592100, 34102040, -28623272, 21260624, 23161148, 31855772, 40087076, 46668040, 53553948, 59299004, 60382944, 55612312, -46720656, 36820756, 28845538, 23300734, 17404818, 7913477, -5710159, -21782464, -38393248, -53689776, --65853124, -74299176, -79911624, -83453360, -84879288, -84442280, -83029232, -81143208, -78727824, -76015016, --73440720, -70876624, -67899136, -64530272, -60923036, -56743496, -51612620, -45780056, -39832064, -34133180, --28903520, -24467892, -21179558, -19245748, -18563386, -18611168, -18833432, -19230180, -20046760, -20867636, --20792474, -19539416, -17479444, -14470819, -9571335, -2090575, 7872138, 20029044, 34344704, 50779400, -69050192, 88562224, 108419472, 127905736, 146983440, 165609104, 182670320, 196808816, 208435296, 219484640, -230620416, 239943184, 245161024, 246006064, 243747440, 239059488, 231200240, 219135680, 202981232, 184127392, -163848176, 142009328, 117646672, 90771984, 62952408, 35974648, 10460393, -14150307, -38755636, -63661080, --87979720, -110035992, -128729832, -144301776, -157552816, -168799200, -177886800, -184668032, -189119216, -191449248, --192279248, -192278704, -191592048, -190071088, -187894624, -185443264, -182765888, -179586000, -175521888, -170055472, --162886640, -154620432, -146471264, -139066208, -132131448, -125266480, -118172800, -110337176, -101534104, -92527552, --84378392, -77287400, -70873936, -65020972, -59594280, -54016728, -48020420, -42218992, -37269040, -33144262, --29650306, -26781806, -24214488, -21324512, -17926120, -14277008, -10492605, -6687801, -3264175, -325344, -2621004, 5818607, 8962523, 12122008, 15790984, 19717122, 23000086, 25480968, 27674084, 29479044, -30463666, 31004296, 31666258, 32123672, 32067300, 32099512, 32511292, 32637456, 32460826, 32998234, -34337188, 35512400, 36698348, 38945688, 41819560, 44173200, 46582140, 49968188, 53239340, 55529096, -58347668, 62236224, 64938832, 66233228, 69305736, 73911016, 75461504, 74622912, 77919296, 84312352, -84362288, 79118128, 83010440, 97546760, 101596912, 84407920, 69243464, 81434728, 108487656, 119098904, -110885320, 108326592, 117222544, 114166136, 88067232, 63752348, 68513856, 93551368, 107158896, 97117264, -81243064, 75681080, 69503312, 42180336, -511638, -24007794, -4394289, 39977020, 67706400, 61245696, -42284488, 39489540, 53516904, 62232464, 54181012, 45533096, 60391536, 99313600, 133702328, }, +-11462731, -54041428, -56250112, -792421, 79816064, 120961312, 82116552, -9214852, -80828600, -88135416, +-51418276, -17627082, -5667210, -3959960, -2867965, -3746822, -2963528, 8109972, 25592100, 34102040, +28623272, 21260624, 23161148, 31855772, 40087076, 46668040, 53553948, 59299004, 60382944, 55612312, +46720656, 36820756, 28845538, 23300734, 17404818, 7913477, -5710159, -21782464, -38393248, -53689776, +-65853124, -74299176, -79911624, -83453360, -84879288, -84442280, -83029232, -81143208, -78727824, -76015016, +-73440720, -70876624, -67899136, -64530272, -60923036, -56743496, -51612620, -45780056, -39832064, -34133180, +-28903520, -24467892, -21179558, -19245748, -18563386, -18611168, -18833432, -19230180, -20046760, -20867636, +-20792474, -19539416, -17479444, -14470819, -9571335, -2090575, 7872138, 20029044, 34344704, 50779400, +69050192, 88562224, 108419472, 127905736, 146983440, 165609104, 182670320, 196808816, 208435296, 219484640, +230620416, 239943184, 245161024, 246006064, 243747440, 239059488, 231200240, 219135680, 202981232, 184127392, +163848176, 142009328, 117646672, 90771984, 62952408, 35974648, 10460393, -14150307, -38755636, -63661080, +-87979720, -110035992, -128729832, -144301776, -157552816, -168799200, -177886800, -184668032, -189119216, -191449248, +-192279248, -192278704, -191592048, -190071088, -187894624, -185443264, -182765888, -179586000, -175521888, -170055472, +-162886640, -154620432, -146471264, -139066208, -132131448, -125266480, -118172800, -110337176, -101534104, -92527552, +-84378392, -77287400, -70873936, -65020972, -59594280, -54016728, -48020420, -42218992, -37269040, -33144262, +-29650306, -26781806, -24214488, -21324512, -17926120, -14277008, -10492605, -6687801, -3264175, -325344, +2621004, 5818607, 8962523, 12122008, 15790984, 19717122, 23000086, 25480968, 27674084, 29479044, +30463666, 31004296, 31666258, 32123672, 32067300, 32099512, 32511292, 32637456, 32460826, 32998234, +34337188, 35512400, 36698348, 38945688, 41819560, 44173200, 46582140, 49968188, 53239340, 55529096, +58347668, 62236224, 64938832, 66233228, 69305736, 73911016, 75461504, 74622912, 77919296, 84312352, +84362288, 79118128, 83010440, 97546760, 101596912, 84407920, 69243464, 81434728, 108487656, 119098904, +110885320, 108326592, 117222544, 114166136, 88067232, 63752348, 68513856, 93551368, 107158896, 97117264, +81243064, 75681080, 69503312, 42180336, -511638, -24007794, -4394289, 39977020, 67706400, 61245696, +42284488, 39489540, 53516904, 62232464, 54181012, 45533096, 60391536, 99313600, 133702328, }, }, { { -3897146, -35413080, 51705500, 3330210, -85761368, -165858208, -204616544, -181687312, -84494888, 65331820, 209428512, -301374624, 341843968, 351401344, 330865504, 269984864, 179177984, 87553984, 12978317, -49327164, -110070352, --170494096, -224259568, -265882096, -294854336, -315021344, -330888032, -343430944, -350049504, -348534464, -339208992, --323108768, -300449056, -271576672, -237778512, -200570144, -161187968, -120923728, -81239840, -43578884, -9268003, -20954072, 47559784, 71691592, 93727464, 112951736, 128653064, 140887280, 150231520, 157535648, 163890048, -170114528, 176132320, 181208960, 184758752, 186622240, 186763424, 185128128, 181812416, 177136256, 171495360, -165172624, 158268464, 150820992, 142963888, 134866800, 126565168, 118074560, 109640848, 101615168, 94079112, -86895240, 80117784, 74002824, 68568616, 63534376, 58829240, 54836532, 51887500, 49731964, 47737488, -45477800, 42900280, 40004400, 36643052, 32768452, 28736552, 25207700, 22724672, 21399138, 20984674, -21247204, 22197464, 23807540, 25405268, 25567404, 22917408, 17092360, 8771934, -1275605, -12981539, --26720066, -42343008, -58632748, -73864848, -86944632, -97880696, -107090176, -114465712, -119330832, -121168008, --120162984, -117121072, -112989856, -108338400, -103112504, -96983048, -89999968, -82793544, -76139568, -70478264, --65733400, -61304216, -56340844, -50405200, -43847856, -37334540, -31153546, -25199110, -19321448, -13348221, --7006703, -175557, 6962142, 14204531, 21529598, 28902446, 36197984, 43416752, 50667728, 57896696, -64880312, 71430136, 77346992, 82315192, 86084568, 88622352, 89958624, 90127208, 89313312, 87725784, -85310400, 81918448, 77646032, 72637024, 66811976, 60207388, 53271016, 46413028, 39657044, 33063732, -26965416, 21463026, 16284905, 11389180, 7116224, 3644817, 912144, -1013075, -2124935, -2820720, --3437048, -3884261, -4232154, -4928475, -5937793, -6543920, -6436546, -6000606, -5334350, -4181151, --2854006, -1941862, -1307818, -608275, -191663, -234076, -26307, 710817, 1257889, 1552631, -2401424, 3464965, 3694746, 3820374, 5041755, 5924908, 4955856, 4556961, 6925635, 8632884, -6834367, 6883759, 13447543, 18618146, 13105019, 6052683, 15908022, 41180148, 59230820, 58138288, -51392504, 54032300, 61192548, 60428580, 52166672, 46730316, 49414136, 57579944, 66939748, 74114496, -77275592, 78338592, 79395152, 73194832, 44445396, -9811316, -63851132, -81508280, -57873612, -29639570, --28724742, -38796440, -25851408, -2009508, -9972914, -33472828, 14603426, 167614864, 316267424, }, +35413080, 51705500, 3330210, -85761368, -165858208, -204616544, -181687312, -84494888, 65331820, 209428512, +301374624, 341843968, 351401344, 330865504, 269984864, 179177984, 87553984, 12978317, -49327164, -110070352, +-170494096, -224259568, -265882096, -294854336, -315021344, -330888032, -343430944, -350049504, -348534464, -339208992, +-323108768, -300449056, -271576672, -237778512, -200570144, -161187968, -120923728, -81239840, -43578884, -9268003, +20954072, 47559784, 71691592, 93727464, 112951736, 128653064, 140887280, 150231520, 157535648, 163890048, +170114528, 176132320, 181208960, 184758752, 186622240, 186763424, 185128128, 181812416, 177136256, 171495360, +165172624, 158268464, 150820992, 142963888, 134866800, 126565168, 118074560, 109640848, 101615168, 94079112, +86895240, 80117784, 74002824, 68568616, 63534376, 58829240, 54836532, 51887500, 49731964, 47737488, +45477800, 42900280, 40004400, 36643052, 32768452, 28736552, 25207700, 22724672, 21399138, 20984674, +21247204, 22197464, 23807540, 25405268, 25567404, 22917408, 17092360, 8771934, -1275605, -12981539, +-26720066, -42343008, -58632748, -73864848, -86944632, -97880696, -107090176, -114465712, -119330832, -121168008, +-120162984, -117121072, -112989856, -108338400, -103112504, -96983048, -89999968, -82793544, -76139568, -70478264, +-65733400, -61304216, -56340844, -50405200, -43847856, -37334540, -31153546, -25199110, -19321448, -13348221, +-7006703, -175557, 6962142, 14204531, 21529598, 28902446, 36197984, 43416752, 50667728, 57896696, +64880312, 71430136, 77346992, 82315192, 86084568, 88622352, 89958624, 90127208, 89313312, 87725784, +85310400, 81918448, 77646032, 72637024, 66811976, 60207388, 53271016, 46413028, 39657044, 33063732, +26965416, 21463026, 16284905, 11389180, 7116224, 3644817, 912144, -1013075, -2124935, -2820720, +-3437048, -3884261, -4232154, -4928475, -5937793, -6543920, -6436546, -6000606, -5334350, -4181151, +-2854006, -1941862, -1307818, -608275, -191663, -234076, -26307, 710817, 1257889, 1552631, +2401424, 3464965, 3694746, 3820374, 5041755, 5924908, 4955856, 4556961, 6925635, 8632884, +6834367, 6883759, 13447543, 18618146, 13105019, 6052683, 15908022, 41180148, 59230820, 58138288, +51392504, 54032300, 61192548, 60428580, 52166672, 46730316, 49414136, 57579944, 66939748, 74114496, +77275592, 78338592, 79395152, 73194832, 44445396, -9811316, -63851132, -81508280, -57873612, -29639570, +-28724742, -38796440, -25851408, -2009508, -9972914, -33472828, 14603426, 167614864, 316267424, }, { -3897146, -35413080, 51705500, 3330210, -85761368, -165858208, -204616544, -181687312, -84494888, 65331820, 209428512, -301374624, 341843968, 351401344, 330865504, 269984864, 179177984, 87553984, 12978317, -49327164, -110070352, --170494096, -224259568, -265882096, -294854336, -315021344, -330888032, -343430944, -350049504, -348534464, -339208992, --323108768, -300449056, -271576672, -237778512, -200570144, -161187968, -120923728, -81239840, -43578884, -9268003, -20954072, 47559784, 71691592, 93727464, 112951736, 128653064, 140887280, 150231520, 157535648, 163890048, -170114528, 176132320, 181208960, 184758752, 186622240, 186763424, 185128128, 181812416, 177136256, 171495360, -165172624, 158268464, 150820992, 142963888, 134866800, 126565168, 118074560, 109640848, 101615168, 94079112, -86895240, 80117784, 74002824, 68568616, 63534376, 58829240, 54836532, 51887500, 49731964, 47737488, -45477800, 42900280, 40004400, 36643052, 32768452, 28736552, 25207700, 22724672, 21399138, 20984674, -21247204, 22197464, 23807540, 25405268, 25567404, 22917408, 17092360, 8771934, -1275605, -12981539, --26720066, -42343008, -58632748, -73864848, -86944632, -97880696, -107090176, -114465712, -119330832, -121168008, --120162984, -117121072, -112989856, -108338400, -103112504, -96983048, -89999968, -82793544, -76139568, -70478264, --65733400, -61304216, -56340844, -50405200, -43847856, -37334540, -31153546, -25199110, -19321448, -13348221, --7006703, -175557, 6962142, 14204531, 21529598, 28902446, 36197984, 43416752, 50667728, 57896696, -64880312, 71430136, 77346992, 82315192, 86084568, 88622352, 89958624, 90127208, 89313312, 87725784, -85310400, 81918448, 77646032, 72637024, 66811976, 60207388, 53271016, 46413028, 39657044, 33063732, -26965416, 21463026, 16284905, 11389180, 7116224, 3644817, 912144, -1013075, -2124935, -2820720, --3437048, -3884261, -4232154, -4928475, -5937793, -6543920, -6436546, -6000606, -5334350, -4181151, --2854006, -1941862, -1307818, -608275, -191663, -234076, -26307, 710817, 1257889, 1552631, -2401424, 3464965, 3694746, 3820374, 5041755, 5924908, 4955856, 4556961, 6925635, 8632884, -6834367, 6883759, 13447543, 18618146, 13105019, 6052683, 15908022, 41180148, 59230820, 58138288, -51392504, 54032300, 61192548, 60428580, 52166672, 46730316, 49414136, 57579944, 66939748, 74114496, -77275592, 78338592, 79395152, 73194832, 44445396, -9811316, -63851132, -81508280, -57873612, -29639570, --28724742, -38796440, -25851408, -2009508, -9972914, -33472828, 14603426, 167614864, 316267424, }, +35413080, 51705500, 3330210, -85761368, -165858208, -204616544, -181687312, -84494888, 65331820, 209428512, +301374624, 341843968, 351401344, 330865504, 269984864, 179177984, 87553984, 12978317, -49327164, -110070352, +-170494096, -224259568, -265882096, -294854336, -315021344, -330888032, -343430944, -350049504, -348534464, -339208992, +-323108768, -300449056, -271576672, -237778512, -200570144, -161187968, -120923728, -81239840, -43578884, -9268003, +20954072, 47559784, 71691592, 93727464, 112951736, 128653064, 140887280, 150231520, 157535648, 163890048, +170114528, 176132320, 181208960, 184758752, 186622240, 186763424, 185128128, 181812416, 177136256, 171495360, +165172624, 158268464, 150820992, 142963888, 134866800, 126565168, 118074560, 109640848, 101615168, 94079112, +86895240, 80117784, 74002824, 68568616, 63534376, 58829240, 54836532, 51887500, 49731964, 47737488, +45477800, 42900280, 40004400, 36643052, 32768452, 28736552, 25207700, 22724672, 21399138, 20984674, +21247204, 22197464, 23807540, 25405268, 25567404, 22917408, 17092360, 8771934, -1275605, -12981539, +-26720066, -42343008, -58632748, -73864848, -86944632, -97880696, -107090176, -114465712, -119330832, -121168008, +-120162984, -117121072, -112989856, -108338400, -103112504, -96983048, -89999968, -82793544, -76139568, -70478264, +-65733400, -61304216, -56340844, -50405200, -43847856, -37334540, -31153546, -25199110, -19321448, -13348221, +-7006703, -175557, 6962142, 14204531, 21529598, 28902446, 36197984, 43416752, 50667728, 57896696, +64880312, 71430136, 77346992, 82315192, 86084568, 88622352, 89958624, 90127208, 89313312, 87725784, +85310400, 81918448, 77646032, 72637024, 66811976, 60207388, 53271016, 46413028, 39657044, 33063732, +26965416, 21463026, 16284905, 11389180, 7116224, 3644817, 912144, -1013075, -2124935, -2820720, +-3437048, -3884261, -4232154, -4928475, -5937793, -6543920, -6436546, -6000606, -5334350, -4181151, +-2854006, -1941862, -1307818, -608275, -191663, -234076, -26307, 710817, 1257889, 1552631, +2401424, 3464965, 3694746, 3820374, 5041755, 5924908, 4955856, 4556961, 6925635, 8632884, +6834367, 6883759, 13447543, 18618146, 13105019, 6052683, 15908022, 41180148, 59230820, 58138288, +51392504, 54032300, 61192548, 60428580, 52166672, 46730316, 49414136, 57579944, 66939748, 74114496, +77275592, 78338592, 79395152, 73194832, 44445396, -9811316, -63851132, -81508280, -57873612, -29639570, +-28724742, -38796440, -25851408, -2009508, -9972914, -33472828, 14603426, 167614864, 316267424, }, }, }; -const Word32 CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[9][BINAURAL_CHANNELS][240] ={ +const Word32 CRendBin_HOA2_HRIR_coeff_im_48kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][240] ={ { { -150097296, --385323520, -471163808, -416024480, -287259232, -144949248, -11310260, 112675248, 221849024, 302379104, 342134944, -337892064, 294679840, 222711776, 134653136, 42464340, -45433776, -124755376, -193698192, -250782608, -294007168, --322044704, -336072608, -339488160, -335108384, -323229568, -303114624, -275699328, -243782336, -209982560, -175646976, --141630848, -108959560, -78353088, -49810884, -23074712, 1864016, 24938728, 46413028, 66868884, 86862496, -106658536, 126201168, 145286400, 163754752, 181534304, 198576736, 214841776, 230328352, 245016080, 258781440, -271458592, 282983040, 293392448, 302702304, 310913216, 318146496, 324659808, 330664704, 336208960, 341291520, -345992896, 350396320, 354457760, 358098272, 361374784, 364421536, 367263712, 369863264, 372304960, 374736448, -377157184, 379463584, 381680864, 383916928, 386114880, 388108800, 389912704, 391663424, 393264384, 394394496, -394925472, 395063424, 394964128, 394468576, 393364256, 391740224, 389905184, 388003040, 385829792, 383090144, -379791616, 376292832, 372916448, 369625408, 366224352, 362793216, 359735200, 357379936, 355692000, 354391168, -353266432, 352345152, 351798080, 351672992, 351722912, 351575296, 351043776, 350189088, 349097632, 347734496, -346006848, 343839520, 341191136, 338098752, 334711648, 331189760, 327615808, 324025216, 320457184, 316913280, -313361888, 309804576, 306253728, 302653472, 298930272, 295106144, 291248160, 287375712, 283517760, 279792416, -276299552, 273013344, 269879648, 266900000, 264052448, 261259104, 258503888, 255857648, 253352608, 250943120, -248592176, 246255168, 243827440, 241232736, 238500064, 235651440, 232635296, 229448432, 226177280, 222837392, -219350416, 215724928, 212060256, 208359600, 204564992, 200738176, 197007472, 193393248, 189896080, 186621168, -183625424, 180810608, 178123024, 175628192, 173262736, 170817824, 168259104, 165744928, 163291968, 160786400, -158296928, 155976032, 153755536, 151511952, 149363392, 147435488, 145601008, 143802480, 142238576, 140936672, -139611136, 138185744, 136866112, 135566352, 133954128, 132106216, 130324880, 128428112, 126101848, 123649960, -121411208, 118972208, 116022632, 113173464, 110741440, 107897096, 104326904, 101171176, 98777272, 95583424, -91120952, 87607672, 86073296, 83676704, 78086264, 71847288, 68708736, 67931352, 65994320, 61677340, -55762636, 48586816, 42441256, 43353936, 54189064, 67248984, 70312376, 60884920, 49271864, 46098956, -51298016, 57953068, 63517196, 72708968, 88788248, 105026448, 108476912, 93433792, 68637872, 48292076, -37647000, 31427350, 24909736, 19747722, 17267916, 13302587, 4965519, -2489471, -2396055, }, +-385323520, -471163808, -416024480, -287259232, -144949248, -11310260, 112675248, 221849024, 302379104, 342134944, +337892064, 294679840, 222711776, 134653136, 42464340, -45433776, -124755376, -193698192, -250782608, -294007168, +-322044704, -336072608, -339488160, -335108384, -323229568, -303114624, -275699328, -243782336, -209982560, -175646976, +-141630848, -108959560, -78353088, -49810884, -23074712, 1864016, 24938728, 46413028, 66868884, 86862496, +106658536, 126201168, 145286400, 163754752, 181534304, 198576736, 214841776, 230328352, 245016080, 258781440, +271458592, 282983040, 293392448, 302702304, 310913216, 318146496, 324659808, 330664704, 336208960, 341291520, +345992896, 350396320, 354457760, 358098272, 361374784, 364421536, 367263712, 369863264, 372304960, 374736448, +377157184, 379463584, 381680864, 383916928, 386114880, 388108800, 389912704, 391663424, 393264384, 394394496, +394925472, 395063424, 394964128, 394468576, 393364256, 391740224, 389905184, 388003040, 385829792, 383090144, +379791616, 376292832, 372916448, 369625408, 366224352, 362793216, 359735200, 357379936, 355692000, 354391168, +353266432, 352345152, 351798080, 351672992, 351722912, 351575296, 351043776, 350189088, 349097632, 347734496, +346006848, 343839520, 341191136, 338098752, 334711648, 331189760, 327615808, 324025216, 320457184, 316913280, +313361888, 309804576, 306253728, 302653472, 298930272, 295106144, 291248160, 287375712, 283517760, 279792416, +276299552, 273013344, 269879648, 266900000, 264052448, 261259104, 258503888, 255857648, 253352608, 250943120, +248592176, 246255168, 243827440, 241232736, 238500064, 235651440, 232635296, 229448432, 226177280, 222837392, +219350416, 215724928, 212060256, 208359600, 204564992, 200738176, 197007472, 193393248, 189896080, 186621168, +183625424, 180810608, 178123024, 175628192, 173262736, 170817824, 168259104, 165744928, 163291968, 160786400, +158296928, 155976032, 153755536, 151511952, 149363392, 147435488, 145601008, 143802480, 142238576, 140936672, +139611136, 138185744, 136866112, 135566352, 133954128, 132106216, 130324880, 128428112, 126101848, 123649960, +121411208, 118972208, 116022632, 113173464, 110741440, 107897096, 104326904, 101171176, 98777272, 95583424, +91120952, 87607672, 86073296, 83676704, 78086264, 71847288, 68708736, 67931352, 65994320, 61677340, +55762636, 48586816, 42441256, 43353936, 54189064, 67248984, 70312376, 60884920, 49271864, 46098956, +51298016, 57953068, 63517196, 72708968, 88788248, 105026448, 108476912, 93433792, 68637872, 48292076, +37647000, 31427350, 24909736, 19747722, 17267916, 13302587, 4965519, -2489471, -2396055, }, { -150097296, --385323520, -471163808, -416024480, -287259232, -144949248, -11310260, 112675248, 221849024, 302379104, 342134944, -337892064, 294679840, 222711776, 134653136, 42464340, -45433776, -124755376, -193698192, -250782608, -294007168, --322044704, -336072608, -339488160, -335108384, -323229568, -303114624, -275699328, -243782336, -209982560, -175646976, --141630848, -108959560, -78353088, -49810884, -23074712, 1864016, 24938728, 46413028, 66868884, 86862496, -106658536, 126201168, 145286400, 163754752, 181534304, 198576736, 214841776, 230328352, 245016080, 258781440, -271458592, 282983040, 293392448, 302702304, 310913216, 318146496, 324659808, 330664704, 336208960, 341291520, -345992896, 350396320, 354457760, 358098272, 361374784, 364421536, 367263712, 369863264, 372304960, 374736448, -377157184, 379463584, 381680864, 383916928, 386114880, 388108800, 389912704, 391663424, 393264384, 394394496, -394925472, 395063424, 394964128, 394468576, 393364256, 391740224, 389905184, 388003040, 385829792, 383090144, -379791616, 376292832, 372916448, 369625408, 366224352, 362793216, 359735200, 357379936, 355692000, 354391168, -353266432, 352345152, 351798080, 351672992, 351722912, 351575296, 351043776, 350189088, 349097632, 347734496, -346006848, 343839520, 341191136, 338098752, 334711648, 331189760, 327615808, 324025216, 320457184, 316913280, -313361888, 309804576, 306253728, 302653472, 298930272, 295106144, 291248160, 287375712, 283517760, 279792416, -276299552, 273013344, 269879648, 266900000, 264052448, 261259104, 258503888, 255857648, 253352608, 250943120, -248592176, 246255168, 243827440, 241232736, 238500064, 235651440, 232635296, 229448432, 226177280, 222837392, -219350416, 215724928, 212060256, 208359600, 204564992, 200738176, 197007472, 193393248, 189896080, 186621168, -183625424, 180810608, 178123024, 175628192, 173262736, 170817824, 168259104, 165744928, 163291968, 160786400, -158296928, 155976032, 153755536, 151511952, 149363392, 147435488, 145601008, 143802480, 142238576, 140936672, -139611136, 138185744, 136866112, 135566352, 133954128, 132106216, 130324880, 128428112, 126101848, 123649960, -121411208, 118972208, 116022632, 113173464, 110741440, 107897096, 104326904, 101171176, 98777272, 95583424, -91120952, 87607672, 86073296, 83676704, 78086264, 71847288, 68708736, 67931352, 65994320, 61677340, -55762636, 48586816, 42441256, 43353936, 54189064, 67248984, 70312376, 60884920, 49271864, 46098956, -51298016, 57953068, 63517196, 72708968, 88788248, 105026448, 108476912, 93433792, 68637872, 48292076, -37647000, 31427350, 24909736, 19747722, 17267916, 13302587, 4965519, -2489471, -2396055, }, +-385323520, -471163808, -416024480, -287259232, -144949248, -11310260, 112675248, 221849024, 302379104, 342134944, +337892064, 294679840, 222711776, 134653136, 42464340, -45433776, -124755376, -193698192, -250782608, -294007168, +-322044704, -336072608, -339488160, -335108384, -323229568, -303114624, -275699328, -243782336, -209982560, -175646976, +-141630848, -108959560, -78353088, -49810884, -23074712, 1864016, 24938728, 46413028, 66868884, 86862496, +106658536, 126201168, 145286400, 163754752, 181534304, 198576736, 214841776, 230328352, 245016080, 258781440, +271458592, 282983040, 293392448, 302702304, 310913216, 318146496, 324659808, 330664704, 336208960, 341291520, +345992896, 350396320, 354457760, 358098272, 361374784, 364421536, 367263712, 369863264, 372304960, 374736448, +377157184, 379463584, 381680864, 383916928, 386114880, 388108800, 389912704, 391663424, 393264384, 394394496, +394925472, 395063424, 394964128, 394468576, 393364256, 391740224, 389905184, 388003040, 385829792, 383090144, +379791616, 376292832, 372916448, 369625408, 366224352, 362793216, 359735200, 357379936, 355692000, 354391168, +353266432, 352345152, 351798080, 351672992, 351722912, 351575296, 351043776, 350189088, 349097632, 347734496, +346006848, 343839520, 341191136, 338098752, 334711648, 331189760, 327615808, 324025216, 320457184, 316913280, +313361888, 309804576, 306253728, 302653472, 298930272, 295106144, 291248160, 287375712, 283517760, 279792416, +276299552, 273013344, 269879648, 266900000, 264052448, 261259104, 258503888, 255857648, 253352608, 250943120, +248592176, 246255168, 243827440, 241232736, 238500064, 235651440, 232635296, 229448432, 226177280, 222837392, +219350416, 215724928, 212060256, 208359600, 204564992, 200738176, 197007472, 193393248, 189896080, 186621168, +183625424, 180810608, 178123024, 175628192, 173262736, 170817824, 168259104, 165744928, 163291968, 160786400, +158296928, 155976032, 153755536, 151511952, 149363392, 147435488, 145601008, 143802480, 142238576, 140936672, +139611136, 138185744, 136866112, 135566352, 133954128, 132106216, 130324880, 128428112, 126101848, 123649960, +121411208, 118972208, 116022632, 113173464, 110741440, 107897096, 104326904, 101171176, 98777272, 95583424, +91120952, 87607672, 86073296, 83676704, 78086264, 71847288, 68708736, 67931352, 65994320, 61677340, +55762636, 48586816, 42441256, 43353936, 54189064, 67248984, 70312376, 60884920, 49271864, 46098956, +51298016, 57953068, 63517196, 72708968, 88788248, 105026448, 108476912, 93433792, 68637872, 48292076, +37647000, 31427350, 24909736, 19747722, 17267916, 13302587, 4965519, -2489471, -2396055, }, }, { { 74128992, -125036160, -31832686, -328685248, -579388928, -630343360, -464086784, -178695872, 109277928, 336225088, 491736160, -583223296, 615155840, 591585024, 521611424, 416995680, 288475232, 146677424, 3992709, -127547640, -240920816, --335788608, -414927648, -479317824, -527319456, -558024704, -573691136, -578245376, -574549056, -563953344, -547510080, --526430368, -501655936, -473858912, -443802176, -412205728, -379325056, -344973920, -308924640, -271170816, -232013056, --192055376, -152036480, -112535656, -73853040, -36146980, 385473, 35446900, 68685656, 99869800, 129092760, -156785632, 183442352, 209277648, 234109536, 257541264, 279244288, 299046240, 316826304, 332494880, 346143776, -358055840, 368435168, 377279040, 384639008, 390804448, 396035712, 400307584, 403578752, 406126208, 408332736, -410309504, 412082240, 414000480, 416552224, 419807808, 423482688, 427579552, 432489792, 438335232, 444650976, -451000032, 457526208, 464563520, 471950880, 479151936, 485910048, 492437856, 499026336, 505774816, 512669312, -519649696, 526549568, 533144480, 539250880, 544640000, 548879616, 551407744, 551783552, 549847616, 545685824, -539488128, 531410400, 521581888, 510285600, 498035808, 485381760, 472712704, 460356608, 448764480, 438447968, -429737792, 422639264, 416840000, 411893792, 407551072, 403941152, 401302432, 399547392, 398207360, 396715392, -394635008, 391768672, 388279008, 384596608, 381029632, 377540512, 373980512, 370345376, 366690880, 362990784, -359219264, 355432160, 351699840, 348096896, 344748448, 341745184, 339038816, 336535392, 334219328, 332112640, -330238976, 328685792, 327552992, 326791712, 326244096, 325789920, 325290080, 324525568, 323402976, 322057056, -320560800, 318759584, 316548224, 313989504, 311008768, 307334976, 302885376, 297839328, 292288640, 286212864, -279763424, 273154016, 266364208, 259311328, 252110816, 244856624, 237492896, 230150656, 223164896, 216559232, -210064704, 203690976, 197608768, 191548560, 185054576, 178202496, 171357376, 164587984, 157976416, 151910848, -146453552, 141165376, 135994768, 131321848, 126925408, 122191816, 117317568, 112863152, 108515568, 103818488, -99252400, 95040112, 90424632, 85497232, 81323592, 77207944, 71499928, 65615288, 61895848, 57695908, -49410916, 41340132, 39055748, 35219804, 18512920, -2759517, -7189776, 5656472, 12028593, 1793686, --8701604, -13099650, -32475858, -75995152, -113358680, -113468744, -89127552, -77423224, -92568896, -120380952, --144085408, -157587712, -168697184, -199903888, -261747648, -314558048, -291328704, -181573504, -61053496, -9470940, --24637006, -48244832, -51813412, -58076012, -88137024, -125196152, -135724720, -103910832, -38646652, }, +125036160, -31832686, -328685248, -579388928, -630343360, -464086784, -178695872, 109277928, 336225088, 491736160, +583223296, 615155840, 591585024, 521611424, 416995680, 288475232, 146677424, 3992709, -127547640, -240920816, +-335788608, -414927648, -479317824, -527319456, -558024704, -573691136, -578245376, -574549056, -563953344, -547510080, +-526430368, -501655936, -473858912, -443802176, -412205728, -379325056, -344973920, -308924640, -271170816, -232013056, +-192055376, -152036480, -112535656, -73853040, -36146980, 385473, 35446900, 68685656, 99869800, 129092760, +156785632, 183442352, 209277648, 234109536, 257541264, 279244288, 299046240, 316826304, 332494880, 346143776, +358055840, 368435168, 377279040, 384639008, 390804448, 396035712, 400307584, 403578752, 406126208, 408332736, +410309504, 412082240, 414000480, 416552224, 419807808, 423482688, 427579552, 432489792, 438335232, 444650976, +451000032, 457526208, 464563520, 471950880, 479151936, 485910048, 492437856, 499026336, 505774816, 512669312, +519649696, 526549568, 533144480, 539250880, 544640000, 548879616, 551407744, 551783552, 549847616, 545685824, +539488128, 531410400, 521581888, 510285600, 498035808, 485381760, 472712704, 460356608, 448764480, 438447968, +429737792, 422639264, 416840000, 411893792, 407551072, 403941152, 401302432, 399547392, 398207360, 396715392, +394635008, 391768672, 388279008, 384596608, 381029632, 377540512, 373980512, 370345376, 366690880, 362990784, +359219264, 355432160, 351699840, 348096896, 344748448, 341745184, 339038816, 336535392, 334219328, 332112640, +330238976, 328685792, 327552992, 326791712, 326244096, 325789920, 325290080, 324525568, 323402976, 322057056, +320560800, 318759584, 316548224, 313989504, 311008768, 307334976, 302885376, 297839328, 292288640, 286212864, +279763424, 273154016, 266364208, 259311328, 252110816, 244856624, 237492896, 230150656, 223164896, 216559232, +210064704, 203690976, 197608768, 191548560, 185054576, 178202496, 171357376, 164587984, 157976416, 151910848, +146453552, 141165376, 135994768, 131321848, 126925408, 122191816, 117317568, 112863152, 108515568, 103818488, +99252400, 95040112, 90424632, 85497232, 81323592, 77207944, 71499928, 65615288, 61895848, 57695908, +49410916, 41340132, 39055748, 35219804, 18512920, -2759517, -7189776, 5656472, 12028593, 1793686, +-8701604, -13099650, -32475858, -75995152, -113358680, -113468744, -89127552, -77423224, -92568896, -120380952, +-144085408, -157587712, -168697184, -199903888, -261747648, -314558048, -291328704, -181573504, -61053496, -9470940, +-24637006, -48244832, -51813412, -58076012, -88137024, -125196152, -135724720, -103910832, -38646652, }, { -74128992, --125036160, 31832686, 328685248, 579388928, 630343360, 464086784, 178695872, -109277928, -336225088, -491736160, --583223296, -615155840, -591585024, -521611424, -416995680, -288475232, -146677424, -3992709, 127547640, 240920816, -335788608, 414927648, 479317824, 527319456, 558024704, 573691136, 578245376, 574549056, 563953344, 547510080, -526430368, 501655936, 473858912, 443802176, 412205728, 379325056, 344973920, 308924640, 271170816, 232013056, -192055376, 152036480, 112535656, 73853040, 36146980, -385473, -35446900, -68685656, -99869800, -129092760, --156785632, -183442352, -209277648, -234109536, -257541264, -279244288, -299046240, -316826304, -332494880, -346143776, --358055840, -368435168, -377279040, -384639008, -390804448, -396035712, -400307584, -403578752, -406126208, -408332736, --410309504, -412082240, -414000480, -416552224, -419807808, -423482688, -427579552, -432489792, -438335232, -444650976, --451000032, -457526208, -464563520, -471950880, -479151936, -485910048, -492437856, -499026336, -505774816, -512669312, --519649696, -526549568, -533144480, -539250880, -544640000, -548879616, -551407744, -551783552, -549847616, -545685824, --539488128, -531410400, -521581888, -510285600, -498035808, -485381760, -472712704, -460356608, -448764480, -438447968, --429737792, -422639264, -416840000, -411893792, -407551072, -403941152, -401302432, -399547392, -398207360, -396715392, --394635008, -391768672, -388279008, -384596608, -381029632, -377540512, -373980512, -370345376, -366690880, -362990784, --359219264, -355432160, -351699840, -348096896, -344748448, -341745184, -339038816, -336535392, -334219328, -332112640, --330238976, -328685792, -327552992, -326791712, -326244096, -325789920, -325290080, -324525568, -323402976, -322057056, --320560800, -318759584, -316548224, -313989504, -311008768, -307334976, -302885376, -297839328, -292288640, -286212864, --279763424, -273154016, -266364208, -259311328, -252110816, -244856624, -237492896, -230150656, -223164896, -216559232, --210064704, -203690976, -197608768, -191548560, -185054576, -178202496, -171357376, -164587984, -157976416, -151910848, --146453552, -141165376, -135994768, -131321848, -126925408, -122191816, -117317568, -112863152, -108515568, -103818488, --99252400, -95040112, -90424632, -85497232, -81323592, -77207944, -71499928, -65615288, -61895848, -57695908, --49410916, -41340132, -39055748, -35219804, -18512920, 2759517, 7189776, -5656472, -12028593, -1793686, -8701604, 13099650, 32475858, 75995152, 113358680, 113468744, 89127552, 77423224, 92568896, 120380952, -144085408, 157587712, 168697184, 199903888, 261747648, 314558048, 291328704, 181573504, 61053496, 9470940, -24637006, 48244832, 51813412, 58076012, 88137024, 125196152, 135724720, 103910832, 38646652, }, +-125036160, 31832686, 328685248, 579388928, 630343360, 464086784, 178695872, -109277928, -336225088, -491736160, +-583223296, -615155840, -591585024, -521611424, -416995680, -288475232, -146677424, -3992709, 127547640, 240920816, +335788608, 414927648, 479317824, 527319456, 558024704, 573691136, 578245376, 574549056, 563953344, 547510080, +526430368, 501655936, 473858912, 443802176, 412205728, 379325056, 344973920, 308924640, 271170816, 232013056, +192055376, 152036480, 112535656, 73853040, 36146980, -385473, -35446900, -68685656, -99869800, -129092760, +-156785632, -183442352, -209277648, -234109536, -257541264, -279244288, -299046240, -316826304, -332494880, -346143776, +-358055840, -368435168, -377279040, -384639008, -390804448, -396035712, -400307584, -403578752, -406126208, -408332736, +-410309504, -412082240, -414000480, -416552224, -419807808, -423482688, -427579552, -432489792, -438335232, -444650976, +-451000032, -457526208, -464563520, -471950880, -479151936, -485910048, -492437856, -499026336, -505774816, -512669312, +-519649696, -526549568, -533144480, -539250880, -544640000, -548879616, -551407744, -551783552, -549847616, -545685824, +-539488128, -531410400, -521581888, -510285600, -498035808, -485381760, -472712704, -460356608, -448764480, -438447968, +-429737792, -422639264, -416840000, -411893792, -407551072, -403941152, -401302432, -399547392, -398207360, -396715392, +-394635008, -391768672, -388279008, -384596608, -381029632, -377540512, -373980512, -370345376, -366690880, -362990784, +-359219264, -355432160, -351699840, -348096896, -344748448, -341745184, -339038816, -336535392, -334219328, -332112640, +-330238976, -328685792, -327552992, -326791712, -326244096, -325789920, -325290080, -324525568, -323402976, -322057056, +-320560800, -318759584, -316548224, -313989504, -311008768, -307334976, -302885376, -297839328, -292288640, -286212864, +-279763424, -273154016, -266364208, -259311328, -252110816, -244856624, -237492896, -230150656, -223164896, -216559232, +-210064704, -203690976, -197608768, -191548560, -185054576, -178202496, -171357376, -164587984, -157976416, -151910848, +-146453552, -141165376, -135994768, -131321848, -126925408, -122191816, -117317568, -112863152, -108515568, -103818488, +-99252400, -95040112, -90424632, -85497232, -81323592, -77207944, -71499928, -65615288, -61895848, -57695908, +-49410916, -41340132, -39055748, -35219804, -18512920, 2759517, 7189776, -5656472, -12028593, -1793686, +8701604, 13099650, 32475858, 75995152, 113358680, 113468744, 89127552, 77423224, 92568896, 120380952, +144085408, 157587712, 168697184, 199903888, 261747648, 314558048, 291328704, 181573504, 61053496, 9470940, +24637006, 48244832, 51813412, 58076012, 88137024, 125196152, 135724720, 103910832, 38646652, }, }, { { -20155744, --57068304, -71151504, -39433704, 21933862, 59390808, 41422812, -7452842, -42186244, -43565464, -19565724, -15054934, 44517872, 54613192, 45892800, 35036196, 33049236, 31137440, 15760382, -12230993, -41761576, --66220880, -84941032, -95825552, -95630672, -86114632, -73918000, -64082524, -56340308, -47381544, -35001300, --20164334, -5961952, 4998805, 11794517, 14131516, 11659226, 5186710, -2616172, -8871792, -12341052, --13105556, -11278047, -6787659, 111669, 8864812, 19053548, 30604864, 43779140, 59068684, 76820320, -96801048, 118265680, 140499120, 163101920, 185704720, 207685824, 228411200, 247590912, 265105248, 280574112, -293419296, 303271936, 309921088, 312887840, 311509152, 305471488, 294861312, 279709760, 259958800, 235875840, -208078816, 177226992, 144154128, 110148728, 76523432, 43973484, 12924630, -15611669, -40300216, -60733520, --77667504, -91633664, -101980240, -107982456, -110469240, -111319112, -111284752, -109334296, -104599632, -98070208, --91601448, -85908472, -80414136, -74633112, -68831680, -63568200, -59341416, -56565256, -55340652, -55296632, --55941412, -57078504, -58849640, -61640296, -65789772, -70942656, -75847512, -79322680, -81250040, -82208360, --82482696, -81897512, -80183816, -76993728, -71936944, -65003256, -56622164, -47178068, -36929740, -26374320, --16068010, -6155225, 3346853, 12017318, 19338090, 25205016, 29654064, 32559074, 33995204, 34316788, -33622616, 31844498, 29461866, 27319214, 25758530, 24705188, 24274618, 24349244, 24042154, 22586160, -20238960, 17517024, 14314589, 10501732, 6432788, 2237678, -2389076, -7303055, -11904039, -16127065, --20292646, -24174760, -27430346, -30488900, -33845952, -37204080, -40331892, -43709884, -47450800, -50910932, --54007068, -57383448, -60954712, -63988572, -66580048, -69206952, -71360880, -72519448, -73506752, -75081400, --76629736, -77875272, -79886928, -83066280, -86566136, -90516432, -95884608, -101905616, -107004816, -111725520, --117132888, -121851984, -124525600, -126669320, -129272072, -130303400, -129090072, -128088808, -127532072, -124883688, --121162104, -119428544, -117273544, -111342736, -106378288, -106409424, -103459320, -92259656, -85136456, -89434640, --86687472, -65751116, -54604068, -73708616, -80806592, -25334402, 56436408, 75987632, 20873004, -31660352, --37648072, -36377836, -53824532, -44966160, 20563230, 87744032, 89147416, 38726648, -581431, -6444599, --6936372, -25312926, -52908628, -63184336, -33217278, 30641370, 79638360, 63588600, -4334696, -54877872, --46950972, -11652246, 3220152, -2754685, 17180, 17445620, 28529320, 22219476, 7569880, }, +-57068304, -71151504, -39433704, 21933862, 59390808, 41422812, -7452842, -42186244, -43565464, -19565724, +15054934, 44517872, 54613192, 45892800, 35036196, 33049236, 31137440, 15760382, -12230993, -41761576, +-66220880, -84941032, -95825552, -95630672, -86114632, -73918000, -64082524, -56340308, -47381544, -35001300, +-20164334, -5961952, 4998805, 11794517, 14131516, 11659226, 5186710, -2616172, -8871792, -12341052, +-13105556, -11278047, -6787659, 111669, 8864812, 19053548, 30604864, 43779140, 59068684, 76820320, +96801048, 118265680, 140499120, 163101920, 185704720, 207685824, 228411200, 247590912, 265105248, 280574112, +293419296, 303271936, 309921088, 312887840, 311509152, 305471488, 294861312, 279709760, 259958800, 235875840, +208078816, 177226992, 144154128, 110148728, 76523432, 43973484, 12924630, -15611669, -40300216, -60733520, +-77667504, -91633664, -101980240, -107982456, -110469240, -111319112, -111284752, -109334296, -104599632, -98070208, +-91601448, -85908472, -80414136, -74633112, -68831680, -63568200, -59341416, -56565256, -55340652, -55296632, +-55941412, -57078504, -58849640, -61640296, -65789772, -70942656, -75847512, -79322680, -81250040, -82208360, +-82482696, -81897512, -80183816, -76993728, -71936944, -65003256, -56622164, -47178068, -36929740, -26374320, +-16068010, -6155225, 3346853, 12017318, 19338090, 25205016, 29654064, 32559074, 33995204, 34316788, +33622616, 31844498, 29461866, 27319214, 25758530, 24705188, 24274618, 24349244, 24042154, 22586160, +20238960, 17517024, 14314589, 10501732, 6432788, 2237678, -2389076, -7303055, -11904039, -16127065, +-20292646, -24174760, -27430346, -30488900, -33845952, -37204080, -40331892, -43709884, -47450800, -50910932, +-54007068, -57383448, -60954712, -63988572, -66580048, -69206952, -71360880, -72519448, -73506752, -75081400, +-76629736, -77875272, -79886928, -83066280, -86566136, -90516432, -95884608, -101905616, -107004816, -111725520, +-117132888, -121851984, -124525600, -126669320, -129272072, -130303400, -129090072, -128088808, -127532072, -124883688, +-121162104, -119428544, -117273544, -111342736, -106378288, -106409424, -103459320, -92259656, -85136456, -89434640, +-86687472, -65751116, -54604068, -73708616, -80806592, -25334402, 56436408, 75987632, 20873004, -31660352, +-37648072, -36377836, -53824532, -44966160, 20563230, 87744032, 89147416, 38726648, -581431, -6444599, +-6936372, -25312926, -52908628, -63184336, -33217278, 30641370, 79638360, 63588600, -4334696, -54877872, +-46950972, -11652246, 3220152, -2754685, 17180, 17445620, 28529320, 22219476, 7569880, }, { -20155744, --57068304, -71151504, -39433704, 21933862, 59390808, 41422812, -7452842, -42186244, -43565464, -19565724, -15054934, 44517872, 54613192, 45892800, 35036196, 33049236, 31137440, 15760382, -12230993, -41761576, --66220880, -84941032, -95825552, -95630672, -86114632, -73918000, -64082524, -56340308, -47381544, -35001300, --20164334, -5961952, 4998805, 11794517, 14131516, 11659226, 5186710, -2616172, -8871792, -12341052, --13105556, -11278047, -6787659, 111669, 8864812, 19053548, 30604864, 43779140, 59068684, 76820320, -96801048, 118265680, 140499120, 163101920, 185704720, 207685824, 228411200, 247590912, 265105248, 280574112, -293419296, 303271936, 309921088, 312887840, 311509152, 305471488, 294861312, 279709760, 259958800, 235875840, -208078816, 177226992, 144154128, 110148728, 76523432, 43973484, 12924630, -15611669, -40300216, -60733520, --77667504, -91633664, -101980240, -107982456, -110469240, -111319112, -111284752, -109334296, -104599632, -98070208, --91601448, -85908472, -80414136, -74633112, -68831680, -63568200, -59341416, -56565256, -55340652, -55296632, --55941412, -57078504, -58849640, -61640296, -65789772, -70942656, -75847512, -79322680, -81250040, -82208360, --82482696, -81897512, -80183816, -76993728, -71936944, -65003256, -56622164, -47178068, -36929740, -26374320, --16068010, -6155225, 3346853, 12017318, 19338090, 25205016, 29654064, 32559074, 33995204, 34316788, -33622616, 31844498, 29461866, 27319214, 25758530, 24705188, 24274618, 24349244, 24042154, 22586160, -20238960, 17517024, 14314589, 10501732, 6432788, 2237678, -2389076, -7303055, -11904039, -16127065, --20292646, -24174760, -27430346, -30488900, -33845952, -37204080, -40331892, -43709884, -47450800, -50910932, --54007068, -57383448, -60954712, -63988572, -66580048, -69206952, -71360880, -72519448, -73506752, -75081400, --76629736, -77875272, -79886928, -83066280, -86566136, -90516432, -95884608, -101905616, -107004816, -111725520, --117132888, -121851984, -124525600, -126669320, -129272072, -130303400, -129090072, -128088808, -127532072, -124883688, --121162104, -119428544, -117273544, -111342736, -106378288, -106409424, -103459320, -92259656, -85136456, -89434640, --86687472, -65751116, -54604068, -73708616, -80806592, -25334402, 56436408, 75987632, 20873004, -31660352, --37648072, -36377836, -53824532, -44966160, 20563230, 87744032, 89147416, 38726648, -581431, -6444599, --6936372, -25312926, -52908628, -63184336, -33217278, 30641370, 79638360, 63588600, -4334696, -54877872, --46950972, -11652246, 3220152, -2754685, 17180, 17445620, 28529320, 22219476, 7569880, }, +-57068304, -71151504, -39433704, 21933862, 59390808, 41422812, -7452842, -42186244, -43565464, -19565724, +15054934, 44517872, 54613192, 45892800, 35036196, 33049236, 31137440, 15760382, -12230993, -41761576, +-66220880, -84941032, -95825552, -95630672, -86114632, -73918000, -64082524, -56340308, -47381544, -35001300, +-20164334, -5961952, 4998805, 11794517, 14131516, 11659226, 5186710, -2616172, -8871792, -12341052, +-13105556, -11278047, -6787659, 111669, 8864812, 19053548, 30604864, 43779140, 59068684, 76820320, +96801048, 118265680, 140499120, 163101920, 185704720, 207685824, 228411200, 247590912, 265105248, 280574112, +293419296, 303271936, 309921088, 312887840, 311509152, 305471488, 294861312, 279709760, 259958800, 235875840, +208078816, 177226992, 144154128, 110148728, 76523432, 43973484, 12924630, -15611669, -40300216, -60733520, +-77667504, -91633664, -101980240, -107982456, -110469240, -111319112, -111284752, -109334296, -104599632, -98070208, +-91601448, -85908472, -80414136, -74633112, -68831680, -63568200, -59341416, -56565256, -55340652, -55296632, +-55941412, -57078504, -58849640, -61640296, -65789772, -70942656, -75847512, -79322680, -81250040, -82208360, +-82482696, -81897512, -80183816, -76993728, -71936944, -65003256, -56622164, -47178068, -36929740, -26374320, +-16068010, -6155225, 3346853, 12017318, 19338090, 25205016, 29654064, 32559074, 33995204, 34316788, +33622616, 31844498, 29461866, 27319214, 25758530, 24705188, 24274618, 24349244, 24042154, 22586160, +20238960, 17517024, 14314589, 10501732, 6432788, 2237678, -2389076, -7303055, -11904039, -16127065, +-20292646, -24174760, -27430346, -30488900, -33845952, -37204080, -40331892, -43709884, -47450800, -50910932, +-54007068, -57383448, -60954712, -63988572, -66580048, -69206952, -71360880, -72519448, -73506752, -75081400, +-76629736, -77875272, -79886928, -83066280, -86566136, -90516432, -95884608, -101905616, -107004816, -111725520, +-117132888, -121851984, -124525600, -126669320, -129272072, -130303400, -129090072, -128088808, -127532072, -124883688, +-121162104, -119428544, -117273544, -111342736, -106378288, -106409424, -103459320, -92259656, -85136456, -89434640, +-86687472, -65751116, -54604068, -73708616, -80806592, -25334402, 56436408, 75987632, 20873004, -31660352, +-37648072, -36377836, -53824532, -44966160, 20563230, 87744032, 89147416, 38726648, -581431, -6444599, +-6936372, -25312926, -52908628, -63184336, -33217278, 30641370, 79638360, 63588600, -4334696, -54877872, +-46950972, -11652246, 3220152, -2754685, 17180, 17445620, 28529320, 22219476, 7569880, }, }, { { -593779, --15749645, -47285980, -61542588, -36806796, 1975148, 12770012, -12308303, -41329932, -41480256, -9482751, -34246460, 68642168, 86235424, 92510376, 96318936, 99675456, 95814816, 77260016, 43951476, 2250026, --41162968, -81703696, -116041960, -143292992, -166559376, -189761856, -212546128, -230621488, -240955184, -243966496, --240413472, -229020000, -208530864, -180199104, -146741312, -110020952, -71091376, -31654982, 5920613, 39943732, -69974680, 96199752, 118821880, 138070848, 154407296, 168472784, 180739200, 191128736, 199068512, 204017920, -205905024, 205180256, 202813184, 200209904, 198603040, 198308304, 198823696, 199611296, 200352176, 200629728, -200044544, 198682496, 196919952, 194844416, 192390912, 189826288, 187396400, 184678768, 181011392, 176376592, -171086272, 164806480, 156766848, 146878224, 135744592, 123561912, 109926464, 94966024, 79778480, 65297460, -51424716, 37884832, 25379498, 15050639, 7016366, 285615, -5872294, -11288248, -15758235, -19619948, --23003844, -25256556, -25722560, -24534464, -22019760, -17813376, -11227045, -2228551, 8506183, 20395726, -33462090, 48085916, 64347200, 81491632, 98180808, 113563768, 127978752, 142265952, 156538144, 169929840, -181377536, 190427568, 197567424, 203966928, 210536608, 217013424, 222235024, 225385920, 226701264, 227103376, -227632736, 229052752, 231417664, 234032224, 236215152, 237979312, 239742384, 241751360, 244083536, 246742112, -249400160, 251434896, 252450656, 252423824, 251344704, 249170912, 246069408, 242220048, 237487536, 231686112, -224932800, 217416608, 209194432, 200498208, 191813232, 183445040, 175468736, 168131856, 161751152, 156293856, -151620928, 147904176, 145274048, 143464800, 142311056, 142009328, 142456544, 143032080, 143394992, 143675776, -143722496, 143104016, 141934176, 140727824, 139594496, 138438608, 137487264, 136726528, 135519104, 133565968, -131283192, 128694400, 125229432, 120950576, 116418848, 111328240, 104999064, 97896264, 90795608, 83313240, -75169984, 67478232, 60897804, 54517632, 48195976, 43270720, 39707508, 36021352, 32581622, 30756798, -29306710, 26775362, 25389700, 26396332, 25849260, 22560926, 22858890, 27938226, 27973658, 21383032, -23074174, 35598300, 35306780, 15142981, 14190035, 62300112, 118703768, 119914416, 73123968, 40620728, -40768904, 35194036, 16297790, 29255170, 85286240, 125082872, 104374688, 57344256, 36025112, 36459976, -25771414, 80531, -26517664, -55254756, -82899312, -78341816, -23211614, 44045428, 67240936, 44583908, -23708220, 30807800, 42936788, 35355096, 22083112, 30932892, 57170848, 64223184, 28750512, }, +-15749645, -47285980, -61542588, -36806796, 1975148, 12770012, -12308303, -41329932, -41480256, -9482751, +34246460, 68642168, 86235424, 92510376, 96318936, 99675456, 95814816, 77260016, 43951476, 2250026, +-41162968, -81703696, -116041960, -143292992, -166559376, -189761856, -212546128, -230621488, -240955184, -243966496, +-240413472, -229020000, -208530864, -180199104, -146741312, -110020952, -71091376, -31654982, 5920613, 39943732, +69974680, 96199752, 118821880, 138070848, 154407296, 168472784, 180739200, 191128736, 199068512, 204017920, +205905024, 205180256, 202813184, 200209904, 198603040, 198308304, 198823696, 199611296, 200352176, 200629728, +200044544, 198682496, 196919952, 194844416, 192390912, 189826288, 187396400, 184678768, 181011392, 176376592, +171086272, 164806480, 156766848, 146878224, 135744592, 123561912, 109926464, 94966024, 79778480, 65297460, +51424716, 37884832, 25379498, 15050639, 7016366, 285615, -5872294, -11288248, -15758235, -19619948, +-23003844, -25256556, -25722560, -24534464, -22019760, -17813376, -11227045, -2228551, 8506183, 20395726, +33462090, 48085916, 64347200, 81491632, 98180808, 113563768, 127978752, 142265952, 156538144, 169929840, +181377536, 190427568, 197567424, 203966928, 210536608, 217013424, 222235024, 225385920, 226701264, 227103376, +227632736, 229052752, 231417664, 234032224, 236215152, 237979312, 239742384, 241751360, 244083536, 246742112, +249400160, 251434896, 252450656, 252423824, 251344704, 249170912, 246069408, 242220048, 237487536, 231686112, +224932800, 217416608, 209194432, 200498208, 191813232, 183445040, 175468736, 168131856, 161751152, 156293856, +151620928, 147904176, 145274048, 143464800, 142311056, 142009328, 142456544, 143032080, 143394992, 143675776, +143722496, 143104016, 141934176, 140727824, 139594496, 138438608, 137487264, 136726528, 135519104, 133565968, +131283192, 128694400, 125229432, 120950576, 116418848, 111328240, 104999064, 97896264, 90795608, 83313240, +75169984, 67478232, 60897804, 54517632, 48195976, 43270720, 39707508, 36021352, 32581622, 30756798, +29306710, 26775362, 25389700, 26396332, 25849260, 22560926, 22858890, 27938226, 27973658, 21383032, +23074174, 35598300, 35306780, 15142981, 14190035, 62300112, 118703768, 119914416, 73123968, 40620728, +40768904, 35194036, 16297790, 29255170, 85286240, 125082872, 104374688, 57344256, 36025112, 36459976, +25771414, 80531, -26517664, -55254756, -82899312, -78341816, -23211614, 44045428, 67240936, 44583908, +23708220, 30807800, 42936788, 35355096, 22083112, 30932892, 57170848, 64223184, 28750512, }, { -593779, --15749645, -47285980, -61542588, -36806796, 1975148, 12770012, -12308303, -41329932, -41480256, -9482751, -34246460, 68642168, 86235424, 92510376, 96318936, 99675456, 95814816, 77260016, 43951476, 2250026, --41162968, -81703696, -116041960, -143292992, -166559376, -189761856, -212546128, -230621488, -240955184, -243966496, --240413472, -229020000, -208530864, -180199104, -146741312, -110020952, -71091376, -31654982, 5920613, 39943732, -69974680, 96199752, 118821880, 138070848, 154407296, 168472784, 180739200, 191128736, 199068512, 204017920, -205905024, 205180256, 202813184, 200209904, 198603040, 198308304, 198823696, 199611296, 200352176, 200629728, -200044544, 198682496, 196919952, 194844416, 192390912, 189826288, 187396400, 184678768, 181011392, 176376592, -171086272, 164806480, 156766848, 146878224, 135744592, 123561912, 109926464, 94966024, 79778480, 65297460, -51424716, 37884832, 25379498, 15050639, 7016366, 285615, -5872294, -11288248, -15758235, -19619948, --23003844, -25256556, -25722560, -24534464, -22019760, -17813376, -11227045, -2228551, 8506183, 20395726, -33462090, 48085916, 64347200, 81491632, 98180808, 113563768, 127978752, 142265952, 156538144, 169929840, -181377536, 190427568, 197567424, 203966928, 210536608, 217013424, 222235024, 225385920, 226701264, 227103376, -227632736, 229052752, 231417664, 234032224, 236215152, 237979312, 239742384, 241751360, 244083536, 246742112, -249400160, 251434896, 252450656, 252423824, 251344704, 249170912, 246069408, 242220048, 237487536, 231686112, -224932800, 217416608, 209194432, 200498208, 191813232, 183445040, 175468736, 168131856, 161751152, 156293856, -151620928, 147904176, 145274048, 143464800, 142311056, 142009328, 142456544, 143032080, 143394992, 143675776, -143722496, 143104016, 141934176, 140727824, 139594496, 138438608, 137487264, 136726528, 135519104, 133565968, -131283192, 128694400, 125229432, 120950576, 116418848, 111328240, 104999064, 97896264, 90795608, 83313240, -75169984, 67478232, 60897804, 54517632, 48195976, 43270720, 39707508, 36021352, 32581622, 30756798, -29306710, 26775362, 25389700, 26396332, 25849260, 22560926, 22858890, 27938226, 27973658, 21383032, -23074174, 35598300, 35306780, 15142981, 14190035, 62300112, 118703768, 119914416, 73123968, 40620728, -40768904, 35194036, 16297790, 29255170, 85286240, 125082872, 104374688, 57344256, 36025112, 36459976, -25771414, 80531, -26517664, -55254756, -82899312, -78341816, -23211614, 44045428, 67240936, 44583908, -23708220, 30807800, 42936788, 35355096, 22083112, 30932892, 57170848, 64223184, 28750512, }, +-15749645, -47285980, -61542588, -36806796, 1975148, 12770012, -12308303, -41329932, -41480256, -9482751, +34246460, 68642168, 86235424, 92510376, 96318936, 99675456, 95814816, 77260016, 43951476, 2250026, +-41162968, -81703696, -116041960, -143292992, -166559376, -189761856, -212546128, -230621488, -240955184, -243966496, +-240413472, -229020000, -208530864, -180199104, -146741312, -110020952, -71091376, -31654982, 5920613, 39943732, +69974680, 96199752, 118821880, 138070848, 154407296, 168472784, 180739200, 191128736, 199068512, 204017920, +205905024, 205180256, 202813184, 200209904, 198603040, 198308304, 198823696, 199611296, 200352176, 200629728, +200044544, 198682496, 196919952, 194844416, 192390912, 189826288, 187396400, 184678768, 181011392, 176376592, +171086272, 164806480, 156766848, 146878224, 135744592, 123561912, 109926464, 94966024, 79778480, 65297460, +51424716, 37884832, 25379498, 15050639, 7016366, 285615, -5872294, -11288248, -15758235, -19619948, +-23003844, -25256556, -25722560, -24534464, -22019760, -17813376, -11227045, -2228551, 8506183, 20395726, +33462090, 48085916, 64347200, 81491632, 98180808, 113563768, 127978752, 142265952, 156538144, 169929840, +181377536, 190427568, 197567424, 203966928, 210536608, 217013424, 222235024, 225385920, 226701264, 227103376, +227632736, 229052752, 231417664, 234032224, 236215152, 237979312, 239742384, 241751360, 244083536, 246742112, +249400160, 251434896, 252450656, 252423824, 251344704, 249170912, 246069408, 242220048, 237487536, 231686112, +224932800, 217416608, 209194432, 200498208, 191813232, 183445040, 175468736, 168131856, 161751152, 156293856, +151620928, 147904176, 145274048, 143464800, 142311056, 142009328, 142456544, 143032080, 143394992, 143675776, +143722496, 143104016, 141934176, 140727824, 139594496, 138438608, 137487264, 136726528, 135519104, 133565968, +131283192, 128694400, 125229432, 120950576, 116418848, 111328240, 104999064, 97896264, 90795608, 83313240, +75169984, 67478232, 60897804, 54517632, 48195976, 43270720, 39707508, 36021352, 32581622, 30756798, +29306710, 26775362, 25389700, 26396332, 25849260, 22560926, 22858890, 27938226, 27973658, 21383032, +23074174, 35598300, 35306780, 15142981, 14190035, 62300112, 118703768, 119914416, 73123968, 40620728, +40768904, 35194036, 16297790, 29255170, 85286240, 125082872, 104374688, 57344256, 36025112, 36459976, +25771414, 80531, -26517664, -55254756, -82899312, -78341816, -23211614, 44045428, 67240936, 44583908, +23708220, 30807800, 42936788, 35355096, 22083112, 30932892, 57170848, 64223184, 28750512, }, }, { { -2034204, --1912871, 2893734, 2283312, -8800388, -21194590, -25225954, -27377732, -41857676, -65462816, -72565616, --42084772, 16944720, 74471512, 110361336, 128002376, 139204720, 146519056, 144579872, 130915432, 107955080, -77377592, 39032124, -4934918, -49726056, -92294016, -132781600, -171121696, -205086304, -232441488, -252692256, --265895520, -271576672, -269452832, -259612512, -241535008, -214609856, -180362320, -142905904, -106488344, -73330128, --43904768, -18021682, 4879083, 25580288, 44618804, 62207232, 78529184, 93599152, 106967768, 118061672, -126695096, 132961448, 137057776, 139608992, 141708688, 144187952, 147163840, 150511216, 154277904, 158406976, -162597792, 166676400, 170664816, 174398224, 177568448, 180142736, 182199488, 183408528, 183263568, 181747440, -179094224, 174972128, 168627392, 159862448, 149136304, 136598752, 121848760, 105010336, 87308632, 69930656, -52820044, 35374960, 18020610, 2053531, -12117713, -25485800, -38748120, -51050520, -61122216, -68888592, --75053480, -79632448, -81893216, -81562504, -79292072, -75939856, -71945536, -67399848, -62368292, -57090316, --51939576, -47119548, -42508364, -38028176, -33923800, -30288110, -26547192, -21916144, -16276315, -10230075, --4461934, 731218, 5592585, 10865194, 17233556, 24533926, 31795642, 38166152, 43517144, 48241608, -52942452, 58260696, 64491620, 71342088, 78354696, 85415624, 92620968, 99962680, 107408008, 114904872, -122087664, 128344360, 133310416, 136963824, 139292768, 140327856, 140374560, 139734608, 138376864, 136256768, -133678176, 130995432, 128357248, 126021320, 124419296, 123687544, 123623120, 124185224, 125509144, 127505232, -130003288, 133111776, 136913360, 141143904, 145602608, 150361968, 155197040, 159469984, 162880192, 165587088, -167499424, 168321920, 168255344, 167751216, 166788608, 165273024, 163637184, 162187632, 160570576, 158612064, -156744832, 155027920, 152930368, 150392032, 147729152, 144544976, 140299408, 135554544, 131003480, 126167888, -120727232, 115672056, 111467824, 107095544, 102325448, 98324152, 95037960, 91263224, 87568480, 85192288, -82870856, 79462264, 77278272, 77233712, 75366472, 70892192, 69963408, 73052560, 70506720, 61724584, -61392800, 70719856, 66434556, 43883292, 42880416, 91149408, 146700512, 147194432, 99498824, 63552096, -59225452, 53955528, 40287332, 54138064, 101396128, 131937640, 112648936, 73204496, 52901648, 47913044, -36569500, 16180216, -7840463, -31339840, -31613106, 19630684, 101511552, 144464976, 113561080, 54766200, -29202020, 36538360, 37560564, 21087752, 6425808, -571768, -10691247, -19418084, -10495826, }, +-1912871, 2893734, 2283312, -8800388, -21194590, -25225954, -27377732, -41857676, -65462816, -72565616, +-42084772, 16944720, 74471512, 110361336, 128002376, 139204720, 146519056, 144579872, 130915432, 107955080, +77377592, 39032124, -4934918, -49726056, -92294016, -132781600, -171121696, -205086304, -232441488, -252692256, +-265895520, -271576672, -269452832, -259612512, -241535008, -214609856, -180362320, -142905904, -106488344, -73330128, +-43904768, -18021682, 4879083, 25580288, 44618804, 62207232, 78529184, 93599152, 106967768, 118061672, +126695096, 132961448, 137057776, 139608992, 141708688, 144187952, 147163840, 150511216, 154277904, 158406976, +162597792, 166676400, 170664816, 174398224, 177568448, 180142736, 182199488, 183408528, 183263568, 181747440, +179094224, 174972128, 168627392, 159862448, 149136304, 136598752, 121848760, 105010336, 87308632, 69930656, +52820044, 35374960, 18020610, 2053531, -12117713, -25485800, -38748120, -51050520, -61122216, -68888592, +-75053480, -79632448, -81893216, -81562504, -79292072, -75939856, -71945536, -67399848, -62368292, -57090316, +-51939576, -47119548, -42508364, -38028176, -33923800, -30288110, -26547192, -21916144, -16276315, -10230075, +-4461934, 731218, 5592585, 10865194, 17233556, 24533926, 31795642, 38166152, 43517144, 48241608, +52942452, 58260696, 64491620, 71342088, 78354696, 85415624, 92620968, 99962680, 107408008, 114904872, +122087664, 128344360, 133310416, 136963824, 139292768, 140327856, 140374560, 139734608, 138376864, 136256768, +133678176, 130995432, 128357248, 126021320, 124419296, 123687544, 123623120, 124185224, 125509144, 127505232, +130003288, 133111776, 136913360, 141143904, 145602608, 150361968, 155197040, 159469984, 162880192, 165587088, +167499424, 168321920, 168255344, 167751216, 166788608, 165273024, 163637184, 162187632, 160570576, 158612064, +156744832, 155027920, 152930368, 150392032, 147729152, 144544976, 140299408, 135554544, 131003480, 126167888, +120727232, 115672056, 111467824, 107095544, 102325448, 98324152, 95037960, 91263224, 87568480, 85192288, +82870856, 79462264, 77278272, 77233712, 75366472, 70892192, 69963408, 73052560, 70506720, 61724584, +61392800, 70719856, 66434556, 43883292, 42880416, 91149408, 146700512, 147194432, 99498824, 63552096, +59225452, 53955528, 40287332, 54138064, 101396128, 131937640, 112648936, 73204496, 52901648, 47913044, +36569500, 16180216, -7840463, -31339840, -31613106, 19630684, 101511552, 144464976, 113561080, 54766200, +29202020, 36538360, 37560564, 21087752, 6425808, -571768, -10691247, -19418084, -10495826, }, { 2034204, -1912871, -2893734, -2283312, 8800388, 21194590, 25225954, 27377732, 41857676, 65462816, 72565616, -42084772, -16944720, -74471512, -110361336, -128002376, -139204720, -146519056, -144579872, -130915432, -107955080, --77377592, -39032124, 4934918, 49726056, 92294016, 132781600, 171121696, 205086304, 232441488, 252692256, -265895520, 271576672, 269452832, 259612512, 241535008, 214609856, 180362320, 142905904, 106488344, 73330128, -43904768, 18021682, -4879083, -25580288, -44618804, -62207232, -78529184, -93599152, -106967768, -118061672, --126695096, -132961448, -137057776, -139608992, -141708688, -144187952, -147163840, -150511216, -154277904, -158406976, --162597792, -166676400, -170664816, -174398224, -177568448, -180142736, -182199488, -183408528, -183263568, -181747440, --179094224, -174972128, -168627392, -159862448, -149136304, -136598752, -121848760, -105010336, -87308632, -69930656, --52820044, -35374960, -18020610, -2053531, 12117713, 25485800, 38748120, 51050520, 61122216, 68888592, -75053480, 79632448, 81893216, 81562504, 79292072, 75939856, 71945536, 67399848, 62368292, 57090316, -51939576, 47119548, 42508364, 38028176, 33923800, 30288110, 26547192, 21916144, 16276315, 10230075, -4461934, -731218, -5592585, -10865194, -17233556, -24533926, -31795642, -38166152, -43517144, -48241608, --52942452, -58260696, -64491620, -71342088, -78354696, -85415624, -92620968, -99962680, -107408008, -114904872, --122087664, -128344360, -133310416, -136963824, -139292768, -140327856, -140374560, -139734608, -138376864, -136256768, --133678176, -130995432, -128357248, -126021320, -124419296, -123687544, -123623120, -124185224, -125509144, -127505232, --130003288, -133111776, -136913360, -141143904, -145602608, -150361968, -155197040, -159469984, -162880192, -165587088, --167499424, -168321920, -168255344, -167751216, -166788608, -165273024, -163637184, -162187632, -160570576, -158612064, --156744832, -155027920, -152930368, -150392032, -147729152, -144544976, -140299408, -135554544, -131003480, -126167888, --120727232, -115672056, -111467824, -107095544, -102325448, -98324152, -95037960, -91263224, -87568480, -85192288, --82870856, -79462264, -77278272, -77233712, -75366472, -70892192, -69963408, -73052560, -70506720, -61724584, --61392800, -70719856, -66434556, -43883292, -42880416, -91149408, -146700512, -147194432, -99498824, -63552096, --59225452, -53955528, -40287332, -54138064, -101396128, -131937640, -112648936, -73204496, -52901648, -47913044, --36569500, -16180216, 7840463, 31339840, 31613106, -19630684, -101511552, -144464976, -113561080, -54766200, --29202020, -36538360, -37560564, -21087752, -6425808, 571768, 10691247, 19418084, 10495826, }, +1912871, -2893734, -2283312, 8800388, 21194590, 25225954, 27377732, 41857676, 65462816, 72565616, +42084772, -16944720, -74471512, -110361336, -128002376, -139204720, -146519056, -144579872, -130915432, -107955080, +-77377592, -39032124, 4934918, 49726056, 92294016, 132781600, 171121696, 205086304, 232441488, 252692256, +265895520, 271576672, 269452832, 259612512, 241535008, 214609856, 180362320, 142905904, 106488344, 73330128, +43904768, 18021682, -4879083, -25580288, -44618804, -62207232, -78529184, -93599152, -106967768, -118061672, +-126695096, -132961448, -137057776, -139608992, -141708688, -144187952, -147163840, -150511216, -154277904, -158406976, +-162597792, -166676400, -170664816, -174398224, -177568448, -180142736, -182199488, -183408528, -183263568, -181747440, +-179094224, -174972128, -168627392, -159862448, -149136304, -136598752, -121848760, -105010336, -87308632, -69930656, +-52820044, -35374960, -18020610, -2053531, 12117713, 25485800, 38748120, 51050520, 61122216, 68888592, +75053480, 79632448, 81893216, 81562504, 79292072, 75939856, 71945536, 67399848, 62368292, 57090316, +51939576, 47119548, 42508364, 38028176, 33923800, 30288110, 26547192, 21916144, 16276315, 10230075, +4461934, -731218, -5592585, -10865194, -17233556, -24533926, -31795642, -38166152, -43517144, -48241608, +-52942452, -58260696, -64491620, -71342088, -78354696, -85415624, -92620968, -99962680, -107408008, -114904872, +-122087664, -128344360, -133310416, -136963824, -139292768, -140327856, -140374560, -139734608, -138376864, -136256768, +-133678176, -130995432, -128357248, -126021320, -124419296, -123687544, -123623120, -124185224, -125509144, -127505232, +-130003288, -133111776, -136913360, -141143904, -145602608, -150361968, -155197040, -159469984, -162880192, -165587088, +-167499424, -168321920, -168255344, -167751216, -166788608, -165273024, -163637184, -162187632, -160570576, -158612064, +-156744832, -155027920, -152930368, -150392032, -147729152, -144544976, -140299408, -135554544, -131003480, -126167888, +-120727232, -115672056, -111467824, -107095544, -102325448, -98324152, -95037960, -91263224, -87568480, -85192288, +-82870856, -79462264, -77278272, -77233712, -75366472, -70892192, -69963408, -73052560, -70506720, -61724584, +-61392800, -70719856, -66434556, -43883292, -42880416, -91149408, -146700512, -147194432, -99498824, -63552096, +-59225452, -53955528, -40287332, -54138064, -101396128, -131937640, -112648936, -73204496, -52901648, -47913044, +-36569500, -16180216, 7840463, 31339840, 31613106, -19630684, -101511552, -144464976, -113561080, -54766200, +-29202020, -36538360, -37560564, -21087752, -6425808, 571768, 10691247, 19418084, 10495826, }, }, { { -3675418, --81604, 10401337, 2452426, -11511586, 8936216, 50945828, 42283952, -43622908, -130787120, -129202816, --42832636, 50052476, 95645704, 102663680, 99507952, 95833072, 87682296, 72136664, 48658760, 18823232, --11484743, -35738424, -51967492, -60770568, -61992484, -57039312, -50183472, -44155484, -38139848, -32205276, --29515552, -32018444, -37574520, -43262132, -48939004, -56378960, -66799628, -79696336, -92715992, -102787160, --108356120, -110093968, -109205448, -106365936, -102507448, -98825048, -95390688, -91072632, -85015120, -77032920, --66794796, -53879292, -38326140, -20199768, 709207, 23946054, 48075716, 71977208, 95391224, 117751896, -137825504, 154971552, 169409616, 180861072, 188231232, 190866192, 188905552, 182306864, 170675024, 154083024, -133124120, 108329272, 80367432, 50499688, 20045686, -10299868, -40006008, -67978592, -92962960, -114493624, --132957152, -148661168, -161090800, -169352704, -173409840, -174407888, -173363136, -170013600, -163643088, -154449168, --143174352, -129936720, -114503288, -97249872, -78791176, -59132036, -38195680, -16756278, 4031364, 23615878, -41919416, 58651536, 73105176, 84196928, 90812792, 92942016, 92305824, 90893320, 88999776, 85517632, -79797808, 72384696, 64423972, 57170308, 51540144, 47448116, 44063680, 41047004, 38860864, 37816112, -37735584, 38522100, 40057012, 41652056, 42537356, 42621644, 42002096, 40294848, 37220188, 33149094, -28452010, 23117662, 17435420, 12073153, 7235410, 2716030, -1281511, -4464619, -7285875, -10326712, --13342853, -15938624, -18429168, -21095806, -23546622, -25574382, -27540404, -29378114, -30514132, -31028992, --31512176, -31836446, -31529892, -30946314, -30591978, -30040076, -28903520, -27822262, -27251030, -26651882, --25895432, -25755846, -26309896, -26737782, -27026618, -27815818, -28733868, -29087666, -29545616, -30953830, --32684164, -34200824, -36480380, -40064528, -44018048, -48190068, -53603876, -59761248, -64981780, -69554848, --74762496, -79546016, -82324320, -84368192, -87062744, -88705032, -88210040, -87769264, -88090320, -86719144, --83949432, -82848848, -81949584, -77654616, -73355360, -73597488, -72412608, -63796908, -57183196, -60899952, --60729228, -44258028, -32518272, -46260556, -54365696, -11566884, 57226144, 75289704, 24363738, -30342334, --42076720, -40014064, -55356224, -57699128, -12765180, 46264852, 58034672, 15075335, -36666672, -62856848, --71765680, -88359288, -116915992, -126920576, -78842712, 20230906, 97711576, 85162224, 3720516, -57114476, --48222284, -8475044, 5008469, -8928163, -14896557, -1306207, 12319040, 12317966, 4409321, }, +-81604, 10401337, 2452426, -11511586, 8936216, 50945828, 42283952, -43622908, -130787120, -129202816, +-42832636, 50052476, 95645704, 102663680, 99507952, 95833072, 87682296, 72136664, 48658760, 18823232, +-11484743, -35738424, -51967492, -60770568, -61992484, -57039312, -50183472, -44155484, -38139848, -32205276, +-29515552, -32018444, -37574520, -43262132, -48939004, -56378960, -66799628, -79696336, -92715992, -102787160, +-108356120, -110093968, -109205448, -106365936, -102507448, -98825048, -95390688, -91072632, -85015120, -77032920, +-66794796, -53879292, -38326140, -20199768, 709207, 23946054, 48075716, 71977208, 95391224, 117751896, +137825504, 154971552, 169409616, 180861072, 188231232, 190866192, 188905552, 182306864, 170675024, 154083024, +133124120, 108329272, 80367432, 50499688, 20045686, -10299868, -40006008, -67978592, -92962960, -114493624, +-132957152, -148661168, -161090800, -169352704, -173409840, -174407888, -173363136, -170013600, -163643088, -154449168, +-143174352, -129936720, -114503288, -97249872, -78791176, -59132036, -38195680, -16756278, 4031364, 23615878, +41919416, 58651536, 73105176, 84196928, 90812792, 92942016, 92305824, 90893320, 88999776, 85517632, +79797808, 72384696, 64423972, 57170308, 51540144, 47448116, 44063680, 41047004, 38860864, 37816112, +37735584, 38522100, 40057012, 41652056, 42537356, 42621644, 42002096, 40294848, 37220188, 33149094, +28452010, 23117662, 17435420, 12073153, 7235410, 2716030, -1281511, -4464619, -7285875, -10326712, +-13342853, -15938624, -18429168, -21095806, -23546622, -25574382, -27540404, -29378114, -30514132, -31028992, +-31512176, -31836446, -31529892, -30946314, -30591978, -30040076, -28903520, -27822262, -27251030, -26651882, +-25895432, -25755846, -26309896, -26737782, -27026618, -27815818, -28733868, -29087666, -29545616, -30953830, +-32684164, -34200824, -36480380, -40064528, -44018048, -48190068, -53603876, -59761248, -64981780, -69554848, +-74762496, -79546016, -82324320, -84368192, -87062744, -88705032, -88210040, -87769264, -88090320, -86719144, +-83949432, -82848848, -81949584, -77654616, -73355360, -73597488, -72412608, -63796908, -57183196, -60899952, +-60729228, -44258028, -32518272, -46260556, -54365696, -11566884, 57226144, 75289704, 24363738, -30342334, +-42076720, -40014064, -55356224, -57699128, -12765180, 46264852, 58034672, 15075335, -36666672, -62856848, +-71765680, -88359288, -116915992, -126920576, -78842712, 20230906, 97711576, 85162224, 3720516, -57114476, +-48222284, -8475044, 5008469, -8928163, -14896557, -1306207, 12319040, 12317966, 4409321, }, { 3675418, -81604, -10401337, -2452426, 11511586, -8936216, -50945828, -42283952, 43622908, 130787120, 129202816, -42832636, -50052476, -95645704, -102663680, -99507952, -95833072, -87682296, -72136664, -48658760, -18823232, -11484743, 35738424, 51967492, 60770568, 61992484, 57039312, 50183472, 44155484, 38139848, 32205276, -29515552, 32018444, 37574520, 43262132, 48939004, 56378960, 66799628, 79696336, 92715992, 102787160, -108356120, 110093968, 109205448, 106365936, 102507448, 98825048, 95390688, 91072632, 85015120, 77032920, -66794796, 53879292, 38326140, 20199768, -709207, -23946054, -48075716, -71977208, -95391224, -117751896, --137825504, -154971552, -169409616, -180861072, -188231232, -190866192, -188905552, -182306864, -170675024, -154083024, --133124120, -108329272, -80367432, -50499688, -20045686, 10299868, 40006008, 67978592, 92962960, 114493624, -132957152, 148661168, 161090800, 169352704, 173409840, 174407888, 173363136, 170013600, 163643088, 154449168, -143174352, 129936720, 114503288, 97249872, 78791176, 59132036, 38195680, 16756278, -4031364, -23615878, --41919416, -58651536, -73105176, -84196928, -90812792, -92942016, -92305824, -90893320, -88999776, -85517632, --79797808, -72384696, -64423972, -57170308, -51540144, -47448116, -44063680, -41047004, -38860864, -37816112, --37735584, -38522100, -40057012, -41652056, -42537356, -42621644, -42002096, -40294848, -37220188, -33149094, --28452010, -23117662, -17435420, -12073153, -7235410, -2716030, 1281511, 4464619, 7285875, 10326712, -13342853, 15938624, 18429168, 21095806, 23546622, 25574382, 27540404, 29378114, 30514132, 31028992, -31512176, 31836446, 31529892, 30946314, 30591978, 30040076, 28903520, 27822262, 27251030, 26651882, -25895432, 25755846, 26309896, 26737782, 27026618, 27815818, 28733868, 29087666, 29545616, 30953830, -32684164, 34200824, 36480380, 40064528, 44018048, 48190068, 53603876, 59761248, 64981780, 69554848, -74762496, 79546016, 82324320, 84368192, 87062744, 88705032, 88210040, 87769264, 88090320, 86719144, -83949432, 82848848, 81949584, 77654616, 73355360, 73597488, 72412608, 63796908, 57183196, 60899952, -60729228, 44258028, 32518272, 46260556, 54365696, 11566884, -57226144, -75289704, -24363738, 30342334, -42076720, 40014064, 55356224, 57699128, 12765180, -46264852, -58034672, -15075335, 36666672, 62856848, -71765680, 88359288, 116915992, 126920576, 78842712, -20230906, -97711576, -85162224, -3720516, 57114476, -48222284, 8475044, -5008469, 8928163, 14896557, 1306207, -12319040, -12317966, -4409321, }, +81604, -10401337, -2452426, 11511586, -8936216, -50945828, -42283952, 43622908, 130787120, 129202816, +42832636, -50052476, -95645704, -102663680, -99507952, -95833072, -87682296, -72136664, -48658760, -18823232, +11484743, 35738424, 51967492, 60770568, 61992484, 57039312, 50183472, 44155484, 38139848, 32205276, +29515552, 32018444, 37574520, 43262132, 48939004, 56378960, 66799628, 79696336, 92715992, 102787160, +108356120, 110093968, 109205448, 106365936, 102507448, 98825048, 95390688, 91072632, 85015120, 77032920, +66794796, 53879292, 38326140, 20199768, -709207, -23946054, -48075716, -71977208, -95391224, -117751896, +-137825504, -154971552, -169409616, -180861072, -188231232, -190866192, -188905552, -182306864, -170675024, -154083024, +-133124120, -108329272, -80367432, -50499688, -20045686, 10299868, 40006008, 67978592, 92962960, 114493624, +132957152, 148661168, 161090800, 169352704, 173409840, 174407888, 173363136, 170013600, 163643088, 154449168, +143174352, 129936720, 114503288, 97249872, 78791176, 59132036, 38195680, 16756278, -4031364, -23615878, +-41919416, -58651536, -73105176, -84196928, -90812792, -92942016, -92305824, -90893320, -88999776, -85517632, +-79797808, -72384696, -64423972, -57170308, -51540144, -47448116, -44063680, -41047004, -38860864, -37816112, +-37735584, -38522100, -40057012, -41652056, -42537356, -42621644, -42002096, -40294848, -37220188, -33149094, +-28452010, -23117662, -17435420, -12073153, -7235410, -2716030, 1281511, 4464619, 7285875, 10326712, +13342853, 15938624, 18429168, 21095806, 23546622, 25574382, 27540404, 29378114, 30514132, 31028992, +31512176, 31836446, 31529892, 30946314, 30591978, 30040076, 28903520, 27822262, 27251030, 26651882, +25895432, 25755846, 26309896, 26737782, 27026618, 27815818, 28733868, 29087666, 29545616, 30953830, +32684164, 34200824, 36480380, 40064528, 44018048, 48190068, 53603876, 59761248, 64981780, 69554848, +74762496, 79546016, 82324320, 84368192, 87062744, 88705032, 88210040, 87769264, 88090320, 86719144, +83949432, 82848848, 81949584, 77654616, 73355360, 73597488, 72412608, 63796908, 57183196, 60899952, +60729228, 44258028, 32518272, 46260556, 54365696, 11566884, -57226144, -75289704, -24363738, 30342334, +42076720, 40014064, 55356224, 57699128, 12765180, -46264852, -58034672, -15075335, 36666672, 62856848, +71765680, 88359288, 116915992, 126920576, 78842712, -20230906, -97711576, -85162224, -3720516, 57114476, +48222284, 8475044, -5008469, 8928163, 14896557, 1306207, -12319040, -12317966, -4409321, }, }, { { -762357, --6477348, -14222784, -10846403, 5228586, 21163988, 35575216, 66310536, 118070264, 157852928, 142933824, -68589552, -27521076, -105497280, -152864336, -176070032, -181038784, -170702400, -151094800, -129158792, -106835704, --82560544, -56399364, -30084098, -4484483, 19157164, 37076304, 45797772, 46952584, 46815144, 50714972, -59249612, 69804496, 80100064, 89555440, 98271536, 105989592, 112247360, 116796264, 119299160, 118966840, -115220016, 108731392, 101220032, 94026496, 87261384, 80369576, 73014448, 65229280, 57132192, 48824652, -40409200, 31980326, 23708220, 15993384, 9437117, 4599373, 1793149, 1034550, 2121714, 4803384, -8926553, 14411763, 21115670, 28822452, 37382860, 46752868, 56827248, 67247376, 77452752, 86985432, -95689720, 103484552, 109970488, 114496312, 116655072, 116416696, 113629800, 107755360, 98385352, 85743656, -70347808, 52385716, 31819802, 8960376, -15445776, -40662068, -66213900, -91788816, -117190864, -142307296, --166738144, -189384432, -208740784, -223839744, -234798880, -242265680, -246359328, -246337312, -241437824, -232037760, --219912528, -207242912, -195313632, -184130080, -173242880, -162818448, -153881168, -147643264, -144762416, -145164528, --148305760, -153484944, -160064848, -167640624, -176078096, -185327296, -195156864, -205027248, -214212560, -222095984, --228442336, -233406240, -237294800, -240332944, -242621088, -244211840, -245200752, -245777888, -246143504, -246290608, --245951840, -244897424, -243215952, -241184960, -238969296, -236579152, -233949552, -230842144, -226779648, -221327712, --214401008, -206182048, -196865200, -186623840, -175695840, -164380208, -153018416, -141984640, -131570952, -121886880, --112959784, -104855184, -97563400, -90909424, -84746688, -79084840, -73921216, -69122128, -64585032, -60297044, --56171192, -52042656, -47883516, -43815108, -39946416, -36373540, -33176474, -30210264, -27126476, -23757074, --20204064, -16452409, -12315819, -7840463, -3291556, 1277753, 5950677, 10547903, 14847702, 18951006, -22899156, 26341034, 29087130, 31393526, 33239288, 34172372, 34248068, 34074124, 33718176, 32808718, -31643172, 30706868, 29549374, 27838368, 26435524, 25466472, 23294292, 19743964, 17202954, 15673409, -11533061, 4961761, 1608465, 1366337, -5018133, -19530826, -28349468, -22183506, -13077102, -14627585, --18621904, -13313325, -12147241, -34821984, -67240936, -73887936, -49457084, -25412248, -22541598, -29239600, --31068720, -28877750, -22050362, -8371428, -7073811, -43227772, -98173824, -116765664, -80738408, -33805688, --14342506, -8144869, 6374805, 16698296, 18523658, 48044040, 115123912, 146539456, 69534448, }, +-6477348, -14222784, -10846403, 5228586, 21163988, 35575216, 66310536, 118070264, 157852928, 142933824, +68589552, -27521076, -105497280, -152864336, -176070032, -181038784, -170702400, -151094800, -129158792, -106835704, +-82560544, -56399364, -30084098, -4484483, 19157164, 37076304, 45797772, 46952584, 46815144, 50714972, +59249612, 69804496, 80100064, 89555440, 98271536, 105989592, 112247360, 116796264, 119299160, 118966840, +115220016, 108731392, 101220032, 94026496, 87261384, 80369576, 73014448, 65229280, 57132192, 48824652, +40409200, 31980326, 23708220, 15993384, 9437117, 4599373, 1793149, 1034550, 2121714, 4803384, +8926553, 14411763, 21115670, 28822452, 37382860, 46752868, 56827248, 67247376, 77452752, 86985432, +95689720, 103484552, 109970488, 114496312, 116655072, 116416696, 113629800, 107755360, 98385352, 85743656, +70347808, 52385716, 31819802, 8960376, -15445776, -40662068, -66213900, -91788816, -117190864, -142307296, +-166738144, -189384432, -208740784, -223839744, -234798880, -242265680, -246359328, -246337312, -241437824, -232037760, +-219912528, -207242912, -195313632, -184130080, -173242880, -162818448, -153881168, -147643264, -144762416, -145164528, +-148305760, -153484944, -160064848, -167640624, -176078096, -185327296, -195156864, -205027248, -214212560, -222095984, +-228442336, -233406240, -237294800, -240332944, -242621088, -244211840, -245200752, -245777888, -246143504, -246290608, +-245951840, -244897424, -243215952, -241184960, -238969296, -236579152, -233949552, -230842144, -226779648, -221327712, +-214401008, -206182048, -196865200, -186623840, -175695840, -164380208, -153018416, -141984640, -131570952, -121886880, +-112959784, -104855184, -97563400, -90909424, -84746688, -79084840, -73921216, -69122128, -64585032, -60297044, +-56171192, -52042656, -47883516, -43815108, -39946416, -36373540, -33176474, -30210264, -27126476, -23757074, +-20204064, -16452409, -12315819, -7840463, -3291556, 1277753, 5950677, 10547903, 14847702, 18951006, +22899156, 26341034, 29087130, 31393526, 33239288, 34172372, 34248068, 34074124, 33718176, 32808718, +31643172, 30706868, 29549374, 27838368, 26435524, 25466472, 23294292, 19743964, 17202954, 15673409, +11533061, 4961761, 1608465, 1366337, -5018133, -19530826, -28349468, -22183506, -13077102, -14627585, +-18621904, -13313325, -12147241, -34821984, -67240936, -73887936, -49457084, -25412248, -22541598, -29239600, +-31068720, -28877750, -22050362, -8371428, -7073811, -43227772, -98173824, -116765664, -80738408, -33805688, +-14342506, -8144869, 6374805, 16698296, 18523658, 48044040, 115123912, 146539456, 69534448, }, { -762357, --6477348, -14222784, -10846403, 5228586, 21163988, 35575216, 66310536, 118070264, 157852928, 142933824, -68589552, -27521076, -105497280, -152864336, -176070032, -181038784, -170702400, -151094800, -129158792, -106835704, --82560544, -56399364, -30084098, -4484483, 19157164, 37076304, 45797772, 46952584, 46815144, 50714972, -59249612, 69804496, 80100064, 89555440, 98271536, 105989592, 112247360, 116796264, 119299160, 118966840, -115220016, 108731392, 101220032, 94026496, 87261384, 80369576, 73014448, 65229280, 57132192, 48824652, -40409200, 31980326, 23708220, 15993384, 9437117, 4599373, 1793149, 1034550, 2121714, 4803384, -8926553, 14411763, 21115670, 28822452, 37382860, 46752868, 56827248, 67247376, 77452752, 86985432, -95689720, 103484552, 109970488, 114496312, 116655072, 116416696, 113629800, 107755360, 98385352, 85743656, -70347808, 52385716, 31819802, 8960376, -15445776, -40662068, -66213900, -91788816, -117190864, -142307296, --166738144, -189384432, -208740784, -223839744, -234798880, -242265680, -246359328, -246337312, -241437824, -232037760, --219912528, -207242912, -195313632, -184130080, -173242880, -162818448, -153881168, -147643264, -144762416, -145164528, --148305760, -153484944, -160064848, -167640624, -176078096, -185327296, -195156864, -205027248, -214212560, -222095984, --228442336, -233406240, -237294800, -240332944, -242621088, -244211840, -245200752, -245777888, -246143504, -246290608, --245951840, -244897424, -243215952, -241184960, -238969296, -236579152, -233949552, -230842144, -226779648, -221327712, --214401008, -206182048, -196865200, -186623840, -175695840, -164380208, -153018416, -141984640, -131570952, -121886880, --112959784, -104855184, -97563400, -90909424, -84746688, -79084840, -73921216, -69122128, -64585032, -60297044, --56171192, -52042656, -47883516, -43815108, -39946416, -36373540, -33176474, -30210264, -27126476, -23757074, --20204064, -16452409, -12315819, -7840463, -3291556, 1277753, 5950677, 10547903, 14847702, 18951006, -22899156, 26341034, 29087130, 31393526, 33239288, 34172372, 34248068, 34074124, 33718176, 32808718, -31643172, 30706868, 29549374, 27838368, 26435524, 25466472, 23294292, 19743964, 17202954, 15673409, -11533061, 4961761, 1608465, 1366337, -5018133, -19530826, -28349468, -22183506, -13077102, -14627585, --18621904, -13313325, -12147241, -34821984, -67240936, -73887936, -49457084, -25412248, -22541598, -29239600, --31068720, -28877750, -22050362, -8371428, -7073811, -43227772, -98173824, -116765664, -80738408, -33805688, --14342506, -8144869, 6374805, 16698296, 18523658, 48044040, 115123912, 146539456, 69534448, }, +-6477348, -14222784, -10846403, 5228586, 21163988, 35575216, 66310536, 118070264, 157852928, 142933824, +68589552, -27521076, -105497280, -152864336, -176070032, -181038784, -170702400, -151094800, -129158792, -106835704, +-82560544, -56399364, -30084098, -4484483, 19157164, 37076304, 45797772, 46952584, 46815144, 50714972, +59249612, 69804496, 80100064, 89555440, 98271536, 105989592, 112247360, 116796264, 119299160, 118966840, +115220016, 108731392, 101220032, 94026496, 87261384, 80369576, 73014448, 65229280, 57132192, 48824652, +40409200, 31980326, 23708220, 15993384, 9437117, 4599373, 1793149, 1034550, 2121714, 4803384, +8926553, 14411763, 21115670, 28822452, 37382860, 46752868, 56827248, 67247376, 77452752, 86985432, +95689720, 103484552, 109970488, 114496312, 116655072, 116416696, 113629800, 107755360, 98385352, 85743656, +70347808, 52385716, 31819802, 8960376, -15445776, -40662068, -66213900, -91788816, -117190864, -142307296, +-166738144, -189384432, -208740784, -223839744, -234798880, -242265680, -246359328, -246337312, -241437824, -232037760, +-219912528, -207242912, -195313632, -184130080, -173242880, -162818448, -153881168, -147643264, -144762416, -145164528, +-148305760, -153484944, -160064848, -167640624, -176078096, -185327296, -195156864, -205027248, -214212560, -222095984, +-228442336, -233406240, -237294800, -240332944, -242621088, -244211840, -245200752, -245777888, -246143504, -246290608, +-245951840, -244897424, -243215952, -241184960, -238969296, -236579152, -233949552, -230842144, -226779648, -221327712, +-214401008, -206182048, -196865200, -186623840, -175695840, -164380208, -153018416, -141984640, -131570952, -121886880, +-112959784, -104855184, -97563400, -90909424, -84746688, -79084840, -73921216, -69122128, -64585032, -60297044, +-56171192, -52042656, -47883516, -43815108, -39946416, -36373540, -33176474, -30210264, -27126476, -23757074, +-20204064, -16452409, -12315819, -7840463, -3291556, 1277753, 5950677, 10547903, 14847702, 18951006, +22899156, 26341034, 29087130, 31393526, 33239288, 34172372, 34248068, 34074124, 33718176, 32808718, +31643172, 30706868, 29549374, 27838368, 26435524, 25466472, 23294292, 19743964, 17202954, 15673409, +11533061, 4961761, 1608465, 1366337, -5018133, -19530826, -28349468, -22183506, -13077102, -14627585, +-18621904, -13313325, -12147241, -34821984, -67240936, -73887936, -49457084, -25412248, -22541598, -29239600, +-31068720, -28877750, -22050362, -8371428, -7073811, -43227772, -98173824, -116765664, -80738408, -33805688, +-14342506, -8144869, 6374805, 16698296, 18523658, 48044040, 115123912, 146539456, 69534448, }, }, { { -20420422, --40212704, -13275744, 46952044, 92115240, 74442520, -7164006, -95062120, -120792200, -71658848, 412317, -39556112, 39258684, 27809376, 22846004, 21613350, 22599582, 30020210, 38551628, 35357780, 20413980, -8887361, 10007274, 16486769, 18066780, 14104136, 8451422, 938450, -10698227, -25531434, -39939976, --50867984, -57304528, -60780228, -64703684, -71266392, -79088064, -84963040, -86841016, -84133576, -76906760, --66280472, -54327580, -42438036, -30728880, -19357954, -9056475, -92879, 7961259, 15277736, 21703544, -27533962, 33300492, 38995080, 44351444, 49515068, 54651312, 59322624, 62897112, 65213172, 66435092, -66654672, 65978212, 64715492, 63386736, 62636192, 62914828, 64117956, 65955664, 68715184, 73009616, -78762184, 85276040, 92387968, 100618200, 110020952, 119751208, 128918272, 137119520, 144049984, 149180320, -151877552, 151570464, 148041616, 141655536, 132766032, 120954336, 105805984, 88399016, 70622144, 52656836, -32515050, 8725226, -17654464, -44401372, -70559336, -96706560, -123290256, -149426208, -173422720, -194302704, --212562768, -229117184, -243644368, -254602976, -260943424, -263205264, -262809056, -260753904, -256988832, -250553904, --240419920, -226641664, -210570976, -193659536, -176393776, -158628176, -140387456, -121987272, -103876472, -86627344, --70640400, -55742768, -41512468, -27914066, -15139223, -3025805, 8857296, 20782274, 32812476, 44721348, -55698748, 64797096, 71973992, 78112032, 83941376, 89633280, 95259152, 100662224, 105034496, 107632416, -108781320, 109376176, 109795472, 110085920, 110543872, 111199928, 111377088, 110571248, 109153376, 107686640, -106334800, 105305080, 104967392, 105214352, 105491912, 105521976, 105286288, 104618960, 103560792, 102622872, -102025336, 101370352, 100522632, 99797864, 98946384, 97210144, 94642288, 92025576, 89505504, 86723976, -84018152, 81963008, 80254152, 78476568, 77107008, 76456864, 75900664, 75283264, 75432512, 76365056, -77025408, 77376520, 78352016, 79577688, 79879952, 79704392, 80063024, 80121008, 78970488, 77898896, -77632072, 76328008, 73605000, 72157600, 71994928, 69305736, 64568392, 63270236, 64563560, 60656212, -52715356, 52361556, 59256592, 55627880, 36381596, 24951076, 39360156, 60072632, 56738664, 33551210, -18991272, 18456548, 9521406, -14571750, -28408524, -13103408, 12198781, 15094663, -7445326, -29722248, --35500052, -37107980, -50775104, -65863324, -53801444, -7777112, 40449464, 53233436, 29868814, 4861903, -5153424, 21903796, 29221346, 20372104, 14507326, 28734942, 52626772, 56590488, 24798068, }, +-40212704, -13275744, 46952044, 92115240, 74442520, -7164006, -95062120, -120792200, -71658848, 412317, +39556112, 39258684, 27809376, 22846004, 21613350, 22599582, 30020210, 38551628, 35357780, 20413980, +8887361, 10007274, 16486769, 18066780, 14104136, 8451422, 938450, -10698227, -25531434, -39939976, +-50867984, -57304528, -60780228, -64703684, -71266392, -79088064, -84963040, -86841016, -84133576, -76906760, +-66280472, -54327580, -42438036, -30728880, -19357954, -9056475, -92879, 7961259, 15277736, 21703544, +27533962, 33300492, 38995080, 44351444, 49515068, 54651312, 59322624, 62897112, 65213172, 66435092, +66654672, 65978212, 64715492, 63386736, 62636192, 62914828, 64117956, 65955664, 68715184, 73009616, +78762184, 85276040, 92387968, 100618200, 110020952, 119751208, 128918272, 137119520, 144049984, 149180320, +151877552, 151570464, 148041616, 141655536, 132766032, 120954336, 105805984, 88399016, 70622144, 52656836, +32515050, 8725226, -17654464, -44401372, -70559336, -96706560, -123290256, -149426208, -173422720, -194302704, +-212562768, -229117184, -243644368, -254602976, -260943424, -263205264, -262809056, -260753904, -256988832, -250553904, +-240419920, -226641664, -210570976, -193659536, -176393776, -158628176, -140387456, -121987272, -103876472, -86627344, +-70640400, -55742768, -41512468, -27914066, -15139223, -3025805, 8857296, 20782274, 32812476, 44721348, +55698748, 64797096, 71973992, 78112032, 83941376, 89633280, 95259152, 100662224, 105034496, 107632416, +108781320, 109376176, 109795472, 110085920, 110543872, 111199928, 111377088, 110571248, 109153376, 107686640, +106334800, 105305080, 104967392, 105214352, 105491912, 105521976, 105286288, 104618960, 103560792, 102622872, +102025336, 101370352, 100522632, 99797864, 98946384, 97210144, 94642288, 92025576, 89505504, 86723976, +84018152, 81963008, 80254152, 78476568, 77107008, 76456864, 75900664, 75283264, 75432512, 76365056, +77025408, 77376520, 78352016, 79577688, 79879952, 79704392, 80063024, 80121008, 78970488, 77898896, +77632072, 76328008, 73605000, 72157600, 71994928, 69305736, 64568392, 63270236, 64563560, 60656212, +52715356, 52361556, 59256592, 55627880, 36381596, 24951076, 39360156, 60072632, 56738664, 33551210, +18991272, 18456548, 9521406, -14571750, -28408524, -13103408, 12198781, 15094663, -7445326, -29722248, +-35500052, -37107980, -50775104, -65863324, -53801444, -7777112, 40449464, 53233436, 29868814, 4861903, +5153424, 21903796, 29221346, 20372104, 14507326, 28734942, 52626772, 56590488, 24798068, }, { -20420422, --40212704, -13275744, 46952044, 92115240, 74442520, -7164006, -95062120, -120792200, -71658848, 412317, -39556112, 39258684, 27809376, 22846004, 21613350, 22599582, 30020210, 38551628, 35357780, 20413980, -8887361, 10007274, 16486769, 18066780, 14104136, 8451422, 938450, -10698227, -25531434, -39939976, --50867984, -57304528, -60780228, -64703684, -71266392, -79088064, -84963040, -86841016, -84133576, -76906760, --66280472, -54327580, -42438036, -30728880, -19357954, -9056475, -92879, 7961259, 15277736, 21703544, -27533962, 33300492, 38995080, 44351444, 49515068, 54651312, 59322624, 62897112, 65213172, 66435092, -66654672, 65978212, 64715492, 63386736, 62636192, 62914828, 64117956, 65955664, 68715184, 73009616, -78762184, 85276040, 92387968, 100618200, 110020952, 119751208, 128918272, 137119520, 144049984, 149180320, -151877552, 151570464, 148041616, 141655536, 132766032, 120954336, 105805984, 88399016, 70622144, 52656836, -32515050, 8725226, -17654464, -44401372, -70559336, -96706560, -123290256, -149426208, -173422720, -194302704, --212562768, -229117184, -243644368, -254602976, -260943424, -263205264, -262809056, -260753904, -256988832, -250553904, --240419920, -226641664, -210570976, -193659536, -176393776, -158628176, -140387456, -121987272, -103876472, -86627344, --70640400, -55742768, -41512468, -27914066, -15139223, -3025805, 8857296, 20782274, 32812476, 44721348, -55698748, 64797096, 71973992, 78112032, 83941376, 89633280, 95259152, 100662224, 105034496, 107632416, -108781320, 109376176, 109795472, 110085920, 110543872, 111199928, 111377088, 110571248, 109153376, 107686640, -106334800, 105305080, 104967392, 105214352, 105491912, 105521976, 105286288, 104618960, 103560792, 102622872, -102025336, 101370352, 100522632, 99797864, 98946384, 97210144, 94642288, 92025576, 89505504, 86723976, -84018152, 81963008, 80254152, 78476568, 77107008, 76456864, 75900664, 75283264, 75432512, 76365056, -77025408, 77376520, 78352016, 79577688, 79879952, 79704392, 80063024, 80121008, 78970488, 77898896, -77632072, 76328008, 73605000, 72157600, 71994928, 69305736, 64568392, 63270236, 64563560, 60656212, -52715356, 52361556, 59256592, 55627880, 36381596, 24951076, 39360156, 60072632, 56738664, 33551210, -18991272, 18456548, 9521406, -14571750, -28408524, -13103408, 12198781, 15094663, -7445326, -29722248, --35500052, -37107980, -50775104, -65863324, -53801444, -7777112, 40449464, 53233436, 29868814, 4861903, -5153424, 21903796, 29221346, 20372104, 14507326, 28734942, 52626772, 56590488, 24798068, }, +-40212704, -13275744, 46952044, 92115240, 74442520, -7164006, -95062120, -120792200, -71658848, 412317, +39556112, 39258684, 27809376, 22846004, 21613350, 22599582, 30020210, 38551628, 35357780, 20413980, +8887361, 10007274, 16486769, 18066780, 14104136, 8451422, 938450, -10698227, -25531434, -39939976, +-50867984, -57304528, -60780228, -64703684, -71266392, -79088064, -84963040, -86841016, -84133576, -76906760, +-66280472, -54327580, -42438036, -30728880, -19357954, -9056475, -92879, 7961259, 15277736, 21703544, +27533962, 33300492, 38995080, 44351444, 49515068, 54651312, 59322624, 62897112, 65213172, 66435092, +66654672, 65978212, 64715492, 63386736, 62636192, 62914828, 64117956, 65955664, 68715184, 73009616, +78762184, 85276040, 92387968, 100618200, 110020952, 119751208, 128918272, 137119520, 144049984, 149180320, +151877552, 151570464, 148041616, 141655536, 132766032, 120954336, 105805984, 88399016, 70622144, 52656836, +32515050, 8725226, -17654464, -44401372, -70559336, -96706560, -123290256, -149426208, -173422720, -194302704, +-212562768, -229117184, -243644368, -254602976, -260943424, -263205264, -262809056, -260753904, -256988832, -250553904, +-240419920, -226641664, -210570976, -193659536, -176393776, -158628176, -140387456, -121987272, -103876472, -86627344, +-70640400, -55742768, -41512468, -27914066, -15139223, -3025805, 8857296, 20782274, 32812476, 44721348, +55698748, 64797096, 71973992, 78112032, 83941376, 89633280, 95259152, 100662224, 105034496, 107632416, +108781320, 109376176, 109795472, 110085920, 110543872, 111199928, 111377088, 110571248, 109153376, 107686640, +106334800, 105305080, 104967392, 105214352, 105491912, 105521976, 105286288, 104618960, 103560792, 102622872, +102025336, 101370352, 100522632, 99797864, 98946384, 97210144, 94642288, 92025576, 89505504, 86723976, +84018152, 81963008, 80254152, 78476568, 77107008, 76456864, 75900664, 75283264, 75432512, 76365056, +77025408, 77376520, 78352016, 79577688, 79879952, 79704392, 80063024, 80121008, 78970488, 77898896, +77632072, 76328008, 73605000, 72157600, 71994928, 69305736, 64568392, 63270236, 64563560, 60656212, +52715356, 52361556, 59256592, 55627880, 36381596, 24951076, 39360156, 60072632, 56738664, 33551210, +18991272, 18456548, 9521406, -14571750, -28408524, -13103408, 12198781, 15094663, -7445326, -29722248, +-35500052, -37107980, -50775104, -65863324, -53801444, -7777112, 40449464, 53233436, 29868814, 4861903, +5153424, 21903796, 29221346, 20372104, 14507326, 28734942, 52626772, 56590488, 24798068, }, }, { { 14732275, -11638825, -44356812, -103051296, -108493024, -50523848, 52062520, 175351696, 280234816, 316784448, 267124960, -164828496, 53560388, -54754392, -164943920, -264043856, -327144960, -348748672, -347294272, -340326240, -329075552, --306791648, -271212160, -226679248, -179788944, -134819568, -91358784, -46217608, 1948305, 51128364, 98800888, -143956032, 185903360, 223205696, 254543392, 279389248, 297522048, 308752864, 313207264, 311433440, 304490624, -294090912, 281911456, 268454784, 253179728, 235893024, 217406416, 198865568, 181129504, 164740448, 149718800, -135312944, 120514096, 104906720, 88763016, 72480792, 56328496, 40613212, 25741350, 12032351, -425202, --11732240, -22002580, -31228170, -39348344, -46411416, -52493092, -57499412, -61295088, -64025616, -66019016, --67385352, -68027984, -68061272, -67838472, -67479304, -66735740, -65527244, -64324116, -63756644, -63998772, --64753612, -65714072, -66779224, -67802504, -68379640, -68074160, -66823248, -65060700, -63425392, -62366684, --62037044, -62612032, -64670396, -69012072, -75856640, -84277992, -92689688, -99956776, -105894032, -110643728, --113752208, -114045880, -110504136, -103202696, -93259312, -81803560, -69157560, -55132348, -39913132, -24388434, --9687836, 3438121, 14907295, 25171192, 34681860, 43366820, 50702624, 56338160, 60504280, 63885492, -67284960, 71270152, 75776112, 80083960, 83495240, 85966992, 87916368, 89653144, 91292216, 92918400, -94461360, 95609728, 96113312, 95987152, 95276872, 93914288, 91903176, 89335856, 86142552, 82104744, -77110232, 71161168, 64230164, 56386480, 47918952, 39143796, 30273076, 21537114, 13142600, 5056787, --2822867, -10342281, -17255032, -23532662, -29110214, -33621540, -36813240, -38884488, -40048424, -40223444, --39477192, -38198904, -36531380, -34227668, -31245888, -27889370, -24346558, -20729122, -17398376, -14614163, --12166569, -9895068, -7998840, -6334003, -4242891, -1566589, 1091995, 3431679, 5676873, 7654169, -8916889, 9718437, 10595684, 11388643, 11908334, 12730820, 14100915, 15284715, 16068546, 17187386, -18505940, 19101868, 19503984, 20854750, 22139482, 22066468, 22573812, 25519086, 28031104, 27629524, -28576564, 34391952, 38481832, 34390876, 31168578, 42307576, 60968672, 64931852, 48531520, 30916248, -27147952, 28959354, 22742388, 11207180, 6075768, 9893457, 15458661, 16604880, 11769284, 1722282, --10866267, -23903104, -41185516, -68761888, -99917048, -109958680, -78720848, -20484846, 22592064, 28151900, -21925272, 38224672, 65255048, 67648416, 60901024, 105280384, 197452000, 226874128, 103426568, }, +11638825, -44356812, -103051296, -108493024, -50523848, 52062520, 175351696, 280234816, 316784448, 267124960, +164828496, 53560388, -54754392, -164943920, -264043856, -327144960, -348748672, -347294272, -340326240, -329075552, +-306791648, -271212160, -226679248, -179788944, -134819568, -91358784, -46217608, 1948305, 51128364, 98800888, +143956032, 185903360, 223205696, 254543392, 279389248, 297522048, 308752864, 313207264, 311433440, 304490624, +294090912, 281911456, 268454784, 253179728, 235893024, 217406416, 198865568, 181129504, 164740448, 149718800, +135312944, 120514096, 104906720, 88763016, 72480792, 56328496, 40613212, 25741350, 12032351, -425202, +-11732240, -22002580, -31228170, -39348344, -46411416, -52493092, -57499412, -61295088, -64025616, -66019016, +-67385352, -68027984, -68061272, -67838472, -67479304, -66735740, -65527244, -64324116, -63756644, -63998772, +-64753612, -65714072, -66779224, -67802504, -68379640, -68074160, -66823248, -65060700, -63425392, -62366684, +-62037044, -62612032, -64670396, -69012072, -75856640, -84277992, -92689688, -99956776, -105894032, -110643728, +-113752208, -114045880, -110504136, -103202696, -93259312, -81803560, -69157560, -55132348, -39913132, -24388434, +-9687836, 3438121, 14907295, 25171192, 34681860, 43366820, 50702624, 56338160, 60504280, 63885492, +67284960, 71270152, 75776112, 80083960, 83495240, 85966992, 87916368, 89653144, 91292216, 92918400, +94461360, 95609728, 96113312, 95987152, 95276872, 93914288, 91903176, 89335856, 86142552, 82104744, +77110232, 71161168, 64230164, 56386480, 47918952, 39143796, 30273076, 21537114, 13142600, 5056787, +-2822867, -10342281, -17255032, -23532662, -29110214, -33621540, -36813240, -38884488, -40048424, -40223444, +-39477192, -38198904, -36531380, -34227668, -31245888, -27889370, -24346558, -20729122, -17398376, -14614163, +-12166569, -9895068, -7998840, -6334003, -4242891, -1566589, 1091995, 3431679, 5676873, 7654169, +8916889, 9718437, 10595684, 11388643, 11908334, 12730820, 14100915, 15284715, 16068546, 17187386, +18505940, 19101868, 19503984, 20854750, 22139482, 22066468, 22573812, 25519086, 28031104, 27629524, +28576564, 34391952, 38481832, 34390876, 31168578, 42307576, 60968672, 64931852, 48531520, 30916248, +27147952, 28959354, 22742388, 11207180, 6075768, 9893457, 15458661, 16604880, 11769284, 1722282, +-10866267, -23903104, -41185516, -68761888, -99917048, -109958680, -78720848, -20484846, 22592064, 28151900, +21925272, 38224672, 65255048, 67648416, 60901024, 105280384, 197452000, 226874128, 103426568, }, { 14732275, -11638825, -44356812, -103051296, -108493024, -50523848, 52062520, 175351696, 280234816, 316784448, 267124960, -164828496, 53560388, -54754392, -164943920, -264043856, -327144960, -348748672, -347294272, -340326240, -329075552, --306791648, -271212160, -226679248, -179788944, -134819568, -91358784, -46217608, 1948305, 51128364, 98800888, -143956032, 185903360, 223205696, 254543392, 279389248, 297522048, 308752864, 313207264, 311433440, 304490624, -294090912, 281911456, 268454784, 253179728, 235893024, 217406416, 198865568, 181129504, 164740448, 149718800, -135312944, 120514096, 104906720, 88763016, 72480792, 56328496, 40613212, 25741350, 12032351, -425202, --11732240, -22002580, -31228170, -39348344, -46411416, -52493092, -57499412, -61295088, -64025616, -66019016, --67385352, -68027984, -68061272, -67838472, -67479304, -66735740, -65527244, -64324116, -63756644, -63998772, --64753612, -65714072, -66779224, -67802504, -68379640, -68074160, -66823248, -65060700, -63425392, -62366684, --62037044, -62612032, -64670396, -69012072, -75856640, -84277992, -92689688, -99956776, -105894032, -110643728, --113752208, -114045880, -110504136, -103202696, -93259312, -81803560, -69157560, -55132348, -39913132, -24388434, --9687836, 3438121, 14907295, 25171192, 34681860, 43366820, 50702624, 56338160, 60504280, 63885492, -67284960, 71270152, 75776112, 80083960, 83495240, 85966992, 87916368, 89653144, 91292216, 92918400, -94461360, 95609728, 96113312, 95987152, 95276872, 93914288, 91903176, 89335856, 86142552, 82104744, -77110232, 71161168, 64230164, 56386480, 47918952, 39143796, 30273076, 21537114, 13142600, 5056787, --2822867, -10342281, -17255032, -23532662, -29110214, -33621540, -36813240, -38884488, -40048424, -40223444, --39477192, -38198904, -36531380, -34227668, -31245888, -27889370, -24346558, -20729122, -17398376, -14614163, --12166569, -9895068, -7998840, -6334003, -4242891, -1566589, 1091995, 3431679, 5676873, 7654169, -8916889, 9718437, 10595684, 11388643, 11908334, 12730820, 14100915, 15284715, 16068546, 17187386, -18505940, 19101868, 19503984, 20854750, 22139482, 22066468, 22573812, 25519086, 28031104, 27629524, -28576564, 34391952, 38481832, 34390876, 31168578, 42307576, 60968672, 64931852, 48531520, 30916248, -27147952, 28959354, 22742388, 11207180, 6075768, 9893457, 15458661, 16604880, 11769284, 1722282, --10866267, -23903104, -41185516, -68761888, -99917048, -109958680, -78720848, -20484846, 22592064, 28151900, -21925272, 38224672, 65255048, 67648416, 60901024, 105280384, 197452000, 226874128, 103426568, }, +11638825, -44356812, -103051296, -108493024, -50523848, 52062520, 175351696, 280234816, 316784448, 267124960, +164828496, 53560388, -54754392, -164943920, -264043856, -327144960, -348748672, -347294272, -340326240, -329075552, +-306791648, -271212160, -226679248, -179788944, -134819568, -91358784, -46217608, 1948305, 51128364, 98800888, +143956032, 185903360, 223205696, 254543392, 279389248, 297522048, 308752864, 313207264, 311433440, 304490624, +294090912, 281911456, 268454784, 253179728, 235893024, 217406416, 198865568, 181129504, 164740448, 149718800, +135312944, 120514096, 104906720, 88763016, 72480792, 56328496, 40613212, 25741350, 12032351, -425202, +-11732240, -22002580, -31228170, -39348344, -46411416, -52493092, -57499412, -61295088, -64025616, -66019016, +-67385352, -68027984, -68061272, -67838472, -67479304, -66735740, -65527244, -64324116, -63756644, -63998772, +-64753612, -65714072, -66779224, -67802504, -68379640, -68074160, -66823248, -65060700, -63425392, -62366684, +-62037044, -62612032, -64670396, -69012072, -75856640, -84277992, -92689688, -99956776, -105894032, -110643728, +-113752208, -114045880, -110504136, -103202696, -93259312, -81803560, -69157560, -55132348, -39913132, -24388434, +-9687836, 3438121, 14907295, 25171192, 34681860, 43366820, 50702624, 56338160, 60504280, 63885492, +67284960, 71270152, 75776112, 80083960, 83495240, 85966992, 87916368, 89653144, 91292216, 92918400, +94461360, 95609728, 96113312, 95987152, 95276872, 93914288, 91903176, 89335856, 86142552, 82104744, +77110232, 71161168, 64230164, 56386480, 47918952, 39143796, 30273076, 21537114, 13142600, 5056787, +-2822867, -10342281, -17255032, -23532662, -29110214, -33621540, -36813240, -38884488, -40048424, -40223444, +-39477192, -38198904, -36531380, -34227668, -31245888, -27889370, -24346558, -20729122, -17398376, -14614163, +-12166569, -9895068, -7998840, -6334003, -4242891, -1566589, 1091995, 3431679, 5676873, 7654169, +8916889, 9718437, 10595684, 11388643, 11908334, 12730820, 14100915, 15284715, 16068546, 17187386, +18505940, 19101868, 19503984, 20854750, 22139482, 22066468, 22573812, 25519086, 28031104, 27629524, +28576564, 34391952, 38481832, 34390876, 31168578, 42307576, 60968672, 64931852, 48531520, 30916248, +27147952, 28959354, 22742388, 11207180, 6075768, 9893457, 15458661, 16604880, 11769284, 1722282, +-10866267, -23903104, -41185516, -68761888, -99917048, -109958680, -78720848, -20484846, 22592064, 28151900, +21925272, 38224672, 65255048, 67648416, 60901024, 105280384, 197452000, 226874128, 103426568, }, }, }; -const Word32 CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[9][BINAURAL_CHANNELS][160] ={ +const Word32 CRendBin_HOA2_HRIR_coeff_re_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160] ={ { { 481896416, -310217984, 58414776, -164563280, -304120192, -367148288, -380131456, -355551904, -293191648, -196581728, -79275968, -40710920, 147338320, 229316352, 281262912, 303829760, 301715552, 280467264, 244312240, 196129680, 138977088, -77330352, 16125992, -41793788, -96546568, -148845856, -197435344, -239701056, -274179968, -301347776, -322237984, --337472224, -347732896, -354176960, -357916256, -359532256, -359364736, -357953312, -355943808, -353696992, -351132352, --347911680, -343733216, -338496032, -332253312, -325083936, -317056640, -308251424, -298721952, -288455904, -277455968, --265846672, -253836864, -241596736, -229251936, -216980144, -205003616, -193438352, -182215600, -171222096, -160454608, --149944832, -139622944, -129395552, -119315800, -109508784, -99968048, -90599112, -81424528, -72528040, -63835024, --55175836, -46532748, -37983616, -29444148, -20744692, -11905649, -3056406, 5887864, 15157476, 24732032, -34304440, 43698608, 53047140, 62476740, 71822056, 80786728, 89310624, 97632120, 105963288, 114152712, -121790776, 128664872, 134969888, 140964592, 146582400, 151548464, 155807984, 159674544, 163566320, 167695392, -171996800, 176316992, 180702160, 185452400, 190833984, 196802912, 203105776, 209568640, 216174832, 222944240, -229863968, 236866912, 243799520, 250473360, 256799312, 262798304, 268505248, 273959872, 279246432, 284425632, -289483488, 294429664, 299342048, 304237760, 309028800, 313663072, 318155072, 322462912, 326518432, 330373184, -334144160, 337883456, 341634592, 345500064, 349513152, 353603584, 357777216, 362119968, 366623232, 371291872, -376310016, 381789312, 387576768, 393623552, 400144384, 407121568, 414326912, 422021344, 430657984, 440077920, -450606496, 463627232, 476568512, 477523040, 452622976, 403573920, 351848544, 318913664, 307050976, }, +310217984, 58414776, -164563280, -304120192, -367148288, -380131456, -355551904, -293191648, -196581728, -79275968, +40710920, 147338320, 229316352, 281262912, 303829760, 301715552, 280467264, 244312240, 196129680, 138977088, +77330352, 16125992, -41793788, -96546568, -148845856, -197435344, -239701056, -274179968, -301347776, -322237984, +-337472224, -347732896, -354176960, -357916256, -359532256, -359364736, -357953312, -355943808, -353696992, -351132352, +-347911680, -343733216, -338496032, -332253312, -325083936, -317056640, -308251424, -298721952, -288455904, -277455968, +-265846672, -253836864, -241596736, -229251936, -216980144, -205003616, -193438352, -182215600, -171222096, -160454608, +-149944832, -139622944, -129395552, -119315800, -109508784, -99968048, -90599112, -81424528, -72528040, -63835024, +-55175836, -46532748, -37983616, -29444148, -20744692, -11905649, -3056406, 5887864, 15157476, 24732032, +34304440, 43698608, 53047140, 62476740, 71822056, 80786728, 89310624, 97632120, 105963288, 114152712, +121790776, 128664872, 134969888, 140964592, 146582400, 151548464, 155807984, 159674544, 163566320, 167695392, +171996800, 176316992, 180702160, 185452400, 190833984, 196802912, 203105776, 209568640, 216174832, 222944240, +229863968, 236866912, 243799520, 250473360, 256799312, 262798304, 268505248, 273959872, 279246432, 284425632, +289483488, 294429664, 299342048, 304237760, 309028800, 313663072, 318155072, 322462912, 326518432, 330373184, +334144160, 337883456, 341634592, 345500064, 349513152, 353603584, 357777216, 362119968, 366623232, 371291872, +376310016, 381789312, 387576768, 393623552, 400144384, 407121568, 414326912, 422021344, 430657984, 440077920, +450606496, 463627232, 476568512, 477523040, 452622976, 403573920, 351848544, 318913664, 307050976, }, { 481896416, -310217984, 58414776, -164563280, -304120192, -367148288, -380131456, -355551904, -293191648, -196581728, -79275968, -40710920, 147338320, 229316352, 281262912, 303829760, 301715552, 280467264, 244312240, 196129680, 138977088, -77330352, 16125992, -41793788, -96546568, -148845856, -197435344, -239701056, -274179968, -301347776, -322237984, --337472224, -347732896, -354176960, -357916256, -359532256, -359364736, -357953312, -355943808, -353696992, -351132352, --347911680, -343733216, -338496032, -332253312, -325083936, -317056640, -308251424, -298721952, -288455904, -277455968, --265846672, -253836864, -241596736, -229251936, -216980144, -205003616, -193438352, -182215600, -171222096, -160454608, --149944832, -139622944, -129395552, -119315800, -109508784, -99968048, -90599112, -81424528, -72528040, -63835024, --55175836, -46532748, -37983616, -29444148, -20744692, -11905649, -3056406, 5887864, 15157476, 24732032, -34304440, 43698608, 53047140, 62476740, 71822056, 80786728, 89310624, 97632120, 105963288, 114152712, -121790776, 128664872, 134969888, 140964592, 146582400, 151548464, 155807984, 159674544, 163566320, 167695392, -171996800, 176316992, 180702160, 185452400, 190833984, 196802912, 203105776, 209568640, 216174832, 222944240, -229863968, 236866912, 243799520, 250473360, 256799312, 262798304, 268505248, 273959872, 279246432, 284425632, -289483488, 294429664, 299342048, 304237760, 309028800, 313663072, 318155072, 322462912, 326518432, 330373184, -334144160, 337883456, 341634592, 345500064, 349513152, 353603584, 357777216, 362119968, 366623232, 371291872, -376310016, 381789312, 387576768, 393623552, 400144384, 407121568, 414326912, 422021344, 430657984, 440077920, -450606496, 463627232, 476568512, 477523040, 452622976, 403573920, 351848544, 318913664, 307050976, }, +310217984, 58414776, -164563280, -304120192, -367148288, -380131456, -355551904, -293191648, -196581728, -79275968, +40710920, 147338320, 229316352, 281262912, 303829760, 301715552, 280467264, 244312240, 196129680, 138977088, +77330352, 16125992, -41793788, -96546568, -148845856, -197435344, -239701056, -274179968, -301347776, -322237984, +-337472224, -347732896, -354176960, -357916256, -359532256, -359364736, -357953312, -355943808, -353696992, -351132352, +-347911680, -343733216, -338496032, -332253312, -325083936, -317056640, -308251424, -298721952, -288455904, -277455968, +-265846672, -253836864, -241596736, -229251936, -216980144, -205003616, -193438352, -182215600, -171222096, -160454608, +-149944832, -139622944, -129395552, -119315800, -109508784, -99968048, -90599112, -81424528, -72528040, -63835024, +-55175836, -46532748, -37983616, -29444148, -20744692, -11905649, -3056406, 5887864, 15157476, 24732032, +34304440, 43698608, 53047140, 62476740, 71822056, 80786728, 89310624, 97632120, 105963288, 114152712, +121790776, 128664872, 134969888, 140964592, 146582400, 151548464, 155807984, 159674544, 163566320, 167695392, +171996800, 176316992, 180702160, 185452400, 190833984, 196802912, 203105776, 209568640, 216174832, 222944240, +229863968, 236866912, 243799520, 250473360, 256799312, 262798304, 268505248, 273959872, 279246432, 284425632, +289483488, 294429664, 299342048, 304237760, 309028800, 313663072, 318155072, 322462912, 326518432, 330373184, +334144160, 337883456, 341634592, 345500064, 349513152, 353603584, 357777216, 362119968, 366623232, 371291872, +376310016, 381789312, 387576768, 393623552, 400144384, 407121568, 414326912, 422021344, 430657984, 440077920, +450606496, 463627232, 476568512, 477523040, 452622976, 403573920, 351848544, 318913664, 307050976, }, }, { { 13525926, -183669984, 362690656, 366411168, 138906224, -214040240, -522691616, -677840320, -674817728, -568401856, -410595104, --229047392, -39669392, 141587360, 300526368, 428658144, 521396160, 575446144, 590423808, 571661760, 529043328, -471929408, 405152864, 330017760, 248510032, 165263904, 85160072, 10375030, -59271084, -124093952, -183848752, --238508128, -288401696, -333674400, -374409472, -411122848, -444532864, -474971296, -502325408, -526306912, -546517440, --562593472, -574554944, -582817408, -587780800, -589642624, -588579072, -584835520, -578711936, -570693248, -561455296, --551466304, -540655296, -528643360, -515168992, -500203168, -483882304, -466478016, -448338752, -429813472, -411243104, --392908448, -374906080, -357258080, -340159808, -323866848, -308357728, -293488000, -279438080, -266554256, -254817184, --243973472, -234108464, -225463232, -217766112, -210407760, -203240544, -196530192, -190128544, -183390272, -175983056, --168182864, -160230736, -151880240, -142743232, -132778376, -122292752, -111605264, -100761544, -89523224, -77611136, --64876016, -51212116, -36453536, -20468204, -3209414, 15364172, 35185984, 55814712, 76534704, 96804264, -116362472, 134906000, 151974192, 167189120, 180361248, 191393408, 200296336, 207218208, 212311504, 215768416, -218109712, 220124048, 222336496, 224759936, 227243504, 229805440, 232639584, 236098640, 240605680, 246271280, -252668096, 259198048, 265524544, 271540192, 277264832, 282908960, 288683008, 294484448, 300107616, 305644896, -311247680, 316729152, 321888480, 326903904, 331966080, 336980448, 342003424, 347368896, 353091936, 358864928, -364784448, 371252128, 378262080, 385742272, 394208192, 404053344, 414948608, 426906880, 440630368, 456193696, -473796640, 495514144, 520240800, 534992928, 520508704, 473353184, 415980480, 375763456, 359659488, }, +183669984, 362690656, 366411168, 138906224, -214040240, -522691616, -677840320, -674817728, -568401856, -410595104, +-229047392, -39669392, 141587360, 300526368, 428658144, 521396160, 575446144, 590423808, 571661760, 529043328, +471929408, 405152864, 330017760, 248510032, 165263904, 85160072, 10375030, -59271084, -124093952, -183848752, +-238508128, -288401696, -333674400, -374409472, -411122848, -444532864, -474971296, -502325408, -526306912, -546517440, +-562593472, -574554944, -582817408, -587780800, -589642624, -588579072, -584835520, -578711936, -570693248, -561455296, +-551466304, -540655296, -528643360, -515168992, -500203168, -483882304, -466478016, -448338752, -429813472, -411243104, +-392908448, -374906080, -357258080, -340159808, -323866848, -308357728, -293488000, -279438080, -266554256, -254817184, +-243973472, -234108464, -225463232, -217766112, -210407760, -203240544, -196530192, -190128544, -183390272, -175983056, +-168182864, -160230736, -151880240, -142743232, -132778376, -122292752, -111605264, -100761544, -89523224, -77611136, +-64876016, -51212116, -36453536, -20468204, -3209414, 15364172, 35185984, 55814712, 76534704, 96804264, +116362472, 134906000, 151974192, 167189120, 180361248, 191393408, 200296336, 207218208, 212311504, 215768416, +218109712, 220124048, 222336496, 224759936, 227243504, 229805440, 232639584, 236098640, 240605680, 246271280, +252668096, 259198048, 265524544, 271540192, 277264832, 282908960, 288683008, 294484448, 300107616, 305644896, +311247680, 316729152, 321888480, 326903904, 331966080, 336980448, 342003424, 347368896, 353091936, 358864928, +364784448, 371252128, 378262080, 385742272, 394208192, 404053344, 414948608, 426906880, 440630368, 456193696, +473796640, 495514144, 520240800, 534992928, 520508704, 473353184, 415980480, 375763456, 359659488, }, { -13525926, --183669984, -362690656, -366411168, -138906224, 214040240, 522691616, 677840320, 674817728, 568401856, 410595104, -229047392, 39669392, -141587360, -300526368, -428658144, -521396160, -575446144, -590423808, -571661760, -529043328, --471929408, -405152864, -330017760, -248510032, -165263904, -85160072, -10375030, 59271084, 124093952, 183848752, -238508128, 288401696, 333674400, 374409472, 411122848, 444532864, 474971296, 502325408, 526306912, 546517440, -562593472, 574554944, 582817408, 587780800, 589642624, 588579072, 584835520, 578711936, 570693248, 561455296, -551466304, 540655296, 528643360, 515168992, 500203168, 483882304, 466478016, 448338752, 429813472, 411243104, -392908448, 374906080, 357258080, 340159808, 323866848, 308357728, 293488000, 279438080, 266554256, 254817184, -243973472, 234108464, 225463232, 217766112, 210407760, 203240544, 196530192, 190128544, 183390272, 175983056, -168182864, 160230736, 151880240, 142743232, 132778376, 122292752, 111605264, 100761544, 89523224, 77611136, -64876016, 51212116, 36453536, 20468204, 3209414, -15364172, -35185984, -55814712, -76534704, -96804264, --116362472, -134906000, -151974192, -167189120, -180361248, -191393408, -200296336, -207218208, -212311504, -215768416, --218109712, -220124048, -222336496, -224759936, -227243504, -229805440, -232639584, -236098640, -240605680, -246271280, --252668096, -259198048, -265524544, -271540192, -277264832, -282908960, -288683008, -294484448, -300107616, -305644896, --311247680, -316729152, -321888480, -326903904, -331966080, -336980448, -342003424, -347368896, -353091936, -358864928, --364784448, -371252128, -378262080, -385742272, -394208192, -404053344, -414948608, -426906880, -440630368, -456193696, --473796640, -495514144, -520240800, -534992928, -520508704, -473353184, -415980480, -375763456, -359659488, }, +-183669984, -362690656, -366411168, -138906224, 214040240, 522691616, 677840320, 674817728, 568401856, 410595104, +229047392, 39669392, -141587360, -300526368, -428658144, -521396160, -575446144, -590423808, -571661760, -529043328, +-471929408, -405152864, -330017760, -248510032, -165263904, -85160072, -10375030, 59271084, 124093952, 183848752, +238508128, 288401696, 333674400, 374409472, 411122848, 444532864, 474971296, 502325408, 526306912, 546517440, +562593472, 574554944, 582817408, 587780800, 589642624, 588579072, 584835520, 578711936, 570693248, 561455296, +551466304, 540655296, 528643360, 515168992, 500203168, 483882304, 466478016, 448338752, 429813472, 411243104, +392908448, 374906080, 357258080, 340159808, 323866848, 308357728, 293488000, 279438080, 266554256, 254817184, +243973472, 234108464, 225463232, 217766112, 210407760, 203240544, 196530192, 190128544, 183390272, 175983056, +168182864, 160230736, 151880240, 142743232, 132778376, 122292752, 111605264, 100761544, 89523224, 77611136, +64876016, 51212116, 36453536, 20468204, 3209414, -15364172, -35185984, -55814712, -76534704, -96804264, +-116362472, -134906000, -151974192, -167189120, -180361248, -191393408, -200296336, -207218208, -212311504, -215768416, +-218109712, -220124048, -222336496, -224759936, -227243504, -229805440, -232639584, -236098640, -240605680, -246271280, +-252668096, -259198048, -265524544, -271540192, -277264832, -282908960, -288683008, -294484448, -300107616, -305644896, +-311247680, -316729152, -321888480, -326903904, -331966080, -336980448, -342003424, -347368896, -353091936, -358864928, +-364784448, -371252128, -378262080, -385742272, -394208192, -404053344, -414948608, -426906880, -440630368, -456193696, +-473796640, -495514144, -520240800, -534992928, -520508704, -473353184, -415980480, -375763456, -359659488, }, }, { { 66455492, -42489036, -7303592, -56425132, -60765736, -13364864, 39979704, 53002044, 24871618, -14745160, -41990284, --47383152, -29909078, -205622, 22675280, 31130996, 37305012, 53430468, 73776800, 84180288, 80077520, -66210680, 45848240, 19817516, -7459822, -29043642, -42323680, -50713900, -58782532, -67827736, -75635984, --79104168, -77078560, -70941048, -62747860, -53937808, -46253040, -42276972, -43666932, -49686328, -58409944, --68580968, -79631912, -90862720, -101538936, -111372264, -120424440, -128844184, -136780752, -144075216, -149948048, --153377584, -153809760, -151199488, -145503296, -136517152, -124198640, -108806552, -90635624, -69779256, -46251964, --20236276, 7921531, 37937448, 69579008, 102332968, 135326896, 167705584, 198836592, 228010144, 254259376, -276677504, 294603072, 307423552, 314699232, 316621216, 313799424, 306456128, 294547232, 278876512, 261192000, -242652224, 223062352, 202313904, 181782336, 163247408, 146855136, 131297152, 116018344, 102219688, 91343752, -83339008, 76982456, 71439800, 66915592, 63953672, 62676996, 62753768, 63661080, 64808372, 65666292, -66025460, 66092032, 66163436, 66112968, 65171832, 62365072, 57319024, 50632832, 43322260, 35932232, -28326384, 20185810, 11475079, 2470680, -6353331, -14421963, -21213380, -26396332, -29804388, -31382252, --31219044, -29484950, -26259966, -21551072, -15535434, -8628052, -1274532, 6187438, 13492640, 20416128, -26744762, 32187558, 36453536, 39546984, 41860360, 43914968, 46180564, 49097920, 52860308, 57086556, -61080876, 64526516, 67592584, 70358008, 72584408, 74128992, 75091064, 75411576, 74807056, 73303816, -71312560, 68612640, 63502164, 53864260, 39855148, 25321516, 15413564, 12046846, 12323335, }, +42489036, -7303592, -56425132, -60765736, -13364864, 39979704, 53002044, 24871618, -14745160, -41990284, +-47383152, -29909078, -205622, 22675280, 31130996, 37305012, 53430468, 73776800, 84180288, 80077520, +66210680, 45848240, 19817516, -7459822, -29043642, -42323680, -50713900, -58782532, -67827736, -75635984, +-79104168, -77078560, -70941048, -62747860, -53937808, -46253040, -42276972, -43666932, -49686328, -58409944, +-68580968, -79631912, -90862720, -101538936, -111372264, -120424440, -128844184, -136780752, -144075216, -149948048, +-153377584, -153809760, -151199488, -145503296, -136517152, -124198640, -108806552, -90635624, -69779256, -46251964, +-20236276, 7921531, 37937448, 69579008, 102332968, 135326896, 167705584, 198836592, 228010144, 254259376, +276677504, 294603072, 307423552, 314699232, 316621216, 313799424, 306456128, 294547232, 278876512, 261192000, +242652224, 223062352, 202313904, 181782336, 163247408, 146855136, 131297152, 116018344, 102219688, 91343752, +83339008, 76982456, 71439800, 66915592, 63953672, 62676996, 62753768, 63661080, 64808372, 65666292, +66025460, 66092032, 66163436, 66112968, 65171832, 62365072, 57319024, 50632832, 43322260, 35932232, +28326384, 20185810, 11475079, 2470680, -6353331, -14421963, -21213380, -26396332, -29804388, -31382252, +-31219044, -29484950, -26259966, -21551072, -15535434, -8628052, -1274532, 6187438, 13492640, 20416128, +26744762, 32187558, 36453536, 39546984, 41860360, 43914968, 46180564, 49097920, 52860308, 57086556, +61080876, 64526516, 67592584, 70358008, 72584408, 74128992, 75091064, 75411576, 74807056, 73303816, +71312560, 68612640, 63502164, 53864260, 39855148, 25321516, 15413564, 12046846, 12323335, }, { 66455492, -42489036, -7303592, -56425132, -60765736, -13364864, 39979704, 53002044, 24871618, -14745160, -41990284, --47383152, -29909078, -205622, 22675280, 31130996, 37305012, 53430468, 73776800, 84180288, 80077520, -66210680, 45848240, 19817516, -7459822, -29043642, -42323680, -50713900, -58782532, -67827736, -75635984, --79104168, -77078560, -70941048, -62747860, -53937808, -46253040, -42276972, -43666932, -49686328, -58409944, --68580968, -79631912, -90862720, -101538936, -111372264, -120424440, -128844184, -136780752, -144075216, -149948048, --153377584, -153809760, -151199488, -145503296, -136517152, -124198640, -108806552, -90635624, -69779256, -46251964, --20236276, 7921531, 37937448, 69579008, 102332968, 135326896, 167705584, 198836592, 228010144, 254259376, -276677504, 294603072, 307423552, 314699232, 316621216, 313799424, 306456128, 294547232, 278876512, 261192000, -242652224, 223062352, 202313904, 181782336, 163247408, 146855136, 131297152, 116018344, 102219688, 91343752, -83339008, 76982456, 71439800, 66915592, 63953672, 62676996, 62753768, 63661080, 64808372, 65666292, -66025460, 66092032, 66163436, 66112968, 65171832, 62365072, 57319024, 50632832, 43322260, 35932232, -28326384, 20185810, 11475079, 2470680, -6353331, -14421963, -21213380, -26396332, -29804388, -31382252, --31219044, -29484950, -26259966, -21551072, -15535434, -8628052, -1274532, 6187438, 13492640, 20416128, -26744762, 32187558, 36453536, 39546984, 41860360, 43914968, 46180564, 49097920, 52860308, 57086556, -61080876, 64526516, 67592584, 70358008, 72584408, 74128992, 75091064, 75411576, 74807056, 73303816, -71312560, 68612640, 63502164, 53864260, 39855148, 25321516, 15413564, 12046846, 12323335, }, +42489036, -7303592, -56425132, -60765736, -13364864, 39979704, 53002044, 24871618, -14745160, -41990284, +-47383152, -29909078, -205622, 22675280, 31130996, 37305012, 53430468, 73776800, 84180288, 80077520, +66210680, 45848240, 19817516, -7459822, -29043642, -42323680, -50713900, -58782532, -67827736, -75635984, +-79104168, -77078560, -70941048, -62747860, -53937808, -46253040, -42276972, -43666932, -49686328, -58409944, +-68580968, -79631912, -90862720, -101538936, -111372264, -120424440, -128844184, -136780752, -144075216, -149948048, +-153377584, -153809760, -151199488, -145503296, -136517152, -124198640, -108806552, -90635624, -69779256, -46251964, +-20236276, 7921531, 37937448, 69579008, 102332968, 135326896, 167705584, 198836592, 228010144, 254259376, +276677504, 294603072, 307423552, 314699232, 316621216, 313799424, 306456128, 294547232, 278876512, 261192000, +242652224, 223062352, 202313904, 181782336, 163247408, 146855136, 131297152, 116018344, 102219688, 91343752, +83339008, 76982456, 71439800, 66915592, 63953672, 62676996, 62753768, 63661080, 64808372, 65666292, +66025460, 66092032, 66163436, 66112968, 65171832, 62365072, 57319024, 50632832, 43322260, 35932232, +28326384, 20185810, 11475079, 2470680, -6353331, -14421963, -21213380, -26396332, -29804388, -31382252, +-31219044, -29484950, -26259966, -21551072, -15535434, -8628052, -1274532, 6187438, 13492640, 20416128, +26744762, 32187558, 36453536, 39546984, 41860360, 43914968, 46180564, 49097920, 52860308, 57086556, +61080876, 64526516, 67592584, 70358008, 72584408, 74128992, 75091064, 75411576, 74807056, 73303816, +71312560, 68612640, 63502164, 53864260, 39855148, 25321516, 15413564, 12046846, 12323335, }, }, { { 11833172, -22050898, 12451110, -26542362, -61786864, -58906012, -27816356, -9918153, -28902446, -69264400, -99286760, --101615168, -80803904, -51693152, -25300042, -1960653, 25160456, 59849832, 96844536, 126515240, 143009520, -145950512, 137272528, 120158688, 99385008, 78400872, 55796456, 27408870, -8007967, -47571596, -88422104, --130155760, -172388720, -212445728, -247005184, -274629888, -295379392, -308997664, -314888224, -313453152, -306353024, --295421280, -281890528, -266567152, -250204400, -233463680, -216624192, -199466864, -181607856, -163049312, -144401632, --126627984, -110723720, -97463008, -86975232, -78442208, -70585104, -62549220, -54095648, -45135276, -35643932, --25954488, -16548509, -7518877, 1311039, 9896142, 18180060, 26588532, 35627292, 45120780, 54547696, -63959580, 73747272, 83600464, 92582312, 100256888, 106849656, 112147504, 115181896, 115410064, 113417200, -109878152, 104501384, 96770984, 87287696, 77452216, 67945312, 58334244, 48197048, 37726992, 26994944, -15467251, 2789045, -10579578, -24038396, -37650756, -51689396, -65735548, -78822312, -90355912, -100470560, --109487304, -117223616, -122861832, -125552096, -125297616, -123098056, -119972392, -115938344, -110206712, -102256728, --92516816, -82153600, -72332616, -63403916, -54622320, -44908716, -34036004, -22905060, -12717398, -4143570, -2891587, 9098888, 15460809, 22529788, 30061550, 37520296, 44748192, 51960516, 59451476, 67590976, -76761800, 87010128, 97994512, 109366512, 120924264, 132441224, 143733760, 154837872, 165794864, 176393232, -186362928, 195563280, 203809088, 210876992, 216793840, 221757744, 225868032, 229339984, 232655152, 236167904, -240298048, 246023248, 252849024, 255440496, 246008208, 223415616, 197305424, 179231136, 171975328, }, +22050898, 12451110, -26542362, -61786864, -58906012, -27816356, -9918153, -28902446, -69264400, -99286760, +-101615168, -80803904, -51693152, -25300042, -1960653, 25160456, 59849832, 96844536, 126515240, 143009520, +145950512, 137272528, 120158688, 99385008, 78400872, 55796456, 27408870, -8007967, -47571596, -88422104, +-130155760, -172388720, -212445728, -247005184, -274629888, -295379392, -308997664, -314888224, -313453152, -306353024, +-295421280, -281890528, -266567152, -250204400, -233463680, -216624192, -199466864, -181607856, -163049312, -144401632, +-126627984, -110723720, -97463008, -86975232, -78442208, -70585104, -62549220, -54095648, -45135276, -35643932, +-25954488, -16548509, -7518877, 1311039, 9896142, 18180060, 26588532, 35627292, 45120780, 54547696, +63959580, 73747272, 83600464, 92582312, 100256888, 106849656, 112147504, 115181896, 115410064, 113417200, +109878152, 104501384, 96770984, 87287696, 77452216, 67945312, 58334244, 48197048, 37726992, 26994944, +15467251, 2789045, -10579578, -24038396, -37650756, -51689396, -65735548, -78822312, -90355912, -100470560, +-109487304, -117223616, -122861832, -125552096, -125297616, -123098056, -119972392, -115938344, -110206712, -102256728, +-92516816, -82153600, -72332616, -63403916, -54622320, -44908716, -34036004, -22905060, -12717398, -4143570, +2891587, 9098888, 15460809, 22529788, 30061550, 37520296, 44748192, 51960516, 59451476, 67590976, +76761800, 87010128, 97994512, 109366512, 120924264, 132441224, 143733760, 154837872, 165794864, 176393232, +186362928, 195563280, 203809088, 210876992, 216793840, 221757744, 225868032, 229339984, 232655152, 236167904, +240298048, 246023248, 252849024, 255440496, 246008208, 223415616, 197305424, 179231136, 171975328, }, { 11833172, -22050898, 12451110, -26542362, -61786864, -58906012, -27816356, -9918153, -28902446, -69264400, -99286760, --101615168, -80803904, -51693152, -25300042, -1960653, 25160456, 59849832, 96844536, 126515240, 143009520, -145950512, 137272528, 120158688, 99385008, 78400872, 55796456, 27408870, -8007967, -47571596, -88422104, --130155760, -172388720, -212445728, -247005184, -274629888, -295379392, -308997664, -314888224, -313453152, -306353024, --295421280, -281890528, -266567152, -250204400, -233463680, -216624192, -199466864, -181607856, -163049312, -144401632, --126627984, -110723720, -97463008, -86975232, -78442208, -70585104, -62549220, -54095648, -45135276, -35643932, --25954488, -16548509, -7518877, 1311039, 9896142, 18180060, 26588532, 35627292, 45120780, 54547696, -63959580, 73747272, 83600464, 92582312, 100256888, 106849656, 112147504, 115181896, 115410064, 113417200, -109878152, 104501384, 96770984, 87287696, 77452216, 67945312, 58334244, 48197048, 37726992, 26994944, -15467251, 2789045, -10579578, -24038396, -37650756, -51689396, -65735548, -78822312, -90355912, -100470560, --109487304, -117223616, -122861832, -125552096, -125297616, -123098056, -119972392, -115938344, -110206712, -102256728, --92516816, -82153600, -72332616, -63403916, -54622320, -44908716, -34036004, -22905060, -12717398, -4143570, -2891587, 9098888, 15460809, 22529788, 30061550, 37520296, 44748192, 51960516, 59451476, 67590976, -76761800, 87010128, 97994512, 109366512, 120924264, 132441224, 143733760, 154837872, 165794864, 176393232, -186362928, 195563280, 203809088, 210876992, 216793840, 221757744, 225868032, 229339984, 232655152, 236167904, -240298048, 246023248, 252849024, 255440496, 246008208, 223415616, 197305424, 179231136, 171975328, }, +22050898, 12451110, -26542362, -61786864, -58906012, -27816356, -9918153, -28902446, -69264400, -99286760, +-101615168, -80803904, -51693152, -25300042, -1960653, 25160456, 59849832, 96844536, 126515240, 143009520, +145950512, 137272528, 120158688, 99385008, 78400872, 55796456, 27408870, -8007967, -47571596, -88422104, +-130155760, -172388720, -212445728, -247005184, -274629888, -295379392, -308997664, -314888224, -313453152, -306353024, +-295421280, -281890528, -266567152, -250204400, -233463680, -216624192, -199466864, -181607856, -163049312, -144401632, +-126627984, -110723720, -97463008, -86975232, -78442208, -70585104, -62549220, -54095648, -45135276, -35643932, +-25954488, -16548509, -7518877, 1311039, 9896142, 18180060, 26588532, 35627292, 45120780, 54547696, +63959580, 73747272, 83600464, 92582312, 100256888, 106849656, 112147504, 115181896, 115410064, 113417200, +109878152, 104501384, 96770984, 87287696, 77452216, 67945312, 58334244, 48197048, 37726992, 26994944, +15467251, 2789045, -10579578, -24038396, -37650756, -51689396, -65735548, -78822312, -90355912, -100470560, +-109487304, -117223616, -122861832, -125552096, -125297616, -123098056, -119972392, -115938344, -110206712, -102256728, +-92516816, -82153600, -72332616, -63403916, -54622320, -44908716, -34036004, -22905060, -12717398, -4143570, +2891587, 9098888, 15460809, 22529788, 30061550, 37520296, 44748192, 51960516, 59451476, 67590976, +76761800, 87010128, 97994512, 109366512, 120924264, 132441224, 143733760, 154837872, 165794864, 176393232, +186362928, 195563280, 203809088, 210876992, 216793840, 221757744, 225868032, 229339984, 232655152, 236167904, +240298048, 246023248, 252849024, 255440496, 246008208, 223415616, 197305424, 179231136, 171975328, }, }, { { -2799245, --6461242, -4839355, 4228932, 10352482, 5557688, -2879239, -4031901, -4235375, -23969676, -69864624, --119191248, -140357376, -124462248, -88925688, -53108344, -20214264, 15939697, 56487948, 96248608, 131457136, -161556272, 184781840, 197673184, 199340176, 192308768, 178485952, 157262912, 128219808, 93059056, 53966264, -12078522, -31656594, -75794896, -119164408, -160668816, -197753184, -226699648, -245372560, -254762432, -257492416, --255849056, -251453152, -245508384, -238591344, -230725104, -221897344, -212102672, -201079632, -188643552, -175189568, --161430096, -147956784, -135404752, -124500368, -115428320, -107563160, -100188704, -93028992, -85878944, -78345576, --70234528, -61632780, -52467320, -42505680, -31803696, -20560008, -8610336, 4320737, 17988396, 31924492, -46197204, 61139932, 76425184, 91154776, 104847664, 117561848, 128919352, 137823360, 143591488, 146795008, -148332608, 148056112, 145138224, 139709920, 133072048, 125938104, 117463064, 106697192, 94169304, 81123880, -67869608, 53943716, 39527120, 25675314, 13233868, 2276333, -7464653, -16153372, -23796266, -30318712, --35788888, -40561672, -44957572, -48943300, -52537652, -56276420, -60665876, -65368328, -69496864, -72567768, --74776992, -76658720, -78807280, -81478752, -84098680, -85603528, -85559504, -84545360, -83402360, -82655568, --82548736, -82935280, -83151104, -82575576, -81216224, -79330728, -76860584, -73636680, -69632696, -64636572, --58252104, -50539416, -42062764, -33211908, -24143622, -15275051, -7023346, 731755, 8172249, 14932528, -20656646, 25547540, 29744796, 33010044, 35549980, 38117836, 40965936, 43895640, 47351476, 52045340, -58054536, 66093104, 78244104, 94179504, 107807440, 111929536, 106298832, 97620848, 92195232, }, +-6461242, -4839355, 4228932, 10352482, 5557688, -2879239, -4031901, -4235375, -23969676, -69864624, +-119191248, -140357376, -124462248, -88925688, -53108344, -20214264, 15939697, 56487948, 96248608, 131457136, +161556272, 184781840, 197673184, 199340176, 192308768, 178485952, 157262912, 128219808, 93059056, 53966264, +12078522, -31656594, -75794896, -119164408, -160668816, -197753184, -226699648, -245372560, -254762432, -257492416, +-255849056, -251453152, -245508384, -238591344, -230725104, -221897344, -212102672, -201079632, -188643552, -175189568, +-161430096, -147956784, -135404752, -124500368, -115428320, -107563160, -100188704, -93028992, -85878944, -78345576, +-70234528, -61632780, -52467320, -42505680, -31803696, -20560008, -8610336, 4320737, 17988396, 31924492, +46197204, 61139932, 76425184, 91154776, 104847664, 117561848, 128919352, 137823360, 143591488, 146795008, +148332608, 148056112, 145138224, 139709920, 133072048, 125938104, 117463064, 106697192, 94169304, 81123880, +67869608, 53943716, 39527120, 25675314, 13233868, 2276333, -7464653, -16153372, -23796266, -30318712, +-35788888, -40561672, -44957572, -48943300, -52537652, -56276420, -60665876, -65368328, -69496864, -72567768, +-74776992, -76658720, -78807280, -81478752, -84098680, -85603528, -85559504, -84545360, -83402360, -82655568, +-82548736, -82935280, -83151104, -82575576, -81216224, -79330728, -76860584, -73636680, -69632696, -64636572, +-58252104, -50539416, -42062764, -33211908, -24143622, -15275051, -7023346, 731755, 8172249, 14932528, +20656646, 25547540, 29744796, 33010044, 35549980, 38117836, 40965936, 43895640, 47351476, 52045340, +58054536, 66093104, 78244104, 94179504, 107807440, 111929536, 106298832, 97620848, 92195232, }, { 2799245, -6461242, 4839355, -4228932, -10352482, -5557688, 2879239, 4031901, 4235375, 23969676, 69864624, -119191248, 140357376, 124462248, 88925688, 53108344, 20214264, -15939697, -56487948, -96248608, -131457136, --161556272, -184781840, -197673184, -199340176, -192308768, -178485952, -157262912, -128219808, -93059056, -53966264, --12078522, 31656594, 75794896, 119164408, 160668816, 197753184, 226699648, 245372560, 254762432, 257492416, -255849056, 251453152, 245508384, 238591344, 230725104, 221897344, 212102672, 201079632, 188643552, 175189568, -161430096, 147956784, 135404752, 124500368, 115428320, 107563160, 100188704, 93028992, 85878944, 78345576, -70234528, 61632780, 52467320, 42505680, 31803696, 20560008, 8610336, -4320737, -17988396, -31924492, --46197204, -61139932, -76425184, -91154776, -104847664, -117561848, -128919352, -137823360, -143591488, -146795008, --148332608, -148056112, -145138224, -139709920, -133072048, -125938104, -117463064, -106697192, -94169304, -81123880, --67869608, -53943716, -39527120, -25675314, -13233868, -2276333, 7464653, 16153372, 23796266, 30318712, -35788888, 40561672, 44957572, 48943300, 52537652, 56276420, 60665876, 65368328, 69496864, 72567768, -74776992, 76658720, 78807280, 81478752, 84098680, 85603528, 85559504, 84545360, 83402360, 82655568, -82548736, 82935280, 83151104, 82575576, 81216224, 79330728, 76860584, 73636680, 69632696, 64636572, -58252104, 50539416, 42062764, 33211908, 24143622, 15275051, 7023346, -731755, -8172249, -14932528, --20656646, -25547540, -29744796, -33010044, -35549980, -38117836, -40965936, -43895640, -47351476, -52045340, --58054536, -66093104, -78244104, -94179504, -107807440, -111929536, -106298832, -97620848, -92195232, }, +6461242, 4839355, -4228932, -10352482, -5557688, 2879239, 4031901, 4235375, 23969676, 69864624, +119191248, 140357376, 124462248, 88925688, 53108344, 20214264, -15939697, -56487948, -96248608, -131457136, +-161556272, -184781840, -197673184, -199340176, -192308768, -178485952, -157262912, -128219808, -93059056, -53966264, +-12078522, 31656594, 75794896, 119164408, 160668816, 197753184, 226699648, 245372560, 254762432, 257492416, +255849056, 251453152, 245508384, 238591344, 230725104, 221897344, 212102672, 201079632, 188643552, 175189568, +161430096, 147956784, 135404752, 124500368, 115428320, 107563160, 100188704, 93028992, 85878944, 78345576, +70234528, 61632780, 52467320, 42505680, 31803696, 20560008, 8610336, -4320737, -17988396, -31924492, +-46197204, -61139932, -76425184, -91154776, -104847664, -117561848, -128919352, -137823360, -143591488, -146795008, +-148332608, -148056112, -145138224, -139709920, -133072048, -125938104, -117463064, -106697192, -94169304, -81123880, +-67869608, -53943716, -39527120, -25675314, -13233868, -2276333, 7464653, 16153372, 23796266, 30318712, +35788888, 40561672, 44957572, 48943300, 52537652, 56276420, 60665876, 65368328, 69496864, 72567768, +74776992, 76658720, 78807280, 81478752, 84098680, 85603528, 85559504, 84545360, 83402360, 82655568, +82548736, 82935280, 83151104, 82575576, 81216224, 79330728, 76860584, 73636680, 69632696, 64636572, +58252104, 50539416, 42062764, 33211908, 24143622, 15275051, 7023346, -731755, -8172249, -14932528, +-20656646, -25547540, -29744796, -33010044, -35549980, -38117836, -40965936, -43895640, -47351476, -52045340, +-58054536, -66093104, -78244104, -94179504, -107807440, -111929536, -106298832, -97620848, -92195232, }, }, { { 4660577, --3761318, 2147484, 14144938, 1481764, -20578798, 3313031, 73286104, 106591424, 42097660, -72984920, --141153024, -127037080, -72848552, -26254598, 4194036, 29984240, 56193740, 80756656, 100364256, 110516488, -108207944, 95994128, 79020416, 60338920, 42405824, 28893856, 21281562, 17347910, 15633144, 17613660, -23518704, 29914984, 33616708, 35107064, 36514200, 38280508, 38737920, 35492536, 27007292, 13924821, --1247151, -16257525, -30282740, -43022152, -54204636, -64430416, -75067976, -86801824, -99237904, -111906984, --124563712, -136666928, -147541792, -156717984, -163421360, -166405824, -164998144, -159533872, -150274464, -136927312, --119659936, -99412920, -76727440, -51388208, -23609436, 5508833, 34976068, 64331632, 92863096, 119363048, -142796384, 162450688, 177512080, 187299232, 191844384, 191558768, 186469760, 176480736, 162277824, 145250432, -126342904, 105501576, 82560008, 58354648, 34439196, 11667279, -10382010, -32273458, -53592064, -73464344, --91631520, -108246600, -123020752, -135405824, -145302496, -152779504, -157352032, -158328064, -155697392, -150061328, --141810688, -130838664, -116973432, -100589208, -83070576, -66531192, -52418464, -40350144, -28921236, -17620104, --7400229, 453656, 5391795, 7756174, 8531953, 8819715, 9077950, 9011378, 8390755, 7570417, -7068980, 7218230, 8370355, 10827613, 14411226, 18627810, 23251880, 28213104, 33091112, 37315748, -40679244, 43155832, 44554380, 44824428, 44306344, 43304008, 41874320, 40254580, 38846904, 37594924, -36056788, 34188476, 32320702, 30408906, 28090696, 25396678, 22599582, 19570556, 16100222, 12525735, -9177808, 5531918, 844498, -4535486, -9188009, -11842299, -12232067, -11146514, -10013716, }, +-3761318, 2147484, 14144938, 1481764, -20578798, 3313031, 73286104, 106591424, 42097660, -72984920, +-141153024, -127037080, -72848552, -26254598, 4194036, 29984240, 56193740, 80756656, 100364256, 110516488, +108207944, 95994128, 79020416, 60338920, 42405824, 28893856, 21281562, 17347910, 15633144, 17613660, +23518704, 29914984, 33616708, 35107064, 36514200, 38280508, 38737920, 35492536, 27007292, 13924821, +-1247151, -16257525, -30282740, -43022152, -54204636, -64430416, -75067976, -86801824, -99237904, -111906984, +-124563712, -136666928, -147541792, -156717984, -163421360, -166405824, -164998144, -159533872, -150274464, -136927312, +-119659936, -99412920, -76727440, -51388208, -23609436, 5508833, 34976068, 64331632, 92863096, 119363048, +142796384, 162450688, 177512080, 187299232, 191844384, 191558768, 186469760, 176480736, 162277824, 145250432, +126342904, 105501576, 82560008, 58354648, 34439196, 11667279, -10382010, -32273458, -53592064, -73464344, +-91631520, -108246600, -123020752, -135405824, -145302496, -152779504, -157352032, -158328064, -155697392, -150061328, +-141810688, -130838664, -116973432, -100589208, -83070576, -66531192, -52418464, -40350144, -28921236, -17620104, +-7400229, 453656, 5391795, 7756174, 8531953, 8819715, 9077950, 9011378, 8390755, 7570417, +7068980, 7218230, 8370355, 10827613, 14411226, 18627810, 23251880, 28213104, 33091112, 37315748, +40679244, 43155832, 44554380, 44824428, 44306344, 43304008, 41874320, 40254580, 38846904, 37594924, +36056788, 34188476, 32320702, 30408906, 28090696, 25396678, 22599582, 19570556, 16100222, 12525735, +9177808, 5531918, 844498, -4535486, -9188009, -11842299, -12232067, -11146514, -10013716, }, { -4660577, -3761318, -2147484, -14144938, -1481764, 20578798, -3313031, -73286104, -106591424, -42097660, 72984920, -141153024, 127037080, 72848552, 26254598, -4194036, -29984240, -56193740, -80756656, -100364256, -110516488, --108207944, -95994128, -79020416, -60338920, -42405824, -28893856, -21281562, -17347910, -15633144, -17613660, --23518704, -29914984, -33616708, -35107064, -36514200, -38280508, -38737920, -35492536, -27007292, -13924821, -1247151, 16257525, 30282740, 43022152, 54204636, 64430416, 75067976, 86801824, 99237904, 111906984, -124563712, 136666928, 147541792, 156717984, 163421360, 166405824, 164998144, 159533872, 150274464, 136927312, -119659936, 99412920, 76727440, 51388208, 23609436, -5508833, -34976068, -64331632, -92863096, -119363048, --142796384, -162450688, -177512080, -187299232, -191844384, -191558768, -186469760, -176480736, -162277824, -145250432, --126342904, -105501576, -82560008, -58354648, -34439196, -11667279, 10382010, 32273458, 53592064, 73464344, -91631520, 108246600, 123020752, 135405824, 145302496, 152779504, 157352032, 158328064, 155697392, 150061328, -141810688, 130838664, 116973432, 100589208, 83070576, 66531192, 52418464, 40350144, 28921236, 17620104, -7400229, -453656, -5391795, -7756174, -8531953, -8819715, -9077950, -9011378, -8390755, -7570417, --7068980, -7218230, -8370355, -10827613, -14411226, -18627810, -23251880, -28213104, -33091112, -37315748, --40679244, -43155832, -44554380, -44824428, -44306344, -43304008, -41874320, -40254580, -38846904, -37594924, --36056788, -34188476, -32320702, -30408906, -28090696, -25396678, -22599582, -19570556, -16100222, -12525735, --9177808, -5531918, -844498, 4535486, 9188009, 11842299, 12232067, 11146514, 10013716, }, +3761318, -2147484, -14144938, -1481764, 20578798, -3313031, -73286104, -106591424, -42097660, 72984920, +141153024, 127037080, 72848552, 26254598, -4194036, -29984240, -56193740, -80756656, -100364256, -110516488, +-108207944, -95994128, -79020416, -60338920, -42405824, -28893856, -21281562, -17347910, -15633144, -17613660, +-23518704, -29914984, -33616708, -35107064, -36514200, -38280508, -38737920, -35492536, -27007292, -13924821, +1247151, 16257525, 30282740, 43022152, 54204636, 64430416, 75067976, 86801824, 99237904, 111906984, +124563712, 136666928, 147541792, 156717984, 163421360, 166405824, 164998144, 159533872, 150274464, 136927312, +119659936, 99412920, 76727440, 51388208, 23609436, -5508833, -34976068, -64331632, -92863096, -119363048, +-142796384, -162450688, -177512080, -187299232, -191844384, -191558768, -186469760, -176480736, -162277824, -145250432, +-126342904, -105501576, -82560008, -58354648, -34439196, -11667279, 10382010, 32273458, 53592064, 73464344, +91631520, 108246600, 123020752, 135405824, 145302496, 152779504, 157352032, 158328064, 155697392, 150061328, +141810688, 130838664, 116973432, 100589208, 83070576, 66531192, 52418464, 40350144, 28921236, 17620104, +7400229, -453656, -5391795, -7756174, -8531953, -8819715, -9077950, -9011378, -8390755, -7570417, +-7068980, -7218230, -8370355, -10827613, -14411226, -18627810, -23251880, -28213104, -33091112, -37315748, +-40679244, -43155832, -44554380, -44824428, -44306344, -43304008, -41874320, -40254580, -38846904, -37594924, +-36056788, -34188476, -32320702, -30408906, -28090696, -25396678, -22599582, -19570556, -16100222, -12525735, +-9177808, -5531918, -844498, 4535486, 9188009, 11842299, 12232067, 11146514, 10013716, }, }, { { 5583995, -6041409, -3080565, -20302848, -31235686, -32544040, -36608152, -42584600, -22413286, 45768784, 140109344, -209438704, 222517424, 189292096, 136838736, 81594176, 28635084, -17463338, -52446920, -77622408, -97324496, --112847584, -122775936, -126743408, -125114008, -117037320, -102680320, -86526952, -75130256, -71197136, -71656160, --71568648, -68443528, -62621160, -55089400, -46113992, -35584340, -23645406, -10550587, 3620121, 18485002, -32754494, 44788456, 53966800, 61098056, 67329520, 73078328, 78128136, 82242720, 85336168, 87326352, -88121992, 87625920, 85643256, 81945832, 76552960, 69851200, 62433792, 54886996, 47670380, 41052908, -35170952, 30184494, 26330298, 23782844, 22596360, 22888418, 24982752, 29239064, 35748624, 44303124, -54699092, 67002028, 81370304, 97648768, 115331144, 134012640, 153588560, 173799616, 193838848, 212766768, -230137776, 245835872, 259442864, 270214656, 277666400, 281800320, 282770976, 280663776, 275530208, 267223200, -255219840, 239074528, 219228016, 197076192, 174036912, 150685168, 126931312, 103010496, 80224080, 60595548, -45620604, 35276712, 28341416, 23708756, 21281562, 21625160, 25003152, 30849676, 37976636, 45104672, -51291036, 56076168, 59363964, 61216704, 61680024, 60641180, 57775364, 52764748, 45659260, 36971616, -27376658, 17395692, 7320772, -2738042, -12794171, -22834730, -32721746, -42367168, -51954608, -61787400, --71921912, -82127288, -92180736, -102044128, -111806048, -121666224, -131924752, -142794784, -154210256, -165864128, --177331152, -188156608, -198022144, -206856896, -214596432, -220965328, -225850848, -229634192, -232688448, -235026512, --237125152, -239875536, -241617136, -236108848, -217380640, -188170576, -160260800, -143712288, -138218496, }, +6041409, -3080565, -20302848, -31235686, -32544040, -36608152, -42584600, -22413286, 45768784, 140109344, +209438704, 222517424, 189292096, 136838736, 81594176, 28635084, -17463338, -52446920, -77622408, -97324496, +-112847584, -122775936, -126743408, -125114008, -117037320, -102680320, -86526952, -75130256, -71197136, -71656160, +-71568648, -68443528, -62621160, -55089400, -46113992, -35584340, -23645406, -10550587, 3620121, 18485002, +32754494, 44788456, 53966800, 61098056, 67329520, 73078328, 78128136, 82242720, 85336168, 87326352, +88121992, 87625920, 85643256, 81945832, 76552960, 69851200, 62433792, 54886996, 47670380, 41052908, +35170952, 30184494, 26330298, 23782844, 22596360, 22888418, 24982752, 29239064, 35748624, 44303124, +54699092, 67002028, 81370304, 97648768, 115331144, 134012640, 153588560, 173799616, 193838848, 212766768, +230137776, 245835872, 259442864, 270214656, 277666400, 281800320, 282770976, 280663776, 275530208, 267223200, +255219840, 239074528, 219228016, 197076192, 174036912, 150685168, 126931312, 103010496, 80224080, 60595548, +45620604, 35276712, 28341416, 23708756, 21281562, 21625160, 25003152, 30849676, 37976636, 45104672, +51291036, 56076168, 59363964, 61216704, 61680024, 60641180, 57775364, 52764748, 45659260, 36971616, +27376658, 17395692, 7320772, -2738042, -12794171, -22834730, -32721746, -42367168, -51954608, -61787400, +-71921912, -82127288, -92180736, -102044128, -111806048, -121666224, -131924752, -142794784, -154210256, -165864128, +-177331152, -188156608, -198022144, -206856896, -214596432, -220965328, -225850848, -229634192, -232688448, -235026512, +-237125152, -239875536, -241617136, -236108848, -217380640, -188170576, -160260800, -143712288, -138218496, }, { 5583995, -6041409, -3080565, -20302848, -31235686, -32544040, -36608152, -42584600, -22413286, 45768784, 140109344, -209438704, 222517424, 189292096, 136838736, 81594176, 28635084, -17463338, -52446920, -77622408, -97324496, --112847584, -122775936, -126743408, -125114008, -117037320, -102680320, -86526952, -75130256, -71197136, -71656160, --71568648, -68443528, -62621160, -55089400, -46113992, -35584340, -23645406, -10550587, 3620121, 18485002, -32754494, 44788456, 53966800, 61098056, 67329520, 73078328, 78128136, 82242720, 85336168, 87326352, -88121992, 87625920, 85643256, 81945832, 76552960, 69851200, 62433792, 54886996, 47670380, 41052908, -35170952, 30184494, 26330298, 23782844, 22596360, 22888418, 24982752, 29239064, 35748624, 44303124, -54699092, 67002028, 81370304, 97648768, 115331144, 134012640, 153588560, 173799616, 193838848, 212766768, -230137776, 245835872, 259442864, 270214656, 277666400, 281800320, 282770976, 280663776, 275530208, 267223200, -255219840, 239074528, 219228016, 197076192, 174036912, 150685168, 126931312, 103010496, 80224080, 60595548, -45620604, 35276712, 28341416, 23708756, 21281562, 21625160, 25003152, 30849676, 37976636, 45104672, -51291036, 56076168, 59363964, 61216704, 61680024, 60641180, 57775364, 52764748, 45659260, 36971616, -27376658, 17395692, 7320772, -2738042, -12794171, -22834730, -32721746, -42367168, -51954608, -61787400, --71921912, -82127288, -92180736, -102044128, -111806048, -121666224, -131924752, -142794784, -154210256, -165864128, --177331152, -188156608, -198022144, -206856896, -214596432, -220965328, -225850848, -229634192, -232688448, -235026512, --237125152, -239875536, -241617136, -236108848, -217380640, -188170576, -160260800, -143712288, -138218496, }, +6041409, -3080565, -20302848, -31235686, -32544040, -36608152, -42584600, -22413286, 45768784, 140109344, +209438704, 222517424, 189292096, 136838736, 81594176, 28635084, -17463338, -52446920, -77622408, -97324496, +-112847584, -122775936, -126743408, -125114008, -117037320, -102680320, -86526952, -75130256, -71197136, -71656160, +-71568648, -68443528, -62621160, -55089400, -46113992, -35584340, -23645406, -10550587, 3620121, 18485002, +32754494, 44788456, 53966800, 61098056, 67329520, 73078328, 78128136, 82242720, 85336168, 87326352, +88121992, 87625920, 85643256, 81945832, 76552960, 69851200, 62433792, 54886996, 47670380, 41052908, +35170952, 30184494, 26330298, 23782844, 22596360, 22888418, 24982752, 29239064, 35748624, 44303124, +54699092, 67002028, 81370304, 97648768, 115331144, 134012640, 153588560, 173799616, 193838848, 212766768, +230137776, 245835872, 259442864, 270214656, 277666400, 281800320, 282770976, 280663776, 275530208, 267223200, +255219840, 239074528, 219228016, 197076192, 174036912, 150685168, 126931312, 103010496, 80224080, 60595548, +45620604, 35276712, 28341416, 23708756, 21281562, 21625160, 25003152, 30849676, 37976636, 45104672, +51291036, 56076168, 59363964, 61216704, 61680024, 60641180, 57775364, 52764748, 45659260, 36971616, +27376658, 17395692, 7320772, -2738042, -12794171, -22834730, -32721746, -42367168, -51954608, -61787400, +-71921912, -82127288, -92180736, -102044128, -111806048, -121666224, -131924752, -142794784, -154210256, -165864128, +-177331152, -188156608, -198022144, -206856896, -214596432, -220965328, -225850848, -229634192, -232688448, -235026512, +-237125152, -239875536, -241617136, -236108848, -217380640, -188170576, -160260800, -143712288, -138218496, }, }, { { 19684372, --18938122, -61517892, -63736240, -8271570, 72348728, 113489680, 74640088, -16678969, -88281976, -95594696, --58876484, -25069188, -13101261, -11398306, -10298795, -11159399, -10371272, 700617, 18197240, 26725970, -21249350, 13889387, 15810311, 24522116, 32755032, 39345120, 46255724, 52015276, 53102440, 48347908, -39482560, 29595010, 21625698, 16104517, 10235444, 754304, -12858058, -28900298, -45485852, -60772176, --72917272, -81328424, -86918328, -90447720, -91846800, -91372744, -89939296, -88036632, -85586352, -82835960, --80242336, -77655160, -74635256, -71230424, -67602784, -63391568, -58213448, -52345452, -46373300, -40633612, --35352948, -30884036, -27565636, -25581362, -24846922, -24860344, -25043954, -25381646, -26145076, -26930518, --26805964, -25485800, -23373748, -20323248, -15362024, -7809325, 2206003, 14413910, 28803124, 45313516, -63640140, 83214456, 103157600, 122722784, 141861152, 160564128, 177722528, 191942096, 203639424, 214783792, -226025344, 235433472, 240735600, 241693920, 239550720, 234954576, 227198944, 215266448, 199234944, 180485808, -160333808, 138645296, 114415248, 87663504, 59999084, 33190434, 7822209, -16640314, -41058812, -65774740, --89928560, -111802296, -130274408, -145634288, -158692064, -169711344, -178538032, -185078736, -189296384, -191343472, --191866928, -191587216, -190608496, -188735888, -186197568, -183412288, -180362320, -176743808, -172246976, -166363408, --158708704, -149891680, -141210464, -133262632, -125681480, -118111600, -110336640, -101760120, -92072288, -82134272, --73056856, -64893736, -57217016, -50053548, -43236900, -35970352, -28012314, -20119774, -12702903, -5408975, -1946157, 9951976, 20522428, 34193844, 46772732, 52321292, 49926848, 44465260, 40865540, }, +-18938122, -61517892, -63736240, -8271570, 72348728, 113489680, 74640088, -16678969, -88281976, -95594696, +-58876484, -25069188, -13101261, -11398306, -10298795, -11159399, -10371272, 700617, 18197240, 26725970, +21249350, 13889387, 15810311, 24522116, 32755032, 39345120, 46255724, 52015276, 53102440, 48347908, +39482560, 29595010, 21625698, 16104517, 10235444, 754304, -12858058, -28900298, -45485852, -60772176, +-72917272, -81328424, -86918328, -90447720, -91846800, -91372744, -89939296, -88036632, -85586352, -82835960, +-80242336, -77655160, -74635256, -71230424, -67602784, -63391568, -58213448, -52345452, -46373300, -40633612, +-35352948, -30884036, -27565636, -25581362, -24846922, -24860344, -25043954, -25381646, -26145076, -26930518, +-26805964, -25485800, -23373748, -20323248, -15362024, -7809325, 2206003, 14413910, 28803124, 45313516, +63640140, 83214456, 103157600, 122722784, 141861152, 160564128, 177722528, 191942096, 203639424, 214783792, +226025344, 235433472, 240735600, 241693920, 239550720, 234954576, 227198944, 215266448, 199234944, 180485808, +160333808, 138645296, 114415248, 87663504, 59999084, 33190434, 7822209, -16640314, -41058812, -65774740, +-89928560, -111802296, -130274408, -145634288, -158692064, -169711344, -178538032, -185078736, -189296384, -191343472, +-191866928, -191587216, -190608496, -188735888, -186197568, -183412288, -180362320, -176743808, -172246976, -166363408, +-158708704, -149891680, -141210464, -133262632, -125681480, -118111600, -110336640, -101760120, -92072288, -82134272, +-73056856, -64893736, -57217016, -50053548, -43236900, -35970352, -28012314, -20119774, -12702903, -5408975, +1946157, 9951976, 20522428, 34193844, 46772732, 52321292, 49926848, 44465260, 40865540, }, { 19684372, --18938122, -61517892, -63736240, -8271570, 72348728, 113489680, 74640088, -16678969, -88281976, -95594696, --58876484, -25069188, -13101261, -11398306, -10298795, -11159399, -10371272, 700617, 18197240, 26725970, -21249350, 13889387, 15810311, 24522116, 32755032, 39345120, 46255724, 52015276, 53102440, 48347908, -39482560, 29595010, 21625698, 16104517, 10235444, 754304, -12858058, -28900298, -45485852, -60772176, --72917272, -81328424, -86918328, -90447720, -91846800, -91372744, -89939296, -88036632, -85586352, -82835960, --80242336, -77655160, -74635256, -71230424, -67602784, -63391568, -58213448, -52345452, -46373300, -40633612, --35352948, -30884036, -27565636, -25581362, -24846922, -24860344, -25043954, -25381646, -26145076, -26930518, --26805964, -25485800, -23373748, -20323248, -15362024, -7809325, 2206003, 14413910, 28803124, 45313516, -63640140, 83214456, 103157600, 122722784, 141861152, 160564128, 177722528, 191942096, 203639424, 214783792, -226025344, 235433472, 240735600, 241693920, 239550720, 234954576, 227198944, 215266448, 199234944, 180485808, -160333808, 138645296, 114415248, 87663504, 59999084, 33190434, 7822209, -16640314, -41058812, -65774740, --89928560, -111802296, -130274408, -145634288, -158692064, -169711344, -178538032, -185078736, -189296384, -191343472, --191866928, -191587216, -190608496, -188735888, -186197568, -183412288, -180362320, -176743808, -172246976, -166363408, --158708704, -149891680, -141210464, -133262632, -125681480, -118111600, -110336640, -101760120, -92072288, -82134272, --73056856, -64893736, -57217016, -50053548, -43236900, -35970352, -28012314, -20119774, -12702903, -5408975, -1946157, 9951976, 20522428, 34193844, 46772732, 52321292, 49926848, 44465260, 40865540, }, +-18938122, -61517892, -63736240, -8271570, 72348728, 113489680, 74640088, -16678969, -88281976, -95594696, +-58876484, -25069188, -13101261, -11398306, -10298795, -11159399, -10371272, 700617, 18197240, 26725970, +21249350, 13889387, 15810311, 24522116, 32755032, 39345120, 46255724, 52015276, 53102440, 48347908, +39482560, 29595010, 21625698, 16104517, 10235444, 754304, -12858058, -28900298, -45485852, -60772176, +-72917272, -81328424, -86918328, -90447720, -91846800, -91372744, -89939296, -88036632, -85586352, -82835960, +-80242336, -77655160, -74635256, -71230424, -67602784, -63391568, -58213448, -52345452, -46373300, -40633612, +-35352948, -30884036, -27565636, -25581362, -24846922, -24860344, -25043954, -25381646, -26145076, -26930518, +-26805964, -25485800, -23373748, -20323248, -15362024, -7809325, 2206003, 14413910, 28803124, 45313516, +63640140, 83214456, 103157600, 122722784, 141861152, 160564128, 177722528, 191942096, 203639424, 214783792, +226025344, 235433472, 240735600, 241693920, 239550720, 234954576, 227198944, 215266448, 199234944, 180485808, +160333808, 138645296, 114415248, 87663504, 59999084, 33190434, 7822209, -16640314, -41058812, -65774740, +-89928560, -111802296, -130274408, -145634288, -158692064, -169711344, -178538032, -185078736, -189296384, -191343472, +-191866928, -191587216, -190608496, -188735888, -186197568, -183412288, -180362320, -176743808, -172246976, -166363408, +-158708704, -149891680, -141210464, -133262632, -125681480, -118111600, -110336640, -101760120, -92072288, -82134272, +-73056856, -64893736, -57217016, -50053548, -43236900, -35970352, -28012314, -20119774, -12702903, -5408975, +1946157, 9951976, 20522428, 34193844, 46772732, 52321292, 49926848, 44465260, 40865540, }, }, { { -4806606, -34484292, 50781008, 2425046, -86674048, -166787536, -205533520, -182588720, -85410792, 64405720, 208520656, -300475360, 340926976, 350482208, 329967296, 269087744, 178262624, 86645600, 12090870, -50222128, -110979808, --171388528, -225137360, -266773296, -295754144, -315900736, -331757248, -344317312, -350935328, -349396672, -340069600, --323986560, -301317184, -272422272, -238630528, -201435040, -162035152, -121752656, -82081656, -44427140, -10092099, -20141250, 46730316, 70864816, 92928056, 112154480, 127839168, 140086256, 149456816, 156754496, 163096544, -169343584, 175382304, 180445536, 183991568, 185883504, 186037584, 184385632, 181076352, 176431888, 170794736, -164455376, 157568384, 150151520, 142288512, 134180680, 125905896, 117439976, 108993920, 100966088, 93464928, -86296632, 79501992, 73397232, 68001144, 62971200, 58250492, 54280872, 51367808, 49206368, 47202764, -44977972, 42429980, 39519604, 36159868, 32329292, 28316182, 24769076, 22302154, 21023328, 20614770, -20861194, 21843666, 23497766, 25089052, 25243670, 22639310, 16850768, 8513699, -1527398, -13176960, --26892938, -42536284, -58801324, -73973296, -87047176, -97999880, -107164264, -114483960, -119359288, -121201832, --120134528, -117048056, -112938848, -108273976, -102973448, -96818760, -89862528, -82618528, -75885632, -70222176, --65500936, -61007864, -55974160, -50059992, -43510704, -36910948, -30680026, -24768002, -18874234, -12800613, --6443525, 330712, 7516193, 14854681, 22147536, 29458644, 36832028, 44115756, 51270636, 58440008, -65514356, 72052368, 77784544, 82687784, 86508696, 88865024, 89862528, 89898496, 88920320, 86700896, -83516712, 79278656, 72248864, 60511796, 45328012, 31496606, 23372138, 21165598, 21604760, }, +34484292, 50781008, 2425046, -86674048, -166787536, -205533520, -182588720, -85410792, 64405720, 208520656, +300475360, 340926976, 350482208, 329967296, 269087744, 178262624, 86645600, 12090870, -50222128, -110979808, +-171388528, -225137360, -266773296, -295754144, -315900736, -331757248, -344317312, -350935328, -349396672, -340069600, +-323986560, -301317184, -272422272, -238630528, -201435040, -162035152, -121752656, -82081656, -44427140, -10092099, +20141250, 46730316, 70864816, 92928056, 112154480, 127839168, 140086256, 149456816, 156754496, 163096544, +169343584, 175382304, 180445536, 183991568, 185883504, 186037584, 184385632, 181076352, 176431888, 170794736, +164455376, 157568384, 150151520, 142288512, 134180680, 125905896, 117439976, 108993920, 100966088, 93464928, +86296632, 79501992, 73397232, 68001144, 62971200, 58250492, 54280872, 51367808, 49206368, 47202764, +44977972, 42429980, 39519604, 36159868, 32329292, 28316182, 24769076, 22302154, 21023328, 20614770, +20861194, 21843666, 23497766, 25089052, 25243670, 22639310, 16850768, 8513699, -1527398, -13176960, +-26892938, -42536284, -58801324, -73973296, -87047176, -97999880, -107164264, -114483960, -119359288, -121201832, +-120134528, -117048056, -112938848, -108273976, -102973448, -96818760, -89862528, -82618528, -75885632, -70222176, +-65500936, -61007864, -55974160, -50059992, -43510704, -36910948, -30680026, -24768002, -18874234, -12800613, +-6443525, 330712, 7516193, 14854681, 22147536, 29458644, 36832028, 44115756, 51270636, 58440008, +65514356, 72052368, 77784544, 82687784, 86508696, 88865024, 89862528, 89898496, 88920320, 86700896, +83516712, 79278656, 72248864, 60511796, 45328012, 31496606, 23372138, 21165598, 21604760, }, { -4806606, -34484292, 50781008, 2425046, -86674048, -166787536, -205533520, -182588720, -85410792, 64405720, 208520656, -300475360, 340926976, 350482208, 329967296, 269087744, 178262624, 86645600, 12090870, -50222128, -110979808, --171388528, -225137360, -266773296, -295754144, -315900736, -331757248, -344317312, -350935328, -349396672, -340069600, --323986560, -301317184, -272422272, -238630528, -201435040, -162035152, -121752656, -82081656, -44427140, -10092099, -20141250, 46730316, 70864816, 92928056, 112154480, 127839168, 140086256, 149456816, 156754496, 163096544, -169343584, 175382304, 180445536, 183991568, 185883504, 186037584, 184385632, 181076352, 176431888, 170794736, -164455376, 157568384, 150151520, 142288512, 134180680, 125905896, 117439976, 108993920, 100966088, 93464928, -86296632, 79501992, 73397232, 68001144, 62971200, 58250492, 54280872, 51367808, 49206368, 47202764, -44977972, 42429980, 39519604, 36159868, 32329292, 28316182, 24769076, 22302154, 21023328, 20614770, -20861194, 21843666, 23497766, 25089052, 25243670, 22639310, 16850768, 8513699, -1527398, -13176960, --26892938, -42536284, -58801324, -73973296, -87047176, -97999880, -107164264, -114483960, -119359288, -121201832, --120134528, -117048056, -112938848, -108273976, -102973448, -96818760, -89862528, -82618528, -75885632, -70222176, --65500936, -61007864, -55974160, -50059992, -43510704, -36910948, -30680026, -24768002, -18874234, -12800613, --6443525, 330712, 7516193, 14854681, 22147536, 29458644, 36832028, 44115756, 51270636, 58440008, -65514356, 72052368, 77784544, 82687784, 86508696, 88865024, 89862528, 89898496, 88920320, 86700896, -83516712, 79278656, 72248864, 60511796, 45328012, 31496606, 23372138, 21165598, 21604760, }, +34484292, 50781008, 2425046, -86674048, -166787536, -205533520, -182588720, -85410792, 64405720, 208520656, +300475360, 340926976, 350482208, 329967296, 269087744, 178262624, 86645600, 12090870, -50222128, -110979808, +-171388528, -225137360, -266773296, -295754144, -315900736, -331757248, -344317312, -350935328, -349396672, -340069600, +-323986560, -301317184, -272422272, -238630528, -201435040, -162035152, -121752656, -82081656, -44427140, -10092099, +20141250, 46730316, 70864816, 92928056, 112154480, 127839168, 140086256, 149456816, 156754496, 163096544, +169343584, 175382304, 180445536, 183991568, 185883504, 186037584, 184385632, 181076352, 176431888, 170794736, +164455376, 157568384, 150151520, 142288512, 134180680, 125905896, 117439976, 108993920, 100966088, 93464928, +86296632, 79501992, 73397232, 68001144, 62971200, 58250492, 54280872, 51367808, 49206368, 47202764, +44977972, 42429980, 39519604, 36159868, 32329292, 28316182, 24769076, 22302154, 21023328, 20614770, +20861194, 21843666, 23497766, 25089052, 25243670, 22639310, 16850768, 8513699, -1527398, -13176960, +-26892938, -42536284, -58801324, -73973296, -87047176, -97999880, -107164264, -114483960, -119359288, -121201832, +-120134528, -117048056, -112938848, -108273976, -102973448, -96818760, -89862528, -82618528, -75885632, -70222176, +-65500936, -61007864, -55974160, -50059992, -43510704, -36910948, -30680026, -24768002, -18874234, -12800613, +-6443525, 330712, 7516193, 14854681, 22147536, 29458644, 36832028, 44115756, 51270636, 58440008, +65514356, 72052368, 77784544, 82687784, 86508696, 88865024, 89862528, 89898496, 88920320, 86700896, +83516712, 79278656, 72248864, 60511796, 45328012, 31496606, 23372138, 21165598, 21604760, }, }, }; -const Word32 CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[9][BINAURAL_CHANNELS][160] ={ +const Word32 CRendBin_HOA2_HRIR_coeff_im_32kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][160] ={ { { -150290032, --385906048, -472137696, -417386528, -289008352, -147089744, -13842143, 109755208, 218540288, 298677408, 338041312, -333410272, 289806688, 217443456, 128992904, 36413268, -51879448, -131597800, -200934144, -258412080, -302034976, --330471424, -344894464, -348707872, -344730720, -333252960, -313536384, -286524256, -255014224, -221617632, -187685232, --154078192, -121817624, -91618096, -63485524, -37163816, -12640626, 10021769, 31080530, 51114404, 70688720, -90066000, 109184512, 127841848, 145885008, 163238288, 179848000, 195678176, 210733104, 224985424, 238308400, -250543152, 261627936, 271590656, 280449024, 288210560, 294993376, 301048224, 306591936, 311677184, 316297504, -320528032, 324459552, 328051200, 331215520, 334007808, 336570816, 338930368, 341038656, 342981600, 344917536, -346840096, 348636992, 350341568, 352067584, 353748544, 355215264, 356490336, 357713856, 358777408, 359359904, -359345408, 358935264, 358274912, 357210816, 355541152, 353345344, 350922976, 348430304, 345668640, 342328768, -338414432, 334300384, 330307680, 326383680, 322335680, 318261376, 314553728, 311527936, 309160320, 307183584, -305368960, 303734720, 302471456, 301629632, 300942464, 300034592, 298743968, 297124224, 295237664, 293061728, -290523936, 287530880, 284020288, 280054432, 275793824, 271369984, 266854368, 262317280, 257796288, 253253824, -248666256, 244071712, 239462688, 234741440, 229865040, 224886640, 219827696, 214675888, 209514944, 204474272, -199580144, 194803072, 190161280, 185628480, 181089776, 176506512, 171938272, 167363072, 162715904, 158055328, -153382416, 148456624, 143113136, 137447536, 131385736, 124594856, 117059872, 108918760, 99643240, 88533232, -75301512, 57490284, 28663002, -14293114, -59893320, -85520312, -78491600, -48966924, -15633144, }, +-385906048, -472137696, -417386528, -289008352, -147089744, -13842143, 109755208, 218540288, 298677408, 338041312, +333410272, 289806688, 217443456, 128992904, 36413268, -51879448, -131597800, -200934144, -258412080, -302034976, +-330471424, -344894464, -348707872, -344730720, -333252960, -313536384, -286524256, -255014224, -221617632, -187685232, +-154078192, -121817624, -91618096, -63485524, -37163816, -12640626, 10021769, 31080530, 51114404, 70688720, +90066000, 109184512, 127841848, 145885008, 163238288, 179848000, 195678176, 210733104, 224985424, 238308400, +250543152, 261627936, 271590656, 280449024, 288210560, 294993376, 301048224, 306591936, 311677184, 316297504, +320528032, 324459552, 328051200, 331215520, 334007808, 336570816, 338930368, 341038656, 342981600, 344917536, +346840096, 348636992, 350341568, 352067584, 353748544, 355215264, 356490336, 357713856, 358777408, 359359904, +359345408, 358935264, 358274912, 357210816, 355541152, 353345344, 350922976, 348430304, 345668640, 342328768, +338414432, 334300384, 330307680, 326383680, 322335680, 318261376, 314553728, 311527936, 309160320, 307183584, +305368960, 303734720, 302471456, 301629632, 300942464, 300034592, 298743968, 297124224, 295237664, 293061728, +290523936, 287530880, 284020288, 280054432, 275793824, 271369984, 266854368, 262317280, 257796288, 253253824, +248666256, 244071712, 239462688, 234741440, 229865040, 224886640, 219827696, 214675888, 209514944, 204474272, +199580144, 194803072, 190161280, 185628480, 181089776, 176506512, 171938272, 167363072, 162715904, 158055328, +153382416, 148456624, 143113136, 137447536, 131385736, 124594856, 117059872, 108918760, 99643240, 88533232, +75301512, 57490284, 28663002, -14293114, -59893320, -85520312, -78491600, -48966924, -15633144, }, { -150290032, --385906048, -472137696, -417386528, -289008352, -147089744, -13842143, 109755208, 218540288, 298677408, 338041312, -333410272, 289806688, 217443456, 128992904, 36413268, -51879448, -131597800, -200934144, -258412080, -302034976, --330471424, -344894464, -348707872, -344730720, -333252960, -313536384, -286524256, -255014224, -221617632, -187685232, --154078192, -121817624, -91618096, -63485524, -37163816, -12640626, 10021769, 31080530, 51114404, 70688720, -90066000, 109184512, 127841848, 145885008, 163238288, 179848000, 195678176, 210733104, 224985424, 238308400, -250543152, 261627936, 271590656, 280449024, 288210560, 294993376, 301048224, 306591936, 311677184, 316297504, -320528032, 324459552, 328051200, 331215520, 334007808, 336570816, 338930368, 341038656, 342981600, 344917536, -346840096, 348636992, 350341568, 352067584, 353748544, 355215264, 356490336, 357713856, 358777408, 359359904, -359345408, 358935264, 358274912, 357210816, 355541152, 353345344, 350922976, 348430304, 345668640, 342328768, -338414432, 334300384, 330307680, 326383680, 322335680, 318261376, 314553728, 311527936, 309160320, 307183584, -305368960, 303734720, 302471456, 301629632, 300942464, 300034592, 298743968, 297124224, 295237664, 293061728, -290523936, 287530880, 284020288, 280054432, 275793824, 271369984, 266854368, 262317280, 257796288, 253253824, -248666256, 244071712, 239462688, 234741440, 229865040, 224886640, 219827696, 214675888, 209514944, 204474272, -199580144, 194803072, 190161280, 185628480, 181089776, 176506512, 171938272, 167363072, 162715904, 158055328, -153382416, 148456624, 143113136, 137447536, 131385736, 124594856, 117059872, 108918760, 99643240, 88533232, -75301512, 57490284, 28663002, -14293114, -59893320, -85520312, -78491600, -48966924, -15633144, }, +-385906048, -472137696, -417386528, -289008352, -147089744, -13842143, 109755208, 218540288, 298677408, 338041312, +333410272, 289806688, 217443456, 128992904, 36413268, -51879448, -131597800, -200934144, -258412080, -302034976, +-330471424, -344894464, -348707872, -344730720, -333252960, -313536384, -286524256, -255014224, -221617632, -187685232, +-154078192, -121817624, -91618096, -63485524, -37163816, -12640626, 10021769, 31080530, 51114404, 70688720, +90066000, 109184512, 127841848, 145885008, 163238288, 179848000, 195678176, 210733104, 224985424, 238308400, +250543152, 261627936, 271590656, 280449024, 288210560, 294993376, 301048224, 306591936, 311677184, 316297504, +320528032, 324459552, 328051200, 331215520, 334007808, 336570816, 338930368, 341038656, 342981600, 344917536, +346840096, 348636992, 350341568, 352067584, 353748544, 355215264, 356490336, 357713856, 358777408, 359359904, +359345408, 358935264, 358274912, 357210816, 355541152, 353345344, 350922976, 348430304, 345668640, 342328768, +338414432, 334300384, 330307680, 326383680, 322335680, 318261376, 314553728, 311527936, 309160320, 307183584, +305368960, 303734720, 302471456, 301629632, 300942464, 300034592, 298743968, 297124224, 295237664, 293061728, +290523936, 287530880, 284020288, 280054432, 275793824, 271369984, 266854368, 262317280, 257796288, 253253824, +248666256, 244071712, 239462688, 234741440, 229865040, 224886640, 219827696, 214675888, 209514944, 204474272, +199580144, 194803072, 190161280, 185628480, 181089776, 176506512, 171938272, 167363072, 162715904, 158055328, +153382416, 148456624, 143113136, 137447536, 131385736, 124594856, 117059872, 108918760, 99643240, 88533232, +75301512, 57490284, 28663002, -14293114, -59893320, -85520312, -78491600, -48966924, -15633144, }, }, { { 73902968, -124324808, -33054606, -330379616, -581539136, -632991744, -467241440, -182312768, 105196096, 331635360, 486648256, -577677952, 609132672, 585046464, 514585408, 409511712, 280498400, 138183056, -4979478, -136984224, -250866896, --346249536, -425859424, -490726848, -539250304, -570464512, -586600192, -591648384, -588483520, -578389312, -562420032, --541853056, -517614976, -490312384, -460739936, -429676032, -397331168, -363471264, -327923424, -290718816, -252093104, --212628800, -173132816, -134193568, -96038152, -58834608, -22848690, 11643656, 44357884, 75023952, 103676752, -130797864, 156929520, 182224192, 206464448, 229324944, 250495920, 269728768, 286901120, 301999008, 315101344, -326414304, 336174080, 344446720, 351235968, 356772736, 361376928, 365071680, 367741536, 369632416, 371208128, -372593792, 373728192, 374967296, 376884448, 379524256, 382521600, 385921056, 390188640, 395385024, 400983520, -406621728, 412490272, 418835008, 425467520, 431946464, 438020640, 443805408, 449606304, 455618720, 461792192, -467974272, 474057024, 479896576, 485230368, 489764256, 493161568, 494904256, 494442528, 491595520, 486565568, -479537408, 470545888, 459753152, 447557600, 434411232, 420759168, 407075936, 393776576, 381201984, 369796672, -360020256, 351915136, 345023840, 338894944, 333426368, 328718016, 324855744, 321818144, 319275520, 316555744, -313096672, 308839296, 304038048, 298951200, 293826752, 288817216, 283782976, 278508768, 273084768, 267690816, -262201312, 256463232, 250696704, 245142768, 239703728, 234326432, 229221872, 224347072, 219353648, 214260352, -209409184, 204729824, 199928576, 195166528, 190528512, 185382592, 179255824, 172332336, 164206800, 153830704, -140802992, 122852704, 91956320, 41217728, -19471772, -63043140, -69735776, -46819440, -15363098, }, +124324808, -33054606, -330379616, -581539136, -632991744, -467241440, -182312768, 105196096, 331635360, 486648256, +577677952, 609132672, 585046464, 514585408, 409511712, 280498400, 138183056, -4979478, -136984224, -250866896, +-346249536, -425859424, -490726848, -539250304, -570464512, -586600192, -591648384, -588483520, -578389312, -562420032, +-541853056, -517614976, -490312384, -460739936, -429676032, -397331168, -363471264, -327923424, -290718816, -252093104, +-212628800, -173132816, -134193568, -96038152, -58834608, -22848690, 11643656, 44357884, 75023952, 103676752, +130797864, 156929520, 182224192, 206464448, 229324944, 250495920, 269728768, 286901120, 301999008, 315101344, +326414304, 336174080, 344446720, 351235968, 356772736, 361376928, 365071680, 367741536, 369632416, 371208128, +372593792, 373728192, 374967296, 376884448, 379524256, 382521600, 385921056, 390188640, 395385024, 400983520, +406621728, 412490272, 418835008, 425467520, 431946464, 438020640, 443805408, 449606304, 455618720, 461792192, +467974272, 474057024, 479896576, 485230368, 489764256, 493161568, 494904256, 494442528, 491595520, 486565568, +479537408, 470545888, 459753152, 447557600, 434411232, 420759168, 407075936, 393776576, 381201984, 369796672, +360020256, 351915136, 345023840, 338894944, 333426368, 328718016, 324855744, 321818144, 319275520, 316555744, +313096672, 308839296, 304038048, 298951200, 293826752, 288817216, 283782976, 278508768, 273084768, 267690816, +262201312, 256463232, 250696704, 245142768, 239703728, 234326432, 229221872, 224347072, 219353648, 214260352, +209409184, 204729824, 199928576, 195166528, 190528512, 185382592, 179255824, 172332336, 164206800, 153830704, +140802992, 122852704, 91956320, 41217728, -19471772, -63043140, -69735776, -46819440, -15363098, }, { -73902968, --124324808, 33054606, 330379616, 581539136, 632991744, 467241440, 182312768, -105196096, -331635360, -486648256, --577677952, -609132672, -585046464, -514585408, -409511712, -280498400, -138183056, 4979478, 136984224, 250866896, -346249536, 425859424, 490726848, 539250304, 570464512, 586600192, 591648384, 588483520, 578389312, 562420032, -541853056, 517614976, 490312384, 460739936, 429676032, 397331168, 363471264, 327923424, 290718816, 252093104, -212628800, 173132816, 134193568, 96038152, 58834608, 22848690, -11643656, -44357884, -75023952, -103676752, --130797864, -156929520, -182224192, -206464448, -229324944, -250495920, -269728768, -286901120, -301999008, -315101344, --326414304, -336174080, -344446720, -351235968, -356772736, -361376928, -365071680, -367741536, -369632416, -371208128, --372593792, -373728192, -374967296, -376884448, -379524256, -382521600, -385921056, -390188640, -395385024, -400983520, --406621728, -412490272, -418835008, -425467520, -431946464, -438020640, -443805408, -449606304, -455618720, -461792192, --467974272, -474057024, -479896576, -485230368, -489764256, -493161568, -494904256, -494442528, -491595520, -486565568, --479537408, -470545888, -459753152, -447557600, -434411232, -420759168, -407075936, -393776576, -381201984, -369796672, --360020256, -351915136, -345023840, -338894944, -333426368, -328718016, -324855744, -321818144, -319275520, -316555744, --313096672, -308839296, -304038048, -298951200, -293826752, -288817216, -283782976, -278508768, -273084768, -267690816, --262201312, -256463232, -250696704, -245142768, -239703728, -234326432, -229221872, -224347072, -219353648, -214260352, --209409184, -204729824, -199928576, -195166528, -190528512, -185382592, -179255824, -172332336, -164206800, -153830704, --140802992, -122852704, -91956320, -41217728, 19471772, 63043140, 69735776, 46819440, 15363098, }, +-124324808, 33054606, 330379616, 581539136, 632991744, 467241440, 182312768, -105196096, -331635360, -486648256, +-577677952, -609132672, -585046464, -514585408, -409511712, -280498400, -138183056, 4979478, 136984224, 250866896, +346249536, 425859424, 490726848, 539250304, 570464512, 586600192, 591648384, 588483520, 578389312, 562420032, +541853056, 517614976, 490312384, 460739936, 429676032, 397331168, 363471264, 327923424, 290718816, 252093104, +212628800, 173132816, 134193568, 96038152, 58834608, 22848690, -11643656, -44357884, -75023952, -103676752, +-130797864, -156929520, -182224192, -206464448, -229324944, -250495920, -269728768, -286901120, -301999008, -315101344, +-326414304, -336174080, -344446720, -351235968, -356772736, -361376928, -365071680, -367741536, -369632416, -371208128, +-372593792, -373728192, -374967296, -376884448, -379524256, -382521600, -385921056, -390188640, -395385024, -400983520, +-406621728, -412490272, -418835008, -425467520, -431946464, -438020640, -443805408, -449606304, -455618720, -461792192, +-467974272, -474057024, -479896576, -485230368, -489764256, -493161568, -494904256, -494442528, -491595520, -486565568, +-479537408, -470545888, -459753152, -447557600, -434411232, -420759168, -407075936, -393776576, -381201984, -369796672, +-360020256, -351915136, -345023840, -338894944, -333426368, -328718016, -324855744, -321818144, -319275520, -316555744, +-313096672, -308839296, -304038048, -298951200, -293826752, -288817216, -283782976, -278508768, -273084768, -267690816, +-262201312, -256463232, -250696704, -245142768, -239703728, -234326432, -229221872, -224347072, -219353648, -214260352, +-209409184, -204729824, -199928576, -195166528, -190528512, -185382592, -179255824, -172332336, -164206800, -153830704, +-140802992, -122852704, -91956320, -41217728, 19471772, 63043140, 69735776, 46819440, 15363098, }, }, { { -20145544, --57005492, -71009768, -39251708, 22138946, 59661392, 41766408, -7079180, -41781980, -43087112, -19023484, -15620796, 45125612, 55299852, 46632072, 35795868, 33863668, 32031330, 16694001, -11273215, -40736692, --65121904, -83812528, -94664304, -94392640, -84812184, -72592464, -62712964, -54888608, -45877232, -33475512, --18580566, -4296041, 6704444, 13525926, 15933792, 13537737, 7094749, -673236, -6847789, -10250476, --10991895, -9116068, -4538707, 2414845, 11190000, 21441550, 33079302, 46294916, 61611844, 79440792, -99501504, 120996208, 143268304, 165959680, 188631744, 210636464, 231415520, 250689184, 268259360, 283752384, -296667360, 306613408, 313304448, 316301792, 315008992, 309058336, 298478752, 283370144, 263717968, 239709104, -211936240, 181145616, 148177440, 114230560, 80630496, 48161080, 17215840, -11276974, -35932232, -56266756, --73105712, -87041272, -97337384, -103227392, -105634184, -106459888, -106354128, -104283952, -99487552, -92931816, --86368568, -80558552, -75020728, -69201584, -63283660, -57914948, -53659172, -50824496, -49467824, -49336828, --49959596, -51011328, -52643952, -55371256, -59494960, -64534032, -69305200, -72741176, -74627208, -75445936, --75603776, -74997648, -73216304, -69868920, -64723548, -57778048, -49296024, -39690868, -29388850, -18817862, --8375186, 1684701, 11204496, 19908784, 27393838, 33374580, 37808596, 40778568, 42390792, 42771968, -42039140, 40359808, 38137700, 35981624, 34367256, 33437932, 33108830, 33072858, 32698660, 31355408, -28982976, 26014080, 22699440, 18895172, 14541149, 9851581, 4925254, -359167, -5902359, -11345156, --16794932, -23118736, -30707406, -37716256, -40249212, -35419520, -24593520, -12728672, -3635690, }, +-57005492, -71009768, -39251708, 22138946, 59661392, 41766408, -7079180, -41781980, -43087112, -19023484, +15620796, 45125612, 55299852, 46632072, 35795868, 33863668, 32031330, 16694001, -11273215, -40736692, +-65121904, -83812528, -94664304, -94392640, -84812184, -72592464, -62712964, -54888608, -45877232, -33475512, +-18580566, -4296041, 6704444, 13525926, 15933792, 13537737, 7094749, -673236, -6847789, -10250476, +-10991895, -9116068, -4538707, 2414845, 11190000, 21441550, 33079302, 46294916, 61611844, 79440792, +99501504, 120996208, 143268304, 165959680, 188631744, 210636464, 231415520, 250689184, 268259360, 283752384, +296667360, 306613408, 313304448, 316301792, 315008992, 309058336, 298478752, 283370144, 263717968, 239709104, +211936240, 181145616, 148177440, 114230560, 80630496, 48161080, 17215840, -11276974, -35932232, -56266756, +-73105712, -87041272, -97337384, -103227392, -105634184, -106459888, -106354128, -104283952, -99487552, -92931816, +-86368568, -80558552, -75020728, -69201584, -63283660, -57914948, -53659172, -50824496, -49467824, -49336828, +-49959596, -51011328, -52643952, -55371256, -59494960, -64534032, -69305200, -72741176, -74627208, -75445936, +-75603776, -74997648, -73216304, -69868920, -64723548, -57778048, -49296024, -39690868, -29388850, -18817862, +-8375186, 1684701, 11204496, 19908784, 27393838, 33374580, 37808596, 40778568, 42390792, 42771968, +42039140, 40359808, 38137700, 35981624, 34367256, 33437932, 33108830, 33072858, 32698660, 31355408, +28982976, 26014080, 22699440, 18895172, 14541149, 9851581, 4925254, -359167, -5902359, -11345156, +-16794932, -23118736, -30707406, -37716256, -40249212, -35419520, -24593520, -12728672, -3635690, }, { -20145544, --57005492, -71009768, -39251708, 22138946, 59661392, 41766408, -7079180, -41781980, -43087112, -19023484, -15620796, 45125612, 55299852, 46632072, 35795868, 33863668, 32031330, 16694001, -11273215, -40736692, --65121904, -83812528, -94664304, -94392640, -84812184, -72592464, -62712964, -54888608, -45877232, -33475512, --18580566, -4296041, 6704444, 13525926, 15933792, 13537737, 7094749, -673236, -6847789, -10250476, --10991895, -9116068, -4538707, 2414845, 11190000, 21441550, 33079302, 46294916, 61611844, 79440792, -99501504, 120996208, 143268304, 165959680, 188631744, 210636464, 231415520, 250689184, 268259360, 283752384, -296667360, 306613408, 313304448, 316301792, 315008992, 309058336, 298478752, 283370144, 263717968, 239709104, -211936240, 181145616, 148177440, 114230560, 80630496, 48161080, 17215840, -11276974, -35932232, -56266756, --73105712, -87041272, -97337384, -103227392, -105634184, -106459888, -106354128, -104283952, -99487552, -92931816, --86368568, -80558552, -75020728, -69201584, -63283660, -57914948, -53659172, -50824496, -49467824, -49336828, --49959596, -51011328, -52643952, -55371256, -59494960, -64534032, -69305200, -72741176, -74627208, -75445936, --75603776, -74997648, -73216304, -69868920, -64723548, -57778048, -49296024, -39690868, -29388850, -18817862, --8375186, 1684701, 11204496, 19908784, 27393838, 33374580, 37808596, 40778568, 42390792, 42771968, -42039140, 40359808, 38137700, 35981624, 34367256, 33437932, 33108830, 33072858, 32698660, 31355408, -28982976, 26014080, 22699440, 18895172, 14541149, 9851581, 4925254, -359167, -5902359, -11345156, --16794932, -23118736, -30707406, -37716256, -40249212, -35419520, -24593520, -12728672, -3635690, }, +-57005492, -71009768, -39251708, 22138946, 59661392, 41766408, -7079180, -41781980, -43087112, -19023484, +15620796, 45125612, 55299852, 46632072, 35795868, 33863668, 32031330, 16694001, -11273215, -40736692, +-65121904, -83812528, -94664304, -94392640, -84812184, -72592464, -62712964, -54888608, -45877232, -33475512, +-18580566, -4296041, 6704444, 13525926, 15933792, 13537737, 7094749, -673236, -6847789, -10250476, +-10991895, -9116068, -4538707, 2414845, 11190000, 21441550, 33079302, 46294916, 61611844, 79440792, +99501504, 120996208, 143268304, 165959680, 188631744, 210636464, 231415520, 250689184, 268259360, 283752384, +296667360, 306613408, 313304448, 316301792, 315008992, 309058336, 298478752, 283370144, 263717968, 239709104, +211936240, 181145616, 148177440, 114230560, 80630496, 48161080, 17215840, -11276974, -35932232, -56266756, +-73105712, -87041272, -97337384, -103227392, -105634184, -106459888, -106354128, -104283952, -99487552, -92931816, +-86368568, -80558552, -75020728, -69201584, -63283660, -57914948, -53659172, -50824496, -49467824, -49336828, +-49959596, -51011328, -52643952, -55371256, -59494960, -64534032, -69305200, -72741176, -74627208, -75445936, +-75603776, -74997648, -73216304, -69868920, -64723548, -57778048, -49296024, -39690868, -29388850, -18817862, +-8375186, 1684701, 11204496, 19908784, 27393838, 33374580, 37808596, 40778568, 42390792, 42771968, +42039140, 40359808, 38137700, 35981624, 34367256, 33437932, 33108830, 33072858, 32698660, 31355408, +28982976, 26014080, 22699440, 18895172, 14541149, 9851581, 4925254, -359167, -5902359, -11345156, +-16794932, -23118736, -30707406, -37716256, -40249212, -35419520, -24593520, -12728672, -3635690, }, }, { { -715649, --16108812, -47877076, -62373124, -37880536, 666257, 11227581, -14092861, -43357156, -43741556, -11979738, -31504658, 65659312, 83018496, 89054000, 92615600, 95732136, 91636352, 72837816, 39281772, -2659659, --46311020, -87099256, -121686088, -149177104, -172685600, -196140416, -219172720, -237489680, -248071408, -251337728, --248033824, -236885168, -216649424, -188575904, -155367760, -118897040, -80227304, -41051296, -3727495, 30040076, -59804736, 85767816, 108134392, 127120832, 143185616, 156986416, 168992464, 179110880, 186774704, 191456752, -193076496, 192072016, 189424704, 186549216, 184666416, 184082832, 184314224, 184824256, 185278448, 185259664, -184386160, 182738512, 180678000, 178298592, 175550352, 172689904, 169949712, 166921760, 162953200, 158009168, -152397248, 145799648, 137449152, 127236792, 115769768, 103261216, 89302568, 74002824, 58469536, 43653512, -29442000, 15545634, 2683818, -7992398, -16384226, -23488640, -30015916, -35794256, -40643276, -44896904, --48663592, -51298016, -52166672, -51388748, -49272940, -45472968, -39315056, -30745524, -20431160, -8977019, -3633542, 17806934, 33622076, 50297824, 66501128, 81408424, 95343976, 109124384, 122879552, 135763920, -146691392, 155191120, 161778000, 167630960, 173630496, 179508160, 184133296, 186687200, 187371168, 187117760, -186996976, 187755040, 189415040, 191305904, 192768864, 193786784, 194754752, 195953584, 197472400, 199272528, -201018960, 202128144, 202200080, 201163376, 199014288, 195749040, 191514208, 186435408, 180395600, 173246640, -165060432, 155962080, 146033712, 135544336, 124882616, 114247200, 103758896, 93658744, 83965000, 74382928, -64660196, 53660784, 38013144, 14970645, -11264625, -29461328, -31584652, -21020644, -6886980, }, +-16108812, -47877076, -62373124, -37880536, 666257, 11227581, -14092861, -43357156, -43741556, -11979738, +31504658, 65659312, 83018496, 89054000, 92615600, 95732136, 91636352, 72837816, 39281772, -2659659, +-46311020, -87099256, -121686088, -149177104, -172685600, -196140416, -219172720, -237489680, -248071408, -251337728, +-248033824, -236885168, -216649424, -188575904, -155367760, -118897040, -80227304, -41051296, -3727495, 30040076, +59804736, 85767816, 108134392, 127120832, 143185616, 156986416, 168992464, 179110880, 186774704, 191456752, +193076496, 192072016, 189424704, 186549216, 184666416, 184082832, 184314224, 184824256, 185278448, 185259664, +184386160, 182738512, 180678000, 178298592, 175550352, 172689904, 169949712, 166921760, 162953200, 158009168, +152397248, 145799648, 137449152, 127236792, 115769768, 103261216, 89302568, 74002824, 58469536, 43653512, +29442000, 15545634, 2683818, -7992398, -16384226, -23488640, -30015916, -35794256, -40643276, -44896904, +-48663592, -51298016, -52166672, -51388748, -49272940, -45472968, -39315056, -30745524, -20431160, -8977019, +3633542, 17806934, 33622076, 50297824, 66501128, 81408424, 95343976, 109124384, 122879552, 135763920, +146691392, 155191120, 161778000, 167630960, 173630496, 179508160, 184133296, 186687200, 187371168, 187117760, +186996976, 187755040, 189415040, 191305904, 192768864, 193786784, 194754752, 195953584, 197472400, 199272528, +201018960, 202128144, 202200080, 201163376, 199014288, 195749040, 191514208, 186435408, 180395600, 173246640, +165060432, 155962080, 146033712, 135544336, 124882616, 114247200, 103758896, 93658744, 83965000, 74382928, +64660196, 53660784, 38013144, 14970645, -11264625, -29461328, -31584652, -21020644, -6886980, }, { -715649, --16108812, -47877076, -62373124, -37880536, 666257, 11227581, -14092861, -43357156, -43741556, -11979738, -31504658, 65659312, 83018496, 89054000, 92615600, 95732136, 91636352, 72837816, 39281772, -2659659, --46311020, -87099256, -121686088, -149177104, -172685600, -196140416, -219172720, -237489680, -248071408, -251337728, --248033824, -236885168, -216649424, -188575904, -155367760, -118897040, -80227304, -41051296, -3727495, 30040076, -59804736, 85767816, 108134392, 127120832, 143185616, 156986416, 168992464, 179110880, 186774704, 191456752, -193076496, 192072016, 189424704, 186549216, 184666416, 184082832, 184314224, 184824256, 185278448, 185259664, -184386160, 182738512, 180678000, 178298592, 175550352, 172689904, 169949712, 166921760, 162953200, 158009168, -152397248, 145799648, 137449152, 127236792, 115769768, 103261216, 89302568, 74002824, 58469536, 43653512, -29442000, 15545634, 2683818, -7992398, -16384226, -23488640, -30015916, -35794256, -40643276, -44896904, --48663592, -51298016, -52166672, -51388748, -49272940, -45472968, -39315056, -30745524, -20431160, -8977019, -3633542, 17806934, 33622076, 50297824, 66501128, 81408424, 95343976, 109124384, 122879552, 135763920, -146691392, 155191120, 161778000, 167630960, 173630496, 179508160, 184133296, 186687200, 187371168, 187117760, -186996976, 187755040, 189415040, 191305904, 192768864, 193786784, 194754752, 195953584, 197472400, 199272528, -201018960, 202128144, 202200080, 201163376, 199014288, 195749040, 191514208, 186435408, 180395600, 173246640, -165060432, 155962080, 146033712, 135544336, 124882616, 114247200, 103758896, 93658744, 83965000, 74382928, -64660196, 53660784, 38013144, 14970645, -11264625, -29461328, -31584652, -21020644, -6886980, }, +-16108812, -47877076, -62373124, -37880536, 666257, 11227581, -14092861, -43357156, -43741556, -11979738, +31504658, 65659312, 83018496, 89054000, 92615600, 95732136, 91636352, 72837816, 39281772, -2659659, +-46311020, -87099256, -121686088, -149177104, -172685600, -196140416, -219172720, -237489680, -248071408, -251337728, +-248033824, -236885168, -216649424, -188575904, -155367760, -118897040, -80227304, -41051296, -3727495, 30040076, +59804736, 85767816, 108134392, 127120832, 143185616, 156986416, 168992464, 179110880, 186774704, 191456752, +193076496, 192072016, 189424704, 186549216, 184666416, 184082832, 184314224, 184824256, 185278448, 185259664, +184386160, 182738512, 180678000, 178298592, 175550352, 172689904, 169949712, 166921760, 162953200, 158009168, +152397248, 145799648, 137449152, 127236792, 115769768, 103261216, 89302568, 74002824, 58469536, 43653512, +29442000, 15545634, 2683818, -7992398, -16384226, -23488640, -30015916, -35794256, -40643276, -44896904, +-48663592, -51298016, -52166672, -51388748, -49272940, -45472968, -39315056, -30745524, -20431160, -8977019, +3633542, 17806934, 33622076, 50297824, 66501128, 81408424, 95343976, 109124384, 122879552, 135763920, +146691392, 155191120, 161778000, 167630960, 173630496, 179508160, 184133296, 186687200, 187371168, 187117760, +186996976, 187755040, 189415040, 191305904, 192768864, 193786784, 194754752, 195953584, 197472400, 199272528, +201018960, 202128144, 202200080, 201163376, 199014288, 195749040, 191514208, 186435408, 180395600, 173246640, +165060432, 155962080, 146033712, 135544336, 124882616, 114247200, 103758896, 93658744, 83965000, 74382928, +64660196, 53660784, 38013144, 14970645, -11264625, -29461328, -31584652, -21020644, -6886980, }, }, { { -2120103, --2182380, 2431488, 1641751, -9615358, -22197464, -26419418, -28747290, -43403864, -67200672, -74491912, --44185012, 14663555, 71995464, 107700600, 125167160, 136182672, 143301584, 141180944, 127339336, 104186776, -73414416, 34889092, -9259413, -54247584, -97008816, -137676256, -176203712, -210369104, -237915424, -258347648, --271745280, -277629920, -275695040, -266039936, -248164288, -221443152, -187384048, -150119312, -113909512, -80955304, --51719996, -26036092, -3349001, 17149804, 35995048, 53375168, 69480224, 84347792, 97516696, 108393704, -116807544, 122870424, 126759520, 129085240, 130963752, 133236864, 135994768, 139109152, 142654112, 146571120, -150532704, 154372400, 158137472, 161650224, 164578848, 166909952, 168740672, 169717248, 169319952, 167556880, -164671728, 160303744, 153696480, 144681344, 133714144, 120915680, 105893496, 88800600, 70846024, 53191024, -35800164, 18094160, 470836, -15789374, -30247308, -43886512, -57436596, -70047160, -80413600, -88464512, --94938640, -99840808, -102404368, -102376984, -100438880, -97423280, -93743568, -89524296, -84849224, -79921288, --75102336, -70636104, -66406100, -62290448, -58539332, -55291260, -51955144, -47705812, -42448772, -36826660, --31488552, -26699128, -22258132, -17449378, -11537356, -4669703, 2124398, 7988103, 12854300, 17106318, -21282100, 26047366, 31759136, 38082400, 44502304, 50960324, 57600880, 64343440, 71117144, 77954728, -84510464, 90070832, 94272920, 97199944, 98811088, 99022616, 98195840, 96741992, 94531696, 91417840, -87833688, 84206592, 80507016, 76945952, 74163344, 72266584, 70794480, 69801272, 69661688, 70023000, -70470216, 71217000, 70736504, 64242512, 48515412, 27780922, 10836202, 2334852, 127238, }, +-2182380, 2431488, 1641751, -9615358, -22197464, -26419418, -28747290, -43403864, -67200672, -74491912, +-44185012, 14663555, 71995464, 107700600, 125167160, 136182672, 143301584, 141180944, 127339336, 104186776, +73414416, 34889092, -9259413, -54247584, -97008816, -137676256, -176203712, -210369104, -237915424, -258347648, +-271745280, -277629920, -275695040, -266039936, -248164288, -221443152, -187384048, -150119312, -113909512, -80955304, +-51719996, -26036092, -3349001, 17149804, 35995048, 53375168, 69480224, 84347792, 97516696, 108393704, +116807544, 122870424, 126759520, 129085240, 130963752, 133236864, 135994768, 139109152, 142654112, 146571120, +150532704, 154372400, 158137472, 161650224, 164578848, 166909952, 168740672, 169717248, 169319952, 167556880, +164671728, 160303744, 153696480, 144681344, 133714144, 120915680, 105893496, 88800600, 70846024, 53191024, +35800164, 18094160, 470836, -15789374, -30247308, -43886512, -57436596, -70047160, -80413600, -88464512, +-94938640, -99840808, -102404368, -102376984, -100438880, -97423280, -93743568, -89524296, -84849224, -79921288, +-75102336, -70636104, -66406100, -62290448, -58539332, -55291260, -51955144, -47705812, -42448772, -36826660, +-31488552, -26699128, -22258132, -17449378, -11537356, -4669703, 2124398, 7988103, 12854300, 17106318, +21282100, 26047366, 31759136, 38082400, 44502304, 50960324, 57600880, 64343440, 71117144, 77954728, +84510464, 90070832, 94272920, 97199944, 98811088, 99022616, 98195840, 96741992, 94531696, 91417840, +87833688, 84206592, 80507016, 76945952, 74163344, 72266584, 70794480, 69801272, 69661688, 70023000, +70470216, 71217000, 70736504, 64242512, 48515412, 27780922, 10836202, 2334852, 127238, }, { 2120103, -2182380, -2431488, -1641751, 9615358, 22197464, 26419418, 28747290, 43403864, 67200672, 74491912, -44185012, -14663555, -71995464, -107700600, -125167160, -136182672, -143301584, -141180944, -127339336, -104186776, --73414416, -34889092, 9259413, 54247584, 97008816, 137676256, 176203712, 210369104, 237915424, 258347648, -271745280, 277629920, 275695040, 266039936, 248164288, 221443152, 187384048, 150119312, 113909512, 80955304, -51719996, 26036092, 3349001, -17149804, -35995048, -53375168, -69480224, -84347792, -97516696, -108393704, --116807544, -122870424, -126759520, -129085240, -130963752, -133236864, -135994768, -139109152, -142654112, -146571120, --150532704, -154372400, -158137472, -161650224, -164578848, -166909952, -168740672, -169717248, -169319952, -167556880, --164671728, -160303744, -153696480, -144681344, -133714144, -120915680, -105893496, -88800600, -70846024, -53191024, --35800164, -18094160, -470836, 15789374, 30247308, 43886512, 57436596, 70047160, 80413600, 88464512, -94938640, 99840808, 102404368, 102376984, 100438880, 97423280, 93743568, 89524296, 84849224, 79921288, -75102336, 70636104, 66406100, 62290448, 58539332, 55291260, 51955144, 47705812, 42448772, 36826660, -31488552, 26699128, 22258132, 17449378, 11537356, 4669703, -2124398, -7988103, -12854300, -17106318, --21282100, -26047366, -31759136, -38082400, -44502304, -50960324, -57600880, -64343440, -71117144, -77954728, --84510464, -90070832, -94272920, -97199944, -98811088, -99022616, -98195840, -96741992, -94531696, -91417840, --87833688, -84206592, -80507016, -76945952, -74163344, -72266584, -70794480, -69801272, -69661688, -70023000, --70470216, -71217000, -70736504, -64242512, -48515412, -27780922, -10836202, -2334852, -127238, }, +2182380, -2431488, -1641751, 9615358, 22197464, 26419418, 28747290, 43403864, 67200672, 74491912, +44185012, -14663555, -71995464, -107700600, -125167160, -136182672, -143301584, -141180944, -127339336, -104186776, +-73414416, -34889092, 9259413, 54247584, 97008816, 137676256, 176203712, 210369104, 237915424, 258347648, +271745280, 277629920, 275695040, 266039936, 248164288, 221443152, 187384048, 150119312, 113909512, 80955304, +51719996, 26036092, 3349001, -17149804, -35995048, -53375168, -69480224, -84347792, -97516696, -108393704, +-116807544, -122870424, -126759520, -129085240, -130963752, -133236864, -135994768, -139109152, -142654112, -146571120, +-150532704, -154372400, -158137472, -161650224, -164578848, -166909952, -168740672, -169717248, -169319952, -167556880, +-164671728, -160303744, -153696480, -144681344, -133714144, -120915680, -105893496, -88800600, -70846024, -53191024, +-35800164, -18094160, -470836, 15789374, 30247308, 43886512, 57436596, 70047160, 80413600, 88464512, +94938640, 99840808, 102404368, 102376984, 100438880, 97423280, 93743568, 89524296, 84849224, 79921288, +75102336, 70636104, 66406100, 62290448, 58539332, 55291260, 51955144, 47705812, 42448772, 36826660, +31488552, 26699128, 22258132, 17449378, 11537356, 4669703, -2124398, -7988103, -12854300, -17106318, +-21282100, -26047366, -31759136, -38082400, -44502304, -50960324, -57600880, -64343440, -71117144, -77954728, +-84510464, -90070832, -94272920, -97199944, -98811088, -99022616, -98195840, -96741992, -94531696, -91417840, +-87833688, -84206592, -80507016, -76945952, -74163344, -72266584, -70794480, -69801272, -69661688, -70023000, +-70470216, -71217000, -70736504, -64242512, -48515412, -27780922, -10836202, -2334852, -127238, }, }, { { -3671123, --39192, 10506027, 2583423, -11370389, 9127342, 51194400, 42549168, -43339980, -130446208, -128813048, --42433204, 50480360, 96136400, 103191960, 100044280, 96409128, 88321704, 72801840, 49335216, 19551764, --10698764, -34936336, -51146620, -59889024, -61062088, -56099788, -49212808, -43119860, -37066640, -31124554, --28390808, -30828738, -36359584, -42034844, -47656420, -55036784, -65441880, -78317656, -91272352, -101293584, --106852880, -108556912, -107599128, -104722040, -100854424, -97124240, -93621160, -89277872, -83206400, -75163000, --64862060, -51931524, -36353676, -18156974, 2804077, 26050588, 50218904, 74196632, 97649304, 120020176, -140148000, 157368672, 171831984, 183300608, 190740032, 193442112, 191497024, 184927328, 173375488, 156838784, -135890080, 111140872, 83263848, 53436908, 22994718, -7286412, -36909876, -64856152, -89820112, -111269720, --129658624, -145347600, -157740720, -165909760, -169906224, -170894064, -169792400, -166344624, -159930624, -150722752, --139369536, -126035816, -110575544, -93295280, -74738336, -54994908, -34042448, -12556337, 8343511, 27995134, -46311020, 63115620, 77687904, 88826368, 95461016, 97690640, 97167728, 95783680, 93926640, 90569584, -84949088, 77551000, 69654704, 62543852, 56989920, 52911848, 49627272, 46758772, 44623100, 43604120, -43661028, 44587668, 46148888, 47797616, 48853644, 49056044, 48447768, 46837156, 43954696, 39967892, -35283692, 30098594, 24612310, 19294604, 14492830, 10176925, 6356015, 3180423, 441845, -2350421, --5238250, -7852811, -10191957, -12593381, -14998026, -17055852, -18798534, -20420422, -21658446, -22225918, --22512072, -22933514, -22862648, -21058224, -17082696, -11787538, -6634114, -2837363, -695785, }, +-39192, 10506027, 2583423, -11370389, 9127342, 51194400, 42549168, -43339980, -130446208, -128813048, +-42433204, 50480360, 96136400, 103191960, 100044280, 96409128, 88321704, 72801840, 49335216, 19551764, +-10698764, -34936336, -51146620, -59889024, -61062088, -56099788, -49212808, -43119860, -37066640, -31124554, +-28390808, -30828738, -36359584, -42034844, -47656420, -55036784, -65441880, -78317656, -91272352, -101293584, +-106852880, -108556912, -107599128, -104722040, -100854424, -97124240, -93621160, -89277872, -83206400, -75163000, +-64862060, -51931524, -36353676, -18156974, 2804077, 26050588, 50218904, 74196632, 97649304, 120020176, +140148000, 157368672, 171831984, 183300608, 190740032, 193442112, 191497024, 184927328, 173375488, 156838784, +135890080, 111140872, 83263848, 53436908, 22994718, -7286412, -36909876, -64856152, -89820112, -111269720, +-129658624, -145347600, -157740720, -165909760, -169906224, -170894064, -169792400, -166344624, -159930624, -150722752, +-139369536, -126035816, -110575544, -93295280, -74738336, -54994908, -34042448, -12556337, 8343511, 27995134, +46311020, 63115620, 77687904, 88826368, 95461016, 97690640, 97167728, 95783680, 93926640, 90569584, +84949088, 77551000, 69654704, 62543852, 56989920, 52911848, 49627272, 46758772, 44623100, 43604120, +43661028, 44587668, 46148888, 47797616, 48853644, 49056044, 48447768, 46837156, 43954696, 39967892, +35283692, 30098594, 24612310, 19294604, 14492830, 10176925, 6356015, 3180423, 441845, -2350421, +-5238250, -7852811, -10191957, -12593381, -14998026, -17055852, -18798534, -20420422, -21658446, -22225918, +-22512072, -22933514, -22862648, -21058224, -17082696, -11787538, -6634114, -2837363, -695785, }, { 3671123, -39192, -10506027, -2583423, 11370389, -9127342, -51194400, -42549168, 43339980, 130446208, 128813048, -42433204, -50480360, -96136400, -103191960, -100044280, -96409128, -88321704, -72801840, -49335216, -19551764, -10698764, 34936336, 51146620, 59889024, 61062088, 56099788, 49212808, 43119860, 37066640, 31124554, -28390808, 30828738, 36359584, 42034844, 47656420, 55036784, 65441880, 78317656, 91272352, 101293584, -106852880, 108556912, 107599128, 104722040, 100854424, 97124240, 93621160, 89277872, 83206400, 75163000, -64862060, 51931524, 36353676, 18156974, -2804077, -26050588, -50218904, -74196632, -97649304, -120020176, --140148000, -157368672, -171831984, -183300608, -190740032, -193442112, -191497024, -184927328, -173375488, -156838784, --135890080, -111140872, -83263848, -53436908, -22994718, 7286412, 36909876, 64856152, 89820112, 111269720, -129658624, 145347600, 157740720, 165909760, 169906224, 170894064, 169792400, 166344624, 159930624, 150722752, -139369536, 126035816, 110575544, 93295280, 74738336, 54994908, 34042448, 12556337, -8343511, -27995134, --46311020, -63115620, -77687904, -88826368, -95461016, -97690640, -97167728, -95783680, -93926640, -90569584, --84949088, -77551000, -69654704, -62543852, -56989920, -52911848, -49627272, -46758772, -44623100, -43604120, --43661028, -44587668, -46148888, -47797616, -48853644, -49056044, -48447768, -46837156, -43954696, -39967892, --35283692, -30098594, -24612310, -19294604, -14492830, -10176925, -6356015, -3180423, -441845, 2350421, -5238250, 7852811, 10191957, 12593381, 14998026, 17055852, 18798534, 20420422, 21658446, 22225918, -22512072, 22933514, 22862648, 21058224, 17082696, 11787538, 6634114, 2837363, 695785, }, +39192, -10506027, -2583423, 11370389, -9127342, -51194400, -42549168, 43339980, 130446208, 128813048, +42433204, -50480360, -96136400, -103191960, -100044280, -96409128, -88321704, -72801840, -49335216, -19551764, +10698764, 34936336, 51146620, 59889024, 61062088, 56099788, 49212808, 43119860, 37066640, 31124554, +28390808, 30828738, 36359584, 42034844, 47656420, 55036784, 65441880, 78317656, 91272352, 101293584, +106852880, 108556912, 107599128, 104722040, 100854424, 97124240, 93621160, 89277872, 83206400, 75163000, +64862060, 51931524, 36353676, 18156974, -2804077, -26050588, -50218904, -74196632, -97649304, -120020176, +-140148000, -157368672, -171831984, -183300608, -190740032, -193442112, -191497024, -184927328, -173375488, -156838784, +-135890080, -111140872, -83263848, -53436908, -22994718, 7286412, 36909876, 64856152, 89820112, 111269720, +129658624, 145347600, 157740720, 165909760, 169906224, 170894064, 169792400, 166344624, 159930624, 150722752, +139369536, 126035816, 110575544, 93295280, 74738336, 54994908, 34042448, 12556337, -8343511, -27995134, +-46311020, -63115620, -77687904, -88826368, -95461016, -97690640, -97167728, -95783680, -93926640, -90569584, +-84949088, -77551000, -69654704, -62543852, -56989920, -52911848, -49627272, -46758772, -44623100, -43604120, +-43661028, -44587668, -46148888, -47797616, -48853644, -49056044, -48447768, -46837156, -43954696, -39967892, +-35283692, -30098594, -24612310, -19294604, -14492830, -10176925, -6356015, -3180423, -441845, 2350421, +5238250, 7852811, 10191957, 12593381, 14998026, 17055852, 18798534, 20420422, 21658446, 22225918, +22512072, 22933514, 22862648, 21058224, 17082696, 11787538, 6634114, 2837363, 695785, }, }, { { -680752, --6240051, -13836774, -10302016, 5936182, 22024056, 36585604, 67482528, 119403848, 159337376, 144570752, -70390752, -25560424, -103386304, -150596592, -173636400, -178448368, -167961136, -148191936, -126090576, -103611792, --79183088, -52856552, -26375932, -621697, 23176718, 41265508, 50151260, 51460688, 51485384, 55557012, -64254320, 74965968, 85429584, 95057824, 103935528, 111814640, 118245280, 122967600, 125632624, 125466736, -121898152, 115582400, 108234784, 101213592, 94630480, 87911536, 80723376, 73117520, 65205656, 57070988, -48827872, 40585832, 32500018, 24959666, 18582712, 13938243, 11319386, 10739029, 12014097, 14893873, -19206020, 24874304, 31775242, 39685496, 48436492, 57997092, 68278704, 78905528, 89304184, 99037112, -107957760, 115961968, 122647088, 127384432, 129767608, 129741832, 127162168, 121512680, 112373528, 99948720, -84770840, 67046588, 46717968, 24082418, -91805, -25057912, -50365472, -75708464, -100862472, -125715840, --149895968, -172297440, -191387504, -206211584, -216911424, -224116768, -227924256, -227615552, -222445488, -212763552, --200331232, -187362576, -175147152, -163655968, -152441280, -141703856, -132459472, -125884416, -122654064, -122724936, --125530616, -130339912, -136546144, -143768656, -151833536, -160675264, -170103792, -179589232, -188355792, -195788768, --201700784, -206235200, -209647552, -212184800, -213994592, -215094640, -215534336, -215547760, -215372752, -214942720, --213959168, -212257280, -209942304, -207209616, -204216032, -201055472, -197645808, -193645584, -188603824, -182181776, --174221584, -164782864, -154138320, -142549424, -130080600, -116882704, -103449120, -90151360, -76836432, -63378684, --49806052, -34693136, -14782204, 10616085, 34621732, 46091440, 40392020, 24304146, 7576859, }, +-6240051, -13836774, -10302016, 5936182, 22024056, 36585604, 67482528, 119403848, 159337376, 144570752, +70390752, -25560424, -103386304, -150596592, -173636400, -178448368, -167961136, -148191936, -126090576, -103611792, +-79183088, -52856552, -26375932, -621697, 23176718, 41265508, 50151260, 51460688, 51485384, 55557012, +64254320, 74965968, 85429584, 95057824, 103935528, 111814640, 118245280, 122967600, 125632624, 125466736, +121898152, 115582400, 108234784, 101213592, 94630480, 87911536, 80723376, 73117520, 65205656, 57070988, +48827872, 40585832, 32500018, 24959666, 18582712, 13938243, 11319386, 10739029, 12014097, 14893873, +19206020, 24874304, 31775242, 39685496, 48436492, 57997092, 68278704, 78905528, 89304184, 99037112, +107957760, 115961968, 122647088, 127384432, 129767608, 129741832, 127162168, 121512680, 112373528, 99948720, +84770840, 67046588, 46717968, 24082418, -91805, -25057912, -50365472, -75708464, -100862472, -125715840, +-149895968, -172297440, -191387504, -206211584, -216911424, -224116768, -227924256, -227615552, -222445488, -212763552, +-200331232, -187362576, -175147152, -163655968, -152441280, -141703856, -132459472, -125884416, -122654064, -122724936, +-125530616, -130339912, -136546144, -143768656, -151833536, -160675264, -170103792, -179589232, -188355792, -195788768, +-201700784, -206235200, -209647552, -212184800, -213994592, -215094640, -215534336, -215547760, -215372752, -214942720, +-213959168, -212257280, -209942304, -207209616, -204216032, -201055472, -197645808, -193645584, -188603824, -182181776, +-174221584, -164782864, -154138320, -142549424, -130080600, -116882704, -103449120, -90151360, -76836432, -63378684, +-49806052, -34693136, -14782204, 10616085, 34621732, 46091440, 40392020, 24304146, 7576859, }, { -680752, --6240051, -13836774, -10302016, 5936182, 22024056, 36585604, 67482528, 119403848, 159337376, 144570752, -70390752, -25560424, -103386304, -150596592, -173636400, -178448368, -167961136, -148191936, -126090576, -103611792, --79183088, -52856552, -26375932, -621697, 23176718, 41265508, 50151260, 51460688, 51485384, 55557012, -64254320, 74965968, 85429584, 95057824, 103935528, 111814640, 118245280, 122967600, 125632624, 125466736, -121898152, 115582400, 108234784, 101213592, 94630480, 87911536, 80723376, 73117520, 65205656, 57070988, -48827872, 40585832, 32500018, 24959666, 18582712, 13938243, 11319386, 10739029, 12014097, 14893873, -19206020, 24874304, 31775242, 39685496, 48436492, 57997092, 68278704, 78905528, 89304184, 99037112, -107957760, 115961968, 122647088, 127384432, 129767608, 129741832, 127162168, 121512680, 112373528, 99948720, -84770840, 67046588, 46717968, 24082418, -91805, -25057912, -50365472, -75708464, -100862472, -125715840, --149895968, -172297440, -191387504, -206211584, -216911424, -224116768, -227924256, -227615552, -222445488, -212763552, --200331232, -187362576, -175147152, -163655968, -152441280, -141703856, -132459472, -125884416, -122654064, -122724936, --125530616, -130339912, -136546144, -143768656, -151833536, -160675264, -170103792, -179589232, -188355792, -195788768, --201700784, -206235200, -209647552, -212184800, -213994592, -215094640, -215534336, -215547760, -215372752, -214942720, --213959168, -212257280, -209942304, -207209616, -204216032, -201055472, -197645808, -193645584, -188603824, -182181776, --174221584, -164782864, -154138320, -142549424, -130080600, -116882704, -103449120, -90151360, -76836432, -63378684, --49806052, -34693136, -14782204, 10616085, 34621732, 46091440, 40392020, 24304146, 7576859, }, +-6240051, -13836774, -10302016, 5936182, 22024056, 36585604, 67482528, 119403848, 159337376, 144570752, +70390752, -25560424, -103386304, -150596592, -173636400, -178448368, -167961136, -148191936, -126090576, -103611792, +-79183088, -52856552, -26375932, -621697, 23176718, 41265508, 50151260, 51460688, 51485384, 55557012, +64254320, 74965968, 85429584, 95057824, 103935528, 111814640, 118245280, 122967600, 125632624, 125466736, +121898152, 115582400, 108234784, 101213592, 94630480, 87911536, 80723376, 73117520, 65205656, 57070988, +48827872, 40585832, 32500018, 24959666, 18582712, 13938243, 11319386, 10739029, 12014097, 14893873, +19206020, 24874304, 31775242, 39685496, 48436492, 57997092, 68278704, 78905528, 89304184, 99037112, +107957760, 115961968, 122647088, 127384432, 129767608, 129741832, 127162168, 121512680, 112373528, 99948720, +84770840, 67046588, 46717968, 24082418, -91805, -25057912, -50365472, -75708464, -100862472, -125715840, +-149895968, -172297440, -191387504, -206211584, -216911424, -224116768, -227924256, -227615552, -222445488, -212763552, +-200331232, -187362576, -175147152, -163655968, -152441280, -141703856, -132459472, -125884416, -122654064, -122724936, +-125530616, -130339912, -136546144, -143768656, -151833536, -160675264, -170103792, -179589232, -188355792, -195788768, +-201700784, -206235200, -209647552, -212184800, -213994592, -215094640, -215534336, -215547760, -215372752, -214942720, +-213959168, -212257280, -209942304, -207209616, -204216032, -201055472, -197645808, -193645584, -188603824, -182181776, +-174221584, -164782864, -154138320, -142549424, -130080600, -116882704, -103449120, -90151360, -76836432, -63378684, +-49806052, -34693136, -14782204, 10616085, 34621732, 46091440, 40392020, 24304146, 7576859, }, }, { { -20460150, --40343700, -13508209, 46633144, 91716344, 73947528, -7758322, -95739656, -121552408, -72519448, -544387, -38518876, 38133404, 26581552, 21526376, 20213726, 21106006, 28424094, 36867464, 33590940, 18548354, -6920266, 7955890, 14348412, 15824807, 11763915, 6027987, -1577327, -13320304, -28249074, -42741904, --53768160, -60312080, -63879584, -67890552, -74558488, -82486456, -88451096, -90421944, -87824568, -80701896, --70165272, -58311696, -46536508, -34928284, -23648626, -13455059, -4606890, 3348464, 10569378, 16880296, -22594750, 28263570, 33855616, 39091180, 44140452, 49177912, 53738092, 57185880, 59390808, 60509648, -60608968, 59803660, 58430344, 56992604, 56112136, 56260852, 57352844, 59072980, 61693984, 65859564, -71498320, 77883328, 84850840, 92952216, 102234720, 111824304, 120842664, 128914520, 135716128, 140693472, -143239312, 142800688, 139130096, 132580808, 123537752, 111588616, 96284040, 78704200, 60772176, 42660300, -22346178, -1624571, -28163174, -55070072, -81417008, -107751064, -134499056, -160813232, -185014848, -206087024, --224521568, -241275152, -256022464, -267179712, -273710752, -276195392, -276032704, -274184800, -270631808, -264445424, --254557872, -240999744, -225169024, -208532480, -191526544, -174000944, -156033472, -137935552, -120099632, -103117872, --87445536, -72877544, -58941448, -45649060, -33234456, -21478594, -9917616, 1650341, 13268228, 24788940, -35403416, 44078712, 50786916, 56499756, 61907120, 67092220, 72187664, 77117208, 80982680, 82968568, -83518864, 83573624, 83361560, 82914344, 82702280, 82717848, 82086488, 80413600, 78272560, 76019848, -73696272, 71772664, 69551088, 63401772, 50115288, 32187558, 16374563, 6685117, 1735704, }, +-40343700, -13508209, 46633144, 91716344, 73947528, -7758322, -95739656, -121552408, -72519448, -544387, +38518876, 38133404, 26581552, 21526376, 20213726, 21106006, 28424094, 36867464, 33590940, 18548354, +6920266, 7955890, 14348412, 15824807, 11763915, 6027987, -1577327, -13320304, -28249074, -42741904, +-53768160, -60312080, -63879584, -67890552, -74558488, -82486456, -88451096, -90421944, -87824568, -80701896, +-70165272, -58311696, -46536508, -34928284, -23648626, -13455059, -4606890, 3348464, 10569378, 16880296, +22594750, 28263570, 33855616, 39091180, 44140452, 49177912, 53738092, 57185880, 59390808, 60509648, +60608968, 59803660, 58430344, 56992604, 56112136, 56260852, 57352844, 59072980, 61693984, 65859564, +71498320, 77883328, 84850840, 92952216, 102234720, 111824304, 120842664, 128914520, 135716128, 140693472, +143239312, 142800688, 139130096, 132580808, 123537752, 111588616, 96284040, 78704200, 60772176, 42660300, +22346178, -1624571, -28163174, -55070072, -81417008, -107751064, -134499056, -160813232, -185014848, -206087024, +-224521568, -241275152, -256022464, -267179712, -273710752, -276195392, -276032704, -274184800, -270631808, -264445424, +-254557872, -240999744, -225169024, -208532480, -191526544, -174000944, -156033472, -137935552, -120099632, -103117872, +-87445536, -72877544, -58941448, -45649060, -33234456, -21478594, -9917616, 1650341, 13268228, 24788940, +35403416, 44078712, 50786916, 56499756, 61907120, 67092220, 72187664, 77117208, 80982680, 82968568, +83518864, 83573624, 83361560, 82914344, 82702280, 82717848, 82086488, 80413600, 78272560, 76019848, +73696272, 71772664, 69551088, 63401772, 50115288, 32187558, 16374563, 6685117, 1735704, }, { -20460150, --40343700, -13508209, 46633144, 91716344, 73947528, -7758322, -95739656, -121552408, -72519448, -544387, -38518876, 38133404, 26581552, 21526376, 20213726, 21106006, 28424094, 36867464, 33590940, 18548354, -6920266, 7955890, 14348412, 15824807, 11763915, 6027987, -1577327, -13320304, -28249074, -42741904, --53768160, -60312080, -63879584, -67890552, -74558488, -82486456, -88451096, -90421944, -87824568, -80701896, --70165272, -58311696, -46536508, -34928284, -23648626, -13455059, -4606890, 3348464, 10569378, 16880296, -22594750, 28263570, 33855616, 39091180, 44140452, 49177912, 53738092, 57185880, 59390808, 60509648, -60608968, 59803660, 58430344, 56992604, 56112136, 56260852, 57352844, 59072980, 61693984, 65859564, -71498320, 77883328, 84850840, 92952216, 102234720, 111824304, 120842664, 128914520, 135716128, 140693472, -143239312, 142800688, 139130096, 132580808, 123537752, 111588616, 96284040, 78704200, 60772176, 42660300, -22346178, -1624571, -28163174, -55070072, -81417008, -107751064, -134499056, -160813232, -185014848, -206087024, --224521568, -241275152, -256022464, -267179712, -273710752, -276195392, -276032704, -274184800, -270631808, -264445424, --254557872, -240999744, -225169024, -208532480, -191526544, -174000944, -156033472, -137935552, -120099632, -103117872, --87445536, -72877544, -58941448, -45649060, -33234456, -21478594, -9917616, 1650341, 13268228, 24788940, -35403416, 44078712, 50786916, 56499756, 61907120, 67092220, 72187664, 77117208, 80982680, 82968568, -83518864, 83573624, 83361560, 82914344, 82702280, 82717848, 82086488, 80413600, 78272560, 76019848, -73696272, 71772664, 69551088, 63401772, 50115288, 32187558, 16374563, 6685117, 1735704, }, +-40343700, -13508209, 46633144, 91716344, 73947528, -7758322, -95739656, -121552408, -72519448, -544387, +38518876, 38133404, 26581552, 21526376, 20213726, 21106006, 28424094, 36867464, 33590940, 18548354, +6920266, 7955890, 14348412, 15824807, 11763915, 6027987, -1577327, -13320304, -28249074, -42741904, +-53768160, -60312080, -63879584, -67890552, -74558488, -82486456, -88451096, -90421944, -87824568, -80701896, +-70165272, -58311696, -46536508, -34928284, -23648626, -13455059, -4606890, 3348464, 10569378, 16880296, +22594750, 28263570, 33855616, 39091180, 44140452, 49177912, 53738092, 57185880, 59390808, 60509648, +60608968, 59803660, 58430344, 56992604, 56112136, 56260852, 57352844, 59072980, 61693984, 65859564, +71498320, 77883328, 84850840, 92952216, 102234720, 111824304, 120842664, 128914520, 135716128, 140693472, +143239312, 142800688, 139130096, 132580808, 123537752, 111588616, 96284040, 78704200, 60772176, 42660300, +22346178, -1624571, -28163174, -55070072, -81417008, -107751064, -134499056, -160813232, -185014848, -206087024, +-224521568, -241275152, -256022464, -267179712, -273710752, -276195392, -276032704, -274184800, -270631808, -264445424, +-254557872, -240999744, -225169024, -208532480, -191526544, -174000944, -156033472, -137935552, -120099632, -103117872, +-87445536, -72877544, -58941448, -45649060, -33234456, -21478594, -9917616, 1650341, 13268228, 24788940, +35403416, 44078712, 50786916, 56499756, 61907120, 67092220, 72187664, 77117208, 80982680, 82968568, +83518864, 83573624, 83361560, 82914344, 82702280, 82717848, 82086488, 80413600, 78272560, 76019848, +73696272, 71772664, 69551088, 63401772, 50115288, 32187558, 16374563, 6685117, 1735704, }, }, { { 14716705, -11612518, -44376140, -103088880, -108561200, -50594176, 51995412, 175258832, 280116704, 316670080, 267007920, -164680864, 53394496, -54912768, -165113040, -264245712, -327356512, -348953216, -347518144, -340580160, -329331104, --307044512, -271491872, -226984192, -180089056, -135122896, -91693792, -46570332, 1603633, 50771344, 98411120, -143556592, 185511456, 222793376, 254099936, 278945248, 297080736, 308283104, 312712800, 310943808, 303997792, -293564224, 281367072, 267919520, 252631584, 235309440, 216815312, 198282528, 180523920, 164102640, 149081536, -134679440, 119849448, 104216304, 88079576, 71793064, 55604796, 39872328, 25011206, 11287711, -1207960, --12521440, -22782654, -32032940, -40187472, -47247860, -53325776, -58365920, -62188980, -64909304, -66907536, --68314136, -68973416, -68992744, -68787120, -68469296, -67730024, -66509716, -65335580, -64805152, -65041376, --65790844, -66789964, -67883568, -68891816, -69475392, -69215008, -67979672, -66198868, -64583424, -63570884, --63242856, -63801740, -65893388, -70275864, -77108624, -85522464, -93979792, -101276400, -107191648, -111947784, --115108880, -115415432, -111847392, -104569568, -94679336, -83218216, -70549136, -56565256, -41390600, -25843356, --11130945, 1938641, 13379360, 23678692, 33182918, 41803992, 49133352, 54810224, 58946816, 62265216, -65684008, 69705712, 74157976, 78415904, 81871200, 84363360, 86238648, 87949656, 89652608, 91270200, -92726736, 93883688, 94457608, 94284736, 93489088, 92174832, 90220616, 87558816, 84293568, 80338440, -75355736, 69250976, 62268972, 54512260, 45944340, 36912560, 27975806, 19202798, 10374494, 1696512, --6684043, -15480136, -24956982, -32718524, -34671124, -29163902, -19150186, -9488120, -2658048, }, +11612518, -44376140, -103088880, -108561200, -50594176, 51995412, 175258832, 280116704, 316670080, 267007920, +164680864, 53394496, -54912768, -165113040, -264245712, -327356512, -348953216, -347518144, -340580160, -329331104, +-307044512, -271491872, -226984192, -180089056, -135122896, -91693792, -46570332, 1603633, 50771344, 98411120, +143556592, 185511456, 222793376, 254099936, 278945248, 297080736, 308283104, 312712800, 310943808, 303997792, +293564224, 281367072, 267919520, 252631584, 235309440, 216815312, 198282528, 180523920, 164102640, 149081536, +134679440, 119849448, 104216304, 88079576, 71793064, 55604796, 39872328, 25011206, 11287711, -1207960, +-12521440, -22782654, -32032940, -40187472, -47247860, -53325776, -58365920, -62188980, -64909304, -66907536, +-68314136, -68973416, -68992744, -68787120, -68469296, -67730024, -66509716, -65335580, -64805152, -65041376, +-65790844, -66789964, -67883568, -68891816, -69475392, -69215008, -67979672, -66198868, -64583424, -63570884, +-63242856, -63801740, -65893388, -70275864, -77108624, -85522464, -93979792, -101276400, -107191648, -111947784, +-115108880, -115415432, -111847392, -104569568, -94679336, -83218216, -70549136, -56565256, -41390600, -25843356, +-11130945, 1938641, 13379360, 23678692, 33182918, 41803992, 49133352, 54810224, 58946816, 62265216, +65684008, 69705712, 74157976, 78415904, 81871200, 84363360, 86238648, 87949656, 89652608, 91270200, +92726736, 93883688, 94457608, 94284736, 93489088, 92174832, 90220616, 87558816, 84293568, 80338440, +75355736, 69250976, 62268972, 54512260, 45944340, 36912560, 27975806, 19202798, 10374494, 1696512, +-6684043, -15480136, -24956982, -32718524, -34671124, -29163902, -19150186, -9488120, -2658048, }, { 14716705, -11612518, -44376140, -103088880, -108561200, -50594176, 51995412, 175258832, 280116704, 316670080, 267007920, -164680864, 53394496, -54912768, -165113040, -264245712, -327356512, -348953216, -347518144, -340580160, -329331104, --307044512, -271491872, -226984192, -180089056, -135122896, -91693792, -46570332, 1603633, 50771344, 98411120, -143556592, 185511456, 222793376, 254099936, 278945248, 297080736, 308283104, 312712800, 310943808, 303997792, -293564224, 281367072, 267919520, 252631584, 235309440, 216815312, 198282528, 180523920, 164102640, 149081536, -134679440, 119849448, 104216304, 88079576, 71793064, 55604796, 39872328, 25011206, 11287711, -1207960, --12521440, -22782654, -32032940, -40187472, -47247860, -53325776, -58365920, -62188980, -64909304, -66907536, --68314136, -68973416, -68992744, -68787120, -68469296, -67730024, -66509716, -65335580, -64805152, -65041376, --65790844, -66789964, -67883568, -68891816, -69475392, -69215008, -67979672, -66198868, -64583424, -63570884, --63242856, -63801740, -65893388, -70275864, -77108624, -85522464, -93979792, -101276400, -107191648, -111947784, --115108880, -115415432, -111847392, -104569568, -94679336, -83218216, -70549136, -56565256, -41390600, -25843356, --11130945, 1938641, 13379360, 23678692, 33182918, 41803992, 49133352, 54810224, 58946816, 62265216, -65684008, 69705712, 74157976, 78415904, 81871200, 84363360, 86238648, 87949656, 89652608, 91270200, -92726736, 93883688, 94457608, 94284736, 93489088, 92174832, 90220616, 87558816, 84293568, 80338440, -75355736, 69250976, 62268972, 54512260, 45944340, 36912560, 27975806, 19202798, 10374494, 1696512, --6684043, -15480136, -24956982, -32718524, -34671124, -29163902, -19150186, -9488120, -2658048, }, +11612518, -44376140, -103088880, -108561200, -50594176, 51995412, 175258832, 280116704, 316670080, 267007920, +164680864, 53394496, -54912768, -165113040, -264245712, -327356512, -348953216, -347518144, -340580160, -329331104, +-307044512, -271491872, -226984192, -180089056, -135122896, -91693792, -46570332, 1603633, 50771344, 98411120, +143556592, 185511456, 222793376, 254099936, 278945248, 297080736, 308283104, 312712800, 310943808, 303997792, +293564224, 281367072, 267919520, 252631584, 235309440, 216815312, 198282528, 180523920, 164102640, 149081536, +134679440, 119849448, 104216304, 88079576, 71793064, 55604796, 39872328, 25011206, 11287711, -1207960, +-12521440, -22782654, -32032940, -40187472, -47247860, -53325776, -58365920, -62188980, -64909304, -66907536, +-68314136, -68973416, -68992744, -68787120, -68469296, -67730024, -66509716, -65335580, -64805152, -65041376, +-65790844, -66789964, -67883568, -68891816, -69475392, -69215008, -67979672, -66198868, -64583424, -63570884, +-63242856, -63801740, -65893388, -70275864, -77108624, -85522464, -93979792, -101276400, -107191648, -111947784, +-115108880, -115415432, -111847392, -104569568, -94679336, -83218216, -70549136, -56565256, -41390600, -25843356, +-11130945, 1938641, 13379360, 23678692, 33182918, 41803992, 49133352, 54810224, 58946816, 62265216, +65684008, 69705712, 74157976, 78415904, 81871200, 84363360, 86238648, 87949656, 89652608, 91270200, +92726736, 93883688, 94457608, 94284736, 93489088, 92174832, 90220616, 87558816, 84293568, 80338440, +75355736, 69250976, 62268972, 54512260, 45944340, 36912560, 27975806, 19202798, 10374494, 1696512, +-6684043, -15480136, -24956982, -32718524, -34671124, -29163902, -19150186, -9488120, -2658048, }, }, }; -const Word32 CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[9][BINAURAL_CHANNELS][80] ={ +const Word32 CRendBin_HOA2_HRIR_coeff_re_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80] ={ { { 458548416, -288004928, 36019744, -187976224, -327024704, -388965120, -402463680, -378622848, -315303744, -217801008, -101255464, -18409304, 126339688, 208903984, 259983504, 282743072, 282130496, 261101264, 224144144, 176714288, 121097136, -59304908, -2450816, -59071368, -112419160, -165159216, -213866816, -254361920, -287706976, -315477152, -335894912, --349012800, -358507904, -365523744, -368087296, -367405472, -366872896, -365766400, -361818784, -357276864, -354698816, --351249952, -344377984, -337027168, -330979840, -322771072, -311363104, -300767968, -291396352, -279003744, -264058880, --251057488, -238803408, -223079520, -206383376, -193078640, -179949472, -163271040, -147447296, -135569040, -122029144, --104452528, -89380416, -77912320, -62358632, -43022688, -28498718, -16430397, 2892124, 24889872, 39438536, -55137716, 83652008, 112425064, 131199440, 166224368, 237659328, 303841568, 310876160, 281195808, }, +288004928, 36019744, -187976224, -327024704, -388965120, -402463680, -378622848, -315303744, -217801008, -101255464, +18409304, 126339688, 208903984, 259983504, 282743072, 282130496, 261101264, 224144144, 176714288, 121097136, +59304908, -2450816, -59071368, -112419160, -165159216, -213866816, -254361920, -287706976, -315477152, -335894912, +-349012800, -358507904, -365523744, -368087296, -367405472, -366872896, -365766400, -361818784, -357276864, -354698816, +-351249952, -344377984, -337027168, -330979840, -322771072, -311363104, -300767968, -291396352, -279003744, -264058880, +-251057488, -238803408, -223079520, -206383376, -193078640, -179949472, -163271040, -147447296, -135569040, -122029144, +-104452528, -89380416, -77912320, -62358632, -43022688, -28498718, -16430397, 2892124, 24889872, 39438536, +55137716, 83652008, 112425064, 131199440, 166224368, 237659328, 303841568, 310876160, 281195808, }, { 458548416, -288004928, 36019744, -187976224, -327024704, -388965120, -402463680, -378622848, -315303744, -217801008, -101255464, -18409304, 126339688, 208903984, 259983504, 282743072, 282130496, 261101264, 224144144, 176714288, 121097136, -59304908, -2450816, -59071368, -112419160, -165159216, -213866816, -254361920, -287706976, -315477152, -335894912, --349012800, -358507904, -365523744, -368087296, -367405472, -366872896, -365766400, -361818784, -357276864, -354698816, --351249952, -344377984, -337027168, -330979840, -322771072, -311363104, -300767968, -291396352, -279003744, -264058880, --251057488, -238803408, -223079520, -206383376, -193078640, -179949472, -163271040, -147447296, -135569040, -122029144, --104452528, -89380416, -77912320, -62358632, -43022688, -28498718, -16430397, 2892124, 24889872, 39438536, -55137716, 83652008, 112425064, 131199440, 166224368, 237659328, 303841568, 310876160, 281195808, }, +288004928, 36019744, -187976224, -327024704, -388965120, -402463680, -378622848, -315303744, -217801008, -101255464, +18409304, 126339688, 208903984, 259983504, 282743072, 282130496, 261101264, 224144144, 176714288, 121097136, +59304908, -2450816, -59071368, -112419160, -165159216, -213866816, -254361920, -287706976, -315477152, -335894912, +-349012800, -358507904, -365523744, -368087296, -367405472, -366872896, -365766400, -361818784, -357276864, -354698816, +-351249952, -344377984, -337027168, -330979840, -322771072, -311363104, -300767968, -291396352, -279003744, -264058880, +-251057488, -238803408, -223079520, -206383376, -193078640, -179949472, -163271040, -147447296, -135569040, -122029144, +-104452528, -89380416, -77912320, -62358632, -43022688, -28498718, -16430397, 2892124, 24889872, 39438536, +55137716, 83652008, 112425064, 131199440, 166224368, 237659328, 303841568, 310876160, 281195808, }, }, { { -6680285, -164793056, 343598464, 346121216, 119204136, -232472624, -541734400, -697761472, -693628096, -586175552, -429270720, --248121328, -57235272, 124696320, 282600256, 410929056, 505404384, 559695424, 573703488, 555786496, 514943488, -457637344, 390174144, 316517088, 236630688, 152837488, 72540920, -216896, -68562176, -134133440, -193402384, --245631328, -294658912, -340661248, -380098688, -414168000, -447189312, -478065824, -503238624, -524577632, -544824640, --560739648, -569639872, -575469248, -580737024, -581515456, -576584320, -570787712, -564958400, -554609152, -540835136, --529266688, -518326848, -502419360, -483915040, -467812128, -450364896, -427169920, -403682368, -384242272, -362739520, --336320096, -312757376, -293879392, -270810048, -243498336, -222114240, -204527952, -179219328, -150961664, -132316128, --114280488, -82068232, -49047452, -29818348, 4310000, 85765128, 181594976, 229271264, 229039328, }, +164793056, 343598464, 346121216, 119204136, -232472624, -541734400, -697761472, -693628096, -586175552, -429270720, +-248121328, -57235272, 124696320, 282600256, 410929056, 505404384, 559695424, 573703488, 555786496, 514943488, +457637344, 390174144, 316517088, 236630688, 152837488, 72540920, -216896, -68562176, -134133440, -193402384, +-245631328, -294658912, -340661248, -380098688, -414168000, -447189312, -478065824, -503238624, -524577632, -544824640, +-560739648, -569639872, -575469248, -580737024, -581515456, -576584320, -570787712, -564958400, -554609152, -540835136, +-529266688, -518326848, -502419360, -483915040, -467812128, -450364896, -427169920, -403682368, -384242272, -362739520, +-336320096, -312757376, -293879392, -270810048, -243498336, -222114240, -204527952, -179219328, -150961664, -132316128, +-114280488, -82068232, -49047452, -29818348, 4310000, 85765128, 181594976, 229271264, 229039328, }, { 6680285, --164793056, -343598464, -346121216, -119204136, 232472624, 541734400, 697761472, 693628096, 586175552, 429270720, -248121328, 57235272, -124696320, -282600256, -410929056, -505404384, -559695424, -573703488, -555786496, -514943488, --457637344, -390174144, -316517088, -236630688, -152837488, -72540920, 216896, 68562176, 134133440, 193402384, -245631328, 294658912, 340661248, 380098688, 414168000, 447189312, 478065824, 503238624, 524577632, 544824640, -560739648, 569639872, 575469248, 580737024, 581515456, 576584320, 570787712, 564958400, 554609152, 540835136, -529266688, 518326848, 502419360, 483915040, 467812128, 450364896, 427169920, 403682368, 384242272, 362739520, -336320096, 312757376, 293879392, 270810048, 243498336, 222114240, 204527952, 179219328, 150961664, 132316128, -114280488, 82068232, 49047452, 29818348, -4310000, -85765128, -181594976, -229271264, -229039328, }, +-164793056, -343598464, -346121216, -119204136, 232472624, 541734400, 697761472, 693628096, 586175552, 429270720, +248121328, 57235272, -124696320, -282600256, -410929056, -505404384, -559695424, -573703488, -555786496, -514943488, +-457637344, -390174144, -316517088, -236630688, -152837488, -72540920, 216896, 68562176, 134133440, 193402384, +245631328, 294658912, 340661248, 380098688, 414168000, 447189312, 478065824, 503238624, 524577632, 544824640, +560739648, 569639872, 575469248, 580737024, 581515456, 576584320, 570787712, 564958400, 554609152, 540835136, +529266688, 518326848, 502419360, 483915040, 467812128, 450364896, 427169920, 403682368, 384242272, 362739520, +336320096, 312757376, 293879392, 270810048, 243498336, 222114240, 204527952, 179219328, 150961664, 132316128, +114280488, 82068232, 49047452, 29818348, -4310000, -85765128, -181594976, -229271264, -229039328, }, }, { { 56929792, -32702954, -17035988, -65899832, -70332240, -23156854, 30343408, 43584792, 15283104, -24489904, -51496656, --56739204, -39491152, -9847823, 13324599, 21841520, 27769648, 43945568, 64601140, 74967584, 70637720, -56937308, 36863168, 10703059, -16742856, -38056096, -51105280, -59698972, -67841152, -76534168, -84198000, --87912608, -85837608, -79298520, -71068824, -62506268, -54630912, -50245212, -51711944, -57933740, -66320736, --76117560, -87351048, -98688144, -108890840, -118427280, -127745752, -136126304, -143473376, -150588000, -156772208, --159970352, -159729840, -157088960, -151699312, -142245552, -129212480, -113966960, -96036008, -74430176, -50194208, --24536612, 3521873, 34633544, 66910760, 99025840, 132155608, 166103024, 197674800, 225691408, 252471600, -277316896, 295024512, 305051648, 314057120, 321451456, 309289184, 259698416, 184246048, 126319824, }, +32702954, -17035988, -65899832, -70332240, -23156854, 30343408, 43584792, 15283104, -24489904, -51496656, +-56739204, -39491152, -9847823, 13324599, 21841520, 27769648, 43945568, 64601140, 74967584, 70637720, +56937308, 36863168, 10703059, -16742856, -38056096, -51105280, -59698972, -67841152, -76534168, -84198000, +-87912608, -85837608, -79298520, -71068824, -62506268, -54630912, -50245212, -51711944, -57933740, -66320736, +-76117560, -87351048, -98688144, -108890840, -118427280, -127745752, -136126304, -143473376, -150588000, -156772208, +-159970352, -159729840, -157088960, -151699312, -142245552, -129212480, -113966960, -96036008, -74430176, -50194208, +-24536612, 3521873, 34633544, 66910760, 99025840, 132155608, 166103024, 197674800, 225691408, 252471600, +277316896, 295024512, 305051648, 314057120, 321451456, 309289184, 259698416, 184246048, 126319824, }, { 56929792, -32702954, -17035988, -65899832, -70332240, -23156854, 30343408, 43584792, 15283104, -24489904, -51496656, --56739204, -39491152, -9847823, 13324599, 21841520, 27769648, 43945568, 64601140, 74967584, 70637720, -56937308, 36863168, 10703059, -16742856, -38056096, -51105280, -59698972, -67841152, -76534168, -84198000, --87912608, -85837608, -79298520, -71068824, -62506268, -54630912, -50245212, -51711944, -57933740, -66320736, --76117560, -87351048, -98688144, -108890840, -118427280, -127745752, -136126304, -143473376, -150588000, -156772208, --159970352, -159729840, -157088960, -151699312, -142245552, -129212480, -113966960, -96036008, -74430176, -50194208, --24536612, 3521873, 34633544, 66910760, 99025840, 132155608, 166103024, 197674800, 225691408, 252471600, -277316896, 295024512, 305051648, 314057120, 321451456, 309289184, 259698416, 184246048, 126319824, }, +32702954, -17035988, -65899832, -70332240, -23156854, 30343408, 43584792, 15283104, -24489904, -51496656, +-56739204, -39491152, -9847823, 13324599, 21841520, 27769648, 43945568, 64601140, 74967584, 70637720, +56937308, 36863168, 10703059, -16742856, -38056096, -51105280, -59698972, -67841152, -76534168, -84198000, +-87912608, -85837608, -79298520, -71068824, -62506268, -54630912, -50245212, -51711944, -57933740, -66320736, +-76117560, -87351048, -98688144, -108890840, -118427280, -127745752, -136126304, -143473376, -150588000, -156772208, +-159970352, -159729840, -157088960, -151699312, -142245552, -129212480, -113966960, -96036008, -74430176, -50194208, +-24536612, 3521873, 34633544, 66910760, 99025840, 132155608, 166103024, 197674800, 225691408, 252471600, +277316896, 295024512, 305051648, 314057120, 321451456, 309289184, 259698416, 184246048, 126319824, }, }, { { 13747653, -24179592, 14550812, -24625194, -59763932, -56667260, -25659746, -7880728, -26664768, -66838280, -96977680, --99336688, -78250008, -48997524, -22731114, 686121, 28130962, 62903016, 99795712, 129662376, 146496496, -149463792, 140745008, 123942552, 103496360, 82495584, 59947008, 31973884, -3155727, -42750492, -83415784, --124656056, -166657616, -206721600, -240942832, -268026368, -288604096, -302155232, -307542208, -305552032, -298326816, --287198560, -272998336, -257139152, -240664192, -223538016, -205876032, -188226944, -170212240, -151019104, -131421704, --113209432, -97021160, -82820928, -71288944, -62351112, -53964116, -44628468, -35070556, -25678536, -15246060, --3839164, 6704981, 16334297, 26765700, 37558952, 47022912, 56507276, 68250792, 80564456, 91340536, -103145784, 117800752, 131357280, 142814112, 158838624, 177448720, 178645408, 151044336, 119084944, }, +24179592, 14550812, -24625194, -59763932, -56667260, -25659746, -7880728, -26664768, -66838280, -96977680, +-99336688, -78250008, -48997524, -22731114, 686121, 28130962, 62903016, 99795712, 129662376, 146496496, +149463792, 140745008, 123942552, 103496360, 82495584, 59947008, 31973884, -3155727, -42750492, -83415784, +-124656056, -166657616, -206721600, -240942832, -268026368, -288604096, -302155232, -307542208, -305552032, -298326816, +-287198560, -272998336, -257139152, -240664192, -223538016, -205876032, -188226944, -170212240, -151019104, -131421704, +-113209432, -97021160, -82820928, -71288944, -62351112, -53964116, -44628468, -35070556, -25678536, -15246060, +-3839164, 6704981, 16334297, 26765700, 37558952, 47022912, 56507276, 68250792, 80564456, 91340536, +103145784, 117800752, 131357280, 142814112, 158838624, 177448720, 178645408, 151044336, 119084944, }, { 13747653, -24179592, 14550812, -24625194, -59763932, -56667260, -25659746, -7880728, -26664768, -66838280, -96977680, --99336688, -78250008, -48997524, -22731114, 686121, 28130962, 62903016, 99795712, 129662376, 146496496, -149463792, 140745008, 123942552, 103496360, 82495584, 59947008, 31973884, -3155727, -42750492, -83415784, --124656056, -166657616, -206721600, -240942832, -268026368, -288604096, -302155232, -307542208, -305552032, -298326816, --287198560, -272998336, -257139152, -240664192, -223538016, -205876032, -188226944, -170212240, -151019104, -131421704, --113209432, -97021160, -82820928, -71288944, -62351112, -53964116, -44628468, -35070556, -25678536, -15246060, --3839164, 6704981, 16334297, 26765700, 37558952, 47022912, 56507276, 68250792, 80564456, 91340536, -103145784, 117800752, 131357280, 142814112, 158838624, 177448720, 178645408, 151044336, 119084944, }, +24179592, 14550812, -24625194, -59763932, -56667260, -25659746, -7880728, -26664768, -66838280, -96977680, +-99336688, -78250008, -48997524, -22731114, 686121, 28130962, 62903016, 99795712, 129662376, 146496496, +149463792, 140745008, 123942552, 103496360, 82495584, 59947008, 31973884, -3155727, -42750492, -83415784, +-124656056, -166657616, -206721600, -240942832, -268026368, -288604096, -302155232, -307542208, -305552032, -298326816, +-287198560, -272998336, -257139152, -240664192, -223538016, -205876032, -188226944, -170212240, -151019104, -131421704, +-113209432, -97021160, -82820928, -71288944, -62351112, -53964116, -44628468, -35070556, -25678536, -15246060, +-3839164, 6704981, 16334297, 26765700, 37558952, 47022912, 56507276, 68250792, 80564456, 91340536, +103145784, 117800752, 131357280, 142814112, 158838624, 177448720, 178645408, 151044336, 119084944, }, }, { { 368293, --3048890, -1468879, 7374996, 13603772, 9038222, 481573, -840203, -845572, -20397874, -66472136, --115881976, -136780208, -120776088, -85447304, -49606872, -16407312, 19768660, 60117196, 100017976, 135532528, -165566688, 188641408, 201786160, 203722640, 196553808, 182668176, 161795184, 132951784, 97609040, 58577984, -17105780, -26522496, -70843872, -114004536, -155064960, -192145024, -221224640, -239529248, -248493392, -251313040, --249691680, -244772864, -238466784, -231702208, -223685120, -214202368, -204148928, -193284272, -180464320, -166262480, --152371488, -138978704, -125753424, -114062520, -104983496, -97000224, -88618064, -80697064, -73618424, -65599720, --56105156, -46832324, -37693168, -26623966, -14120242, -2343442, 9921911, 25036438, 40991168, 55364812, -71156336, 90472416, 108683072, 124603984, 146057872, 170790448, 175328080, 145876960, 110227648, }, +-3048890, -1468879, 7374996, 13603772, 9038222, 481573, -840203, -845572, -20397874, -66472136, +-115881976, -136780208, -120776088, -85447304, -49606872, -16407312, 19768660, 60117196, 100017976, 135532528, +165566688, 188641408, 201786160, 203722640, 196553808, 182668176, 161795184, 132951784, 97609040, 58577984, +17105780, -26522496, -70843872, -114004536, -155064960, -192145024, -221224640, -239529248, -248493392, -251313040, +-249691680, -244772864, -238466784, -231702208, -223685120, -214202368, -204148928, -193284272, -180464320, -166262480, +-152371488, -138978704, -125753424, -114062520, -104983496, -97000224, -88618064, -80697064, -73618424, -65599720, +-56105156, -46832324, -37693168, -26623966, -14120242, -2343442, 9921911, 25036438, 40991168, 55364812, +71156336, 90472416, 108683072, 124603984, 146057872, 170790448, 175328080, 145876960, 110227648, }, { -368293, -3048890, 1468879, -7374996, -13603772, -9038222, -481573, 840203, 845572, 20397874, 66472136, -115881976, 136780208, 120776088, 85447304, 49606872, 16407312, -19768660, -60117196, -100017976, -135532528, --165566688, -188641408, -201786160, -203722640, -196553808, -182668176, -161795184, -132951784, -97609040, -58577984, --17105780, 26522496, 70843872, 114004536, 155064960, 192145024, 221224640, 239529248, 248493392, 251313040, -249691680, 244772864, 238466784, 231702208, 223685120, 214202368, 204148928, 193284272, 180464320, 166262480, -152371488, 138978704, 125753424, 114062520, 104983496, 97000224, 88618064, 80697064, 73618424, 65599720, -56105156, 46832324, 37693168, 26623966, 14120242, 2343442, -9921911, -25036438, -40991168, -55364812, --71156336, -90472416, -108683072, -124603984, -146057872, -170790448, -175328080, -145876960, -110227648, }, +3048890, 1468879, -7374996, -13603772, -9038222, -481573, 840203, 845572, 20397874, 66472136, +115881976, 136780208, 120776088, 85447304, 49606872, 16407312, -19768660, -60117196, -100017976, -135532528, +-165566688, -188641408, -201786160, -203722640, -196553808, -182668176, -161795184, -132951784, -97609040, -58577984, +-17105780, 26522496, 70843872, 114004536, 155064960, 192145024, 221224640, 239529248, 248493392, 251313040, +249691680, 244772864, 238466784, 231702208, 223685120, 214202368, 204148928, 193284272, 180464320, 166262480, +152371488, 138978704, 125753424, 114062520, 104983496, 97000224, 88618064, 80697064, 73618424, 65599720, +56105156, 46832324, 37693168, 26623966, 14120242, 2343442, -9921911, -25036438, -40991168, -55364812, +-71156336, -90472416, -108683072, -124603984, -146057872, -170790448, -175328080, -145876960, -110227648, }, }, { { 4243428, --4525285, 1450088, 13779329, 980326, -21391622, 2690797, 72931768, 105982616, 41259604, -73534672, --141541728, -127762928, -73687680, -26748520, 3726421, 29141354, 55375012, 80288512, 99776384, 109567304, -107421424, 95509336, 78276312, 59301152, 41651520, 28340342, 20354924, 16241419, 14893873, 16932908, -22392348, 28755880, 32857574, 34234648, 35179540, 37076844, 37903088, 34362960, 25459492, 12666932, --2234457, -17712446, -32049046, -44368624, -55446416, -66281544, -77069432, -88304528, -100865696, -114238080, --126841656, -138443440, -149727936, -159640176, -166064912, -168644576, -167984224, -163220032, -153458640, -139938080, --123814784, -104166912, -80791016, -55704652, -29579440, -913217, 29350196, 57663696, 83715352, 109902848, -134050760, 150826368, 161287296, 170820512, 175198160, 159931168, 119301304, 68813968, 34583076, }, +-4525285, 1450088, 13779329, 980326, -21391622, 2690797, 72931768, 105982616, 41259604, -73534672, +-141541728, -127762928, -73687680, -26748520, 3726421, 29141354, 55375012, 80288512, 99776384, 109567304, +107421424, 95509336, 78276312, 59301152, 41651520, 28340342, 20354924, 16241419, 14893873, 16932908, +22392348, 28755880, 32857574, 34234648, 35179540, 37076844, 37903088, 34362960, 25459492, 12666932, +-2234457, -17712446, -32049046, -44368624, -55446416, -66281544, -77069432, -88304528, -100865696, -114238080, +-126841656, -138443440, -149727936, -159640176, -166064912, -168644576, -167984224, -163220032, -153458640, -139938080, +-123814784, -104166912, -80791016, -55704652, -29579440, -913217, 29350196, 57663696, 83715352, 109902848, +134050760, 150826368, 161287296, 170820512, 175198160, 159931168, 119301304, 68813968, 34583076, }, { -4243428, -4525285, -1450088, -13779329, -980326, 21391622, -2690797, -72931768, -105982616, -41259604, 73534672, -141541728, 127762928, 73687680, 26748520, -3726421, -29141354, -55375012, -80288512, -99776384, -109567304, --107421424, -95509336, -78276312, -59301152, -41651520, -28340342, -20354924, -16241419, -14893873, -16932908, --22392348, -28755880, -32857574, -34234648, -35179540, -37076844, -37903088, -34362960, -25459492, -12666932, -2234457, 17712446, 32049046, 44368624, 55446416, 66281544, 77069432, 88304528, 100865696, 114238080, -126841656, 138443440, 149727936, 159640176, 166064912, 168644576, 167984224, 163220032, 153458640, 139938080, -123814784, 104166912, 80791016, 55704652, 29579440, 913217, -29350196, -57663696, -83715352, -109902848, --134050760, -150826368, -161287296, -170820512, -175198160, -159931168, -119301304, -68813968, -34583076, }, +4525285, -1450088, -13779329, -980326, 21391622, -2690797, -72931768, -105982616, -41259604, 73534672, +141541728, 127762928, 73687680, 26748520, -3726421, -29141354, -55375012, -80288512, -99776384, -109567304, +-107421424, -95509336, -78276312, -59301152, -41651520, -28340342, -20354924, -16241419, -14893873, -16932908, +-22392348, -28755880, -32857574, -34234648, -35179540, -37076844, -37903088, -34362960, -25459492, -12666932, +2234457, 17712446, 32049046, 44368624, 55446416, 66281544, 77069432, 88304528, 100865696, 114238080, +126841656, 138443440, 149727936, 159640176, 166064912, 168644576, 167984224, 163220032, 153458640, 139938080, +123814784, 104166912, 80791016, 55704652, 29579440, 913217, -29350196, -57663696, -83715352, -109902848, +-134050760, -150826368, -161287296, -170820512, -175198160, -159931168, -119301304, -68813968, -34583076, }, }, { { -6826851, --6057515, -15246597, -32778116, -43596604, -44637596, -48894980, -55131272, -34748432, 33612416, 127658776, -196816336, 210170464, 177002048, 124192200, 68890200, 16225313, -29956324, -65310348, -90420872, -109859360, --125607392, -135870224, -139659456, -137849664, -130121400, -116014584, -99597072, -88147760, -84653272, -85240072, --84846544, -81829864, -76485312, -68936912, -59672128, -49427020, -37944964, -24684788, -10306848, 4103305, -18002356, 30329448, 39567388, 46104328, 52113524, 58238684, 63140852, 66578436, 69650944, 72033584, -72430328, 71256728, 69492032, 66113504, 60049548, 52780316, 45839648, 38427608, 30284888, 23361400, -18210124, 13047037, 8094403, 5720897, 5493263, 5160403, 6211597, 11516955, 19177028, 26549340, -36696200, 51961588, 67656472, 82720536, 105781288, 134890432, 144971792, 119775904, 86061480, }, +-6057515, -15246597, -32778116, -43596604, -44637596, -48894980, -55131272, -34748432, 33612416, 127658776, +196816336, 210170464, 177002048, 124192200, 68890200, 16225313, -29956324, -65310348, -90420872, -109859360, +-125607392, -135870224, -139659456, -137849664, -130121400, -116014584, -99597072, -88147760, -84653272, -85240072, +-84846544, -81829864, -76485312, -68936912, -59672128, -49427020, -37944964, -24684788, -10306848, 4103305, +18002356, 30329448, 39567388, 46104328, 52113524, 58238684, 63140852, 66578436, 69650944, 72033584, +72430328, 71256728, 69492032, 66113504, 60049548, 52780316, 45839648, 38427608, 30284888, 23361400, +18210124, 13047037, 8094403, 5720897, 5493263, 5160403, 6211597, 11516955, 19177028, 26549340, +36696200, 51961588, 67656472, 82720536, 105781288, 134890432, 144971792, 119775904, 86061480, }, { -6826851, --6057515, -15246597, -32778116, -43596604, -44637596, -48894980, -55131272, -34748432, 33612416, 127658776, -196816336, 210170464, 177002048, 124192200, 68890200, 16225313, -29956324, -65310348, -90420872, -109859360, --125607392, -135870224, -139659456, -137849664, -130121400, -116014584, -99597072, -88147760, -84653272, -85240072, --84846544, -81829864, -76485312, -68936912, -59672128, -49427020, -37944964, -24684788, -10306848, 4103305, -18002356, 30329448, 39567388, 46104328, 52113524, 58238684, 63140852, 66578436, 69650944, 72033584, -72430328, 71256728, 69492032, 66113504, 60049548, 52780316, 45839648, 38427608, 30284888, 23361400, -18210124, 13047037, 8094403, 5720897, 5493263, 5160403, 6211597, 11516955, 19177028, 26549340, -36696200, 51961588, 67656472, 82720536, 105781288, 134890432, 144971792, 119775904, 86061480, }, +-6057515, -15246597, -32778116, -43596604, -44637596, -48894980, -55131272, -34748432, 33612416, 127658776, +196816336, 210170464, 177002048, 124192200, 68890200, 16225313, -29956324, -65310348, -90420872, -109859360, +-125607392, -135870224, -139659456, -137849664, -130121400, -116014584, -99597072, -88147760, -84653272, -85240072, +-84846544, -81829864, -76485312, -68936912, -59672128, -49427020, -37944964, -24684788, -10306848, 4103305, +18002356, 30329448, 39567388, 46104328, 52113524, 58238684, 63140852, 66578436, 69650944, 72033584, +72430328, 71256728, 69492032, 66113504, 60049548, 52780316, 45839648, 38427608, 30284888, 23361400, +18210124, 13047037, 8094403, 5720897, 5493263, 5160403, 6211597, 11516955, 19177028, 26549340, +36696200, 51961588, 67656472, 82720536, 105781288, 134890432, 144971792, 119775904, 86061480, }, }, { { 19251654, --18982144, -61636000, -64225332, -8608725, 72361608, 113291576, 74142408, -16891570, -88233664, -95866888, --59329604, -25140592, -13041131, -11723113, -10652056, -11085847, -10317585, 361314, 17995912, 26939646, -21286932, 13588740, 15809238, 24864102, 32784022, 39150236, 46495168, 52472688, 53149684, 48338248, -39996348, 30160870, 21744346, 16369731, 11051488, 1435593, -12585328, -28260348, -44339096, -59943248, --72372880, -80202072, -85403816, -89399208, -90870232, -89631672, -87996904, -86639152, -83959632, -80319112, --77761456, -75691280, -72060424, -67717672, -64384244, -60509108, -54260468, -47500192, -42052560, -36249524, --29358248, -24135568, -21457656, -18673980, -15665893, -15128485, -15772731, -13948980, -11482595, -11852499, --11142756, -4625143, 2744484, 6984154, 18542984, 45823008, 73170672, 79101488, 70233992, }, +-18982144, -61636000, -64225332, -8608725, 72361608, 113291576, 74142408, -16891570, -88233664, -95866888, +-59329604, -25140592, -13041131, -11723113, -10652056, -11085847, -10317585, 361314, 17995912, 26939646, +21286932, 13588740, 15809238, 24864102, 32784022, 39150236, 46495168, 52472688, 53149684, 48338248, +39996348, 30160870, 21744346, 16369731, 11051488, 1435593, -12585328, -28260348, -44339096, -59943248, +-72372880, -80202072, -85403816, -89399208, -90870232, -89631672, -87996904, -86639152, -83959632, -80319112, +-77761456, -75691280, -72060424, -67717672, -64384244, -60509108, -54260468, -47500192, -42052560, -36249524, +-29358248, -24135568, -21457656, -18673980, -15665893, -15128485, -15772731, -13948980, -11482595, -11852499, +-11142756, -4625143, 2744484, 6984154, 18542984, 45823008, 73170672, 79101488, 70233992, }, { 19251654, --18982144, -61636000, -64225332, -8608725, 72361608, 113291576, 74142408, -16891570, -88233664, -95866888, --59329604, -25140592, -13041131, -11723113, -10652056, -11085847, -10317585, 361314, 17995912, 26939646, -21286932, 13588740, 15809238, 24864102, 32784022, 39150236, 46495168, 52472688, 53149684, 48338248, -39996348, 30160870, 21744346, 16369731, 11051488, 1435593, -12585328, -28260348, -44339096, -59943248, --72372880, -80202072, -85403816, -89399208, -90870232, -89631672, -87996904, -86639152, -83959632, -80319112, --77761456, -75691280, -72060424, -67717672, -64384244, -60509108, -54260468, -47500192, -42052560, -36249524, --29358248, -24135568, -21457656, -18673980, -15665893, -15128485, -15772731, -13948980, -11482595, -11852499, --11142756, -4625143, 2744484, 6984154, 18542984, 45823008, 73170672, 79101488, 70233992, }, +-18982144, -61636000, -64225332, -8608725, 72361608, 113291576, 74142408, -16891570, -88233664, -95866888, +-59329604, -25140592, -13041131, -11723113, -10652056, -11085847, -10317585, 361314, 17995912, 26939646, +21286932, 13588740, 15809238, 24864102, 32784022, 39150236, 46495168, 52472688, 53149684, 48338248, +39996348, 30160870, 21744346, 16369731, 11051488, 1435593, -12585328, -28260348, -44339096, -59943248, +-72372880, -80202072, -85403816, -89399208, -90870232, -89631672, -87996904, -86639152, -83959632, -80319112, +-77761456, -75691280, -72060424, -67717672, -64384244, -60509108, -54260468, -47500192, -42052560, -36249524, +-29358248, -24135568, -21457656, -18673980, -15665893, -15128485, -15772731, -13948980, -11482595, -11852499, +-11142756, -4625143, 2744484, 6984154, 18542984, 45823008, 73170672, 79101488, 70233992, }, }, { { -148713, -38926900, 55264416, 7113003, -82071992, -162379296, -201008768, -177901296, -80883360, 68788200, 213079232, -305129504, 345367456, 354848576, 334543584, 273673696, 182609664, 91002304, 16658568, -45738180, -106727256, --167042560, -220613680, -262422496, -291595520, -311575712, -327321056, -340128672, -346870688, -345117280, -335773024, --319985792, -297351872, -268227152, -234532064, -197647952, -158186336, -117700896, -78248936, -40883256, -6394133, -23968064, 50220516, 74125768, 96413424, 115648440, 130894496, 143004160, 152630784, 159769024, 165597840, -171820704, 178088672, 182780928, 185774512, 187760944, 188035280, 185756256, 181894016, 177441200, 171699904, -164425840, 157017568, 149826176, 141460112, 132021928, 123266096, 114913464, 105238512, 95279016, 87270512, -79717816, 70102456, 60736744, 54407572, 46471008, 30596274, 10727755, -2694018, -6955163, }, +38926900, 55264416, 7113003, -82071992, -162379296, -201008768, -177901296, -80883360, 68788200, 213079232, +305129504, 345367456, 354848576, 334543584, 273673696, 182609664, 91002304, 16658568, -45738180, -106727256, +-167042560, -220613680, -262422496, -291595520, -311575712, -327321056, -340128672, -346870688, -345117280, -335773024, +-319985792, -297351872, -268227152, -234532064, -197647952, -158186336, -117700896, -78248936, -40883256, -6394133, +23968064, 50220516, 74125768, 96413424, 115648440, 130894496, 143004160, 152630784, 159769024, 165597840, +171820704, 178088672, 182780928, 185774512, 187760944, 188035280, 185756256, 181894016, 177441200, 171699904, +164425840, 157017568, 149826176, 141460112, 132021928, 123266096, 114913464, 105238512, 95279016, 87270512, +79717816, 70102456, 60736744, 54407572, 46471008, 30596274, 10727755, -2694018, -6955163, }, { -148713, -38926900, 55264416, 7113003, -82071992, -162379296, -201008768, -177901296, -80883360, 68788200, 213079232, -305129504, 345367456, 354848576, 334543584, 273673696, 182609664, 91002304, 16658568, -45738180, -106727256, --167042560, -220613680, -262422496, -291595520, -311575712, -327321056, -340128672, -346870688, -345117280, -335773024, --319985792, -297351872, -268227152, -234532064, -197647952, -158186336, -117700896, -78248936, -40883256, -6394133, -23968064, 50220516, 74125768, 96413424, 115648440, 130894496, 143004160, 152630784, 159769024, 165597840, -171820704, 178088672, 182780928, 185774512, 187760944, 188035280, 185756256, 181894016, 177441200, 171699904, -164425840, 157017568, 149826176, 141460112, 132021928, 123266096, 114913464, 105238512, 95279016, 87270512, -79717816, 70102456, 60736744, 54407572, 46471008, 30596274, 10727755, -2694018, -6955163, }, +38926900, 55264416, 7113003, -82071992, -162379296, -201008768, -177901296, -80883360, 68788200, 213079232, +305129504, 345367456, 354848576, 334543584, 273673696, 182609664, 91002304, 16658568, -45738180, -106727256, +-167042560, -220613680, -262422496, -291595520, -311575712, -327321056, -340128672, -346870688, -345117280, -335773024, +-319985792, -297351872, -268227152, -234532064, -197647952, -158186336, -117700896, -78248936, -40883256, -6394133, +23968064, 50220516, 74125768, 96413424, 115648440, 130894496, 143004160, 152630784, 159769024, 165597840, +171820704, 178088672, 182780928, 185774512, 187760944, 188035280, 185756256, 181894016, 177441200, 171699904, +164425840, 157017568, 149826176, 141460112, 132021928, 123266096, 114913464, 105238512, 95279016, 87270512, +79717816, 70102456, 60736744, 54407572, 46471008, 30596274, 10727755, -2694018, -6955163, }, }, }; -const Word32 CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[9][BINAURAL_CHANNELS][80] ={ +const Word32 CRendBin_HOA2_HRIR_coeff_im_16kHz_fx[HOA2_CHANNELS][BINAURAL_CHANNELS][80] ={ { { -150242784, --386995328, -475354080, -421303008, -292915168, -152560464, -21282636, 102001176, 210548960, 288762464, 326451872, -321788608, 277569792, 203039216, 113307680, 20830054, -68543384, -150520352, -220697424, -278116864, -323314400, --353931616, -368772320, -372753760, -370811904, -361272800, -341630816, -315185088, -286076512, -254237360, -220177200, --187673968, -158032784, -128915592, -100644504, -76050984, -54178328, -32091996, -11112154, 6548752, 23648626, -42909408, 61489436, 77180560, 93131536, 110697416, 126071248, 138471360, 151995136, 166570640, 177748288, -186292064, 196535552, 206622816, 212256752, 216339120, 223023152, 228599104, 229724912, 231484784, 236698864, -239321488, 237591152, 238633744, 242894352, 242224880, 237895024, 239066464, 242346208, 237767248, 231694160, -234890144, 236814832, 225951792, 219453504, 228795600, 217105760, 147807536, 56675852, 7899519, }, +-386995328, -475354080, -421303008, -292915168, -152560464, -21282636, 102001176, 210548960, 288762464, 326451872, +321788608, 277569792, 203039216, 113307680, 20830054, -68543384, -150520352, -220697424, -278116864, -323314400, +-353931616, -368772320, -372753760, -370811904, -361272800, -341630816, -315185088, -286076512, -254237360, -220177200, +-187673968, -158032784, -128915592, -100644504, -76050984, -54178328, -32091996, -11112154, 6548752, 23648626, +42909408, 61489436, 77180560, 93131536, 110697416, 126071248, 138471360, 151995136, 166570640, 177748288, +186292064, 196535552, 206622816, 212256752, 216339120, 223023152, 228599104, 229724912, 231484784, 236698864, +239321488, 237591152, 238633744, 242894352, 242224880, 237895024, 239066464, 242346208, 237767248, 231694160, +234890144, 236814832, 225951792, 219453504, 228795600, 217105760, 147807536, 56675852, 7899519, }, { -150242784, --386995328, -475354080, -421303008, -292915168, -152560464, -21282636, 102001176, 210548960, 288762464, 326451872, -321788608, 277569792, 203039216, 113307680, 20830054, -68543384, -150520352, -220697424, -278116864, -323314400, --353931616, -368772320, -372753760, -370811904, -361272800, -341630816, -315185088, -286076512, -254237360, -220177200, --187673968, -158032784, -128915592, -100644504, -76050984, -54178328, -32091996, -11112154, 6548752, 23648626, -42909408, 61489436, 77180560, 93131536, 110697416, 126071248, 138471360, 151995136, 166570640, 177748288, -186292064, 196535552, 206622816, 212256752, 216339120, 223023152, 228599104, 229724912, 231484784, 236698864, -239321488, 237591152, 238633744, 242894352, 242224880, 237895024, 239066464, 242346208, 237767248, 231694160, -234890144, 236814832, 225951792, 219453504, 228795600, 217105760, 147807536, 56675852, 7899519, }, +-386995328, -475354080, -421303008, -292915168, -152560464, -21282636, 102001176, 210548960, 288762464, 326451872, +321788608, 277569792, 203039216, 113307680, 20830054, -68543384, -150520352, -220697424, -278116864, -323314400, +-353931616, -368772320, -372753760, -370811904, -361272800, -341630816, -315185088, -286076512, -254237360, -220177200, +-187673968, -158032784, -128915592, -100644504, -76050984, -54178328, -32091996, -11112154, 6548752, 23648626, +42909408, 61489436, 77180560, 93131536, 110697416, 126071248, 138471360, 151995136, 166570640, 177748288, +186292064, 196535552, 206622816, 212256752, 216339120, 223023152, 228599104, 229724912, 231484784, 236698864, +239321488, 237591152, 238633744, 242894352, 242224880, 237895024, 239066464, 242346208, 237767248, 231694160, +234890144, 236814832, 225951792, 219453504, 228795600, 217105760, 147807536, 56675852, 7899519, }, }, { { 74029664, -123262344, -36468568, -334473248, -585478144, -638618176, -475035200, -190333616, 97043712, 321375232, 474565440, -565700864, 596585472, 570107008, 498283840, 393476448, 263353440, 118538416, -25469692, -157250560, -272816320, --370608960, -450563552, -515463200, -566206592, -599546816, -615617536, -621153216, -620634560, -612218624, -595934208, --576471616, -555134720, -528948832, -499031712, -469789952, -440383392, -407037280, -371374016, -336737248, -300843136, --261334272, -222230736, -186545456, -150669600, -113003808, -78191488, -47489992, -16384226, 14923401, 41378788, -64410552, 89771792, 115551264, 136379168, 155176624, 176510272, 195635760, 208058416, 219536720, 233740704, -243804896, 247442192, 253084176, 261829792, 264259680, 261447008, 264335904, 269670784, 265524000, 258725072, -262996416, 267509360, 257564896, 252369600, 271103168, 277647072, 221355104, 119831200, 33008972, }, +123262344, -36468568, -334473248, -585478144, -638618176, -475035200, -190333616, 97043712, 321375232, 474565440, +565700864, 596585472, 570107008, 498283840, 393476448, 263353440, 118538416, -25469692, -157250560, -272816320, +-370608960, -450563552, -515463200, -566206592, -599546816, -615617536, -621153216, -620634560, -612218624, -595934208, +-576471616, -555134720, -528948832, -499031712, -469789952, -440383392, -407037280, -371374016, -336737248, -300843136, +-261334272, -222230736, -186545456, -150669600, -113003808, -78191488, -47489992, -16384226, 14923401, 41378788, +64410552, 89771792, 115551264, 136379168, 155176624, 176510272, 195635760, 208058416, 219536720, 233740704, +243804896, 247442192, 253084176, 261829792, 264259680, 261447008, 264335904, 269670784, 265524000, 258725072, +262996416, 267509360, 257564896, 252369600, 271103168, 277647072, 221355104, 119831200, 33008972, }, { -74029664, --123262344, 36468568, 334473248, 585478144, 638618176, 475035200, 190333616, -97043712, -321375232, -474565440, --565700864, -596585472, -570107008, -498283840, -393476448, -263353440, -118538416, 25469692, 157250560, 272816320, -370608960, 450563552, 515463200, 566206592, 599546816, 615617536, 621153216, 620634560, 612218624, 595934208, -576471616, 555134720, 528948832, 499031712, 469789952, 440383392, 407037280, 371374016, 336737248, 300843136, -261334272, 222230736, 186545456, 150669600, 113003808, 78191488, 47489992, 16384226, -14923401, -41378788, --64410552, -89771792, -115551264, -136379168, -155176624, -176510272, -195635760, -208058416, -219536720, -233740704, --243804896, -247442192, -253084176, -261829792, -264259680, -261447008, -264335904, -269670784, -265524000, -258725072, --262996416, -267509360, -257564896, -252369600, -271103168, -277647072, -221355104, -119831200, -33008972, }, +-123262344, 36468568, 334473248, 585478144, 638618176, 475035200, 190333616, -97043712, -321375232, -474565440, +-565700864, -596585472, -570107008, -498283840, -393476448, -263353440, -118538416, 25469692, 157250560, 272816320, +370608960, 450563552, 515463200, 566206592, 599546816, 615617536, 621153216, 620634560, 612218624, 595934208, +576471616, 555134720, 528948832, 499031712, 469789952, 440383392, 407037280, 371374016, 336737248, 300843136, +261334272, 222230736, 186545456, 150669600, 113003808, 78191488, 47489992, 16384226, -14923401, -41378788, +-64410552, -89771792, -115551264, -136379168, -155176624, -176510272, -195635760, -208058416, -219536720, -233740704, +-243804896, -247442192, -253084176, -261829792, -264259680, -261447008, -264335904, -269670784, -265524000, -258725072, +-262996416, -267509360, -257564896, -252369600, -271103168, -277647072, -221355104, -119831200, -33008972, }, }, { { -20371030, --57393648, -71328672, -39834212, 21123186, 58579060, 40715752, -8485782, -43569220, -44861472, -20837570, -13379360, 42582452, 52821120, 44016972, 32712618, 30575872, 28821914, 13238700, -15201500, -44768056, --69100656, -88148296, -99440304, -99179920, -89612344, -77847896, -68340448, -60458644, -51561084, -39687108, --25069724, -10693395, 64961, 6320581, 8561480, 6248641, -579821, -8911520, -15140297, -18519362, --19791746, -18435610, -13812615, -6946573, 1161252, 10977936, 22731652, 35697084, 50230716, 67742368, -87943752, 108973520, 130375344, 152889568, 175663088, 196932304, 216781488, 236027776, 253572720, 267981808, -279923424, 289984384, 296387648, 297804448, 295468512, 289735264, 278325152, 260736192, 239791776, 215955248, -185889936, 150080112, 114561272, 79510584, 34376920, -24792162, -76450416, -84927072, -37017248, }, +-57393648, -71328672, -39834212, 21123186, 58579060, 40715752, -8485782, -43569220, -44861472, -20837570, +13379360, 42582452, 52821120, 44016972, 32712618, 30575872, 28821914, 13238700, -15201500, -44768056, +-69100656, -88148296, -99440304, -99179920, -89612344, -77847896, -68340448, -60458644, -51561084, -39687108, +-25069724, -10693395, 64961, 6320581, 8561480, 6248641, -579821, -8911520, -15140297, -18519362, +-19791746, -18435610, -13812615, -6946573, 1161252, 10977936, 22731652, 35697084, 50230716, 67742368, +87943752, 108973520, 130375344, 152889568, 175663088, 196932304, 216781488, 236027776, 253572720, 267981808, +279923424, 289984384, 296387648, 297804448, 295468512, 289735264, 278325152, 260736192, 239791776, 215955248, +185889936, 150080112, 114561272, 79510584, 34376920, -24792162, -76450416, -84927072, -37017248, }, { -20371030, --57393648, -71328672, -39834212, 21123186, 58579060, 40715752, -8485782, -43569220, -44861472, -20837570, -13379360, 42582452, 52821120, 44016972, 32712618, 30575872, 28821914, 13238700, -15201500, -44768056, --69100656, -88148296, -99440304, -99179920, -89612344, -77847896, -68340448, -60458644, -51561084, -39687108, --25069724, -10693395, 64961, 6320581, 8561480, 6248641, -579821, -8911520, -15140297, -18519362, --19791746, -18435610, -13812615, -6946573, 1161252, 10977936, 22731652, 35697084, 50230716, 67742368, -87943752, 108973520, 130375344, 152889568, 175663088, 196932304, 216781488, 236027776, 253572720, 267981808, -279923424, 289984384, 296387648, 297804448, 295468512, 289735264, 278325152, 260736192, 239791776, 215955248, -185889936, 150080112, 114561272, 79510584, 34376920, -24792162, -76450416, -84927072, -37017248, }, +-57393648, -71328672, -39834212, 21123186, 58579060, 40715752, -8485782, -43569220, -44861472, -20837570, +13379360, 42582452, 52821120, 44016972, 32712618, 30575872, 28821914, 13238700, -15201500, -44768056, +-69100656, -88148296, -99440304, -99179920, -89612344, -77847896, -68340448, -60458644, -51561084, -39687108, +-25069724, -10693395, 64961, 6320581, 8561480, 6248641, -579821, -8911520, -15140297, -18519362, +-19791746, -18435610, -13812615, -6946573, 1161252, 10977936, 22731652, 35697084, 50230716, 67742368, +87943752, 108973520, 130375344, 152889568, 175663088, 196932304, 216781488, 236027776, 253572720, 267981808, +279923424, 289984384, 296387648, 297804448, 295468512, 289735264, 278325152, 260736192, 239791776, 215955248, +185889936, 150080112, 114561272, 79510584, 34376920, -24792162, -76450416, -84927072, -37017248, }, }, { { -721018, --16355772, -48549772, -63205276, -38740068, -514859, 9650792, -15756624, -45094472, -45867568, -14446659, -29004452, 63013612, 79938472, 85708216, 89261232, 92144768, 87597472, 68616936, 35043712, -7224135, --51310364, -92200600, -126849176, -154753040, -178648624, -202140496, -225311296, -244109840, -255003488, -258269808, --255208032, -244579600, -224563440, -196490464, -163644160, -127695280, -89146344, -50016504, -13178570, 20107426, -49838800, 75661216, 97430800, 116016728, 132107824, 145625696, 156951520, 166787008, 174487344, 178700704, -179602640, 178454288, 175783344, 172221216, 169642624, 169055280, 169106288, 168690208, 168543648, 168626864, -167282528, 164463968, 161977712, 159704608, 155989984, 151719712, 148803440, 145611744, 139777024, 133182640, -127603480, 119584240, 107209360, 94890856, 81585592, 55024972, 13564044, -17212618, -12549358, }, +-16355772, -48549772, -63205276, -38740068, -514859, 9650792, -15756624, -45094472, -45867568, -14446659, +29004452, 63013612, 79938472, 85708216, 89261232, 92144768, 87597472, 68616936, 35043712, -7224135, +-51310364, -92200600, -126849176, -154753040, -178648624, -202140496, -225311296, -244109840, -255003488, -258269808, +-255208032, -244579600, -224563440, -196490464, -163644160, -127695280, -89146344, -50016504, -13178570, 20107426, +49838800, 75661216, 97430800, 116016728, 132107824, 145625696, 156951520, 166787008, 174487344, 178700704, +179602640, 178454288, 175783344, 172221216, 169642624, 169055280, 169106288, 168690208, 168543648, 168626864, +167282528, 164463968, 161977712, 159704608, 155989984, 151719712, 148803440, 145611744, 139777024, 133182640, +127603480, 119584240, 107209360, 94890856, 81585592, 55024972, 13564044, -17212618, -12549358, }, { -721018, --16355772, -48549772, -63205276, -38740068, -514859, 9650792, -15756624, -45094472, -45867568, -14446659, -29004452, 63013612, 79938472, 85708216, 89261232, 92144768, 87597472, 68616936, 35043712, -7224135, --51310364, -92200600, -126849176, -154753040, -178648624, -202140496, -225311296, -244109840, -255003488, -258269808, --255208032, -244579600, -224563440, -196490464, -163644160, -127695280, -89146344, -50016504, -13178570, 20107426, -49838800, 75661216, 97430800, 116016728, 132107824, 145625696, 156951520, 166787008, 174487344, 178700704, -179602640, 178454288, 175783344, 172221216, 169642624, 169055280, 169106288, 168690208, 168543648, 168626864, -167282528, 164463968, 161977712, 159704608, 155989984, 151719712, 148803440, 145611744, 139777024, 133182640, -127603480, 119584240, 107209360, 94890856, 81585592, 55024972, 13564044, -17212618, -12549358, }, +-16355772, -48549772, -63205276, -38740068, -514859, 9650792, -15756624, -45094472, -45867568, -14446659, +29004452, 63013612, 79938472, 85708216, 89261232, 92144768, 87597472, 68616936, 35043712, -7224135, +-51310364, -92200600, -126849176, -154753040, -178648624, -202140496, -225311296, -244109840, -255003488, -258269808, +-255208032, -244579600, -224563440, -196490464, -163644160, -127695280, -89146344, -50016504, -13178570, 20107426, +49838800, 75661216, 97430800, 116016728, 132107824, 145625696, 156951520, 166787008, 174487344, 178700704, +179602640, 178454288, 175783344, 172221216, 169642624, 169055280, 169106288, 168690208, 168543648, 168626864, +167282528, 164463968, 161977712, 159704608, 155989984, 151719712, 148803440, 145611744, 139777024, 133182640, +127603480, 119584240, 107209360, 94890856, 81585592, 55024972, 13564044, -17212618, -12549358, }, }, { { -2051921, --2245194, 2023467, 1197759, -9941776, -22747758, -27280558, -29560112, -44152800, -68251864, -75788992, --45372572, 13457743, 70434776, 105979392, 123585536, 134480800, 141224960, 139040432, 125328760, 101947488, -70818104, 32322314, -11746199, -57064548, -100129112, -140690784, -179227904, -213805088, -241569360, -261852352, --275380960, -281725152, -279901952, -270098144, -252496288, -226240080, -192179920, -154821760, -119033944, -86504400, --57167624, -31504122, -9376987, 10785200, 29796336, 46982648, 62418224, 77075872, 90415504, 100867840, -108550464, 114552144, 118527672, 120150096, 121297392, 123652112, 126288144, 128381408, 131267624, 135355888, -138809584, 141280272, 144532096, 148162416, 149919584, 150498336, 152006416, 152676416, 149898656, 145910784, -142762032, 136395808, 124553512, 112371376, 98595808, 68726456, 20487530, -16538308, -13313862, }, +-2245194, 2023467, 1197759, -9941776, -22747758, -27280558, -29560112, -44152800, -68251864, -75788992, +-45372572, 13457743, 70434776, 105979392, 123585536, 134480800, 141224960, 139040432, 125328760, 101947488, +70818104, 32322314, -11746199, -57064548, -100129112, -140690784, -179227904, -213805088, -241569360, -261852352, +-275380960, -281725152, -279901952, -270098144, -252496288, -226240080, -192179920, -154821760, -119033944, -86504400, +-57167624, -31504122, -9376987, 10785200, 29796336, 46982648, 62418224, 77075872, 90415504, 100867840, +108550464, 114552144, 118527672, 120150096, 121297392, 123652112, 126288144, 128381408, 131267624, 135355888, +138809584, 141280272, 144532096, 148162416, 149919584, 150498336, 152006416, 152676416, 149898656, 145910784, +142762032, 136395808, 124553512, 112371376, 98595808, 68726456, 20487530, -16538308, -13313862, }, { 2051921, -2245194, -2023467, -1197759, 9941776, 22747758, 27280558, 29560112, 44152800, 68251864, 75788992, -45372572, -13457743, -70434776, -105979392, -123585536, -134480800, -141224960, -139040432, -125328760, -101947488, --70818104, -32322314, 11746199, 57064548, 100129112, 140690784, 179227904, 213805088, 241569360, 261852352, -275380960, 281725152, 279901952, 270098144, 252496288, 226240080, 192179920, 154821760, 119033944, 86504400, -57167624, 31504122, 9376987, -10785200, -29796336, -46982648, -62418224, -77075872, -90415504, -100867840, --108550464, -114552144, -118527672, -120150096, -121297392, -123652112, -126288144, -128381408, -131267624, -135355888, --138809584, -141280272, -144532096, -148162416, -149919584, -150498336, -152006416, -152676416, -149898656, -145910784, --142762032, -136395808, -124553512, -112371376, -98595808, -68726456, -20487530, 16538308, 13313862, }, +2245194, -2023467, -1197759, 9941776, 22747758, 27280558, 29560112, 44152800, 68251864, 75788992, +45372572, -13457743, -70434776, -105979392, -123585536, -134480800, -141224960, -139040432, -125328760, -101947488, +-70818104, -32322314, 11746199, 57064548, 100129112, 140690784, 179227904, 213805088, 241569360, 261852352, +275380960, 281725152, 279901952, 270098144, 252496288, 226240080, 192179920, 154821760, 119033944, 86504400, +57167624, 31504122, 9376987, -10785200, -29796336, -46982648, -62418224, -77075872, -90415504, -100867840, +-108550464, -114552144, -118527672, -120150096, -121297392, -123652112, -126288144, -128381408, -131267624, -135355888, +-138809584, -141280272, -144532096, -148162416, -149919584, -150498336, -152006416, -152676416, -149898656, -145910784, +-142762032, -136395808, -124553512, -112371376, -98595808, -68726456, -20487530, 16538308, 13313862, }, }, { { -3833795, --144418, 10765872, 2765422, -11487427, 9198746, 51580948, 42736000, -43378096, -130186904, -128332552, --42242076, 50558744, 96583616, 103735808, 100252056, 96642672, 88947160, 73382736, 49586472, 19973208, --9914932, -34335044, -50814296, -59253368, -60146184, -55480776, -48753248, -42253888, -36046048, -30475478, --27751932, -29727616, -35259536, -41327248, -46785616, -53705880, -64280092, -77505904, -90120224, -99746320, --105634720, -107579264, -106121664, -102978280, -99567544, -95905008, -91781840, -87356952, -81819128, -73615200, --62632436, -49852760, -34813396, -16184511, 5441187, 28271622, 51984672, 76691472, 100694968, 122358248, -142214960, 160475552, 175245408, 185673040, 193137168, 197190000, 195082240, 186992144, 175870864, 160953904, -138726368, 111200464, 84099752, 55515136, 17514876, -26816166, -57793080, -56541096, -23185308, }, +-144418, 10765872, 2765422, -11487427, 9198746, 51580948, 42736000, -43378096, -130186904, -128332552, +-42242076, 50558744, 96583616, 103735808, 100252056, 96642672, 88947160, 73382736, 49586472, 19973208, +-9914932, -34335044, -50814296, -59253368, -60146184, -55480776, -48753248, -42253888, -36046048, -30475478, +-27751932, -29727616, -35259536, -41327248, -46785616, -53705880, -64280092, -77505904, -90120224, -99746320, +-105634720, -107579264, -106121664, -102978280, -99567544, -95905008, -91781840, -87356952, -81819128, -73615200, +-62632436, -49852760, -34813396, -16184511, 5441187, 28271622, 51984672, 76691472, 100694968, 122358248, +142214960, 160475552, 175245408, 185673040, 193137168, 197190000, 195082240, 186992144, 175870864, 160953904, +138726368, 111200464, 84099752, 55515136, 17514876, -26816166, -57793080, -56541096, -23185308, }, { 3833795, -144418, -10765872, -2765422, 11487427, -9198746, -51580948, -42736000, 43378096, 130186904, 128332552, -42242076, -50558744, -96583616, -103735808, -100252056, -96642672, -88947160, -73382736, -49586472, -19973208, -9914932, 34335044, 50814296, 59253368, 60146184, 55480776, 48753248, 42253888, 36046048, 30475478, -27751932, 29727616, 35259536, 41327248, 46785616, 53705880, 64280092, 77505904, 90120224, 99746320, -105634720, 107579264, 106121664, 102978280, 99567544, 95905008, 91781840, 87356952, 81819128, 73615200, -62632436, 49852760, 34813396, 16184511, -5441187, -28271622, -51984672, -76691472, -100694968, -122358248, --142214960, -160475552, -175245408, -185673040, -193137168, -197190000, -195082240, -186992144, -175870864, -160953904, --138726368, -111200464, -84099752, -55515136, -17514876, 26816166, 57793080, 56541096, 23185308, }, +144418, -10765872, -2765422, 11487427, -9198746, -51580948, -42736000, 43378096, 130186904, 128332552, +42242076, -50558744, -96583616, -103735808, -100252056, -96642672, -88947160, -73382736, -49586472, -19973208, +9914932, 34335044, 50814296, 59253368, 60146184, 55480776, 48753248, 42253888, 36046048, 30475478, +27751932, 29727616, 35259536, 41327248, 46785616, 53705880, 64280092, 77505904, 90120224, 99746320, +105634720, 107579264, 106121664, 102978280, 99567544, 95905008, 91781840, 87356952, 81819128, 73615200, +62632436, 49852760, 34813396, 16184511, -5441187, -28271622, -51984672, -76691472, -100694968, -122358248, +-142214960, -160475552, -175245408, -185673040, -193137168, -197190000, -195082240, -186992144, -175870864, -160953904, +-138726368, -111200464, -84099752, -55515136, -17514876, 26816166, 57793080, 56541096, 23185308, }, }, { { -573378, --6264747, -14272713, -10745471, 5682779, 21516712, 35712652, 66712116, 118752088, 158329136, 143282800, -69283728, -26658862, -104909408, -152286656, -175110656, -180047184, -170008768, -150282512, -127980896, -105768936, --81764904, -55362128, -28752658, -3396782, 20049444, 38305740, 47199544, 48008072, 47788492, 52076480, -60621852, 70771936, 81123344, 90956672, 99496672, 106806176, 113260432, 118105696, 120241368, 119555248, -116121960, 109772920, 101717712, 94278288, 87892744, 80907520, 72868416, 64984464, 57250304, 48546016, -39359080, 30993558, 22948548, 14470819, 7118372, 2479807, -396748, -2342905, -2013266, 912681, -4436701, 8243116, 14269492, 22054120, 29117730, 36207648, 45651208, 55477020, 62553516, 68924024, -76705432, 81624776, 81155552, 80529024, 78124920, 57773216, 15537581, -18662170, -13961865, }, +-6264747, -14272713, -10745471, 5682779, 21516712, 35712652, 66712116, 118752088, 158329136, 143282800, +69283728, -26658862, -104909408, -152286656, -175110656, -180047184, -170008768, -150282512, -127980896, -105768936, +-81764904, -55362128, -28752658, -3396782, 20049444, 38305740, 47199544, 48008072, 47788492, 52076480, +60621852, 70771936, 81123344, 90956672, 99496672, 106806176, 113260432, 118105696, 120241368, 119555248, +116121960, 109772920, 101717712, 94278288, 87892744, 80907520, 72868416, 64984464, 57250304, 48546016, +39359080, 30993558, 22948548, 14470819, 7118372, 2479807, -396748, -2342905, -2013266, 912681, +4436701, 8243116, 14269492, 22054120, 29117730, 36207648, 45651208, 55477020, 62553516, 68924024, +76705432, 81624776, 81155552, 80529024, 78124920, 57773216, 15537581, -18662170, -13961865, }, { -573378, --6264747, -14272713, -10745471, 5682779, 21516712, 35712652, 66712116, 118752088, 158329136, 143282800, -69283728, -26658862, -104909408, -152286656, -175110656, -180047184, -170008768, -150282512, -127980896, -105768936, --81764904, -55362128, -28752658, -3396782, 20049444, 38305740, 47199544, 48008072, 47788492, 52076480, -60621852, 70771936, 81123344, 90956672, 99496672, 106806176, 113260432, 118105696, 120241368, 119555248, -116121960, 109772920, 101717712, 94278288, 87892744, 80907520, 72868416, 64984464, 57250304, 48546016, -39359080, 30993558, 22948548, 14470819, 7118372, 2479807, -396748, -2342905, -2013266, 912681, -4436701, 8243116, 14269492, 22054120, 29117730, 36207648, 45651208, 55477020, 62553516, 68924024, -76705432, 81624776, 81155552, 80529024, 78124920, 57773216, 15537581, -18662170, -13961865, }, +-6264747, -14272713, -10745471, 5682779, 21516712, 35712652, 66712116, 118752088, 158329136, 143282800, +69283728, -26658862, -104909408, -152286656, -175110656, -180047184, -170008768, -150282512, -127980896, -105768936, +-81764904, -55362128, -28752658, -3396782, 20049444, 38305740, 47199544, 48008072, 47788492, 52076480, +60621852, 70771936, 81123344, 90956672, 99496672, 106806176, 113260432, 118105696, 120241368, 119555248, +116121960, 109772920, 101717712, 94278288, 87892744, 80907520, 72868416, 64984464, 57250304, 48546016, +39359080, 30993558, 22948548, 14470819, 7118372, 2479807, -396748, -2342905, -2013266, 912681, +4436701, 8243116, 14269492, 22054120, 29117730, 36207648, 45651208, 55477020, 62553516, 68924024, +76705432, 81624776, 81155552, 80529024, 78124920, 57773216, 15537581, -18662170, -13961865, }, }, { { -20308752, --40316860, -13951128, 46215460, 91573000, 73531984, -8588861, -96410744, -122033440, -73396160, -1735167, -37586332, 37263136, 25230786, 19996294, 18992346, 19787988, 26591754, 35009352, 32031330, 16721381, -4603131, 5762236, 12380243, 13429289, 8958765, 3470871, -4042638, -16344498, -31551366, -45719388, --56838524, -64023468, -67703720, -71378064, -78357920, -86946248, -92844848, -94548336, -92495880, -85982024, --75213464, -63250908, -52242372, -41119480, -29488172, -19435264, -11538967, -3883187, 3729642, 9561671, -14200236, 19799800, 25705380, 30043834, 33976412, 39186208, 43818332, 45879916, 47028280, 48526152, -48228724, 45480484, 43227236, 42264088, 40182104, 37747932, 38270308, 40305048, 40321152, 41117868, -46702400, 52560200, 54000088, 57706644, 68199248, 70951248, 50789064, 20022064, 2858838, }, +-40316860, -13951128, 46215460, 91573000, 73531984, -8588861, -96410744, -122033440, -73396160, -1735167, +37586332, 37263136, 25230786, 19996294, 18992346, 19787988, 26591754, 35009352, 32031330, 16721381, +4603131, 5762236, 12380243, 13429289, 8958765, 3470871, -4042638, -16344498, -31551366, -45719388, +-56838524, -64023468, -67703720, -71378064, -78357920, -86946248, -92844848, -94548336, -92495880, -85982024, +-75213464, -63250908, -52242372, -41119480, -29488172, -19435264, -11538967, -3883187, 3729642, 9561671, +14200236, 19799800, 25705380, 30043834, 33976412, 39186208, 43818332, 45879916, 47028280, 48526152, +48228724, 45480484, 43227236, 42264088, 40182104, 37747932, 38270308, 40305048, 40321152, 41117868, +46702400, 52560200, 54000088, 57706644, 68199248, 70951248, 50789064, 20022064, 2858838, }, { -20308752, --40316860, -13951128, 46215460, 91573000, 73531984, -8588861, -96410744, -122033440, -73396160, -1735167, -37586332, 37263136, 25230786, 19996294, 18992346, 19787988, 26591754, 35009352, 32031330, 16721381, -4603131, 5762236, 12380243, 13429289, 8958765, 3470871, -4042638, -16344498, -31551366, -45719388, --56838524, -64023468, -67703720, -71378064, -78357920, -86946248, -92844848, -94548336, -92495880, -85982024, --75213464, -63250908, -52242372, -41119480, -29488172, -19435264, -11538967, -3883187, 3729642, 9561671, -14200236, 19799800, 25705380, 30043834, 33976412, 39186208, 43818332, 45879916, 47028280, 48526152, -48228724, 45480484, 43227236, 42264088, 40182104, 37747932, 38270308, 40305048, 40321152, 41117868, -46702400, 52560200, 54000088, 57706644, 68199248, 70951248, 50789064, 20022064, 2858838, }, +-40316860, -13951128, 46215460, 91573000, 73531984, -8588861, -96410744, -122033440, -73396160, -1735167, +37586332, 37263136, 25230786, 19996294, 18992346, 19787988, 26591754, 35009352, 32031330, 16721381, +4603131, 5762236, 12380243, 13429289, 8958765, 3470871, -4042638, -16344498, -31551366, -45719388, +-56838524, -64023468, -67703720, -71378064, -78357920, -86946248, -92844848, -94548336, -92495880, -85982024, +-75213464, -63250908, -52242372, -41119480, -29488172, -19435264, -11538967, -3883187, 3729642, 9561671, +14200236, 19799800, 25705380, 30043834, 33976412, 39186208, 43818332, 45879916, 47028280, 48526152, +48228724, 45480484, 43227236, 42264088, 40182104, 37747932, 38270308, 40305048, 40321152, 41117868, +46702400, 52560200, 54000088, 57706644, 68199248, 70951248, 50789064, 20022064, 2858838, }, }, { { 14657113, -11670500, -44009992, -102688912, -108263240, -50097036, 52770652, 175993808, 280796384, 317618208, 268177216, -165755680, 54485956, -53506164, -163560400, -262813344, -325818912, -347082752, -345586496, -338761248, -327312480, --304706976, -269174176, -224736304, -177553408, -132315056, -88971320, -43842488, 4690105, 54058068, 101572752, -146826144, 189182032, 226574016, 257752800, 282824128, 301369792, 312586112, 316927776, 315509920, 308942368, -298435808, 286237024, 273256032, 258277856, 240819888, 222455152, 204482320, 186932016, 170351280, 155632976, -141848816, 127101504, 111341656, 95715496, 80057656, 63812476, 48059612, 33942052, 20797306, 8108362, --3027415, -12296491, -21097954, -29569240, -36134096, -40969156, -45819248, -50071804, -51808580, -52351356, --54154168, -55454472, -53721452, -52272436, -55008332, -56615184, -47854524, -29224568, -9227200, }, +11670500, -44009992, -102688912, -108263240, -50097036, 52770652, 175993808, 280796384, 317618208, 268177216, +165755680, 54485956, -53506164, -163560400, -262813344, -325818912, -347082752, -345586496, -338761248, -327312480, +-304706976, -269174176, -224736304, -177553408, -132315056, -88971320, -43842488, 4690105, 54058068, 101572752, +146826144, 189182032, 226574016, 257752800, 282824128, 301369792, 312586112, 316927776, 315509920, 308942368, +298435808, 286237024, 273256032, 258277856, 240819888, 222455152, 204482320, 186932016, 170351280, 155632976, +141848816, 127101504, 111341656, 95715496, 80057656, 63812476, 48059612, 33942052, 20797306, 8108362, +-3027415, -12296491, -21097954, -29569240, -36134096, -40969156, -45819248, -50071804, -51808580, -52351356, +-54154168, -55454472, -53721452, -52272436, -55008332, -56615184, -47854524, -29224568, -9227200, }, { 14657113, -11670500, -44009992, -102688912, -108263240, -50097036, 52770652, 175993808, 280796384, 317618208, 268177216, -165755680, 54485956, -53506164, -163560400, -262813344, -325818912, -347082752, -345586496, -338761248, -327312480, --304706976, -269174176, -224736304, -177553408, -132315056, -88971320, -43842488, 4690105, 54058068, 101572752, -146826144, 189182032, 226574016, 257752800, 282824128, 301369792, 312586112, 316927776, 315509920, 308942368, -298435808, 286237024, 273256032, 258277856, 240819888, 222455152, 204482320, 186932016, 170351280, 155632976, -141848816, 127101504, 111341656, 95715496, 80057656, 63812476, 48059612, 33942052, 20797306, 8108362, --3027415, -12296491, -21097954, -29569240, -36134096, -40969156, -45819248, -50071804, -51808580, -52351356, --54154168, -55454472, -53721452, -52272436, -55008332, -56615184, -47854524, -29224568, -9227200, }, +11670500, -44009992, -102688912, -108263240, -50097036, 52770652, 175993808, 280796384, 317618208, 268177216, +165755680, 54485956, -53506164, -163560400, -262813344, -325818912, -347082752, -345586496, -338761248, -327312480, +-304706976, -269174176, -224736304, -177553408, -132315056, -88971320, -43842488, 4690105, 54058068, 101572752, +146826144, 189182032, 226574016, 257752800, 282824128, 301369792, 312586112, 316927776, 315509920, 308942368, +298435808, 286237024, 273256032, 258277856, 240819888, 222455152, 204482320, 186932016, 170351280, 155632976, +141848816, 127101504, 111341656, 95715496, 80057656, 63812476, 48059612, 33942052, 20797306, 8108362, +-3027415, -12296491, -21097954, -29569240, -36134096, -40969156, -45819248, -50071804, -51808580, -52351356, +-54154168, -55454472, -53721452, -52272436, -55008332, -56615184, -47854524, -29224568, -9227200, }, }, }; -const Word32 CRendBin_FOA_HRIR_coeff_re_48kHz_fx[4][BINAURAL_CHANNELS][240] ={ +const Word32 CRendBin_FOA_HRIR_coeff_re_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240] ={ { { 518734336, - 393704608, 199261792, 7454990, -137047568, -230714912, -291816192, -333582048, -354289696, -345745408, -304985632, - -237554112, -153483344, -62846108, 25924960, 106383656, 174758464, 230512512, 275441632, 311386208, 338533632, - 356124736, 364643264, 366513184, 364196576, 358214784, 347733440, 332698912, 314550528, 294970304, 274820448, - 254486480, 234499840, 215327648, 196919952, 178905792, 161172400, 144017232, 127764536, 112381576, 97512400, - 82796232, 68108520, 53500796, 39045548, 24810416, 10904385, -2594697, -15731928, -28598576, -41189812, - -53421876, -65249144, -76661408, -87611968, -98029944, -107895488, -117252608, -126151776, -134618768, -142656800, - -150280912, -157536720, -164452144, -170977824, -177055200, -182730992, -188127088, -193307888, -198289520, -203156784, - -208030496, -212934816, -217845040, -222834720, -228031632, -233469584, -239137344, -245106272, -251453696, -258109824, - -264947408, -271934240, -279045632, -286107648, -292885632, -299275456, -305308832, -311048512, -316541760, -321774112, - -326614016, -330890720, -334563456, -337721856, -340449696, -342790464, -344823072, -346637152, -348259584, -349701056, - -351036256, -352379520, -353825856, -355444512, -357255904, -359210656, -361293728, -363633408, -366375200, -369470816, - -372702752, -375887488, -378943904, -381830656, -384545056, -387131712, -389604544, -391920064, -394076672, -396146304, - -398176224, -400158336, -402088928, -403956160, -405682208, -407207456, -408578080, -409852096, -410993472, -411950176, - -412744736, -413410464, -413956992, -414451456, -415008736, -415649760, -416303648, -416950048, -417620608, -418300832, - -418970304, -419683264, -420468160, -421242336, -421935968, -422575936, -423158976, -423617472, -423979296, -424366944, - -424799104, -425193696, -425563072, -425980224, -426386112, -426662048, -426816128, -426899360, -426870880, -426727008, - -426590112, -426518176, -426442464, -426383424, -426451584, -426590112, -426624480, -426572384, -426569696, -426569696, - -426460736, -426345312, -426347456, -426357632, -426271744, -426204640, -426201408, -426114976, -425975392, -426027456, - -426272832, -426502048, -426786592, -427343328, -428008000, -428506208, -429004960, -429715776, -430357344, -430720256, - -431144384, -431780032, -432186464, -432283616, -432612192, -433128128, -433130816, -432782368, -432935392, -433196320, - -432360928, -430898496, -430319200, -430133984, -428731680, -427129664, -427792160, -429743168, -429505312, -426881632, - -424250976, -419948480, -409561088, -395892384, -390180064, -398706656, -413332608, -420260928, -415048448, -404883360, - -398317408, -396604800, -395113920, -391861536, -393665952, -410828640, -443115008, -474512832, -487703744, -482296384, - -472652032, -468896064, -468109568, -465181472, -462957760, -466247168, -472453920, -475371264, -474698048, }, + 393704608, 199261792, 7454990, -137047568, -230714912, -291816192, -333582048, -354289696, -345745408, -304985632, + -237554112, -153483344, -62846108, 25924960, 106383656, 174758464, 230512512, 275441632, 311386208, 338533632, + 356124736, 364643264, 366513184, 364196576, 358214784, 347733440, 332698912, 314550528, 294970304, 274820448, + 254486480, 234499840, 215327648, 196919952, 178905792, 161172400, 144017232, 127764536, 112381576, 97512400, + 82796232, 68108520, 53500796, 39045548, 24810416, 10904385, -2594697, -15731928, -28598576, -41189812, + -53421876, -65249144, -76661408, -87611968, -98029944, -107895488, -117252608, -126151776, -134618768, -142656800, + -150280912, -157536720, -164452144, -170977824, -177055200, -182730992, -188127088, -193307888, -198289520, -203156784, + -208030496, -212934816, -217845040, -222834720, -228031632, -233469584, -239137344, -245106272, -251453696, -258109824, + -264947408, -271934240, -279045632, -286107648, -292885632, -299275456, -305308832, -311048512, -316541760, -321774112, + -326614016, -330890720, -334563456, -337721856, -340449696, -342790464, -344823072, -346637152, -348259584, -349701056, + -351036256, -352379520, -353825856, -355444512, -357255904, -359210656, -361293728, -363633408, -366375200, -369470816, + -372702752, -375887488, -378943904, -381830656, -384545056, -387131712, -389604544, -391920064, -394076672, -396146304, + -398176224, -400158336, -402088928, -403956160, -405682208, -407207456, -408578080, -409852096, -410993472, -411950176, + -412744736, -413410464, -413956992, -414451456, -415008736, -415649760, -416303648, -416950048, -417620608, -418300832, + -418970304, -419683264, -420468160, -421242336, -421935968, -422575936, -423158976, -423617472, -423979296, -424366944, + -424799104, -425193696, -425563072, -425980224, -426386112, -426662048, -426816128, -426899360, -426870880, -426727008, + -426590112, -426518176, -426442464, -426383424, -426451584, -426590112, -426624480, -426572384, -426569696, -426569696, + -426460736, -426345312, -426347456, -426357632, -426271744, -426204640, -426201408, -426114976, -425975392, -426027456, + -426272832, -426502048, -426786592, -427343328, -428008000, -428506208, -429004960, -429715776, -430357344, -430720256, + -431144384, -431780032, -432186464, -432283616, -432612192, -433128128, -433130816, -432782368, -432935392, -433196320, + -432360928, -430898496, -430319200, -430133984, -428731680, -427129664, -427792160, -429743168, -429505312, -426881632, + -424250976, -419948480, -409561088, -395892384, -390180064, -398706656, -413332608, -420260928, -415048448, -404883360, + -398317408, -396604800, -395113920, -391861536, -393665952, -410828640, -443115008, -474512832, -487703744, -482296384, + -472652032, -468896064, -468109568, -465181472, -462957760, -466247168, -472453920, -475371264, -474698048, }, { 518734336, - 393704608, 199261792, 7454990, -137047568, -230714912, -291816192, -333582048, -354289696, -345745408, -304985632, - -237554112, -153483344, -62846108, 25924960, 106383656, 174758464, 230512512, 275441632, 311386208, 338533632, - 356124736, 364643264, 366513184, 364196576, 358214784, 347733440, 332698912, 314550528, 294970304, 274820448, - 254486480, 234499840, 215327648, 196919952, 178905792, 161172400, 144017232, 127764536, 112381576, 97512400, - 82796232, 68108520, 53500796, 39045548, 24810416, 10904385, -2594697, -15731928, -28598576, -41189812, - -53421876, -65249144, -76661408, -87611968, -98029944, -107895488, -117252608, -126151776, -134618768, -142656800, - -150280912, -157536720, -164452144, -170977824, -177055200, -182730992, -188127088, -193307888, -198289520, -203156784, - -208030496, -212934816, -217845040, -222834720, -228031632, -233469584, -239137344, -245106272, -251453696, -258109824, - -264947408, -271934240, -279045632, -286107648, -292885632, -299275456, -305308832, -311048512, -316541760, -321774112, - -326614016, -330890720, -334563456, -337721856, -340449696, -342790464, -344823072, -346637152, -348259584, -349701056, - -351036256, -352379520, -353825856, -355444512, -357255904, -359210656, -361293728, -363633408, -366375200, -369470816, - -372702752, -375887488, -378943904, -381830656, -384545056, -387131712, -389604544, -391920064, -394076672, -396146304, - -398176224, -400158336, -402088928, -403956160, -405682208, -407207456, -408578080, -409852096, -410993472, -411950176, - -412744736, -413410464, -413956992, -414451456, -415008736, -415649760, -416303648, -416950048, -417620608, -418300832, - -418970304, -419683264, -420468160, -421242336, -421935968, -422575936, -423158976, -423617472, -423979296, -424366944, - -424799104, -425193696, -425563072, -425980224, -426386112, -426662048, -426816128, -426899360, -426870880, -426727008, - -426590112, -426518176, -426442464, -426383424, -426451584, -426590112, -426624480, -426572384, -426569696, -426569696, - -426460736, -426345312, -426347456, -426357632, -426271744, -426204640, -426201408, -426114976, -425975392, -426027456, - -426272832, -426502048, -426786592, -427343328, -428008000, -428506208, -429004960, -429715776, -430357344, -430720256, - -431144384, -431780032, -432186464, -432283616, -432612192, -433128128, -433130816, -432782368, -432935392, -433196320, - -432360928, -430898496, -430319200, -430133984, -428731680, -427129664, -427792160, -429743168, -429505312, -426881632, - -424250976, -419948480, -409561088, -395892384, -390180064, -398706656, -413332608, -420260928, -415048448, -404883360, - -398317408, -396604800, -395113920, -391861536, -393665952, -410828640, -443115008, -474512832, -487703744, -482296384, - -472652032, -468896064, -468109568, -465181472, -462957760, -466247168, -472453920, -475371264, -474698048, }, + 393704608, 199261792, 7454990, -137047568, -230714912, -291816192, -333582048, -354289696, -345745408, -304985632, + -237554112, -153483344, -62846108, 25924960, 106383656, 174758464, 230512512, 275441632, 311386208, 338533632, + 356124736, 364643264, 366513184, 364196576, 358214784, 347733440, 332698912, 314550528, 294970304, 274820448, + 254486480, 234499840, 215327648, 196919952, 178905792, 161172400, 144017232, 127764536, 112381576, 97512400, + 82796232, 68108520, 53500796, 39045548, 24810416, 10904385, -2594697, -15731928, -28598576, -41189812, + -53421876, -65249144, -76661408, -87611968, -98029944, -107895488, -117252608, -126151776, -134618768, -142656800, + -150280912, -157536720, -164452144, -170977824, -177055200, -182730992, -188127088, -193307888, -198289520, -203156784, + -208030496, -212934816, -217845040, -222834720, -228031632, -233469584, -239137344, -245106272, -251453696, -258109824, + -264947408, -271934240, -279045632, -286107648, -292885632, -299275456, -305308832, -311048512, -316541760, -321774112, + -326614016, -330890720, -334563456, -337721856, -340449696, -342790464, -344823072, -346637152, -348259584, -349701056, + -351036256, -352379520, -353825856, -355444512, -357255904, -359210656, -361293728, -363633408, -366375200, -369470816, + -372702752, -375887488, -378943904, -381830656, -384545056, -387131712, -389604544, -391920064, -394076672, -396146304, + -398176224, -400158336, -402088928, -403956160, -405682208, -407207456, -408578080, -409852096, -410993472, -411950176, + -412744736, -413410464, -413956992, -414451456, -415008736, -415649760, -416303648, -416950048, -417620608, -418300832, + -418970304, -419683264, -420468160, -421242336, -421935968, -422575936, -423158976, -423617472, -423979296, -424366944, + -424799104, -425193696, -425563072, -425980224, -426386112, -426662048, -426816128, -426899360, -426870880, -426727008, + -426590112, -426518176, -426442464, -426383424, -426451584, -426590112, -426624480, -426572384, -426569696, -426569696, + -426460736, -426345312, -426347456, -426357632, -426271744, -426204640, -426201408, -426114976, -425975392, -426027456, + -426272832, -426502048, -426786592, -427343328, -428008000, -428506208, -429004960, -429715776, -430357344, -430720256, + -431144384, -431780032, -432186464, -432283616, -432612192, -433128128, -433130816, -432782368, -432935392, -433196320, + -432360928, -430898496, -430319200, -430133984, -428731680, -427129664, -427792160, -429743168, -429505312, -426881632, + -424250976, -419948480, -409561088, -395892384, -390180064, -398706656, -413332608, -420260928, -415048448, -404883360, + -398317408, -396604800, -395113920, -391861536, -393665952, -410828640, -443115008, -474512832, -487703744, -482296384, + -472652032, -468896064, -468109568, -465181472, -462957760, -466247168, -472453920, -475371264, -474698048, }, }, { { 37328636, - 189374768, 383476160, 475285376, 383028416, 133840848, -171073376, -432745888, -603796160, -683916096, -690635008, - -641510272, -552180864, -436797088, -306463104, -169717248, -34593816, 91378648, 202743392, 296894976, 374149632, - 437277600, 489349248, 531198880, 561826816, 581349568, 592261504, 597636096, 599314368, 598031232, 594031552, - 587127936, 577005760, 563930304, 548784640, 532358496, 514886592, 496108448, 475500672, 452722304, 428125568, - 402665536, 377180800, 352018208, 327308192, 303174240, 279620640, 256611408, 234338784, 213113056, 192994352, - 173741088, 155053152, 136726528, 118736520, 101311840, 84780504, 69293928, 54891828, 41746544, 30001958, - 19447076, 9730248, 790811, -7295002, -14765024, -22013318, -29103772, -35866736, -42364484, -48842368, - -55338508, -61733712, -68128920, -74811888, -81897512, -89285928, -96952984, -105030744, -113582560, -122484952, - -131581152, -140860432, -150426928, -160311264, -170375984, -180435872, -190413088, -200370432, -210518896, -221234832, - -232860784, -245344096, -258222016, -271105856, -283991296, -296971232, -309841088, -322147776, -333463936, -343533504, - -352343008, -360091680, -366892736, -372482656, -376434560, -378663104, -379509216, -379385728, -378569152, -377280672, - -375758624, -374254848, -373029728, -372255552, -371887264, -371805120, -372115424, -373099520, -374873888, -377288192, - -380094400, -382999936, -385673568, -387967072, -390036704, -392070400, -394039616, -395879488, -397664032, -399435168, - -401066208, -402452384, -403620640, -404609536, -405454592, -406308736, -407351328, -408589888, -409931008, -411351552, - -412853184, -414413888, -416115744, -418142976, -420566432, -423312512, -426339392, -429601952, -432933248, -436230176, - -439630176, -443259968, -447025024, -450868480, -454913280, -459126624, -463203648, -466963872, -470473408, -473698400, - -476477216, -478859872, -481021312, -482905728, -484371392, -485500416, -486368000, -486850656, -486995072, -487141088, - -487406848, -487615168, -487850304, -488395776, -489068448, -489370720, -489218784, -488805920, -488051104, -486929568, - -485842944, -484988256, -484049792, -483024384, -482375296, -482025248, -481413216, -480660000, -480307264, -480132256, - -479703296, -479427328, -479558880, -479476192, -479256064, -479838592, -480622400, -480185920, -479861120, -481702592, - -483188640, -481178592, -480039360, -485045696, -488822048, -479682880, -464048672, -461323520, -473385376, -481892096, - -481580192, -489001888, -506634336, -507556160, -475460384, -435317472, -421685248, -435285280, -450985536, -452022752, - -439289248, -422705856, -415015712, -414360736, -386421952, -295605952, -168432512, -90038080, -111629424, -189907888, - -245691456, -256092800, -255994016, -268771552, -274996032, -247346624, -187443104, -122430728, -81640352, }, + 189374768, 383476160, 475285376, 383028416, 133840848, -171073376, -432745888, -603796160, -683916096, -690635008, + -641510272, -552180864, -436797088, -306463104, -169717248, -34593816, 91378648, 202743392, 296894976, 374149632, + 437277600, 489349248, 531198880, 561826816, 581349568, 592261504, 597636096, 599314368, 598031232, 594031552, + 587127936, 577005760, 563930304, 548784640, 532358496, 514886592, 496108448, 475500672, 452722304, 428125568, + 402665536, 377180800, 352018208, 327308192, 303174240, 279620640, 256611408, 234338784, 213113056, 192994352, + 173741088, 155053152, 136726528, 118736520, 101311840, 84780504, 69293928, 54891828, 41746544, 30001958, + 19447076, 9730248, 790811, -7295002, -14765024, -22013318, -29103772, -35866736, -42364484, -48842368, + -55338508, -61733712, -68128920, -74811888, -81897512, -89285928, -96952984, -105030744, -113582560, -122484952, + -131581152, -140860432, -150426928, -160311264, -170375984, -180435872, -190413088, -200370432, -210518896, -221234832, + -232860784, -245344096, -258222016, -271105856, -283991296, -296971232, -309841088, -322147776, -333463936, -343533504, + -352343008, -360091680, -366892736, -372482656, -376434560, -378663104, -379509216, -379385728, -378569152, -377280672, + -375758624, -374254848, -373029728, -372255552, -371887264, -371805120, -372115424, -373099520, -374873888, -377288192, + -380094400, -382999936, -385673568, -387967072, -390036704, -392070400, -394039616, -395879488, -397664032, -399435168, + -401066208, -402452384, -403620640, -404609536, -405454592, -406308736, -407351328, -408589888, -409931008, -411351552, + -412853184, -414413888, -416115744, -418142976, -420566432, -423312512, -426339392, -429601952, -432933248, -436230176, + -439630176, -443259968, -447025024, -450868480, -454913280, -459126624, -463203648, -466963872, -470473408, -473698400, + -476477216, -478859872, -481021312, -482905728, -484371392, -485500416, -486368000, -486850656, -486995072, -487141088, + -487406848, -487615168, -487850304, -488395776, -489068448, -489370720, -489218784, -488805920, -488051104, -486929568, + -485842944, -484988256, -484049792, -483024384, -482375296, -482025248, -481413216, -480660000, -480307264, -480132256, + -479703296, -479427328, -479558880, -479476192, -479256064, -479838592, -480622400, -480185920, -479861120, -481702592, + -483188640, -481178592, -480039360, -485045696, -488822048, -479682880, -464048672, -461323520, -473385376, -481892096, + -481580192, -489001888, -506634336, -507556160, -475460384, -435317472, -421685248, -435285280, -450985536, -452022752, + -439289248, -422705856, -415015712, -414360736, -386421952, -295605952, -168432512, -90038080, -111629424, -189907888, + -245691456, -256092800, -255994016, -268771552, -274996032, -247346624, -187443104, -122430728, -81640352, }, { -37328636, - -189374768, -383476160, -475285376, -383028416, -133840848, 171073376, 432745888, 603796160, 683916096, 690635008, - 641510272, 552180864, 436797088, 306463104, 169717248, 34593816, -91378648, -202743392, -296894976, -374149632, - -437277600, -489349248, -531198880, -561826816, -581349568, -592261504, -597636096, -599314368, -598031232, -594031552, - -587127936, -577005760, -563930304, -548784640, -532358496, -514886592, -496108448, -475500672, -452722304, -428125568, - -402665536, -377180800, -352018208, -327308192, -303174240, -279620640, -256611408, -234338784, -213113056, -192994352, - -173741088, -155053152, -136726528, -118736520, -101311840, -84780504, -69293928, -54891828, -41746544, -30001958, - -19447076, -9730248, -790811, 7295002, 14765024, 22013318, 29103772, 35866736, 42364484, 48842368, - 55338508, 61733712, 68128920, 74811888, 81897512, 89285928, 96952984, 105030744, 113582560, 122484952, - 131581152, 140860432, 150426928, 160311264, 170375984, 180435872, 190413088, 200370432, 210518896, 221234832, - 232860784, 245344096, 258222016, 271105856, 283991296, 296971232, 309841088, 322147776, 333463936, 343533504, - 352343008, 360091680, 366892736, 372482656, 376434560, 378663104, 379509216, 379385728, 378569152, 377280672, - 375758624, 374254848, 373029728, 372255552, 371887264, 371805120, 372115424, 373099520, 374873888, 377288192, - 380094400, 382999936, 385673568, 387967072, 390036704, 392070400, 394039616, 395879488, 397664032, 399435168, - 401066208, 402452384, 403620640, 404609536, 405454592, 406308736, 407351328, 408589888, 409931008, 411351552, - 412853184, 414413888, 416115744, 418142976, 420566432, 423312512, 426339392, 429601952, 432933248, 436230176, - 439630176, 443259968, 447025024, 450868480, 454913280, 459126624, 463203648, 466963872, 470473408, 473698400, - 476477216, 478859872, 481021312, 482905728, 484371392, 485500416, 486368000, 486850656, 486995072, 487141088, - 487406848, 487615168, 487850304, 488395776, 489068448, 489370720, 489218784, 488805920, 488051104, 486929568, - 485842944, 484988256, 484049792, 483024384, 482375296, 482025248, 481413216, 480660000, 480307264, 480132256, - 479703296, 479427328, 479558880, 479476192, 479256064, 479838592, 480622400, 480185920, 479861120, 481702592, - 483188640, 481178592, 480039360, 485045696, 488822048, 479682880, 464048672, 461323520, 473385376, 481892096, - 481580192, 489001888, 506634336, 507556160, 475460384, 435317472, 421685248, 435285280, 450985536, 452022752, - 439289248, 422705856, 415015712, 414360736, 386421952, 295605952, 168432512, 90038080, 111629424, 189907888, - 245691456, 256092800, 255994016, 268771552, 274996032, 247346624, 187443104, 122430728, 81640352, }, + -189374768, -383476160, -475285376, -383028416, -133840848, 171073376, 432745888, 603796160, 683916096, 690635008, + 641510272, 552180864, 436797088, 306463104, 169717248, 34593816, -91378648, -202743392, -296894976, -374149632, + -437277600, -489349248, -531198880, -561826816, -581349568, -592261504, -597636096, -599314368, -598031232, -594031552, + -587127936, -577005760, -563930304, -548784640, -532358496, -514886592, -496108448, -475500672, -452722304, -428125568, + -402665536, -377180800, -352018208, -327308192, -303174240, -279620640, -256611408, -234338784, -213113056, -192994352, + -173741088, -155053152, -136726528, -118736520, -101311840, -84780504, -69293928, -54891828, -41746544, -30001958, + -19447076, -9730248, -790811, 7295002, 14765024, 22013318, 29103772, 35866736, 42364484, 48842368, + 55338508, 61733712, 68128920, 74811888, 81897512, 89285928, 96952984, 105030744, 113582560, 122484952, + 131581152, 140860432, 150426928, 160311264, 170375984, 180435872, 190413088, 200370432, 210518896, 221234832, + 232860784, 245344096, 258222016, 271105856, 283991296, 296971232, 309841088, 322147776, 333463936, 343533504, + 352343008, 360091680, 366892736, 372482656, 376434560, 378663104, 379509216, 379385728, 378569152, 377280672, + 375758624, 374254848, 373029728, 372255552, 371887264, 371805120, 372115424, 373099520, 374873888, 377288192, + 380094400, 382999936, 385673568, 387967072, 390036704, 392070400, 394039616, 395879488, 397664032, 399435168, + 401066208, 402452384, 403620640, 404609536, 405454592, 406308736, 407351328, 408589888, 409931008, 411351552, + 412853184, 414413888, 416115744, 418142976, 420566432, 423312512, 426339392, 429601952, 432933248, 436230176, + 439630176, 443259968, 447025024, 450868480, 454913280, 459126624, 463203648, 466963872, 470473408, 473698400, + 476477216, 478859872, 481021312, 482905728, 484371392, 485500416, 486368000, 486850656, 486995072, 487141088, + 487406848, 487615168, 487850304, 488395776, 489068448, 489370720, 489218784, 488805920, 488051104, 486929568, + 485842944, 484988256, 484049792, 483024384, 482375296, 482025248, 481413216, 480660000, 480307264, 480132256, + 479703296, 479427328, 479558880, 479476192, 479256064, 479838592, 480622400, 480185920, 479861120, 481702592, + 483188640, 481178592, 480039360, 485045696, 488822048, 479682880, 464048672, 461323520, 473385376, 481892096, + 481580192, 489001888, 506634336, 507556160, 475460384, 435317472, 421685248, 435285280, 450985536, 452022752, + 439289248, 422705856, 415015712, 414360736, 386421952, 295605952, 168432512, 90038080, 111629424, 189907888, + 245691456, 256092800, 255994016, 268771552, 274996032, 247346624, 187443104, 122430728, 81640352, }, }, { { 60022168, - 49746996, 10565083, -45541684, -70657584, -40651864, 11245835, 38012608, 30652644, 9220221, -13295071, - -34076808, -43962748, -34187940, -14217952, -2735357, -2489471, 1039919, 17454748, 41131828, 62984084, - 80743776, 94916632, 103083512, 102638448, 95371360, 86412056, 79781168, 75625248, 70895952, 62644244, - 50934016, 38225208, 26533234, 16660715, 9768903, 7541963, 10284299, 16239808, 23172960, 29753922, - 35461936, 40116604, 43666932, 45964204, 46811924, 46316392, 44748728, 41918880, 37129456, 29789894, - 19681688, 6796249, -8666707, -26332444, -45959372, -67415952, -90271088, -113905216, -138052064, -162602624, - -186969056, -210371264, -232554224, -253434208, -272316480, -288309344, -301175456, -310986240, -317375008, -319892384, - -318597984, -313612064, -304732768, -292141536, -276765536, -259301664, -239675824, -218124752, -196026608, -174841680, - -154810480, -135496560, -117300392, -101607648, -89267136, -79482128, -70801464, -63117764, -57910116, -56150792, - -56747792, -57774288, -58577984, -59801516, -61881888, -64522756, -67282808, -69747584, -71321688, -71554696, - -70534640, -68598680, -65859564, -62138512, -56994752, -49916108, -40994924, -31270046, -21858700, -12998182, - -4407174, 3896609, 11694659, 18927920, 25387014, 30523796, 33960844, 35690640, 35647156, 33712808, - 30168924, 25445534, 19543712, 12341589, 4201552, -4342212, -13083007, -21811454, -30077120, -37672232, - -44685912, -50859392, -55713780, -59406376, -62608812, -65666828, -68755984, -72400800, -76803144, -81170584, - -84679576, -87438016, -89740120, -91313152, -92022360, -92261264, -92120608, -91264832, -89894736, -88617520, - -87414936, -85963232, -84606560, -83760992, -82992728, -81849728, -80668616, -79576616, -77946144, -75635984, - -73285024, -70879848, -67727880, -63979980, -60372744, -56759068, -52786220, -49230524, -46776488, -44691820, - -42433204, -40787156, -39968964, -38850128, -37123548, -35539780, -33543158, -29846802, -25129316, -20710870, - -15674483, -8952322, -2120640, 3613678, 9954660, 17568564, 24113558, 29132764, 35056596, 41430864, - 45571212, 49248780, 55470576, 60667488, 61601644, 64684892, 73870752, 78956528, 74776456, 76883672, - 92792232, 99237368, 84040696, 83722336, 126914136, 165098000, 129345624, 42492260, -3980361, 17639430, - 46632072, 49243948, 66058744, 115501336, 138135808, 87157768, 7816304, -27060978, -12878459, 3414499, - -471910, -5507222, 11730093, 54191748, 98788544, 103766408, 48269528, -26941256, -51353312, -8629126, - 44756780, 56989920, 40558988, 35066260, 45074072, 45548128, 27823872, 8046085, -1290101, }, + 49746996, 10565083, -45541684, -70657584, -40651864, 11245835, 38012608, 30652644, 9220221, -13295071, + -34076808, -43962748, -34187940, -14217952, -2735357, -2489471, 1039919, 17454748, 41131828, 62984084, + 80743776, 94916632, 103083512, 102638448, 95371360, 86412056, 79781168, 75625248, 70895952, 62644244, + 50934016, 38225208, 26533234, 16660715, 9768903, 7541963, 10284299, 16239808, 23172960, 29753922, + 35461936, 40116604, 43666932, 45964204, 46811924, 46316392, 44748728, 41918880, 37129456, 29789894, + 19681688, 6796249, -8666707, -26332444, -45959372, -67415952, -90271088, -113905216, -138052064, -162602624, + -186969056, -210371264, -232554224, -253434208, -272316480, -288309344, -301175456, -310986240, -317375008, -319892384, + -318597984, -313612064, -304732768, -292141536, -276765536, -259301664, -239675824, -218124752, -196026608, -174841680, + -154810480, -135496560, -117300392, -101607648, -89267136, -79482128, -70801464, -63117764, -57910116, -56150792, + -56747792, -57774288, -58577984, -59801516, -61881888, -64522756, -67282808, -69747584, -71321688, -71554696, + -70534640, -68598680, -65859564, -62138512, -56994752, -49916108, -40994924, -31270046, -21858700, -12998182, + -4407174, 3896609, 11694659, 18927920, 25387014, 30523796, 33960844, 35690640, 35647156, 33712808, + 30168924, 25445534, 19543712, 12341589, 4201552, -4342212, -13083007, -21811454, -30077120, -37672232, + -44685912, -50859392, -55713780, -59406376, -62608812, -65666828, -68755984, -72400800, -76803144, -81170584, + -84679576, -87438016, -89740120, -91313152, -92022360, -92261264, -92120608, -91264832, -89894736, -88617520, + -87414936, -85963232, -84606560, -83760992, -82992728, -81849728, -80668616, -79576616, -77946144, -75635984, + -73285024, -70879848, -67727880, -63979980, -60372744, -56759068, -52786220, -49230524, -46776488, -44691820, + -42433204, -40787156, -39968964, -38850128, -37123548, -35539780, -33543158, -29846802, -25129316, -20710870, + -15674483, -8952322, -2120640, 3613678, 9954660, 17568564, 24113558, 29132764, 35056596, 41430864, + 45571212, 49248780, 55470576, 60667488, 61601644, 64684892, 73870752, 78956528, 74776456, 76883672, + 92792232, 99237368, 84040696, 83722336, 126914136, 165098000, 129345624, 42492260, -3980361, 17639430, + 46632072, 49243948, 66058744, 115501336, 138135808, 87157768, 7816304, -27060978, -12878459, 3414499, + -471910, -5507222, 11730093, 54191748, 98788544, 103766408, 48269528, -26941256, -51353312, -8629126, + 44756780, 56989920, 40558988, 35066260, 45074072, 45548128, 27823872, 8046085, -1290101, }, { 60022168, - 49746996, 10565083, -45541684, -70657584, -40651864, 11245835, 38012608, 30652644, 9220221, -13295071, - -34076808, -43962748, -34187940, -14217952, -2735357, -2489471, 1039919, 17454748, 41131828, 62984084, - 80743776, 94916632, 103083512, 102638448, 95371360, 86412056, 79781168, 75625248, 70895952, 62644244, - 50934016, 38225208, 26533234, 16660715, 9768903, 7541963, 10284299, 16239808, 23172960, 29753922, - 35461936, 40116604, 43666932, 45964204, 46811924, 46316392, 44748728, 41918880, 37129456, 29789894, - 19681688, 6796249, -8666707, -26332444, -45959372, -67415952, -90271088, -113905216, -138052064, -162602624, - -186969056, -210371264, -232554224, -253434208, -272316480, -288309344, -301175456, -310986240, -317375008, -319892384, - -318597984, -313612064, -304732768, -292141536, -276765536, -259301664, -239675824, -218124752, -196026608, -174841680, - -154810480, -135496560, -117300392, -101607648, -89267136, -79482128, -70801464, -63117764, -57910116, -56150792, - -56747792, -57774288, -58577984, -59801516, -61881888, -64522756, -67282808, -69747584, -71321688, -71554696, - -70534640, -68598680, -65859564, -62138512, -56994752, -49916108, -40994924, -31270046, -21858700, -12998182, - -4407174, 3896609, 11694659, 18927920, 25387014, 30523796, 33960844, 35690640, 35647156, 33712808, - 30168924, 25445534, 19543712, 12341589, 4201552, -4342212, -13083007, -21811454, -30077120, -37672232, - -44685912, -50859392, -55713780, -59406376, -62608812, -65666828, -68755984, -72400800, -76803144, -81170584, - -84679576, -87438016, -89740120, -91313152, -92022360, -92261264, -92120608, -91264832, -89894736, -88617520, - -87414936, -85963232, -84606560, -83760992, -82992728, -81849728, -80668616, -79576616, -77946144, -75635984, - -73285024, -70879848, -67727880, -63979980, -60372744, -56759068, -52786220, -49230524, -46776488, -44691820, - -42433204, -40787156, -39968964, -38850128, -37123548, -35539780, -33543158, -29846802, -25129316, -20710870, - -15674483, -8952322, -2120640, 3613678, 9954660, 17568564, 24113558, 29132764, 35056596, 41430864, - 45571212, 49248780, 55470576, 60667488, 61601644, 64684892, 73870752, 78956528, 74776456, 76883672, - 92792232, 99237368, 84040696, 83722336, 126914136, 165098000, 129345624, 42492260, -3980361, 17639430, - 46632072, 49243948, 66058744, 115501336, 138135808, 87157768, 7816304, -27060978, -12878459, 3414499, - -471910, -5507222, 11730093, 54191748, 98788544, 103766408, 48269528, -26941256, -51353312, -8629126, - 44756780, 56989920, 40558988, 35066260, 45074072, 45548128, 27823872, 8046085, -1290101, }, + 49746996, 10565083, -45541684, -70657584, -40651864, 11245835, 38012608, 30652644, 9220221, -13295071, + -34076808, -43962748, -34187940, -14217952, -2735357, -2489471, 1039919, 17454748, 41131828, 62984084, + 80743776, 94916632, 103083512, 102638448, 95371360, 86412056, 79781168, 75625248, 70895952, 62644244, + 50934016, 38225208, 26533234, 16660715, 9768903, 7541963, 10284299, 16239808, 23172960, 29753922, + 35461936, 40116604, 43666932, 45964204, 46811924, 46316392, 44748728, 41918880, 37129456, 29789894, + 19681688, 6796249, -8666707, -26332444, -45959372, -67415952, -90271088, -113905216, -138052064, -162602624, + -186969056, -210371264, -232554224, -253434208, -272316480, -288309344, -301175456, -310986240, -317375008, -319892384, + -318597984, -313612064, -304732768, -292141536, -276765536, -259301664, -239675824, -218124752, -196026608, -174841680, + -154810480, -135496560, -117300392, -101607648, -89267136, -79482128, -70801464, -63117764, -57910116, -56150792, + -56747792, -57774288, -58577984, -59801516, -61881888, -64522756, -67282808, -69747584, -71321688, -71554696, + -70534640, -68598680, -65859564, -62138512, -56994752, -49916108, -40994924, -31270046, -21858700, -12998182, + -4407174, 3896609, 11694659, 18927920, 25387014, 30523796, 33960844, 35690640, 35647156, 33712808, + 30168924, 25445534, 19543712, 12341589, 4201552, -4342212, -13083007, -21811454, -30077120, -37672232, + -44685912, -50859392, -55713780, -59406376, -62608812, -65666828, -68755984, -72400800, -76803144, -81170584, + -84679576, -87438016, -89740120, -91313152, -92022360, -92261264, -92120608, -91264832, -89894736, -88617520, + -87414936, -85963232, -84606560, -83760992, -82992728, -81849728, -80668616, -79576616, -77946144, -75635984, + -73285024, -70879848, -67727880, -63979980, -60372744, -56759068, -52786220, -49230524, -46776488, -44691820, + -42433204, -40787156, -39968964, -38850128, -37123548, -35539780, -33543158, -29846802, -25129316, -20710870, + -15674483, -8952322, -2120640, 3613678, 9954660, 17568564, 24113558, 29132764, 35056596, 41430864, + 45571212, 49248780, 55470576, 60667488, 61601644, 64684892, 73870752, 78956528, 74776456, 76883672, + 92792232, 99237368, 84040696, 83722336, 126914136, 165098000, 129345624, 42492260, -3980361, 17639430, + 46632072, 49243948, 66058744, 115501336, 138135808, 87157768, 7816304, -27060978, -12878459, 3414499, + -471910, -5507222, 11730093, 54191748, 98788544, 103766408, 48269528, -26941256, -51353312, -8629126, + 44756780, 56989920, 40558988, 35066260, 45074072, 45548128, 27823872, 8046085, -1290101, }, }, { { 31920734, - 46136540, 45763412, 14942728, -23592256, -34102576, -10480257, 17888538, 19763828, -8626442, -47391744, - -75476000, -85082768, -81128712, -73625400, -69166152, -65736620, -55586004, -33918432, -3300146, 30547418, - 63887640, 94476392, 119725968, 138947024, 155736592, 174775104, 196526960, 217297424, 234043504, 246777552, - 256118032, 260794704, 258744400, 249421104, 233813184, 212831728, 186947584, 157384784, 126632816, 97257384, - 70578120, 46705084, 25389162, 6402186, -10662256, -26432302, -41385768, -55461448, -68065568, -78422344, - -85960552, -90507848, -92429304, -92740152, -92838936, -93768800, -95774016, -98702104, -102485432, -106901736, - -111312664, -115221624, -118802552, -122387240, -125823216, -128891968, -131853888, -134915120, -137633840, -139581600, - -141094512, -142585392, -143600080, -143395536, -141987856, -139721728, -136213808, -130733976, -123400312, -115025128, - -105831216, -95274184, -83281024, -70845488, -59068148, -48165912, -37769944, -27663884, -17735530, -7606924, - 2993055, 13587666, 23325430, 32034550, 40264780, 48121352, 54684060, 58984932, 61139396, 62108448, - 62512712, 61899068, 59082644, 53230216, 44786844, 35209068, 25565792, 15585899, 4358855, -8272107, - -21323976, -33465312, -43962212, -53104588, -61926448, -71250288, -80840408, -89663344, -96920768, -102593344, - -107195408, -111458160, -116062368, -121186264, -126389080, -131220912, -135749952, -140284368, -144986288, -150000656, - -155531504, -161549824, -167774848, -174053008, -180381648, -186606128, -192506880, -198077984, -203331808, -208018688, - -211882016, -214886880, -216935040, -217763424, -217331248, -215891360, -213601072, -210547344, -207094736, -203652848, - -200254464, -196862512, -193756720, -191131952, -188817504, -186823024, -185553856, -185114704, -185130800, -185469568, - -186309232, -187417872, -188285456, -188920048, -189658784, -190536560, -191623728, -193379296, -195891312, -198575664, - -201206864, -204152688, -207264928, -209902032, -212141856, -214416048, -216199520, -216748752, -216459376, -215771648, - -213953792, -210683184, -207064128, -203521328, -199073344, -193881264, -189422016, -185501248, -180827248, -176279952, - -173140336, -169690400, -164839232, -161581504, -160694592, -157216208, -150669600, -148856048, -152050976, -148304688, - -137272528, -137371840, -149848720, -143919520, -108989088, -91152088, -131908112, -196136656, -217179856, -194179232, - -179810416, -184189136, -167261600, -129284960, -128454952, -186015568, -244544160, -253234496, -235377088, -235451184, - -251041376, -256067024, -247692912, -230110384, -189109552, -125137632, -82403776, -100727184, -155899264, -188265600, - -180487408, -169009648, -181035552, -197899744, -193123744, -179249920, -193284272, -243472032, -290958272, }, + 46136540, 45763412, 14942728, -23592256, -34102576, -10480257, 17888538, 19763828, -8626442, -47391744, + -75476000, -85082768, -81128712, -73625400, -69166152, -65736620, -55586004, -33918432, -3300146, 30547418, + 63887640, 94476392, 119725968, 138947024, 155736592, 174775104, 196526960, 217297424, 234043504, 246777552, + 256118032, 260794704, 258744400, 249421104, 233813184, 212831728, 186947584, 157384784, 126632816, 97257384, + 70578120, 46705084, 25389162, 6402186, -10662256, -26432302, -41385768, -55461448, -68065568, -78422344, + -85960552, -90507848, -92429304, -92740152, -92838936, -93768800, -95774016, -98702104, -102485432, -106901736, + -111312664, -115221624, -118802552, -122387240, -125823216, -128891968, -131853888, -134915120, -137633840, -139581600, + -141094512, -142585392, -143600080, -143395536, -141987856, -139721728, -136213808, -130733976, -123400312, -115025128, + -105831216, -95274184, -83281024, -70845488, -59068148, -48165912, -37769944, -27663884, -17735530, -7606924, + 2993055, 13587666, 23325430, 32034550, 40264780, 48121352, 54684060, 58984932, 61139396, 62108448, + 62512712, 61899068, 59082644, 53230216, 44786844, 35209068, 25565792, 15585899, 4358855, -8272107, + -21323976, -33465312, -43962212, -53104588, -61926448, -71250288, -80840408, -89663344, -96920768, -102593344, + -107195408, -111458160, -116062368, -121186264, -126389080, -131220912, -135749952, -140284368, -144986288, -150000656, + -155531504, -161549824, -167774848, -174053008, -180381648, -186606128, -192506880, -198077984, -203331808, -208018688, + -211882016, -214886880, -216935040, -217763424, -217331248, -215891360, -213601072, -210547344, -207094736, -203652848, + -200254464, -196862512, -193756720, -191131952, -188817504, -186823024, -185553856, -185114704, -185130800, -185469568, + -186309232, -187417872, -188285456, -188920048, -189658784, -190536560, -191623728, -193379296, -195891312, -198575664, + -201206864, -204152688, -207264928, -209902032, -212141856, -214416048, -216199520, -216748752, -216459376, -215771648, + -213953792, -210683184, -207064128, -203521328, -199073344, -193881264, -189422016, -185501248, -180827248, -176279952, + -173140336, -169690400, -164839232, -161581504, -160694592, -157216208, -150669600, -148856048, -152050976, -148304688, + -137272528, -137371840, -149848720, -143919520, -108989088, -91152088, -131908112, -196136656, -217179856, -194179232, + -179810416, -184189136, -167261600, -129284960, -128454952, -186015568, -244544160, -253234496, -235377088, -235451184, + -251041376, -256067024, -247692912, -230110384, -189109552, -125137632, -82403776, -100727184, -155899264, -188265600, + -180487408, -169009648, -181035552, -197899744, -193123744, -179249920, -193284272, -243472032, -290958272, }, { 31920734, - 46136540, 45763412, 14942728, -23592256, -34102576, -10480257, 17888538, 19763828, -8626442, -47391744, - -75476000, -85082768, -81128712, -73625400, -69166152, -65736620, -55586004, -33918432, -3300146, 30547418, - 63887640, 94476392, 119725968, 138947024, 155736592, 174775104, 196526960, 217297424, 234043504, 246777552, - 256118032, 260794704, 258744400, 249421104, 233813184, 212831728, 186947584, 157384784, 126632816, 97257384, - 70578120, 46705084, 25389162, 6402186, -10662256, -26432302, -41385768, -55461448, -68065568, -78422344, - -85960552, -90507848, -92429304, -92740152, -92838936, -93768800, -95774016, -98702104, -102485432, -106901736, - -111312664, -115221624, -118802552, -122387240, -125823216, -128891968, -131853888, -134915120, -137633840, -139581600, - -141094512, -142585392, -143600080, -143395536, -141987856, -139721728, -136213808, -130733976, -123400312, -115025128, - -105831216, -95274184, -83281024, -70845488, -59068148, -48165912, -37769944, -27663884, -17735530, -7606924, - 2993055, 13587666, 23325430, 32034550, 40264780, 48121352, 54684060, 58984932, 61139396, 62108448, - 62512712, 61899068, 59082644, 53230216, 44786844, 35209068, 25565792, 15585899, 4358855, -8272107, - -21323976, -33465312, -43962212, -53104588, -61926448, -71250288, -80840408, -89663344, -96920768, -102593344, - -107195408, -111458160, -116062368, -121186264, -126389080, -131220912, -135749952, -140284368, -144986288, -150000656, - -155531504, -161549824, -167774848, -174053008, -180381648, -186606128, -192506880, -198077984, -203331808, -208018688, - -211882016, -214886880, -216935040, -217763424, -217331248, -215891360, -213601072, -210547344, -207094736, -203652848, - -200254464, -196862512, -193756720, -191131952, -188817504, -186823024, -185553856, -185114704, -185130800, -185469568, - -186309232, -187417872, -188285456, -188920048, -189658784, -190536560, -191623728, -193379296, -195891312, -198575664, - -201206864, -204152688, -207264928, -209902032, -212141856, -214416048, -216199520, -216748752, -216459376, -215771648, - -213953792, -210683184, -207064128, -203521328, -199073344, -193881264, -189422016, -185501248, -180827248, -176279952, - -173140336, -169690400, -164839232, -161581504, -160694592, -157216208, -150669600, -148856048, -152050976, -148304688, - -137272528, -137371840, -149848720, -143919520, -108989088, -91152088, -131908112, -196136656, -217179856, -194179232, - -179810416, -184189136, -167261600, -129284960, -128454952, -186015568, -244544160, -253234496, -235377088, -235451184, - -251041376, -256067024, -247692912, -230110384, -189109552, -125137632, -82403776, -100727184, -155899264, -188265600, - -180487408, -169009648, -181035552, -197899744, -193123744, -179249920, -193284272, -243472032, -290958272, }, + 46136540, 45763412, 14942728, -23592256, -34102576, -10480257, 17888538, 19763828, -8626442, -47391744, + -75476000, -85082768, -81128712, -73625400, -69166152, -65736620, -55586004, -33918432, -3300146, 30547418, + 63887640, 94476392, 119725968, 138947024, 155736592, 174775104, 196526960, 217297424, 234043504, 246777552, + 256118032, 260794704, 258744400, 249421104, 233813184, 212831728, 186947584, 157384784, 126632816, 97257384, + 70578120, 46705084, 25389162, 6402186, -10662256, -26432302, -41385768, -55461448, -68065568, -78422344, + -85960552, -90507848, -92429304, -92740152, -92838936, -93768800, -95774016, -98702104, -102485432, -106901736, + -111312664, -115221624, -118802552, -122387240, -125823216, -128891968, -131853888, -134915120, -137633840, -139581600, + -141094512, -142585392, -143600080, -143395536, -141987856, -139721728, -136213808, -130733976, -123400312, -115025128, + -105831216, -95274184, -83281024, -70845488, -59068148, -48165912, -37769944, -27663884, -17735530, -7606924, + 2993055, 13587666, 23325430, 32034550, 40264780, 48121352, 54684060, 58984932, 61139396, 62108448, + 62512712, 61899068, 59082644, 53230216, 44786844, 35209068, 25565792, 15585899, 4358855, -8272107, + -21323976, -33465312, -43962212, -53104588, -61926448, -71250288, -80840408, -89663344, -96920768, -102593344, + -107195408, -111458160, -116062368, -121186264, -126389080, -131220912, -135749952, -140284368, -144986288, -150000656, + -155531504, -161549824, -167774848, -174053008, -180381648, -186606128, -192506880, -198077984, -203331808, -208018688, + -211882016, -214886880, -216935040, -217763424, -217331248, -215891360, -213601072, -210547344, -207094736, -203652848, + -200254464, -196862512, -193756720, -191131952, -188817504, -186823024, -185553856, -185114704, -185130800, -185469568, + -186309232, -187417872, -188285456, -188920048, -189658784, -190536560, -191623728, -193379296, -195891312, -198575664, + -201206864, -204152688, -207264928, -209902032, -212141856, -214416048, -216199520, -216748752, -216459376, -215771648, + -213953792, -210683184, -207064128, -203521328, -199073344, -193881264, -189422016, -185501248, -180827248, -176279952, + -173140336, -169690400, -164839232, -161581504, -160694592, -157216208, -150669600, -148856048, -152050976, -148304688, + -137272528, -137371840, -149848720, -143919520, -108989088, -91152088, -131908112, -196136656, -217179856, -194179232, + -179810416, -184189136, -167261600, -129284960, -128454952, -186015568, -244544160, -253234496, -235377088, -235451184, + -251041376, -256067024, -247692912, -230110384, -189109552, -125137632, -82403776, -100727184, -155899264, -188265600, + -180487408, -169009648, -181035552, -197899744, -193123744, -179249920, -193284272, -243472032, -290958272, }, }, }; -const Word32 CRendBin_FOA_HRIR_coeff_im_48kHz_fx[4][BINAURAL_CHANNELS][240] ={ +const Word32 CRendBin_FOA_HRIR_coeff_im_48kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][240] ={ { { -124898720, - -332729504, -439877120, -442557728, -379344384, -293460096, -205276352, -113285672, -12222940, 93858992, 192837584, - 272809888, 327290464, 355045632, 358171296, 341044576, 309595744, 269720736, 225325264, 177752592, 127412352, - 75906568, 26075284, -20146080, -63114544, -104128800, -143182400, -178805936, -209827408, -236391248, -259223824, - -278753568, -295292960, -309494272, -322090880, -333362464, -343166816, -351456640, -358579840, -365063616, -371221536, - -377014368, -382244032, -386783808, -390602048, -393683136, -396049120, -397818112, -399115744, -399944128, -400236192, - -399987072, -399253728, -398069376, -396445888, -394451392, -392200320, -389782240, -387236384, -384578336, -381834944, - -379053408, -376263296, -373443648, -370585344, -367778592, -365158656, -362774944, -360603296, -358668416, -357025056, - -355635648, -354415328, -353371648, -352556672, -351920480, -351348192, -350802720, -350258880, -349570624, -348561824, - -347180992, -345422208, -343174880, -340324096, -336925696, -333160608, -329167360, -324992672, -320619840, -315976448, - -311015776, -305840320, -300658464, -295617216, -290763904, -286148960, -281828768, -277802784, -274047904, -270602816, - -267524928, -264817488, -262432160, -260293808, -258303088, -256404720, -254646464, -253053024, -251462288, -249616512, - -247390656, -244834080, -242033760, -239064864, -236007920, -232902656, -229728672, -226498320, -223285152, -220122448, - -216968320, -213787904, -210567744, -207265456, -203864912, -200441824, -197074032, -193735776, -190386768, -187074272, - -183864336, -180773568, -177833664, -175100448, -172536896, -170028624, -167533248, -165088336, -162686384, -160296240, - -157944208, -155640496, -153303488, -150872544, -148402928, -145936016, -143440096, -140947408, -138565312, -136292192, - -134017472, -131727720, -129487360, -127250216, -124917512, -122529512, -120187144, -117889336, -115630184, -113507392, - -111558016, -109682192, -107845016, -106118976, -104446088, -102671192, -100828112, -99078456, -97401808, -95681672, - -93997504, -92467960, -90984048, -89425512, -87905632, -86504936, -85102096, -83697640, -82489680, -81455664, - -80349176, -79179336, -78134584, -77073192, -75731544, -74264816, -72914584, -71460200, -69692824, -67927592, - -66353488, -64584496, -62504660, -60603600, -58905476, -56793964, -54370528, -52408800, -50643568, -48081084, - -45197552, -43396888, -42245300, -40205724, -37985228, -37478420, -37489696, -34875672, -29977262, -25905096, - -22486302, -17277042, -13460964, -19048716, -34682396, -48724792, -49633716, -39305932, -29730300, -29189134, - -35735740, -42936788, -48927192, -58810452, -77185392, -97927936, -105323336, -90025200, -61538828, -38875360, - -30039002, -27507654, -23304492, -19342922, -19663970, -20865488, -16995722, -9038222, -2388002, }, + -332729504, -439877120, -442557728, -379344384, -293460096, -205276352, -113285672, -12222940, 93858992, 192837584, + 272809888, 327290464, 355045632, 358171296, 341044576, 309595744, 269720736, 225325264, 177752592, 127412352, + 75906568, 26075284, -20146080, -63114544, -104128800, -143182400, -178805936, -209827408, -236391248, -259223824, + -278753568, -295292960, -309494272, -322090880, -333362464, -343166816, -351456640, -358579840, -365063616, -371221536, + -377014368, -382244032, -386783808, -390602048, -393683136, -396049120, -397818112, -399115744, -399944128, -400236192, + -399987072, -399253728, -398069376, -396445888, -394451392, -392200320, -389782240, -387236384, -384578336, -381834944, + -379053408, -376263296, -373443648, -370585344, -367778592, -365158656, -362774944, -360603296, -358668416, -357025056, + -355635648, -354415328, -353371648, -352556672, -351920480, -351348192, -350802720, -350258880, -349570624, -348561824, + -347180992, -345422208, -343174880, -340324096, -336925696, -333160608, -329167360, -324992672, -320619840, -315976448, + -311015776, -305840320, -300658464, -295617216, -290763904, -286148960, -281828768, -277802784, -274047904, -270602816, + -267524928, -264817488, -262432160, -260293808, -258303088, -256404720, -254646464, -253053024, -251462288, -249616512, + -247390656, -244834080, -242033760, -239064864, -236007920, -232902656, -229728672, -226498320, -223285152, -220122448, + -216968320, -213787904, -210567744, -207265456, -203864912, -200441824, -197074032, -193735776, -190386768, -187074272, + -183864336, -180773568, -177833664, -175100448, -172536896, -170028624, -167533248, -165088336, -162686384, -160296240, + -157944208, -155640496, -153303488, -150872544, -148402928, -145936016, -143440096, -140947408, -138565312, -136292192, + -134017472, -131727720, -129487360, -127250216, -124917512, -122529512, -120187144, -117889336, -115630184, -113507392, + -111558016, -109682192, -107845016, -106118976, -104446088, -102671192, -100828112, -99078456, -97401808, -95681672, + -93997504, -92467960, -90984048, -89425512, -87905632, -86504936, -85102096, -83697640, -82489680, -81455664, + -80349176, -79179336, -78134584, -77073192, -75731544, -74264816, -72914584, -71460200, -69692824, -67927592, + -66353488, -64584496, -62504660, -60603600, -58905476, -56793964, -54370528, -52408800, -50643568, -48081084, + -45197552, -43396888, -42245300, -40205724, -37985228, -37478420, -37489696, -34875672, -29977262, -25905096, + -22486302, -17277042, -13460964, -19048716, -34682396, -48724792, -49633716, -39305932, -29730300, -29189134, + -35735740, -42936788, -48927192, -58810452, -77185392, -97927936, -105323336, -90025200, -61538828, -38875360, + -30039002, -27507654, -23304492, -19342922, -19663970, -20865488, -16995722, -9038222, -2388002, }, { -124898720, - -332729504, -439877120, -442557728, -379344384, -293460096, -205276352, -113285672, -12222940, 93858992, 192837584, - 272809888, 327290464, 355045632, 358171296, 341044576, 309595744, 269720736, 225325264, 177752592, 127412352, - 75906568, 26075284, -20146080, -63114544, -104128800, -143182400, -178805936, -209827408, -236391248, -259223824, - -278753568, -295292960, -309494272, -322090880, -333362464, -343166816, -351456640, -358579840, -365063616, -371221536, - -377014368, -382244032, -386783808, -390602048, -393683136, -396049120, -397818112, -399115744, -399944128, -400236192, - -399987072, -399253728, -398069376, -396445888, -394451392, -392200320, -389782240, -387236384, -384578336, -381834944, - -379053408, -376263296, -373443648, -370585344, -367778592, -365158656, -362774944, -360603296, -358668416, -357025056, - -355635648, -354415328, -353371648, -352556672, -351920480, -351348192, -350802720, -350258880, -349570624, -348561824, - -347180992, -345422208, -343174880, -340324096, -336925696, -333160608, -329167360, -324992672, -320619840, -315976448, - -311015776, -305840320, -300658464, -295617216, -290763904, -286148960, -281828768, -277802784, -274047904, -270602816, - -267524928, -264817488, -262432160, -260293808, -258303088, -256404720, -254646464, -253053024, -251462288, -249616512, - -247390656, -244834080, -242033760, -239064864, -236007920, -232902656, -229728672, -226498320, -223285152, -220122448, - -216968320, -213787904, -210567744, -207265456, -203864912, -200441824, -197074032, -193735776, -190386768, -187074272, - -183864336, -180773568, -177833664, -175100448, -172536896, -170028624, -167533248, -165088336, -162686384, -160296240, - -157944208, -155640496, -153303488, -150872544, -148402928, -145936016, -143440096, -140947408, -138565312, -136292192, - -134017472, -131727720, -129487360, -127250216, -124917512, -122529512, -120187144, -117889336, -115630184, -113507392, - -111558016, -109682192, -107845016, -106118976, -104446088, -102671192, -100828112, -99078456, -97401808, -95681672, - -93997504, -92467960, -90984048, -89425512, -87905632, -86504936, -85102096, -83697640, -82489680, -81455664, - -80349176, -79179336, -78134584, -77073192, -75731544, -74264816, -72914584, -71460200, -69692824, -67927592, - -66353488, -64584496, -62504660, -60603600, -58905476, -56793964, -54370528, -52408800, -50643568, -48081084, - -45197552, -43396888, -42245300, -40205724, -37985228, -37478420, -37489696, -34875672, -29977262, -25905096, - -22486302, -17277042, -13460964, -19048716, -34682396, -48724792, -49633716, -39305932, -29730300, -29189134, - -35735740, -42936788, -48927192, -58810452, -77185392, -97927936, -105323336, -90025200, -61538828, -38875360, - -30039002, -27507654, -23304492, -19342922, -19663970, -20865488, -16995722, -9038222, -2388002, }, + -332729504, -439877120, -442557728, -379344384, -293460096, -205276352, -113285672, -12222940, 93858992, 192837584, + 272809888, 327290464, 355045632, 358171296, 341044576, 309595744, 269720736, 225325264, 177752592, 127412352, + 75906568, 26075284, -20146080, -63114544, -104128800, -143182400, -178805936, -209827408, -236391248, -259223824, + -278753568, -295292960, -309494272, -322090880, -333362464, -343166816, -351456640, -358579840, -365063616, -371221536, + -377014368, -382244032, -386783808, -390602048, -393683136, -396049120, -397818112, -399115744, -399944128, -400236192, + -399987072, -399253728, -398069376, -396445888, -394451392, -392200320, -389782240, -387236384, -384578336, -381834944, + -379053408, -376263296, -373443648, -370585344, -367778592, -365158656, -362774944, -360603296, -358668416, -357025056, + -355635648, -354415328, -353371648, -352556672, -351920480, -351348192, -350802720, -350258880, -349570624, -348561824, + -347180992, -345422208, -343174880, -340324096, -336925696, -333160608, -329167360, -324992672, -320619840, -315976448, + -311015776, -305840320, -300658464, -295617216, -290763904, -286148960, -281828768, -277802784, -274047904, -270602816, + -267524928, -264817488, -262432160, -260293808, -258303088, -256404720, -254646464, -253053024, -251462288, -249616512, + -247390656, -244834080, -242033760, -239064864, -236007920, -232902656, -229728672, -226498320, -223285152, -220122448, + -216968320, -213787904, -210567744, -207265456, -203864912, -200441824, -197074032, -193735776, -190386768, -187074272, + -183864336, -180773568, -177833664, -175100448, -172536896, -170028624, -167533248, -165088336, -162686384, -160296240, + -157944208, -155640496, -153303488, -150872544, -148402928, -145936016, -143440096, -140947408, -138565312, -136292192, + -134017472, -131727720, -129487360, -127250216, -124917512, -122529512, -120187144, -117889336, -115630184, -113507392, + -111558016, -109682192, -107845016, -106118976, -104446088, -102671192, -100828112, -99078456, -97401808, -95681672, + -93997504, -92467960, -90984048, -89425512, -87905632, -86504936, -85102096, -83697640, -82489680, -81455664, + -80349176, -79179336, -78134584, -77073192, -75731544, -74264816, -72914584, -71460200, -69692824, -67927592, + -66353488, -64584496, -62504660, -60603600, -58905476, -56793964, -54370528, -52408800, -50643568, -48081084, + -45197552, -43396888, -42245300, -40205724, -37985228, -37478420, -37489696, -34875672, -29977262, -25905096, + -22486302, -17277042, -13460964, -19048716, -34682396, -48724792, -49633716, -39305932, -29730300, -29189134, + -35735740, -42936788, -48927192, -58810452, -77185392, -97927936, -105323336, -90025200, -61538828, -38875360, + -30039002, -27507654, -23304492, -19342922, -19663970, -20865488, -16995722, -9038222, -2388002, }, }, { { 75367016, - 152898688, 60698088, -183234576, -462790784, -646732928, -670164672, -552847104, -356891904, -137474384, 73971688, - 261569408, 416582848, 535674240, 619246208, 668629760, 685797824, 674825792, 641893568, 594021376, 537820096, - 477885440, 415636320, 350830656, 284640896, 220209952, 160159328, 104857328, 53330608, 4641786, -41893112, - -86666000, -129419176, -169462768, -206496656, -240911696, -273358560, -304294688, -333708768, -360983936, -385256416, - -406153568, -423995424, -439282816, -452334144, -463416768, -472780864, -480480672, -486499008, -491077984, -494679840, - -497635328, -500009344, -501677952, -502400032, -501986112, -500507040, -498200096, -495197920, -491626656, -487864256, - -484330592, -481093248, -478047040, -475357312, -473303776, -471816640, -470609760, -469671328, -469199392, -469178464, - -469423808, -469963360, -470982880, -472453376, -474128416, -475874848, -477738336, -479691488, -481542592, -483125312, - -484456192, -485635712, -486656832, -487370336, -487655968, -487559840, -487253824, -486930112, -486741120, -486666496, - -486328800, -485141792, -482780640, -479371488, -475091552, -469790496, -463164992, -455119968, -445847136, -435704576, - -425084736, -414195904, -402933440, -391173280, -379205888, -367657248, -357015936, -347438144, -338942720, -331559680, - -325298144, -320120032, -315899680, -312377280, -309302080, -306654752, -304536800, -302828480, -301160960, -299198144, - -296754848, -293748384, -290283968, -286679392, -283180064, -279745728, -276271616, -272813632, -269422752, -266000752, - -262489616, -258998336, -255647728, -252489856, -249618672, -247114160, -244883472, -242755840, -240685136, -238706224, - -236819664, -235067312, -233545296, -232212240, -230879728, -229424800, -227802912, -225917968, -223729680, -221395904, - -219032592, -216511984, -213710592, -210693920, -207425440, -203653920, -199291312, -194540000, -189516512, -184160688, - -178572928, -172972288, -167346416, -161570224, -155748928, -150033952, -144372112, -138797232, -133573480, -128747016, - -124037584, -119380760, -114943528, -110526152, -105692704, -100490960, -95319816, -90263032, -85287848, -80689552, - -76599128, -72645616, -68697464, -65106336, -61799212, -58229020, -54474680, -51085416, -47885128, -44364864, - -40817220, -37582036, -34133716, -30340722, -26945014, -23608898, -19145354, -14457397, -11223286, -7551090, - -877247, 5522254, 7752953, 11690901, 25166898, 40288404, 40982576, 30000884, 27510876, 38634840, - 47277388, 50246824, 68518152, 108822664, 141658752, 139589120, 116141288, 105104832, 118624312, 144289968, - 167411376, 181297008, 192171328, 222071824, 281490016, 330403776, 302403264, 188827168, 66482336, 14287209, - 28991566, 52163988, 55246700, 60433948, 89120032, 125949376, 137805104, 106897440, 40123048, }, + 152898688, 60698088, -183234576, -462790784, -646732928, -670164672, -552847104, -356891904, -137474384, 73971688, + 261569408, 416582848, 535674240, 619246208, 668629760, 685797824, 674825792, 641893568, 594021376, 537820096, + 477885440, 415636320, 350830656, 284640896, 220209952, 160159328, 104857328, 53330608, 4641786, -41893112, + -86666000, -129419176, -169462768, -206496656, -240911696, -273358560, -304294688, -333708768, -360983936, -385256416, + -406153568, -423995424, -439282816, -452334144, -463416768, -472780864, -480480672, -486499008, -491077984, -494679840, + -497635328, -500009344, -501677952, -502400032, -501986112, -500507040, -498200096, -495197920, -491626656, -487864256, + -484330592, -481093248, -478047040, -475357312, -473303776, -471816640, -470609760, -469671328, -469199392, -469178464, + -469423808, -469963360, -470982880, -472453376, -474128416, -475874848, -477738336, -479691488, -481542592, -483125312, + -484456192, -485635712, -486656832, -487370336, -487655968, -487559840, -487253824, -486930112, -486741120, -486666496, + -486328800, -485141792, -482780640, -479371488, -475091552, -469790496, -463164992, -455119968, -445847136, -435704576, + -425084736, -414195904, -402933440, -391173280, -379205888, -367657248, -357015936, -347438144, -338942720, -331559680, + -325298144, -320120032, -315899680, -312377280, -309302080, -306654752, -304536800, -302828480, -301160960, -299198144, + -296754848, -293748384, -290283968, -286679392, -283180064, -279745728, -276271616, -272813632, -269422752, -266000752, + -262489616, -258998336, -255647728, -252489856, -249618672, -247114160, -244883472, -242755840, -240685136, -238706224, + -236819664, -235067312, -233545296, -232212240, -230879728, -229424800, -227802912, -225917968, -223729680, -221395904, + -219032592, -216511984, -213710592, -210693920, -207425440, -203653920, -199291312, -194540000, -189516512, -184160688, + -178572928, -172972288, -167346416, -161570224, -155748928, -150033952, -144372112, -138797232, -133573480, -128747016, + -124037584, -119380760, -114943528, -110526152, -105692704, -100490960, -95319816, -90263032, -85287848, -80689552, + -76599128, -72645616, -68697464, -65106336, -61799212, -58229020, -54474680, -51085416, -47885128, -44364864, + -40817220, -37582036, -34133716, -30340722, -26945014, -23608898, -19145354, -14457397, -11223286, -7551090, + -877247, 5522254, 7752953, 11690901, 25166898, 40288404, 40982576, 30000884, 27510876, 38634840, + 47277388, 50246824, 68518152, 108822664, 141658752, 139589120, 116141288, 105104832, 118624312, 144289968, + 167411376, 181297008, 192171328, 222071824, 281490016, 330403776, 302403264, 188827168, 66482336, 14287209, + 28991566, 52163988, 55246700, 60433948, 89120032, 125949376, 137805104, 106897440, 40123048, }, { -75367016, - -152898688, -60698088, 183234576, 462790784, 646732928, 670164672, 552847104, 356891904, 137474384, -73971688, - -261569408, -416582848, -535674240, -619246208, -668629760, -685797824, -674825792, -641893568, -594021376, -537820096, - -477885440, -415636320, -350830656, -284640896, -220209952, -160159328, -104857328, -53330608, -4641786, 41893112, - 86666000, 129419176, 169462768, 206496656, 240911696, 273358560, 304294688, 333708768, 360983936, 385256416, - 406153568, 423995424, 439282816, 452334144, 463416768, 472780864, 480480672, 486499008, 491077984, 494679840, - 497635328, 500009344, 501677952, 502400032, 501986112, 500507040, 498200096, 495197920, 491626656, 487864256, - 484330592, 481093248, 478047040, 475357312, 473303776, 471816640, 470609760, 469671328, 469199392, 469178464, - 469423808, 469963360, 470982880, 472453376, 474128416, 475874848, 477738336, 479691488, 481542592, 483125312, - 484456192, 485635712, 486656832, 487370336, 487655968, 487559840, 487253824, 486930112, 486741120, 486666496, - 486328800, 485141792, 482780640, 479371488, 475091552, 469790496, 463164992, 455119968, 445847136, 435704576, - 425084736, 414195904, 402933440, 391173280, 379205888, 367657248, 357015936, 347438144, 338942720, 331559680, - 325298144, 320120032, 315899680, 312377280, 309302080, 306654752, 304536800, 302828480, 301160960, 299198144, - 296754848, 293748384, 290283968, 286679392, 283180064, 279745728, 276271616, 272813632, 269422752, 266000752, - 262489616, 258998336, 255647728, 252489856, 249618672, 247114160, 244883472, 242755840, 240685136, 238706224, - 236819664, 235067312, 233545296, 232212240, 230879728, 229424800, 227802912, 225917968, 223729680, 221395904, - 219032592, 216511984, 213710592, 210693920, 207425440, 203653920, 199291312, 194540000, 189516512, 184160688, - 178572928, 172972288, 167346416, 161570224, 155748928, 150033952, 144372112, 138797232, 133573480, 128747016, - 124037584, 119380760, 114943528, 110526152, 105692704, 100490960, 95319816, 90263032, 85287848, 80689552, - 76599128, 72645616, 68697464, 65106336, 61799212, 58229020, 54474680, 51085416, 47885128, 44364864, - 40817220, 37582036, 34133716, 30340722, 26945014, 23608898, 19145354, 14457397, 11223286, 7551090, - 877247, -5522254, -7752953, -11690901, -25166898, -40288404, -40982576, -30000884, -27510876, -38634840, - -47277388, -50246824, -68518152, -108822664, -141658752, -139589120, -116141288, -105104832, -118624312, -144289968, - -167411376, -181297008, -192171328, -222071824, -281490016, -330403776, -302403264, -188827168, -66482336, -14287209, - -28991566, -52163988, -55246700, -60433948, -89120032, -125949376, -137805104, -106897440, -40123048, }, + -152898688, -60698088, 183234576, 462790784, 646732928, 670164672, 552847104, 356891904, 137474384, -73971688, + -261569408, -416582848, -535674240, -619246208, -668629760, -685797824, -674825792, -641893568, -594021376, -537820096, + -477885440, -415636320, -350830656, -284640896, -220209952, -160159328, -104857328, -53330608, -4641786, 41893112, + 86666000, 129419176, 169462768, 206496656, 240911696, 273358560, 304294688, 333708768, 360983936, 385256416, + 406153568, 423995424, 439282816, 452334144, 463416768, 472780864, 480480672, 486499008, 491077984, 494679840, + 497635328, 500009344, 501677952, 502400032, 501986112, 500507040, 498200096, 495197920, 491626656, 487864256, + 484330592, 481093248, 478047040, 475357312, 473303776, 471816640, 470609760, 469671328, 469199392, 469178464, + 469423808, 469963360, 470982880, 472453376, 474128416, 475874848, 477738336, 479691488, 481542592, 483125312, + 484456192, 485635712, 486656832, 487370336, 487655968, 487559840, 487253824, 486930112, 486741120, 486666496, + 486328800, 485141792, 482780640, 479371488, 475091552, 469790496, 463164992, 455119968, 445847136, 435704576, + 425084736, 414195904, 402933440, 391173280, 379205888, 367657248, 357015936, 347438144, 338942720, 331559680, + 325298144, 320120032, 315899680, 312377280, 309302080, 306654752, 304536800, 302828480, 301160960, 299198144, + 296754848, 293748384, 290283968, 286679392, 283180064, 279745728, 276271616, 272813632, 269422752, 266000752, + 262489616, 258998336, 255647728, 252489856, 249618672, 247114160, 244883472, 242755840, 240685136, 238706224, + 236819664, 235067312, 233545296, 232212240, 230879728, 229424800, 227802912, 225917968, 223729680, 221395904, + 219032592, 216511984, 213710592, 210693920, 207425440, 203653920, 199291312, 194540000, 189516512, 184160688, + 178572928, 172972288, 167346416, 161570224, 155748928, 150033952, 144372112, 138797232, 133573480, 128747016, + 124037584, 119380760, 114943528, 110526152, 105692704, 100490960, 95319816, 90263032, 85287848, 80689552, + 76599128, 72645616, 68697464, 65106336, 61799212, 58229020, 54474680, 51085416, 47885128, 44364864, + 40817220, 37582036, 34133716, 30340722, 26945014, 23608898, 19145354, 14457397, 11223286, 7551090, + 877247, -5522254, -7752953, -11690901, -25166898, -40288404, -40982576, -30000884, -27510876, -38634840, + -47277388, -50246824, -68518152, -108822664, -141658752, -139589120, -116141288, -105104832, -118624312, -144289968, + -167411376, -181297008, -192171328, -222071824, -281490016, -330403776, -302403264, -188827168, -66482336, -14287209, + -28991566, -52163988, -55246700, -60433948, -89120032, -125949376, -137805104, -106897440, -40123048, }, }, { { -13802414, - -47165184, -74663712, -61562988, -5680631, 44969380, 48283484, 14860050, -17733384, -32172526, -32605782, - -20424180, 4682051, 29864518, 39075612, 35302484, 35977332, 47849692, 60231548, 62271120, 54360864, - 41108744, 23409720, 1344325, -21242908, -39104604, -50457276, -57920320, -65591668, -75411576, -85669032, - -93073016, -96052648, -95194192, -91170344, -84228600, -75784160, -68624448, -64906084, -64931316, -67952824, - -73216848, -80197776, -88596584, -98254896, -108864536, -120063128, -131917240, -144824688, -158827888, -173410384, - -187899456, -201657312, -214070304, -224739536, -233464752, -239878224, -243509072, -244260688, -242253872, -237237344, - -228833168, -217214752, -202791168, -185459904, -165003520, -141917536, -117023360, -90644744, -62943284, -34586836, - -6352794, 21360482, 47988208, 72470056, 94116152, 113059648, 129223216, 141668960, 149715584, 154010544, - 155682896, 154889408, 151030912, 144291568, 136228304, 128406640, 120784680, 112138376, 102228272, 92739080, - 85502600, 80518824, 76525576, 72917808, 70152384, 68733432, 68791952, 70391296, 73414416, 77299744, - 81420768, 85580448, 89894200, 94476936, 99248640, 103607496, 106430904, 106961328, 105525200, 102881648, - 99245416, 94438816, 88469880, 81362248, 72924784, 63197760, 52652540, 41703060, 30578556, 19728932, - 9671193, 468151, -7982197, -15341086, -21146272, -25388626, -28208808, -29520920, -29410862, -28273770, - -26246546, -23247584, -19720342, -16474958, -13775571, -11426224, -9436580, -7648263, -5215701, -1505386, - 3038689, 7768522, 12746926, 18064096, 23278186, 28182502, 33059438, 37783900, 41834592, 45306000, - 48689896, 51856900, 54507428, 57112328, 60180008, 63370632, 66406636, 69755104, 73511048, 76987824, - 80063024, 83345984, 86687472, 89292904, 91239600, 93041336, 94253592, 94427000, 94436664, 95038496, - 95600600, 95852936, 96855272, 98945848, 101201776, 103691784, 107325328, 111333608, 114234856, 116669568, - 119715768, 122031832, 122400664, 122425360, 123050280, 122258928, 119496192, 117220392, 115557168, 112020800, - 107722072, 105553656, 102967544, 96880504, 92161944, 92340184, 89240832, 78376176, 72368592, 77343768, - 74270184, 53761180, 44733160, 64812668, 69371240, 11631308, -66325568, -77721728, -18441516, 31005906, - 32542968, 30531848, 48058000, 36233416, -32217086, -97196184, -92901752, -39170100, -446140, 4465156, - 5751498, 25180856, 52560736, 61572652, 29836600, -35614404, -84488984, -65874060, 5120138, 56609280, - 47454020, 10870025, -4068408, 2501819, 12885, -17770964, -29529510, -23487028, -8164196, }, + -47165184, -74663712, -61562988, -5680631, 44969380, 48283484, 14860050, -17733384, -32172526, -32605782, + -20424180, 4682051, 29864518, 39075612, 35302484, 35977332, 47849692, 60231548, 62271120, 54360864, + 41108744, 23409720, 1344325, -21242908, -39104604, -50457276, -57920320, -65591668, -75411576, -85669032, + -93073016, -96052648, -95194192, -91170344, -84228600, -75784160, -68624448, -64906084, -64931316, -67952824, + -73216848, -80197776, -88596584, -98254896, -108864536, -120063128, -131917240, -144824688, -158827888, -173410384, + -187899456, -201657312, -214070304, -224739536, -233464752, -239878224, -243509072, -244260688, -242253872, -237237344, + -228833168, -217214752, -202791168, -185459904, -165003520, -141917536, -117023360, -90644744, -62943284, -34586836, + -6352794, 21360482, 47988208, 72470056, 94116152, 113059648, 129223216, 141668960, 149715584, 154010544, + 155682896, 154889408, 151030912, 144291568, 136228304, 128406640, 120784680, 112138376, 102228272, 92739080, + 85502600, 80518824, 76525576, 72917808, 70152384, 68733432, 68791952, 70391296, 73414416, 77299744, + 81420768, 85580448, 89894200, 94476936, 99248640, 103607496, 106430904, 106961328, 105525200, 102881648, + 99245416, 94438816, 88469880, 81362248, 72924784, 63197760, 52652540, 41703060, 30578556, 19728932, + 9671193, 468151, -7982197, -15341086, -21146272, -25388626, -28208808, -29520920, -29410862, -28273770, + -26246546, -23247584, -19720342, -16474958, -13775571, -11426224, -9436580, -7648263, -5215701, -1505386, + 3038689, 7768522, 12746926, 18064096, 23278186, 28182502, 33059438, 37783900, 41834592, 45306000, + 48689896, 51856900, 54507428, 57112328, 60180008, 63370632, 66406636, 69755104, 73511048, 76987824, + 80063024, 83345984, 86687472, 89292904, 91239600, 93041336, 94253592, 94427000, 94436664, 95038496, + 95600600, 95852936, 96855272, 98945848, 101201776, 103691784, 107325328, 111333608, 114234856, 116669568, + 119715768, 122031832, 122400664, 122425360, 123050280, 122258928, 119496192, 117220392, 115557168, 112020800, + 107722072, 105553656, 102967544, 96880504, 92161944, 92340184, 89240832, 78376176, 72368592, 77343768, + 74270184, 53761180, 44733160, 64812668, 69371240, 11631308, -66325568, -77721728, -18441516, 31005906, + 32542968, 30531848, 48058000, 36233416, -32217086, -97196184, -92901752, -39170100, -446140, 4465156, + 5751498, 25180856, 52560736, 61572652, 29836600, -35614404, -84488984, -65874060, 5120138, 56609280, + 47454020, 10870025, -4068408, 2501819, 12885, -17770964, -29529510, -23487028, -8164196, }, { -13802414, - -47165184, -74663712, -61562988, -5680631, 44969380, 48283484, 14860050, -17733384, -32172526, -32605782, - -20424180, 4682051, 29864518, 39075612, 35302484, 35977332, 47849692, 60231548, 62271120, 54360864, - 41108744, 23409720, 1344325, -21242908, -39104604, -50457276, -57920320, -65591668, -75411576, -85669032, - -93073016, -96052648, -95194192, -91170344, -84228600, -75784160, -68624448, -64906084, -64931316, -67952824, - -73216848, -80197776, -88596584, -98254896, -108864536, -120063128, -131917240, -144824688, -158827888, -173410384, - -187899456, -201657312, -214070304, -224739536, -233464752, -239878224, -243509072, -244260688, -242253872, -237237344, - -228833168, -217214752, -202791168, -185459904, -165003520, -141917536, -117023360, -90644744, -62943284, -34586836, - -6352794, 21360482, 47988208, 72470056, 94116152, 113059648, 129223216, 141668960, 149715584, 154010544, - 155682896, 154889408, 151030912, 144291568, 136228304, 128406640, 120784680, 112138376, 102228272, 92739080, - 85502600, 80518824, 76525576, 72917808, 70152384, 68733432, 68791952, 70391296, 73414416, 77299744, - 81420768, 85580448, 89894200, 94476936, 99248640, 103607496, 106430904, 106961328, 105525200, 102881648, - 99245416, 94438816, 88469880, 81362248, 72924784, 63197760, 52652540, 41703060, 30578556, 19728932, - 9671193, 468151, -7982197, -15341086, -21146272, -25388626, -28208808, -29520920, -29410862, -28273770, - -26246546, -23247584, -19720342, -16474958, -13775571, -11426224, -9436580, -7648263, -5215701, -1505386, - 3038689, 7768522, 12746926, 18064096, 23278186, 28182502, 33059438, 37783900, 41834592, 45306000, - 48689896, 51856900, 54507428, 57112328, 60180008, 63370632, 66406636, 69755104, 73511048, 76987824, - 80063024, 83345984, 86687472, 89292904, 91239600, 93041336, 94253592, 94427000, 94436664, 95038496, - 95600600, 95852936, 96855272, 98945848, 101201776, 103691784, 107325328, 111333608, 114234856, 116669568, - 119715768, 122031832, 122400664, 122425360, 123050280, 122258928, 119496192, 117220392, 115557168, 112020800, - 107722072, 105553656, 102967544, 96880504, 92161944, 92340184, 89240832, 78376176, 72368592, 77343768, - 74270184, 53761180, 44733160, 64812668, 69371240, 11631308, -66325568, -77721728, -18441516, 31005906, - 32542968, 30531848, 48058000, 36233416, -32217086, -97196184, -92901752, -39170100, -446140, 4465156, - 5751498, 25180856, 52560736, 61572652, 29836600, -35614404, -84488984, -65874060, 5120138, 56609280, - 47454020, 10870025, -4068408, 2501819, 12885, -17770964, -29529510, -23487028, -8164196, }, + -47165184, -74663712, -61562988, -5680631, 44969380, 48283484, 14860050, -17733384, -32172526, -32605782, + -20424180, 4682051, 29864518, 39075612, 35302484, 35977332, 47849692, 60231548, 62271120, 54360864, + 41108744, 23409720, 1344325, -21242908, -39104604, -50457276, -57920320, -65591668, -75411576, -85669032, + -93073016, -96052648, -95194192, -91170344, -84228600, -75784160, -68624448, -64906084, -64931316, -67952824, + -73216848, -80197776, -88596584, -98254896, -108864536, -120063128, -131917240, -144824688, -158827888, -173410384, + -187899456, -201657312, -214070304, -224739536, -233464752, -239878224, -243509072, -244260688, -242253872, -237237344, + -228833168, -217214752, -202791168, -185459904, -165003520, -141917536, -117023360, -90644744, -62943284, -34586836, + -6352794, 21360482, 47988208, 72470056, 94116152, 113059648, 129223216, 141668960, 149715584, 154010544, + 155682896, 154889408, 151030912, 144291568, 136228304, 128406640, 120784680, 112138376, 102228272, 92739080, + 85502600, 80518824, 76525576, 72917808, 70152384, 68733432, 68791952, 70391296, 73414416, 77299744, + 81420768, 85580448, 89894200, 94476936, 99248640, 103607496, 106430904, 106961328, 105525200, 102881648, + 99245416, 94438816, 88469880, 81362248, 72924784, 63197760, 52652540, 41703060, 30578556, 19728932, + 9671193, 468151, -7982197, -15341086, -21146272, -25388626, -28208808, -29520920, -29410862, -28273770, + -26246546, -23247584, -19720342, -16474958, -13775571, -11426224, -9436580, -7648263, -5215701, -1505386, + 3038689, 7768522, 12746926, 18064096, 23278186, 28182502, 33059438, 37783900, 41834592, 45306000, + 48689896, 51856900, 54507428, 57112328, 60180008, 63370632, 66406636, 69755104, 73511048, 76987824, + 80063024, 83345984, 86687472, 89292904, 91239600, 93041336, 94253592, 94427000, 94436664, 95038496, + 95600600, 95852936, 96855272, 98945848, 101201776, 103691784, 107325328, 111333608, 114234856, 116669568, + 119715768, 122031832, 122400664, 122425360, 123050280, 122258928, 119496192, 117220392, 115557168, 112020800, + 107722072, 105553656, 102967544, 96880504, 92161944, 92340184, 89240832, 78376176, 72368592, 77343768, + 74270184, 53761180, 44733160, 64812668, 69371240, 11631308, -66325568, -77721728, -18441516, 31005906, + 32542968, 30531848, 48058000, 36233416, -32217086, -97196184, -92901752, -39170100, -446140, 4465156, + 5751498, 25180856, 52560736, 61572652, 29836600, -35614404, -84488984, -65874060, 5120138, 56609280, + 47454020, 10870025, -4068408, 2501819, 12885, -17770964, -29529510, -23487028, -8164196, }, }, { { 2309082, - -7234873, -37503116, -60254632, -48443472, -12577275, 10147397, -2160369, -35461936, -59278600, -56376276, - -31350576, 663036, 27338540, 45566920, 60905320, 80859200, 106576392, 131569344, 148690160, 155850944, - 154335888, 145383568, 131094216, 115861040, 103072232, 91095184, 75183400, 53037476, 26343718, -2804077, - -34502548, -69370168, -106144752, -142213344, -175659328, -205599552, -230928576, -250000912, -261924288, -267514720, - -268606720, -266771696, -262940576, -257793056, -251920240, -245549184, -238379280, -229870944, -219733216, -208211968, - -196043248, -184249264, -173954224, -166030016, -160578624, -156850064, -153904784, -151193584, -148343344, -144844544, - -140460464, -135593184, -130700152, -125659472, -120207544, -114529064, -108797968, -102629320, -95687040, -88352312, - -81032072, -73312408, -64610804, -55194624, -45687716, -36024576, -25857314, -15668041, -6466074, 1472100, - 8615168, 14911053, 19421306, 21477520, 21525302, 20476256, 18765248, 16413218, 13526999, 10101763, - 5584531, -674310, -8546985, -17314624, -26815092, -37737732, -50499152, -64369748, -78146928, -91418912, - -104832632, -119221312, -134563472, -149674240, -163011728, -174004688, -183435904, -192284608, -200426256, -206776368, - -210514064, -211870192, -211941072, -211923344, -212261584, -212319568, -211092272, -208314496, -204679344, -201145136, - -198363072, -196546288, -195386656, -194201776, -192571840, -190721776, -189060160, -187668592, -186454192, -185362736, - -184190752, -182566704, -180319376, -177512608, -174104560, -169967968, -165173712, -159845792, -153880096, -147178336, - -139914464, -132272104, -124278640, -116138064, -108303504, -101065952, -94503776, -88835496, -84283904, -80689552, - -77795816, -75673032, -74375952, -73611448, -73210936, -73373608, -74038256, -74690552, -75090520, -75417480, - -75559752, -75160856, -74377024, -73704320, -73223288, -72819024, -72660648, -72660648, -72174776, -70936216, - -69346544, -67405216, -64584496, -60988536, -57164940, -52844740, -47495360, -41670308, -36098128, -30372398, - -24268176, -18858128, -14650133, -10692321, -6896107, -4516695, -3376918, -2033130, -936303, -1328756, - -1907502, -1430761, -2157147, -5008469, -6088116, -4768488, -7297150, -14030048, -15298137, -10843182, - -15439871, -29652454, -29951492, -12583717, -16997334, -66874788, -116566488, -107866496, -57849988, -30122216, - -35472672, -31592706, -14981920, -32949378, -91176784, -126126544, -98512592, -49836116, -31690954, -34299608, - -22535694, 5040681, 32548872, 61380452, 87701088, 79558360, 20339354, -48292076, -69578472, -44501768, - -23336704, -32086090, -45628660, -37964828, -24686936, -36248452, -67124968, -75412112, -33794412, }, + -7234873, -37503116, -60254632, -48443472, -12577275, 10147397, -2160369, -35461936, -59278600, -56376276, + -31350576, 663036, 27338540, 45566920, 60905320, 80859200, 106576392, 131569344, 148690160, 155850944, + 154335888, 145383568, 131094216, 115861040, 103072232, 91095184, 75183400, 53037476, 26343718, -2804077, + -34502548, -69370168, -106144752, -142213344, -175659328, -205599552, -230928576, -250000912, -261924288, -267514720, + -268606720, -266771696, -262940576, -257793056, -251920240, -245549184, -238379280, -229870944, -219733216, -208211968, + -196043248, -184249264, -173954224, -166030016, -160578624, -156850064, -153904784, -151193584, -148343344, -144844544, + -140460464, -135593184, -130700152, -125659472, -120207544, -114529064, -108797968, -102629320, -95687040, -88352312, + -81032072, -73312408, -64610804, -55194624, -45687716, -36024576, -25857314, -15668041, -6466074, 1472100, + 8615168, 14911053, 19421306, 21477520, 21525302, 20476256, 18765248, 16413218, 13526999, 10101763, + 5584531, -674310, -8546985, -17314624, -26815092, -37737732, -50499152, -64369748, -78146928, -91418912, + -104832632, -119221312, -134563472, -149674240, -163011728, -174004688, -183435904, -192284608, -200426256, -206776368, + -210514064, -211870192, -211941072, -211923344, -212261584, -212319568, -211092272, -208314496, -204679344, -201145136, + -198363072, -196546288, -195386656, -194201776, -192571840, -190721776, -189060160, -187668592, -186454192, -185362736, + -184190752, -182566704, -180319376, -177512608, -174104560, -169967968, -165173712, -159845792, -153880096, -147178336, + -139914464, -132272104, -124278640, -116138064, -108303504, -101065952, -94503776, -88835496, -84283904, -80689552, + -77795816, -75673032, -74375952, -73611448, -73210936, -73373608, -74038256, -74690552, -75090520, -75417480, + -75559752, -75160856, -74377024, -73704320, -73223288, -72819024, -72660648, -72660648, -72174776, -70936216, + -69346544, -67405216, -64584496, -60988536, -57164940, -52844740, -47495360, -41670308, -36098128, -30372398, + -24268176, -18858128, -14650133, -10692321, -6896107, -4516695, -3376918, -2033130, -936303, -1328756, + -1907502, -1430761, -2157147, -5008469, -6088116, -4768488, -7297150, -14030048, -15298137, -10843182, + -15439871, -29652454, -29951492, -12583717, -16997334, -66874788, -116566488, -107866496, -57849988, -30122216, + -35472672, -31592706, -14981920, -32949378, -91176784, -126126544, -98512592, -49836116, -31690954, -34299608, + -22535694, 5040681, 32548872, 61380452, 87701088, 79558360, 20339354, -48292076, -69578472, -44501768, + -23336704, -32086090, -45628660, -37964828, -24686936, -36248452, -67124968, -75412112, -33794412, }, { 2309082, - -7234873, -37503116, -60254632, -48443472, -12577275, 10147397, -2160369, -35461936, -59278600, -56376276, - -31350576, 663036, 27338540, 45566920, 60905320, 80859200, 106576392, 131569344, 148690160, 155850944, - 154335888, 145383568, 131094216, 115861040, 103072232, 91095184, 75183400, 53037476, 26343718, -2804077, - -34502548, -69370168, -106144752, -142213344, -175659328, -205599552, -230928576, -250000912, -261924288, -267514720, - -268606720, -266771696, -262940576, -257793056, -251920240, -245549184, -238379280, -229870944, -219733216, -208211968, - -196043248, -184249264, -173954224, -166030016, -160578624, -156850064, -153904784, -151193584, -148343344, -144844544, - -140460464, -135593184, -130700152, -125659472, -120207544, -114529064, -108797968, -102629320, -95687040, -88352312, - -81032072, -73312408, -64610804, -55194624, -45687716, -36024576, -25857314, -15668041, -6466074, 1472100, - 8615168, 14911053, 19421306, 21477520, 21525302, 20476256, 18765248, 16413218, 13526999, 10101763, - 5584531, -674310, -8546985, -17314624, -26815092, -37737732, -50499152, -64369748, -78146928, -91418912, - -104832632, -119221312, -134563472, -149674240, -163011728, -174004688, -183435904, -192284608, -200426256, -206776368, - -210514064, -211870192, -211941072, -211923344, -212261584, -212319568, -211092272, -208314496, -204679344, -201145136, - -198363072, -196546288, -195386656, -194201776, -192571840, -190721776, -189060160, -187668592, -186454192, -185362736, - -184190752, -182566704, -180319376, -177512608, -174104560, -169967968, -165173712, -159845792, -153880096, -147178336, - -139914464, -132272104, -124278640, -116138064, -108303504, -101065952, -94503776, -88835496, -84283904, -80689552, - -77795816, -75673032, -74375952, -73611448, -73210936, -73373608, -74038256, -74690552, -75090520, -75417480, - -75559752, -75160856, -74377024, -73704320, -73223288, -72819024, -72660648, -72660648, -72174776, -70936216, - -69346544, -67405216, -64584496, -60988536, -57164940, -52844740, -47495360, -41670308, -36098128, -30372398, - -24268176, -18858128, -14650133, -10692321, -6896107, -4516695, -3376918, -2033130, -936303, -1328756, - -1907502, -1430761, -2157147, -5008469, -6088116, -4768488, -7297150, -14030048, -15298137, -10843182, - -15439871, -29652454, -29951492, -12583717, -16997334, -66874788, -116566488, -107866496, -57849988, -30122216, - -35472672, -31592706, -14981920, -32949378, -91176784, -126126544, -98512592, -49836116, -31690954, -34299608, - -22535694, 5040681, 32548872, 61380452, 87701088, 79558360, 20339354, -48292076, -69578472, -44501768, - -23336704, -32086090, -45628660, -37964828, -24686936, -36248452, -67124968, -75412112, -33794412, }, + -7234873, -37503116, -60254632, -48443472, -12577275, 10147397, -2160369, -35461936, -59278600, -56376276, + -31350576, 663036, 27338540, 45566920, 60905320, 80859200, 106576392, 131569344, 148690160, 155850944, + 154335888, 145383568, 131094216, 115861040, 103072232, 91095184, 75183400, 53037476, 26343718, -2804077, + -34502548, -69370168, -106144752, -142213344, -175659328, -205599552, -230928576, -250000912, -261924288, -267514720, + -268606720, -266771696, -262940576, -257793056, -251920240, -245549184, -238379280, -229870944, -219733216, -208211968, + -196043248, -184249264, -173954224, -166030016, -160578624, -156850064, -153904784, -151193584, -148343344, -144844544, + -140460464, -135593184, -130700152, -125659472, -120207544, -114529064, -108797968, -102629320, -95687040, -88352312, + -81032072, -73312408, -64610804, -55194624, -45687716, -36024576, -25857314, -15668041, -6466074, 1472100, + 8615168, 14911053, 19421306, 21477520, 21525302, 20476256, 18765248, 16413218, 13526999, 10101763, + 5584531, -674310, -8546985, -17314624, -26815092, -37737732, -50499152, -64369748, -78146928, -91418912, + -104832632, -119221312, -134563472, -149674240, -163011728, -174004688, -183435904, -192284608, -200426256, -206776368, + -210514064, -211870192, -211941072, -211923344, -212261584, -212319568, -211092272, -208314496, -204679344, -201145136, + -198363072, -196546288, -195386656, -194201776, -192571840, -190721776, -189060160, -187668592, -186454192, -185362736, + -184190752, -182566704, -180319376, -177512608, -174104560, -169967968, -165173712, -159845792, -153880096, -147178336, + -139914464, -132272104, -124278640, -116138064, -108303504, -101065952, -94503776, -88835496, -84283904, -80689552, + -77795816, -75673032, -74375952, -73611448, -73210936, -73373608, -74038256, -74690552, -75090520, -75417480, + -75559752, -75160856, -74377024, -73704320, -73223288, -72819024, -72660648, -72660648, -72174776, -70936216, + -69346544, -67405216, -64584496, -60988536, -57164940, -52844740, -47495360, -41670308, -36098128, -30372398, + -24268176, -18858128, -14650133, -10692321, -6896107, -4516695, -3376918, -2033130, -936303, -1328756, + -1907502, -1430761, -2157147, -5008469, -6088116, -4768488, -7297150, -14030048, -15298137, -10843182, + -15439871, -29652454, -29951492, -12583717, -16997334, -66874788, -116566488, -107866496, -57849988, -30122216, + -35472672, -31592706, -14981920, -32949378, -91176784, -126126544, -98512592, -49836116, -31690954, -34299608, + -22535694, 5040681, 32548872, 61380452, 87701088, 79558360, 20339354, -48292076, -69578472, -44501768, + -23336704, -32086090, -45628660, -37964828, -24686936, -36248452, -67124968, -75412112, -33794412, }, }, }; -const Word32 CRendBin_FOA_HRIR_coeff_re_32kHz_fx[4][BINAURAL_CHANNELS][160] ={ +const Word32 CRendBin_FOA_HRIR_coeff_re_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160] ={ { { 542228352, - 417208832, 222760096, 30935576, -113568600, -207234320, -268353856, -310141728, -330854752, -322319584, -281589344, - -214183040, -130122480, -39506720, 49225692, 129657008, 198014640, 253733776, 298617792, 334531776, 361652896, - 379196768, 387664832, 389500928, 387146208, 381105856, 370570304, 355496576, 337296672, 317647744, 297440448, - 277059744, 257007616, 237758112, 219289760, 201218144, 183405312, 166167456, 149848720, 134395440, 119433376, - 104629696, 89868968, 75175888, 60615948, 46289012, 32301376, 18699750, 5448166, -7515656, -20201378, - -32552094, -44502304, -56018184, -67078800, -77631536, -87627000, -97096328, -106124880, -114741128, -122914984, - -130664720, -138069776, -145147344, -151816896, -158036544, -163882000, -169452560, -174786912, -179930672, -184988544, - -190046928, -195118224, -200214736, -205414320, -210807200, -216429840, -222309648, -228507824, -235063568, -241926912, - -249005024, -256238816, -263574096, -270871232, -277919296, -284573248, -290850880, -296859552, -302651328, -308166048, - -313277056, -317860320, -321860544, -325323360, -328355616, -331044256, -333434432, -335579232, -337548992, -339382944, - -341105760, -342814624, -344658784, -346716608, -348950528, -351314912, -353855904, -356685216, -359889280, -363451392, - -367210592, -370939136, -374508800, -377934048, -381254048, -384445728, -387496768, -390440992, -393292288, -396038944, - -398732960, -401455968, -404184864, -406817696, -409322208, -411727392, -414018208, -416174816, -418247136, -420258240, - -422126016, -423831680, -425517984, -427292864, -429124128, -431028960, -433117376, -435350240, -437575552, -439858880, - -442404704, -445151360, -447922144, -450866336, -454171328, -457579904, -460929984, -464710624, -469181152, -473900800, - -479337152, -486478592, -491026976, -480117760, -442511552, -384772160, -330747904, -299777440, -290169600, }, + 417208832, 222760096, 30935576, -113568600, -207234320, -268353856, -310141728, -330854752, -322319584, -281589344, + -214183040, -130122480, -39506720, 49225692, 129657008, 198014640, 253733776, 298617792, 334531776, 361652896, + 379196768, 387664832, 389500928, 387146208, 381105856, 370570304, 355496576, 337296672, 317647744, 297440448, + 277059744, 257007616, 237758112, 219289760, 201218144, 183405312, 166167456, 149848720, 134395440, 119433376, + 104629696, 89868968, 75175888, 60615948, 46289012, 32301376, 18699750, 5448166, -7515656, -20201378, + -32552094, -44502304, -56018184, -67078800, -77631536, -87627000, -97096328, -106124880, -114741128, -122914984, + -130664720, -138069776, -145147344, -151816896, -158036544, -163882000, -169452560, -174786912, -179930672, -184988544, + -190046928, -195118224, -200214736, -205414320, -210807200, -216429840, -222309648, -228507824, -235063568, -241926912, + -249005024, -256238816, -263574096, -270871232, -277919296, -284573248, -290850880, -296859552, -302651328, -308166048, + -313277056, -317860320, -321860544, -325323360, -328355616, -331044256, -333434432, -335579232, -337548992, -339382944, + -341105760, -342814624, -344658784, -346716608, -348950528, -351314912, -353855904, -356685216, -359889280, -363451392, + -367210592, -370939136, -374508800, -377934048, -381254048, -384445728, -387496768, -390440992, -393292288, -396038944, + -398732960, -401455968, -404184864, -406817696, -409322208, -411727392, -414018208, -416174816, -418247136, -420258240, + -422126016, -423831680, -425517984, -427292864, -429124128, -431028960, -433117376, -435350240, -437575552, -439858880, + -442404704, -445151360, -447922144, -450866336, -454171328, -457579904, -460929984, -464710624, -469181152, -473900800, + -479337152, -486478592, -491026976, -480117760, -442511552, -384772160, -330747904, -299777440, -290169600, }, { 542228352, - 417208832, 222760096, 30935576, -113568600, -207234320, -268353856, -310141728, -330854752, -322319584, -281589344, - -214183040, -130122480, -39506720, 49225692, 129657008, 198014640, 253733776, 298617792, 334531776, 361652896, - 379196768, 387664832, 389500928, 387146208, 381105856, 370570304, 355496576, 337296672, 317647744, 297440448, - 277059744, 257007616, 237758112, 219289760, 201218144, 183405312, 166167456, 149848720, 134395440, 119433376, - 104629696, 89868968, 75175888, 60615948, 46289012, 32301376, 18699750, 5448166, -7515656, -20201378, - -32552094, -44502304, -56018184, -67078800, -77631536, -87627000, -97096328, -106124880, -114741128, -122914984, - -130664720, -138069776, -145147344, -151816896, -158036544, -163882000, -169452560, -174786912, -179930672, -184988544, - -190046928, -195118224, -200214736, -205414320, -210807200, -216429840, -222309648, -228507824, -235063568, -241926912, - -249005024, -256238816, -263574096, -270871232, -277919296, -284573248, -290850880, -296859552, -302651328, -308166048, - -313277056, -317860320, -321860544, -325323360, -328355616, -331044256, -333434432, -335579232, -337548992, -339382944, - -341105760, -342814624, -344658784, -346716608, -348950528, -351314912, -353855904, -356685216, -359889280, -363451392, - -367210592, -370939136, -374508800, -377934048, -381254048, -384445728, -387496768, -390440992, -393292288, -396038944, - -398732960, -401455968, -404184864, -406817696, -409322208, -411727392, -414018208, -416174816, -418247136, -420258240, - -422126016, -423831680, -425517984, -427292864, -429124128, -431028960, -433117376, -435350240, -437575552, -439858880, - -442404704, -445151360, -447922144, -450866336, -454171328, -457579904, -460929984, -464710624, -469181152, -473900800, - -479337152, -486478592, -491026976, -480117760, -442511552, -384772160, -330747904, -299777440, -290169600, }, + 417208832, 222760096, 30935576, -113568600, -207234320, -268353856, -310141728, -330854752, -322319584, -281589344, + -214183040, -130122480, -39506720, 49225692, 129657008, 198014640, 253733776, 298617792, 334531776, 361652896, + 379196768, 387664832, 389500928, 387146208, 381105856, 370570304, 355496576, 337296672, 317647744, 297440448, + 277059744, 257007616, 237758112, 219289760, 201218144, 183405312, 166167456, 149848720, 134395440, 119433376, + 104629696, 89868968, 75175888, 60615948, 46289012, 32301376, 18699750, 5448166, -7515656, -20201378, + -32552094, -44502304, -56018184, -67078800, -77631536, -87627000, -97096328, -106124880, -114741128, -122914984, + -130664720, -138069776, -145147344, -151816896, -158036544, -163882000, -169452560, -174786912, -179930672, -184988544, + -190046928, -195118224, -200214736, -205414320, -210807200, -216429840, -222309648, -228507824, -235063568, -241926912, + -249005024, -256238816, -263574096, -270871232, -277919296, -284573248, -290850880, -296859552, -302651328, -308166048, + -313277056, -317860320, -321860544, -325323360, -328355616, -331044256, -333434432, -335579232, -337548992, -339382944, + -341105760, -342814624, -344658784, -346716608, -348950528, -351314912, -353855904, -356685216, -359889280, -363451392, + -367210592, -370939136, -374508800, -377934048, -381254048, -384445728, -387496768, -390440992, -393292288, -396038944, + -398732960, -401455968, -404184864, -406817696, -409322208, -411727392, -414018208, -416174816, -418247136, -420258240, + -422126016, -423831680, -425517984, -427292864, -429124128, -431028960, -433117376, -435350240, -437575552, -439858880, + -442404704, -445151360, -447922144, -450866336, -454171328, -457579904, -460929984, -464710624, -469181152, -473900800, + -479337152, -486478592, -491026976, -480117760, -442511552, -384772160, -330747904, -299777440, -290169600, }, }, { { 67749352, - 219783680, 413881824, 505693216, 413422816, 164215392, -140707424, -402389056, -573466176, -653612416, -660346368, - -611244736, -521953408, -406601856, -276291488, -139582672, -4507032, 121427856, 232758240, 326858272, 404057088, - 467141056, 519165440, 560950656, 591515776, 610986496, 621836608, 627133952, 628743488, 627398080, 623321600, - 616330496, 606132096, 592982528, 577744000, 561221248, 543665536, 524797760, 504082048, 481199552, 456508864, - 430941984, 405336480, 380061120, 355244256, 330986272, 307298464, 284168448, 261772880, 240404352, 220141232, - 200755360, 181926224, 163439616, 145293904, 127723200, 111030272, 95366528, 80797464, 67489504, 55560232, - 44813152, 34916472, 25793426, 17500382, 9822053, 2378875, -4919348, -11912629, -18633178, -25326348, - -32058172, -38705172, -45339824, -52262236, -59613072, -67275296, -75201656, -83548392, -92396560, -101594768, - -110973904, -120557048, -130451576, -140654272, -151033056, -161435472, -171772928, -182076016, -192575600, -203677008, - -215695936, -228556688, -241831360, -255146832, -268460160, -281857760, -295178080, -307964192, -319747424, -330286208, - -339607360, -347886432, -355202400, -361324320, -365856064, -368671392, -370090880, -370577280, -370416224, -369777344, - -368903872, -368102848, -367618048, -367569728, -367946080, -368677312, -369823520, -371629024, -374272032, -377629088, - -381383424, -385236032, -388935584, -392324864, -395482208, -398631488, -401827488, -404948320, -408002560, -411121248, - -414235648, -417136352, -419830368, -422491104, -425155040, -427839936, -430786304, -434164288, -437787616, -441505984, - -445513728, -449924128, -454603488, -459719328, -465710816, -472510816, -479760736, -487769248, -496962624, -506955392, - -518123904, -532091680, -545398016, -543641408, -511176800, -451464416, -390454400, -352648480, -339506976, }, + 219783680, 413881824, 505693216, 413422816, 164215392, -140707424, -402389056, -573466176, -653612416, -660346368, + -611244736, -521953408, -406601856, -276291488, -139582672, -4507032, 121427856, 232758240, 326858272, 404057088, + 467141056, 519165440, 560950656, 591515776, 610986496, 621836608, 627133952, 628743488, 627398080, 623321600, + 616330496, 606132096, 592982528, 577744000, 561221248, 543665536, 524797760, 504082048, 481199552, 456508864, + 430941984, 405336480, 380061120, 355244256, 330986272, 307298464, 284168448, 261772880, 240404352, 220141232, + 200755360, 181926224, 163439616, 145293904, 127723200, 111030272, 95366528, 80797464, 67489504, 55560232, + 44813152, 34916472, 25793426, 17500382, 9822053, 2378875, -4919348, -11912629, -18633178, -25326348, + -32058172, -38705172, -45339824, -52262236, -59613072, -67275296, -75201656, -83548392, -92396560, -101594768, + -110973904, -120557048, -130451576, -140654272, -151033056, -161435472, -171772928, -182076016, -192575600, -203677008, + -215695936, -228556688, -241831360, -255146832, -268460160, -281857760, -295178080, -307964192, -319747424, -330286208, + -339607360, -347886432, -355202400, -361324320, -365856064, -368671392, -370090880, -370577280, -370416224, -369777344, + -368903872, -368102848, -367618048, -367569728, -367946080, -368677312, -369823520, -371629024, -374272032, -377629088, + -381383424, -385236032, -388935584, -392324864, -395482208, -398631488, -401827488, -404948320, -408002560, -411121248, + -414235648, -417136352, -419830368, -422491104, -425155040, -427839936, -430786304, -434164288, -437787616, -441505984, + -445513728, -449924128, -454603488, -459719328, -465710816, -472510816, -479760736, -487769248, -496962624, -506955392, + -518123904, -532091680, -545398016, -543641408, -511176800, -451464416, -390454400, -352648480, -339506976, }, { -67749352, - -219783680, -413881824, -505693216, -413422816, -164215392, 140707424, 402389056, 573466176, 653612416, 660346368, - 611244736, 521953408, 406601856, 276291488, 139582672, 4507032, -121427856, -232758240, -326858272, -404057088, - -467141056, -519165440, -560950656, -591515776, -610986496, -621836608, -627133952, -628743488, -627398080, -623321600, - -616330496, -606132096, -592982528, -577744000, -561221248, -543665536, -524797760, -504082048, -481199552, -456508864, - -430941984, -405336480, -380061120, -355244256, -330986272, -307298464, -284168448, -261772880, -240404352, -220141232, - -200755360, -181926224, -163439616, -145293904, -127723200, -111030272, -95366528, -80797464, -67489504, -55560232, - -44813152, -34916472, -25793426, -17500382, -9822053, -2378875, 4919348, 11912629, 18633178, 25326348, - 32058172, 38705172, 45339824, 52262236, 59613072, 67275296, 75201656, 83548392, 92396560, 101594768, - 110973904, 120557048, 130451576, 140654272, 151033056, 161435472, 171772928, 182076016, 192575600, 203677008, - 215695936, 228556688, 241831360, 255146832, 268460160, 281857760, 295178080, 307964192, 319747424, 330286208, - 339607360, 347886432, 355202400, 361324320, 365856064, 368671392, 370090880, 370577280, 370416224, 369777344, - 368903872, 368102848, 367618048, 367569728, 367946080, 368677312, 369823520, 371629024, 374272032, 377629088, - 381383424, 385236032, 388935584, 392324864, 395482208, 398631488, 401827488, 404948320, 408002560, 411121248, - 414235648, 417136352, 419830368, 422491104, 425155040, 427839936, 430786304, 434164288, 437787616, 441505984, - 445513728, 449924128, 454603488, 459719328, 465710816, 472510816, 479760736, 487769248, 496962624, 506955392, - 518123904, 532091680, 545398016, 543641408, 511176800, 451464416, 390454400, 352648480, 339506976, }, + -219783680, -413881824, -505693216, -413422816, -164215392, 140707424, 402389056, 573466176, 653612416, 660346368, + 611244736, 521953408, 406601856, 276291488, 139582672, 4507032, -121427856, -232758240, -326858272, -404057088, + -467141056, -519165440, -560950656, -591515776, -610986496, -621836608, -627133952, -628743488, -627398080, -623321600, + -616330496, -606132096, -592982528, -577744000, -561221248, -543665536, -524797760, -504082048, -481199552, -456508864, + -430941984, -405336480, -380061120, -355244256, -330986272, -307298464, -284168448, -261772880, -240404352, -220141232, + -200755360, -181926224, -163439616, -145293904, -127723200, -111030272, -95366528, -80797464, -67489504, -55560232, + -44813152, -34916472, -25793426, -17500382, -9822053, -2378875, 4919348, 11912629, 18633178, 25326348, + 32058172, 38705172, 45339824, 52262236, 59613072, 67275296, 75201656, 83548392, 92396560, 101594768, + 110973904, 120557048, 130451576, 140654272, 151033056, 161435472, 171772928, 182076016, 192575600, 203677008, + 215695936, 228556688, 241831360, 255146832, 268460160, 281857760, 295178080, 307964192, 319747424, 330286208, + 339607360, 347886432, 355202400, 361324320, 365856064, 368671392, 370090880, 370577280, 370416224, 369777344, + 368903872, 368102848, 367618048, 367569728, 367946080, 368677312, 369823520, 371629024, 374272032, 377629088, + 381383424, 385236032, 388935584, 392324864, 395482208, 398631488, 401827488, 404948320, 408002560, 411121248, + 414235648, 417136352, 419830368, 422491104, 425155040, 427839936, 430786304, 434164288, 437787616, 441505984, + 445513728, 449924128, 454603488, 459719328, 465710816, 472510816, 479760736, 487769248, 496962624, 506955392, + 518123904, 532091680, 545398016, 543641408, 511176800, 451464416, 390454400, 352648480, 339506976, }, }, { { 53941032, - 43702904, 4514011, -51625508, -76724224, -46684684, 5194763, 31938450, 24610700, 3203509, -19339164, - -40128416, -49972480, -40184788, -20243792, -8751533, -8460549, -4931696, 11458436, 35162896, 57057028, - 74803832, 88963272, 97172560, 96759704, 89472760, 80515608, 73936792, 69800736, 65049964, 56818660, - 45163192, 32460826, 20752746, 10919954, 4079145, 1846299, 4584878, 10595147, 17570174, 24138254, - 29859686, 34579856, 38158100, 40441948, 41324028, 40896140, 39342976, 36506684, 31771484, 24495810, - 14389751, 1512902, -13879187, -31491238, -51121920, -72550584, -95323576, -118918520, -143068048, -167566544, - -191847600, -215225104, -237401632, -258206992, -277008224, -292987648, -305829056, -315546400, -321864864, -324374176, - -323030944, -317938720, -309003584, -296401056, -280948320, -263374368, -243707184, -222131408, -199928576, -178637360, - -158576640, -139213856, -120889904, -105102144, -92734784, -82870320, -74046312, -66282084, -61039540, -59164784, - -59612536, -60572996, -61320860, -62394064, -64327336, -66911296, -69582768, -71866080, -73303816, -73477224, - -72325640, -70185672, -67324152, -63525788, -58201640, -50907172, -41873784, -32037772, -22395034, -13316546, - -4615479, 3850975, 11926587, 19372986, 25957172, 31324808, 35078072, 37015100, 37134824, 35510788, - 32312112, 27798638, 22127134, 15321759, 7548405, -763967, -9174050, -17416092, -25295210, -32601486, - -39150236, -44744968, -49178988, -52473764, -55037860, -57417272, -60014116, -63075352, -66614944, -70174400, - -73039144, -74910136, -76040784, -76593224, -76336064, -75163536, -73348376, -71009232, -67909872, -64094872, - -59985124, -55124832, -47452948, -35123168, -19442780, -5198521, 2906619, 4354560, 3023657, }, + 43702904, 4514011, -51625508, -76724224, -46684684, 5194763, 31938450, 24610700, 3203509, -19339164, + -40128416, -49972480, -40184788, -20243792, -8751533, -8460549, -4931696, 11458436, 35162896, 57057028, + 74803832, 88963272, 97172560, 96759704, 89472760, 80515608, 73936792, 69800736, 65049964, 56818660, + 45163192, 32460826, 20752746, 10919954, 4079145, 1846299, 4584878, 10595147, 17570174, 24138254, + 29859686, 34579856, 38158100, 40441948, 41324028, 40896140, 39342976, 36506684, 31771484, 24495810, + 14389751, 1512902, -13879187, -31491238, -51121920, -72550584, -95323576, -118918520, -143068048, -167566544, + -191847600, -215225104, -237401632, -258206992, -277008224, -292987648, -305829056, -315546400, -321864864, -324374176, + -323030944, -317938720, -309003584, -296401056, -280948320, -263374368, -243707184, -222131408, -199928576, -178637360, + -158576640, -139213856, -120889904, -105102144, -92734784, -82870320, -74046312, -66282084, -61039540, -59164784, + -59612536, -60572996, -61320860, -62394064, -64327336, -66911296, -69582768, -71866080, -73303816, -73477224, + -72325640, -70185672, -67324152, -63525788, -58201640, -50907172, -41873784, -32037772, -22395034, -13316546, + -4615479, 3850975, 11926587, 19372986, 25957172, 31324808, 35078072, 37015100, 37134824, 35510788, + 32312112, 27798638, 22127134, 15321759, 7548405, -763967, -9174050, -17416092, -25295210, -32601486, + -39150236, -44744968, -49178988, -52473764, -55037860, -57417272, -60014116, -63075352, -66614944, -70174400, + -73039144, -74910136, -76040784, -76593224, -76336064, -75163536, -73348376, -71009232, -67909872, -64094872, + -59985124, -55124832, -47452948, -35123168, -19442780, -5198521, 2906619, 4354560, 3023657, }, { 53941032, - 43702904, 4514011, -51625508, -76724224, -46684684, 5194763, 31938450, 24610700, 3203509, -19339164, - -40128416, -49972480, -40184788, -20243792, -8751533, -8460549, -4931696, 11458436, 35162896, 57057028, - 74803832, 88963272, 97172560, 96759704, 89472760, 80515608, 73936792, 69800736, 65049964, 56818660, - 45163192, 32460826, 20752746, 10919954, 4079145, 1846299, 4584878, 10595147, 17570174, 24138254, - 29859686, 34579856, 38158100, 40441948, 41324028, 40896140, 39342976, 36506684, 31771484, 24495810, - 14389751, 1512902, -13879187, -31491238, -51121920, -72550584, -95323576, -118918520, -143068048, -167566544, - -191847600, -215225104, -237401632, -258206992, -277008224, -292987648, -305829056, -315546400, -321864864, -324374176, - -323030944, -317938720, -309003584, -296401056, -280948320, -263374368, -243707184, -222131408, -199928576, -178637360, - -158576640, -139213856, -120889904, -105102144, -92734784, -82870320, -74046312, -66282084, -61039540, -59164784, - -59612536, -60572996, -61320860, -62394064, -64327336, -66911296, -69582768, -71866080, -73303816, -73477224, - -72325640, -70185672, -67324152, -63525788, -58201640, -50907172, -41873784, -32037772, -22395034, -13316546, - -4615479, 3850975, 11926587, 19372986, 25957172, 31324808, 35078072, 37015100, 37134824, 35510788, - 32312112, 27798638, 22127134, 15321759, 7548405, -763967, -9174050, -17416092, -25295210, -32601486, - -39150236, -44744968, -49178988, -52473764, -55037860, -57417272, -60014116, -63075352, -66614944, -70174400, - -73039144, -74910136, -76040784, -76593224, -76336064, -75163536, -73348376, -71009232, -67909872, -64094872, - -59985124, -55124832, -47452948, -35123168, -19442780, -5198521, 2906619, 4354560, 3023657, }, + 43702904, 4514011, -51625508, -76724224, -46684684, 5194763, 31938450, 24610700, 3203509, -19339164, + -40128416, -49972480, -40184788, -20243792, -8751533, -8460549, -4931696, 11458436, 35162896, 57057028, + 74803832, 88963272, 97172560, 96759704, 89472760, 80515608, 73936792, 69800736, 65049964, 56818660, + 45163192, 32460826, 20752746, 10919954, 4079145, 1846299, 4584878, 10595147, 17570174, 24138254, + 29859686, 34579856, 38158100, 40441948, 41324028, 40896140, 39342976, 36506684, 31771484, 24495810, + 14389751, 1512902, -13879187, -31491238, -51121920, -72550584, -95323576, -118918520, -143068048, -167566544, + -191847600, -215225104, -237401632, -258206992, -277008224, -292987648, -305829056, -315546400, -321864864, -324374176, + -323030944, -317938720, -309003584, -296401056, -280948320, -263374368, -243707184, -222131408, -199928576, -178637360, + -158576640, -139213856, -120889904, -105102144, -92734784, -82870320, -74046312, -66282084, -61039540, -59164784, + -59612536, -60572996, -61320860, -62394064, -64327336, -66911296, -69582768, -71866080, -73303816, -73477224, + -72325640, -70185672, -67324152, -63525788, -58201640, -50907172, -41873784, -32037772, -22395034, -13316546, + -4615479, 3850975, 11926587, 19372986, 25957172, 31324808, 35078072, 37015100, 37134824, 35510788, + 32312112, 27798638, 22127134, 15321759, 7548405, -763967, -9174050, -17416092, -25295210, -32601486, + -39150236, -44744968, -49178988, -52473764, -55037860, -57417272, -60014116, -63075352, -66614944, -70174400, + -73039144, -74910136, -76040784, -76593224, -76336064, -75163536, -73348376, -71009232, -67909872, -64094872, + -59985124, -55124832, -47452948, -35123168, -19442780, -5198521, 2906619, 4354560, 3023657, }, }, { { 45164804, - 59395104, 59016608, 28177670, -10354629, -20856362, 2749853, 31099858, 32979444, 4588636, -34200288, - -62302260, -71905808, -67962488, -60489784, -56045028, -52616572, -42487964, -20854214, 9752260, 43591772, - 76899776, 107454176, 132692480, 151896352, 168645120, 187650336, 209389312, 230131856, 246830704, 259533056, - 268856352, 273493312, 271391456, 262039168, 246406032, 225373584, 199436800, 169846096, 139058160, 109621528, - 82890720, 58987080, 37622840, 18567144, 1453310, -14353781, -29368986, -43517684, -56170120, -66573068, - -74185896, -78808352, -80779208, -81148576, -81333256, -82338280, -84396648, -87398288, -91276648, -95767032, - -100239704, -104238320, -107920720, -111578952, -115089016, -118263000, -121329072, -124467616, -127275984, -129343480, - -130962144, -132537320, -133660456, -133586904, -132287144, -130116032, -126737504, -121397784, -114174728, -105911208, - -96866544, -86456616, -74579960, -62278100, -50669340, -39919036, -29651380, -19704236, -9961640, 9664, - 10463614, 20870320, 30408368, 38951596, 47011100, 54650236, 61000348, 65122980, 67074504, 67797672, - 67977520, 67164160, 64105608, 57980984, 49299244, 39490612, 29562260, 19283330, 7798050, -5105643, - -18489298, -30955976, -41740104, -51208896, -60412472, -70090112, -80010944, -89225800, -96917008, -102980968, - -107974408, -112707456, -117801824, -123369176, -129046584, -134440528, -139526304, -144577728, -149865360, -155550288, - -161723232, -168367008, -175324864, -182408336, -189498256, -196508720, -203339328, -209896128, -216090000, -221804464, - -226880576, -231135808, -234416624, -236663440, -237896096, -238160768, -237642144, -236757392, -235874768, -235141408, - -234983568, -235941344, -236356880, -230784160, -213989760, -188165200, -163468608, -148763712, -143858320, }, + 59395104, 59016608, 28177670, -10354629, -20856362, 2749853, 31099858, 32979444, 4588636, -34200288, + -62302260, -71905808, -67962488, -60489784, -56045028, -52616572, -42487964, -20854214, 9752260, 43591772, + 76899776, 107454176, 132692480, 151896352, 168645120, 187650336, 209389312, 230131856, 246830704, 259533056, + 268856352, 273493312, 271391456, 262039168, 246406032, 225373584, 199436800, 169846096, 139058160, 109621528, + 82890720, 58987080, 37622840, 18567144, 1453310, -14353781, -29368986, -43517684, -56170120, -66573068, + -74185896, -78808352, -80779208, -81148576, -81333256, -82338280, -84396648, -87398288, -91276648, -95767032, + -100239704, -104238320, -107920720, -111578952, -115089016, -118263000, -121329072, -124467616, -127275984, -129343480, + -130962144, -132537320, -133660456, -133586904, -132287144, -130116032, -126737504, -121397784, -114174728, -105911208, + -96866544, -86456616, -74579960, -62278100, -50669340, -39919036, -29651380, -19704236, -9961640, 9664, + 10463614, 20870320, 30408368, 38951596, 47011100, 54650236, 61000348, 65122980, 67074504, 67797672, + 67977520, 67164160, 64105608, 57980984, 49299244, 39490612, 29562260, 19283330, 7798050, -5105643, + -18489298, -30955976, -41740104, -51208896, -60412472, -70090112, -80010944, -89225800, -96917008, -102980968, + -107974408, -112707456, -117801824, -123369176, -129046584, -134440528, -139526304, -144577728, -149865360, -155550288, + -161723232, -168367008, -175324864, -182408336, -189498256, -196508720, -203339328, -209896128, -216090000, -221804464, + -226880576, -231135808, -234416624, -236663440, -237896096, -238160768, -237642144, -236757392, -235874768, -235141408, + -234983568, -235941344, -236356880, -230784160, -213989760, -188165200, -163468608, -148763712, -143858320, }, { 45164804, - 59395104, 59016608, 28177670, -10354629, -20856362, 2749853, 31099858, 32979444, 4588636, -34200288, - -62302260, -71905808, -67962488, -60489784, -56045028, -52616572, -42487964, -20854214, 9752260, 43591772, - 76899776, 107454176, 132692480, 151896352, 168645120, 187650336, 209389312, 230131856, 246830704, 259533056, - 268856352, 273493312, 271391456, 262039168, 246406032, 225373584, 199436800, 169846096, 139058160, 109621528, - 82890720, 58987080, 37622840, 18567144, 1453310, -14353781, -29368986, -43517684, -56170120, -66573068, - -74185896, -78808352, -80779208, -81148576, -81333256, -82338280, -84396648, -87398288, -91276648, -95767032, - -100239704, -104238320, -107920720, -111578952, -115089016, -118263000, -121329072, -124467616, -127275984, -129343480, - -130962144, -132537320, -133660456, -133586904, -132287144, -130116032, -126737504, -121397784, -114174728, -105911208, - -96866544, -86456616, -74579960, -62278100, -50669340, -39919036, -29651380, -19704236, -9961640, 9664, - 10463614, 20870320, 30408368, 38951596, 47011100, 54650236, 61000348, 65122980, 67074504, 67797672, - 67977520, 67164160, 64105608, 57980984, 49299244, 39490612, 29562260, 19283330, 7798050, -5105643, - -18489298, -30955976, -41740104, -51208896, -60412472, -70090112, -80010944, -89225800, -96917008, -102980968, - -107974408, -112707456, -117801824, -123369176, -129046584, -134440528, -139526304, -144577728, -149865360, -155550288, - -161723232, -168367008, -175324864, -182408336, -189498256, -196508720, -203339328, -209896128, -216090000, -221804464, - -226880576, -231135808, -234416624, -236663440, -237896096, -238160768, -237642144, -236757392, -235874768, -235141408, - -234983568, -235941344, -236356880, -230784160, -213989760, -188165200, -163468608, -148763712, -143858320, }, + 59395104, 59016608, 28177670, -10354629, -20856362, 2749853, 31099858, 32979444, 4588636, -34200288, + -62302260, -71905808, -67962488, -60489784, -56045028, -52616572, -42487964, -20854214, 9752260, 43591772, + 76899776, 107454176, 132692480, 151896352, 168645120, 187650336, 209389312, 230131856, 246830704, 259533056, + 268856352, 273493312, 271391456, 262039168, 246406032, 225373584, 199436800, 169846096, 139058160, 109621528, + 82890720, 58987080, 37622840, 18567144, 1453310, -14353781, -29368986, -43517684, -56170120, -66573068, + -74185896, -78808352, -80779208, -81148576, -81333256, -82338280, -84396648, -87398288, -91276648, -95767032, + -100239704, -104238320, -107920720, -111578952, -115089016, -118263000, -121329072, -124467616, -127275984, -129343480, + -130962144, -132537320, -133660456, -133586904, -132287144, -130116032, -126737504, -121397784, -114174728, -105911208, + -96866544, -86456616, -74579960, -62278100, -50669340, -39919036, -29651380, -19704236, -9961640, 9664, + 10463614, 20870320, 30408368, 38951596, 47011100, 54650236, 61000348, 65122980, 67074504, 67797672, + 67977520, 67164160, 64105608, 57980984, 49299244, 39490612, 29562260, 19283330, 7798050, -5105643, + -18489298, -30955976, -41740104, -51208896, -60412472, -70090112, -80010944, -89225800, -96917008, -102980968, + -107974408, -112707456, -117801824, -123369176, -129046584, -134440528, -139526304, -144577728, -149865360, -155550288, + -161723232, -168367008, -175324864, -182408336, -189498256, -196508720, -203339328, -209896128, -216090000, -221804464, + -226880576, -231135808, -234416624, -236663440, -237896096, -238160768, -237642144, -236757392, -235874768, -235141408, + -234983568, -235941344, -236356880, -230784160, -213989760, -188165200, -163468608, -148763712, -143858320, }, }, }; -const Word32 CRendBin_FOA_HRIR_coeff_im_32kHz_fx[4][BINAURAL_CHANNELS][160] ={ +const Word32 CRendBin_FOA_HRIR_coeff_im_32kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][160] ={ { { -124746248, - -332286592, -439153952, -441538208, -378021536, -291850528, -203384416, -111092552, -9728638, 96636768, 195902592, - 276180352, 330958912, 358995904, 362415232, 345596160, 314441536, 274850528, 230755712, 183491744, 133441952, - 82224464, 32700808, -13212930, -55892020, -96611528, -135351600, -170669120, -201400688, -227661728, -250176480, - -269402368, -285648608, -299537472, -311814080, -322783968, -332288192, -340256960, -347059136, -353240128, -359089344, - -364553600, -369461664, -373696512, -377195296, -379940320, -381985792, -383444480, -384410304, -384898848, -384869856, - -384300800, -383224352, -381696416, -379749728, -377424000, -374818048, -372054752, -369180352, -366176576, -363069152, - -359940256, -356811936, -353631488, -350401696, -347243808, -344273856, -341512704, -338963648, -336672288, -334662240, - -332880896, -331277280, -329867456, -328667552, -327624416, -326662880, -325738368, -324787584, -323680544, -322275008, - -320497440, -318308608, -315630720, -312372448, -308554208, -304337088, -299901472, -295304224, -290483680, -285365696, - -279950272, -274330848, -268670080, -263132240, -257809168, -252722320, -247888864, -243344800, -239099760, -235146240, - -231518064, -228269456, -225366592, -222675808, -220095600, -217629744, -215315296, -213116816, -210895248, -208448720, - -205616720, -202393360, -198915504, -195302896, -191572720, -187729792, -183824608, -179889872, -175917024, -171932912, - -167981008, -164011376, -159920416, -155695248, -151405648, -147074176, -142689552, -138297408, -133931040, -129537288, - -125114008, -120789512, -116638424, -112566264, -108506440, -104497088, -100477536, -96285648, -91947200, -87612504, - -83182776, -78420200, -73369312, -68145560, -62472984, -56077776, -49192944, -41836204, -33221036, -22813792, - -10376641, 7129646, 35794796, 75874352, 112670416, 124075160, 101861056, 60357176, 18902152, }, + -332286592, -439153952, -441538208, -378021536, -291850528, -203384416, -111092552, -9728638, 96636768, 195902592, + 276180352, 330958912, 358995904, 362415232, 345596160, 314441536, 274850528, 230755712, 183491744, 133441952, + 82224464, 32700808, -13212930, -55892020, -96611528, -135351600, -170669120, -201400688, -227661728, -250176480, + -269402368, -285648608, -299537472, -311814080, -322783968, -332288192, -340256960, -347059136, -353240128, -359089344, + -364553600, -369461664, -373696512, -377195296, -379940320, -381985792, -383444480, -384410304, -384898848, -384869856, + -384300800, -383224352, -381696416, -379749728, -377424000, -374818048, -372054752, -369180352, -366176576, -363069152, + -359940256, -356811936, -353631488, -350401696, -347243808, -344273856, -341512704, -338963648, -336672288, -334662240, + -332880896, -331277280, -329867456, -328667552, -327624416, -326662880, -325738368, -324787584, -323680544, -322275008, + -320497440, -318308608, -315630720, -312372448, -308554208, -304337088, -299901472, -295304224, -290483680, -285365696, + -279950272, -274330848, -268670080, -263132240, -257809168, -252722320, -247888864, -243344800, -239099760, -235146240, + -231518064, -228269456, -225366592, -222675808, -220095600, -217629744, -215315296, -213116816, -210895248, -208448720, + -205616720, -202393360, -198915504, -195302896, -191572720, -187729792, -183824608, -179889872, -175917024, -171932912, + -167981008, -164011376, -159920416, -155695248, -151405648, -147074176, -142689552, -138297408, -133931040, -129537288, + -125114008, -120789512, -116638424, -112566264, -108506440, -104497088, -100477536, -96285648, -91947200, -87612504, + -83182776, -78420200, -73369312, -68145560, -62472984, -56077776, -49192944, -41836204, -33221036, -22813792, + -10376641, 7129646, 35794796, 75874352, 112670416, 124075160, 101861056, 60357176, 18902152, }, { -124746248, - -332286592, -439153952, -441538208, -378021536, -291850528, -203384416, -111092552, -9728638, 96636768, 195902592, - 276180352, 330958912, 358995904, 362415232, 345596160, 314441536, 274850528, 230755712, 183491744, 133441952, - 82224464, 32700808, -13212930, -55892020, -96611528, -135351600, -170669120, -201400688, -227661728, -250176480, - -269402368, -285648608, -299537472, -311814080, -322783968, -332288192, -340256960, -347059136, -353240128, -359089344, - -364553600, -369461664, -373696512, -377195296, -379940320, -381985792, -383444480, -384410304, -384898848, -384869856, - -384300800, -383224352, -381696416, -379749728, -377424000, -374818048, -372054752, -369180352, -366176576, -363069152, - -359940256, -356811936, -353631488, -350401696, -347243808, -344273856, -341512704, -338963648, -336672288, -334662240, - -332880896, -331277280, -329867456, -328667552, -327624416, -326662880, -325738368, -324787584, -323680544, -322275008, - -320497440, -318308608, -315630720, -312372448, -308554208, -304337088, -299901472, -295304224, -290483680, -285365696, - -279950272, -274330848, -268670080, -263132240, -257809168, -252722320, -247888864, -243344800, -239099760, -235146240, - -231518064, -228269456, -225366592, -222675808, -220095600, -217629744, -215315296, -213116816, -210895248, -208448720, - -205616720, -202393360, -198915504, -195302896, -191572720, -187729792, -183824608, -179889872, -175917024, -171932912, - -167981008, -164011376, -159920416, -155695248, -151405648, -147074176, -142689552, -138297408, -133931040, -129537288, - -125114008, -120789512, -116638424, -112566264, -108506440, -104497088, -100477536, -96285648, -91947200, -87612504, - -83182776, -78420200, -73369312, -68145560, -62472984, -56077776, -49192944, -41836204, -33221036, -22813792, - -10376641, 7129646, 35794796, 75874352, 112670416, 124075160, 101861056, 60357176, 18902152, }, + -332286592, -439153952, -441538208, -378021536, -291850528, -203384416, -111092552, -9728638, 96636768, 195902592, + 276180352, 330958912, 358995904, 362415232, 345596160, 314441536, 274850528, 230755712, 183491744, 133441952, + 82224464, 32700808, -13212930, -55892020, -96611528, -135351600, -170669120, -201400688, -227661728, -250176480, + -269402368, -285648608, -299537472, -311814080, -322783968, -332288192, -340256960, -347059136, -353240128, -359089344, + -364553600, -369461664, -373696512, -377195296, -379940320, -381985792, -383444480, -384410304, -384898848, -384869856, + -384300800, -383224352, -381696416, -379749728, -377424000, -374818048, -372054752, -369180352, -366176576, -363069152, + -359940256, -356811936, -353631488, -350401696, -347243808, -344273856, -341512704, -338963648, -336672288, -334662240, + -332880896, -331277280, -329867456, -328667552, -327624416, -326662880, -325738368, -324787584, -323680544, -322275008, + -320497440, -318308608, -315630720, -312372448, -308554208, -304337088, -299901472, -295304224, -290483680, -285365696, + -279950272, -274330848, -268670080, -263132240, -257809168, -252722320, -247888864, -243344800, -239099760, -235146240, + -231518064, -228269456, -225366592, -222675808, -220095600, -217629744, -215315296, -213116816, -210895248, -208448720, + -205616720, -202393360, -198915504, -195302896, -191572720, -187729792, -183824608, -179889872, -175917024, -171932912, + -167981008, -164011376, -159920416, -155695248, -151405648, -147074176, -142689552, -138297408, -133931040, -129537288, + -125114008, -120789512, -116638424, -112566264, -108506440, -104497088, -100477536, -96285648, -91947200, -87612504, + -83182776, -78420200, -73369312, -68145560, -62472984, -56077776, -49192944, -41836204, -33221036, -22813792, + -10376641, 7129646, 35794796, 75874352, 112670416, 124075160, 101861056, 60357176, 18902152, }, }, { { 75551160, - 153462400, 61649960, -181907440, -461093184, -644651520, -667696128, -550006528, -353678208, -133872520, 77957952, - 265927200, 421319648, 540801856, 624756160, 674512256, 692065792, 681486208, 648934144, 601438208, 545628352, - 486087232, 424217664, 359794784, 294002336, 229964896, 170295456, 115383760, 64259692, 15963320, -30186640, - -74560096, -116906328, -156557456, -193199984, -227206448, -259244224, -289785216, -318798784, -345656832, -369518592, - -390016320, -407445824, -422309088, -434948128, -445623808, -454563232, -461833536, -467435264, -471597088, -474762464, - -477283072, -479235680, -480473696, -480748576, -479894400, -477985824, -475232768, -471772640, -467756288, -463552064, - -459556672, -455851712, -452353472, -449206336, -446673920, -444710592, -443041984, -441627328, -440660416, -440154688, - -439923840, -439966240, -440475744, -441451232, -442630752, -443856960, -445195904, -446641696, -447974208, -449013056, - -449805472, -450459392, -450933984, -451080544, -450812128, -450166784, -449283648, -448369344, -447608064, -446953632, - -446004960, -444204320, -441246144, -437220704, -432293824, -426354976, -419100768, -410395936, -400439136, -389628704, - -378339904, -366740800, -354755712, -342292256, -329602240, -317287488, -305881664, -295553344, -286270304, -278059392, - -270983456, -264992496, -259904576, -255485600, -251535296, -247990880, -244910304, -242226496, -239601728, -236631760, - -233112032, -229034496, -224499008, -219741808, -215028080, -210395952, -205689744, -200887424, -196107136, -191308576, - -186331248, -181236352, -176257936, -171451344, -166762304, -162288016, -158070896, -153847872, -149404736, -144890192, - -140407856, -135756944, -130899328, -126020784, -120862528, -114834544, -107882064, -100117832, -90797216, -79146048, - -64960308, -45236744, -12382391, 36526548, 86974160, 112453520, 99419368, 61046516, 19385872, }, + 153462400, 61649960, -181907440, -461093184, -644651520, -667696128, -550006528, -353678208, -133872520, 77957952, + 265927200, 421319648, 540801856, 624756160, 674512256, 692065792, 681486208, 648934144, 601438208, 545628352, + 486087232, 424217664, 359794784, 294002336, 229964896, 170295456, 115383760, 64259692, 15963320, -30186640, + -74560096, -116906328, -156557456, -193199984, -227206448, -259244224, -289785216, -318798784, -345656832, -369518592, + -390016320, -407445824, -422309088, -434948128, -445623808, -454563232, -461833536, -467435264, -471597088, -474762464, + -477283072, -479235680, -480473696, -480748576, -479894400, -477985824, -475232768, -471772640, -467756288, -463552064, + -459556672, -455851712, -452353472, -449206336, -446673920, -444710592, -443041984, -441627328, -440660416, -440154688, + -439923840, -439966240, -440475744, -441451232, -442630752, -443856960, -445195904, -446641696, -447974208, -449013056, + -449805472, -450459392, -450933984, -451080544, -450812128, -450166784, -449283648, -448369344, -447608064, -446953632, + -446004960, -444204320, -441246144, -437220704, -432293824, -426354976, -419100768, -410395936, -400439136, -389628704, + -378339904, -366740800, -354755712, -342292256, -329602240, -317287488, -305881664, -295553344, -286270304, -278059392, + -270983456, -264992496, -259904576, -255485600, -251535296, -247990880, -244910304, -242226496, -239601728, -236631760, + -233112032, -229034496, -224499008, -219741808, -215028080, -210395952, -205689744, -200887424, -196107136, -191308576, + -186331248, -181236352, -176257936, -171451344, -166762304, -162288016, -158070896, -153847872, -149404736, -144890192, + -140407856, -135756944, -130899328, -126020784, -120862528, -114834544, -107882064, -100117832, -90797216, -79146048, + -64960308, -45236744, -12382391, 36526548, 86974160, 112453520, 99419368, 61046516, 19385872, }, { -75551160, - -153462400, -61649960, 181907440, 461093184, 644651520, 667696128, 550006528, 353678208, 133872520, -77957952, - -265927200, -421319648, -540801856, -624756160, -674512256, -692065792, -681486208, -648934144, -601438208, -545628352, - -486087232, -424217664, -359794784, -294002336, -229964896, -170295456, -115383760, -64259692, -15963320, 30186640, - 74560096, 116906328, 156557456, 193199984, 227206448, 259244224, 289785216, 318798784, 345656832, 369518592, - 390016320, 407445824, 422309088, 434948128, 445623808, 454563232, 461833536, 467435264, 471597088, 474762464, - 477283072, 479235680, 480473696, 480748576, 479894400, 477985824, 475232768, 471772640, 467756288, 463552064, - 459556672, 455851712, 452353472, 449206336, 446673920, 444710592, 443041984, 441627328, 440660416, 440154688, - 439923840, 439966240, 440475744, 441451232, 442630752, 443856960, 445195904, 446641696, 447974208, 449013056, - 449805472, 450459392, 450933984, 451080544, 450812128, 450166784, 449283648, 448369344, 447608064, 446953632, - 446004960, 444204320, 441246144, 437220704, 432293824, 426354976, 419100768, 410395936, 400439136, 389628704, - 378339904, 366740800, 354755712, 342292256, 329602240, 317287488, 305881664, 295553344, 286270304, 278059392, - 270983456, 264992496, 259904576, 255485600, 251535296, 247990880, 244910304, 242226496, 239601728, 236631760, - 233112032, 229034496, 224499008, 219741808, 215028080, 210395952, 205689744, 200887424, 196107136, 191308576, - 186331248, 181236352, 176257936, 171451344, 166762304, 162288016, 158070896, 153847872, 149404736, 144890192, - 140407856, 135756944, 130899328, 126020784, 120862528, 114834544, 107882064, 100117832, 90797216, 79146048, - 64960308, 45236744, 12382391, -36526548, -86974160, -112453520, -99419368, -61046516, -19385872, }, + -153462400, -61649960, 181907440, 461093184, 644651520, 667696128, 550006528, 353678208, 133872520, -77957952, + -265927200, -421319648, -540801856, -624756160, -674512256, -692065792, -681486208, -648934144, -601438208, -545628352, + -486087232, -424217664, -359794784, -294002336, -229964896, -170295456, -115383760, -64259692, -15963320, 30186640, + 74560096, 116906328, 156557456, 193199984, 227206448, 259244224, 289785216, 318798784, 345656832, 369518592, + 390016320, 407445824, 422309088, 434948128, 445623808, 454563232, 461833536, 467435264, 471597088, 474762464, + 477283072, 479235680, 480473696, 480748576, 479894400, 477985824, 475232768, 471772640, 467756288, 463552064, + 459556672, 455851712, 452353472, 449206336, 446673920, 444710592, 443041984, 441627328, 440660416, 440154688, + 439923840, 439966240, 440475744, 441451232, 442630752, 443856960, 445195904, 446641696, 447974208, 449013056, + 449805472, 450459392, 450933984, 451080544, 450812128, 450166784, 449283648, 448369344, 447608064, 446953632, + 446004960, 444204320, 441246144, 437220704, 432293824, 426354976, 419100768, 410395936, 400439136, 389628704, + 378339904, 366740800, 354755712, 342292256, 329602240, 317287488, 305881664, 295553344, 286270304, 278059392, + 270983456, 264992496, 259904576, 255485600, 251535296, 247990880, 244910304, 242226496, 239601728, 236631760, + 233112032, 229034496, 224499008, 219741808, 215028080, 210395952, 205689744, 200887424, 196107136, 191308576, + 186331248, 181236352, 176257936, 171451344, 166762304, 162288016, 158070896, 153847872, 149404736, 144890192, + 140407856, 135756944, 130899328, 126020784, 120862528, 114834544, 107882064, 100117832, 90797216, 79146048, + 64960308, 45236744, 12382391, -36526548, -86974160, -112453520, -99419368, -61046516, -19385872, }, }, { { -13823352, - -47267724, -74880608, -61845920, -6009196, 44543644, 47750372, 14274324, -18374406, -32921998, -33450816, - -21314312, 3723200, 28790776, 37921340, 34105800, 34695284, 46452756, 58769112, 60761440, 52750788, - 39390220, 21638046, -484794, -23184234, -41142564, -52540336, -60076392, -67866392, -77767896, -88068840, - -95563024, -98660768, -97868880, -93894424, -87059520, -78726752, -71621264, -67964640, -68108520, -71229352, - -76540072, -83599392, -92124368, -101866424, -112522776, -123819072, -135798272, -148773904, -162830800, -177528720, - -192135904, -205949584, -218430224, -229228848, -238058224, -244521072, -248239440, -249127424, -247208112, -242242064, - -233946864, -222463744, -208111568, -190840432, -170512880, -147554144, -122718488, -96416648, -68859600, -40615360, - -12434467, 15179488, 41655816, 66042640, 87632904, 106451840, 122465624, 134834592, 142813024, 146960352, - 148492048, 147635744, 143687056, 136782896, 128596152, 120716496, 112976968, 104157248, 94144608, 84591528, - 77207944, 72052912, 67976984, 64288680, 61347704, 59770376, 59760176, 61251064, 64079840, 67826664, - 71883256, 75900128, 80009336, 84478784, 89176944, 93355408, 95978024, 96419328, 94885488, 92028264, - 88208424, 83328808, 77226200, 69879656, 61287572, 51490752, 40765684, 29568702, 18323404, 7390028, - -2895345, -12336220, -20874614, -28348932, -34424164, -38874284, -41757284, -43234216, -43418900, -42440184, - -40466644, -37689412, -34455300, -31303332, -28665148, -26590680, -24850144, -23074712, -20723218, -17311940, - -12910672, -8087424, -3198140, 1877975, 7174743, 12360379, 17249662, 22040162, 26753888, 31093416, - 35297652, 40359808, 46330348, 50592032, 49059264, 39942124, 26100516, 12942884, 3613141, }, + -47267724, -74880608, -61845920, -6009196, 44543644, 47750372, 14274324, -18374406, -32921998, -33450816, + -21314312, 3723200, 28790776, 37921340, 34105800, 34695284, 46452756, 58769112, 60761440, 52750788, + 39390220, 21638046, -484794, -23184234, -41142564, -52540336, -60076392, -67866392, -77767896, -88068840, + -95563024, -98660768, -97868880, -93894424, -87059520, -78726752, -71621264, -67964640, -68108520, -71229352, + -76540072, -83599392, -92124368, -101866424, -112522776, -123819072, -135798272, -148773904, -162830800, -177528720, + -192135904, -205949584, -218430224, -229228848, -238058224, -244521072, -248239440, -249127424, -247208112, -242242064, + -233946864, -222463744, -208111568, -190840432, -170512880, -147554144, -122718488, -96416648, -68859600, -40615360, + -12434467, 15179488, 41655816, 66042640, 87632904, 106451840, 122465624, 134834592, 142813024, 146960352, + 148492048, 147635744, 143687056, 136782896, 128596152, 120716496, 112976968, 104157248, 94144608, 84591528, + 77207944, 72052912, 67976984, 64288680, 61347704, 59770376, 59760176, 61251064, 64079840, 67826664, + 71883256, 75900128, 80009336, 84478784, 89176944, 93355408, 95978024, 96419328, 94885488, 92028264, + 88208424, 83328808, 77226200, 69879656, 61287572, 51490752, 40765684, 29568702, 18323404, 7390028, + -2895345, -12336220, -20874614, -28348932, -34424164, -38874284, -41757284, -43234216, -43418900, -42440184, + -40466644, -37689412, -34455300, -31303332, -28665148, -26590680, -24850144, -23074712, -20723218, -17311940, + -12910672, -8087424, -3198140, 1877975, 7174743, 12360379, 17249662, 22040162, 26753888, 31093416, + 35297652, 40359808, 46330348, 50592032, 49059264, 39942124, 26100516, 12942884, 3613141, }, { -13823352, - -47267724, -74880608, -61845920, -6009196, 44543644, 47750372, 14274324, -18374406, -32921998, -33450816, - -21314312, 3723200, 28790776, 37921340, 34105800, 34695284, 46452756, 58769112, 60761440, 52750788, - 39390220, 21638046, -484794, -23184234, -41142564, -52540336, -60076392, -67866392, -77767896, -88068840, - -95563024, -98660768, -97868880, -93894424, -87059520, -78726752, -71621264, -67964640, -68108520, -71229352, - -76540072, -83599392, -92124368, -101866424, -112522776, -123819072, -135798272, -148773904, -162830800, -177528720, - -192135904, -205949584, -218430224, -229228848, -238058224, -244521072, -248239440, -249127424, -247208112, -242242064, - -233946864, -222463744, -208111568, -190840432, -170512880, -147554144, -122718488, -96416648, -68859600, -40615360, - -12434467, 15179488, 41655816, 66042640, 87632904, 106451840, 122465624, 134834592, 142813024, 146960352, - 148492048, 147635744, 143687056, 136782896, 128596152, 120716496, 112976968, 104157248, 94144608, 84591528, - 77207944, 72052912, 67976984, 64288680, 61347704, 59770376, 59760176, 61251064, 64079840, 67826664, - 71883256, 75900128, 80009336, 84478784, 89176944, 93355408, 95978024, 96419328, 94885488, 92028264, - 88208424, 83328808, 77226200, 69879656, 61287572, 51490752, 40765684, 29568702, 18323404, 7390028, - -2895345, -12336220, -20874614, -28348932, -34424164, -38874284, -41757284, -43234216, -43418900, -42440184, - -40466644, -37689412, -34455300, -31303332, -28665148, -26590680, -24850144, -23074712, -20723218, -17311940, - -12910672, -8087424, -3198140, 1877975, 7174743, 12360379, 17249662, 22040162, 26753888, 31093416, - 35297652, 40359808, 46330348, 50592032, 49059264, 39942124, 26100516, 12942884, 3613141, }, + -47267724, -74880608, -61845920, -6009196, 44543644, 47750372, 14274324, -18374406, -32921998, -33450816, + -21314312, 3723200, 28790776, 37921340, 34105800, 34695284, 46452756, 58769112, 60761440, 52750788, + 39390220, 21638046, -484794, -23184234, -41142564, -52540336, -60076392, -67866392, -77767896, -88068840, + -95563024, -98660768, -97868880, -93894424, -87059520, -78726752, -71621264, -67964640, -68108520, -71229352, + -76540072, -83599392, -92124368, -101866424, -112522776, -123819072, -135798272, -148773904, -162830800, -177528720, + -192135904, -205949584, -218430224, -229228848, -238058224, -244521072, -248239440, -249127424, -247208112, -242242064, + -233946864, -222463744, -208111568, -190840432, -170512880, -147554144, -122718488, -96416648, -68859600, -40615360, + -12434467, 15179488, 41655816, 66042640, 87632904, 106451840, 122465624, 134834592, 142813024, 146960352, + 148492048, 147635744, 143687056, 136782896, 128596152, 120716496, 112976968, 104157248, 94144608, 84591528, + 77207944, 72052912, 67976984, 64288680, 61347704, 59770376, 59760176, 61251064, 64079840, 67826664, + 71883256, 75900128, 80009336, 84478784, 89176944, 93355408, 95978024, 96419328, 94885488, 92028264, + 88208424, 83328808, 77226200, 69879656, 61287572, 51490752, 40765684, 29568702, 18323404, 7390028, + -2895345, -12336220, -20874614, -28348932, -34424164, -38874284, -41757284, -43234216, -43418900, -42440184, + -40466644, -37689412, -34455300, -31303332, -28665148, -26590680, -24850144, -23074712, -20723218, -17311940, + -12910672, -8087424, -3198140, 1877975, 7174743, 12360379, 17249662, 22040162, 26753888, 31093416, + 35297652, 40359808, 46330348, 50592032, 49059264, 39942124, 26100516, 12942884, 3613141, }, }, { { 2399276, - -6981470, -37100464, -59681792, -47691316, -11667816, 11209328, -922881, -34048352, -57713088, -54652384, - -29446296, 2738042, 29563870, 47957604, 63478544, 83597240, 109465832, 134631648, 151935008, 159254160, - 157895888, 149123408, 135013376, 119935888, 107310296, 95519000, 79781704, 57790396, 31268436, 2309082, - -29219736, -63930052, -100523712, -136403872, -169684496, -199461504, -224601552, -243487072, -255247760, -260666400, - -261562976, -259544336, -255550016, -250220496, -244148496, -237598672, -230261792, -221560176, -211221120, -199524848, - -187181120, -175184192, -164689440, -156591280, -150953600, -147014048, -143871744, -140983920, -137935024, -134219872, - -129642512, -124592168, -119487064, -114226800, -108583752, -102711992, -96756488, -90368256, -83233784, -75692360, - -68136968, -60199336, -51301236, -41661720, -31911608, -22032108, -11659226, -1228898, 8220568, 16375100, - 23738284, 30291330, 35051228, 37327560, 37614248, 36836860, 35376036, 33252174, 30627412, 27485106, - 23219666, 17203492, 9615895, 1139240, -8105677, -18764176, -31217432, -44790604, -58303644, -71284648, - -84368192, -98453536, -113515984, -128303024, -141292080, -151974736, -161100464, -169590544, -177366048, -183394032, - -186791344, -187751280, -187439888, -187079104, -187031872, -186655520, -185028272, -181873072, -177797152, -173789408, - -170582144, -168336944, -166671040, -164970224, -162876432, -160525472, -158280288, -156321776, -154579632, -152888480, - -151038432, -148774448, -145900032, -142354544, -138143328, -133252968, -127670048, -121401008, -114444232, -106790600, - -98462664, -89550072, -80235360, -70754752, -61323544, -52166136, -43558484, -35611184, -28093382, -20743082, - -13269838, -4217121, 9205726, 27543626, 44898516, 51582020, 43380780, 26081188, 8227547, }, + -6981470, -37100464, -59681792, -47691316, -11667816, 11209328, -922881, -34048352, -57713088, -54652384, + -29446296, 2738042, 29563870, 47957604, 63478544, 83597240, 109465832, 134631648, 151935008, 159254160, + 157895888, 149123408, 135013376, 119935888, 107310296, 95519000, 79781704, 57790396, 31268436, 2309082, + -29219736, -63930052, -100523712, -136403872, -169684496, -199461504, -224601552, -243487072, -255247760, -260666400, + -261562976, -259544336, -255550016, -250220496, -244148496, -237598672, -230261792, -221560176, -211221120, -199524848, + -187181120, -175184192, -164689440, -156591280, -150953600, -147014048, -143871744, -140983920, -137935024, -134219872, + -129642512, -124592168, -119487064, -114226800, -108583752, -102711992, -96756488, -90368256, -83233784, -75692360, + -68136968, -60199336, -51301236, -41661720, -31911608, -22032108, -11659226, -1228898, 8220568, 16375100, + 23738284, 30291330, 35051228, 37327560, 37614248, 36836860, 35376036, 33252174, 30627412, 27485106, + 23219666, 17203492, 9615895, 1139240, -8105677, -18764176, -31217432, -44790604, -58303644, -71284648, + -84368192, -98453536, -113515984, -128303024, -141292080, -151974736, -161100464, -169590544, -177366048, -183394032, + -186791344, -187751280, -187439888, -187079104, -187031872, -186655520, -185028272, -181873072, -177797152, -173789408, + -170582144, -168336944, -166671040, -164970224, -162876432, -160525472, -158280288, -156321776, -154579632, -152888480, + -151038432, -148774448, -145900032, -142354544, -138143328, -133252968, -127670048, -121401008, -114444232, -106790600, + -98462664, -89550072, -80235360, -70754752, -61323544, -52166136, -43558484, -35611184, -28093382, -20743082, + -13269838, -4217121, 9205726, 27543626, 44898516, 51582020, 43380780, 26081188, 8227547, }, { 2399276, - -6981470, -37100464, -59681792, -47691316, -11667816, 11209328, -922881, -34048352, -57713088, -54652384, - -29446296, 2738042, 29563870, 47957604, 63478544, 83597240, 109465832, 134631648, 151935008, 159254160, - 157895888, 149123408, 135013376, 119935888, 107310296, 95519000, 79781704, 57790396, 31268436, 2309082, - -29219736, -63930052, -100523712, -136403872, -169684496, -199461504, -224601552, -243487072, -255247760, -260666400, - -261562976, -259544336, -255550016, -250220496, -244148496, -237598672, -230261792, -221560176, -211221120, -199524848, - -187181120, -175184192, -164689440, -156591280, -150953600, -147014048, -143871744, -140983920, -137935024, -134219872, - -129642512, -124592168, -119487064, -114226800, -108583752, -102711992, -96756488, -90368256, -83233784, -75692360, - -68136968, -60199336, -51301236, -41661720, -31911608, -22032108, -11659226, -1228898, 8220568, 16375100, - 23738284, 30291330, 35051228, 37327560, 37614248, 36836860, 35376036, 33252174, 30627412, 27485106, - 23219666, 17203492, 9615895, 1139240, -8105677, -18764176, -31217432, -44790604, -58303644, -71284648, - -84368192, -98453536, -113515984, -128303024, -141292080, -151974736, -161100464, -169590544, -177366048, -183394032, - -186791344, -187751280, -187439888, -187079104, -187031872, -186655520, -185028272, -181873072, -177797152, -173789408, - -170582144, -168336944, -166671040, -164970224, -162876432, -160525472, -158280288, -156321776, -154579632, -152888480, - -151038432, -148774448, -145900032, -142354544, -138143328, -133252968, -127670048, -121401008, -114444232, -106790600, - -98462664, -89550072, -80235360, -70754752, -61323544, -52166136, -43558484, -35611184, -28093382, -20743082, - -13269838, -4217121, 9205726, 27543626, 44898516, 51582020, 43380780, 26081188, 8227547, }, + -6981470, -37100464, -59681792, -47691316, -11667816, 11209328, -922881, -34048352, -57713088, -54652384, + -29446296, 2738042, 29563870, 47957604, 63478544, 83597240, 109465832, 134631648, 151935008, 159254160, + 157895888, 149123408, 135013376, 119935888, 107310296, 95519000, 79781704, 57790396, 31268436, 2309082, + -29219736, -63930052, -100523712, -136403872, -169684496, -199461504, -224601552, -243487072, -255247760, -260666400, + -261562976, -259544336, -255550016, -250220496, -244148496, -237598672, -230261792, -221560176, -211221120, -199524848, + -187181120, -175184192, -164689440, -156591280, -150953600, -147014048, -143871744, -140983920, -137935024, -134219872, + -129642512, -124592168, -119487064, -114226800, -108583752, -102711992, -96756488, -90368256, -83233784, -75692360, + -68136968, -60199336, -51301236, -41661720, -31911608, -22032108, -11659226, -1228898, 8220568, 16375100, + 23738284, 30291330, 35051228, 37327560, 37614248, 36836860, 35376036, 33252174, 30627412, 27485106, + 23219666, 17203492, 9615895, 1139240, -8105677, -18764176, -31217432, -44790604, -58303644, -71284648, + -84368192, -98453536, -113515984, -128303024, -141292080, -151974736, -161100464, -169590544, -177366048, -183394032, + -186791344, -187751280, -187439888, -187079104, -187031872, -186655520, -185028272, -181873072, -177797152, -173789408, + -170582144, -168336944, -166671040, -164970224, -162876432, -160525472, -158280288, -156321776, -154579632, -152888480, + -151038432, -148774448, -145900032, -142354544, -138143328, -133252968, -127670048, -121401008, -114444232, -106790600, + -98462664, -89550072, -80235360, -70754752, -61323544, -52166136, -43558484, -35611184, -28093382, -20743082, + -13269838, -4217121, 9205726, 27543626, 44898516, 51582020, 43380780, 26081188, 8227547, }, }, }; -const Word32 CRendBin_FOA_HRIR_coeff_re_16kHz_fx[4][BINAURAL_CHANNELS][80] ={ +const Word32 CRendBin_FOA_HRIR_coeff_re_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80] ={ { { 572464896, - 446544000, 252232688, 61201672, -83722336, -178265840, -238997216, -280229984, -301735936, -293937376, -252640720, - -185028800, -102048424, -11938935, 77425912, 157634960, 224741136, 280230496, 325673408, 360901792, 386732288, - 404316960, 413118400, 413817952, 410262784, 404473728, 393900032, 377298368, 358098272, 338798304, 318054688, - 295855616, 275074400, 256112656, 236518480, 216469568, 198215968, 181007632, 162929040, 145482896, 130317360, - 115066472, 97917736, 81350976, 66697084, 51218020, 34267932, 19015430, 5561446, -9485435, -25609280, - -39352100, -51927764, -66678292, -81533512, -93280248, -104763920, -118843352, -131907032, -141742512, -152884192, - -166880960, -178507968, -187327680, -199386336, -213892592, -224269776, -233192032, -248051536, -264364896, -274931584, - -287834752, -310893344, -332552864, -347976096, -380855136, -437410208, -466602016, -425214112, -361132128, }, + 446544000, 252232688, 61201672, -83722336, -178265840, -238997216, -280229984, -301735936, -293937376, -252640720, + -185028800, -102048424, -11938935, 77425912, 157634960, 224741136, 280230496, 325673408, 360901792, 386732288, + 404316960, 413118400, 413817952, 410262784, 404473728, 393900032, 377298368, 358098272, 338798304, 318054688, + 295855616, 275074400, 256112656, 236518480, 216469568, 198215968, 181007632, 162929040, 145482896, 130317360, + 115066472, 97917736, 81350976, 66697084, 51218020, 34267932, 19015430, 5561446, -9485435, -25609280, + -39352100, -51927764, -66678292, -81533512, -93280248, -104763920, -118843352, -131907032, -141742512, -152884192, + -166880960, -178507968, -187327680, -199386336, -213892592, -224269776, -233192032, -248051536, -264364896, -274931584, + -287834752, -310893344, -332552864, -347976096, -380855136, -437410208, -466602016, -425214112, -361132128, }, { 572464896, - 446544000, 252232688, 61201672, -83722336, -178265840, -238997216, -280229984, -301735936, -293937376, -252640720, - -185028800, -102048424, -11938935, 77425912, 157634960, 224741136, 280230496, 325673408, 360901792, 386732288, - 404316960, 413118400, 413817952, 410262784, 404473728, 393900032, 377298368, 358098272, 338798304, 318054688, - 295855616, 275074400, 256112656, 236518480, 216469568, 198215968, 181007632, 162929040, 145482896, 130317360, - 115066472, 97917736, 81350976, 66697084, 51218020, 34267932, 19015430, 5561446, -9485435, -25609280, - -39352100, -51927764, -66678292, -81533512, -93280248, -104763920, -118843352, -131907032, -141742512, -152884192, - -166880960, -178507968, -187327680, -199386336, -213892592, -224269776, -233192032, -248051536, -264364896, -274931584, - -287834752, -310893344, -332552864, -347976096, -380855136, -437410208, -466602016, -425214112, -361132128, }, + 446544000, 252232688, 61201672, -83722336, -178265840, -238997216, -280229984, -301735936, -293937376, -252640720, + -185028800, -102048424, -11938935, 77425912, 157634960, 224741136, 280230496, 325673408, 360901792, 386732288, + 404316960, 413118400, 413817952, 410262784, 404473728, 393900032, 377298368, 358098272, 338798304, 318054688, + 295855616, 275074400, 256112656, 236518480, 216469568, 198215968, 181007632, 162929040, 145482896, 130317360, + 115066472, 97917736, 81350976, 66697084, 51218020, 34267932, 19015430, 5561446, -9485435, -25609280, + -39352100, -51927764, -66678292, -81533512, -93280248, -104763920, -118843352, -131907032, -141742512, -152884192, + -166880960, -178507968, -187327680, -199386336, -213892592, -224269776, -233192032, -248051536, -264364896, -274931584, + -287834752, -310893344, -332552864, -347976096, -380855136, -437410208, -466602016, -425214112, -361132128, }, }, { { 106724032, - 257402224, 451714592, 544733376, 451847200, 201333568, -102984728, -363801440, -536040384, -617267328, -623113856, - -573654080, -485942816, -371313344, -239997936, -103555960, 29695404, 155337696, 267583984, 360738048, 436065344, - 499282432, 551908672, 592087040, 620928768, 640871936, 651791872, 654910016, 655111872, 654414528, 649687360, - 640095616, 628916352, 616357888, 599612352, 580264064, 562188672, 543567808, 520421184, 494704544, 469889824, - 443905824, 414950752, 387043136, 362318624, 336644384, 308771648, 283371200, 260980464, 236863696, 211723632, - 190507040, 171147472, 148254752, 124722632, 105695920, 87316688, 65259344, 44970992, 30302068, 14660871, - -4860829, -20713016, -31747324, -47103980, -66554812, -80329312, -91495152, -111316424, -134142032, -148395408, - -164614288, -196001376, -227258000, -247551712, -288954112, -372055840, -441701408, -434066560, -385475456, }, + 257402224, 451714592, 544733376, 451847200, 201333568, -102984728, -363801440, -536040384, -617267328, -623113856, + -573654080, -485942816, -371313344, -239997936, -103555960, 29695404, 155337696, 267583984, 360738048, 436065344, + 499282432, 551908672, 592087040, 620928768, 640871936, 651791872, 654910016, 655111872, 654414528, 649687360, + 640095616, 628916352, 616357888, 599612352, 580264064, 562188672, 543567808, 520421184, 494704544, 469889824, + 443905824, 414950752, 387043136, 362318624, 336644384, 308771648, 283371200, 260980464, 236863696, 211723632, + 190507040, 171147472, 148254752, 124722632, 105695920, 87316688, 65259344, 44970992, 30302068, 14660871, + -4860829, -20713016, -31747324, -47103980, -66554812, -80329312, -91495152, -111316424, -134142032, -148395408, + -164614288, -196001376, -227258000, -247551712, -288954112, -372055840, -441701408, -434066560, -385475456, }, { -106724032, - -257402224, -451714592, -544733376, -451847200, -201333568, 102984728, 363801440, 536040384, 617267328, 623113856, - 573654080, 485942816, 371313344, 239997936, 103555960, -29695404, -155337696, -267583984, -360738048, -436065344, - -499282432, -551908672, -592087040, -620928768, -640871936, -651791872, -654910016, -655111872, -654414528, -649687360, - -640095616, -628916352, -616357888, -599612352, -580264064, -562188672, -543567808, -520421184, -494704544, -469889824, - -443905824, -414950752, -387043136, -362318624, -336644384, -308771648, -283371200, -260980464, -236863696, -211723632, - -190507040, -171147472, -148254752, -124722632, -105695920, -87316688, -65259344, -44970992, -30302068, -14660871, - 4860829, 20713016, 31747324, 47103980, 66554812, 80329312, 91495152, 111316424, 134142032, 148395408, - 164614288, 196001376, 227258000, 247551712, 288954112, 372055840, 441701408, 434066560, 385475456, }, + -257402224, -451714592, -544733376, -451847200, -201333568, 102984728, 363801440, 536040384, 617267328, 623113856, + 573654080, 485942816, 371313344, 239997936, 103555960, -29695404, -155337696, -267583984, -360738048, -436065344, + -499282432, -551908672, -592087040, -620928768, -640871936, -651791872, -654910016, -655111872, -654414528, -649687360, + -640095616, -628916352, -616357888, -599612352, -580264064, -562188672, -543567808, -520421184, -494704544, -469889824, + -443905824, -414950752, -387043136, -362318624, -336644384, -308771648, -283371200, -260980464, -236863696, -211723632, + -190507040, -171147472, -148254752, -124722632, -105695920, -87316688, -65259344, -44970992, -30302068, -14660871, + 4860829, 20713016, 31747324, 47103980, 66554812, 80329312, 91495152, 111316424, 134142032, 148395408, + 164614288, 196001376, 227258000, 247551712, 288954112, 372055840, 441701408, 434066560, 385475456, }, }, { { 55647208, - 46043660, 6731825, -50016504, -74868256, -44260712, 7266011, 33517388, 26650808, 5660230, -17415556, - -38504920, -47735876, -37747932, -18445810, -7008313, -6036040, -2559801, 13178033, 37095096, 59641528, - 77079096, 90673736, 99350112, 99463928, 91642792, 82303384, 76399416, 72578504, 67134632, 58783068, - 47932372, 35269196, 22805740, 13168370, 7159711, 4658429, 6695854, 13236015, 20955146, 26955752, - 32157494, 37723772, 41839960, 43308840, 43981000, 44657460, 43328704, 39527656, 35013648, 29002840, - 18725520, 4880694, -9757092, -26069378, -46313168, -68515464, -89910848, -112319840, -137518944, -162332576, - -184521456, -206985744, -230567808, -250843264, -266689008, -282178272, -296575008, -304221120, -306310624, -308853248, - -308671232, -298050336, -281906080, -269787296, -252016336, -207995600, -140258592, -77732464, -44070660, }, + 46043660, 6731825, -50016504, -74868256, -44260712, 7266011, 33517388, 26650808, 5660230, -17415556, + -38504920, -47735876, -37747932, -18445810, -7008313, -6036040, -2559801, 13178033, 37095096, 59641528, + 77079096, 90673736, 99350112, 99463928, 91642792, 82303384, 76399416, 72578504, 67134632, 58783068, + 47932372, 35269196, 22805740, 13168370, 7159711, 4658429, 6695854, 13236015, 20955146, 26955752, + 32157494, 37723772, 41839960, 43308840, 43981000, 44657460, 43328704, 39527656, 35013648, 29002840, + 18725520, 4880694, -9757092, -26069378, -46313168, -68515464, -89910848, -112319840, -137518944, -162332576, + -184521456, -206985744, -230567808, -250843264, -266689008, -282178272, -296575008, -304221120, -306310624, -308853248, + -308671232, -298050336, -281906080, -269787296, -252016336, -207995600, -140258592, -77732464, -44070660, }, { 55647208, - 46043660, 6731825, -50016504, -74868256, -44260712, 7266011, 33517388, 26650808, 5660230, -17415556, - -38504920, -47735876, -37747932, -18445810, -7008313, -6036040, -2559801, 13178033, 37095096, 59641528, - 77079096, 90673736, 99350112, 99463928, 91642792, 82303384, 76399416, 72578504, 67134632, 58783068, - 47932372, 35269196, 22805740, 13168370, 7159711, 4658429, 6695854, 13236015, 20955146, 26955752, - 32157494, 37723772, 41839960, 43308840, 43981000, 44657460, 43328704, 39527656, 35013648, 29002840, - 18725520, 4880694, -9757092, -26069378, -46313168, -68515464, -89910848, -112319840, -137518944, -162332576, - -184521456, -206985744, -230567808, -250843264, -266689008, -282178272, -296575008, -304221120, -306310624, -308853248, - -308671232, -298050336, -281906080, -269787296, -252016336, -207995600, -140258592, -77732464, -44070660, }, + 46043660, 6731825, -50016504, -74868256, -44260712, 7266011, 33517388, 26650808, 5660230, -17415556, + -38504920, -47735876, -37747932, -18445810, -7008313, -6036040, -2559801, 13178033, 37095096, 59641528, + 77079096, 90673736, 99350112, 99463928, 91642792, 82303384, 76399416, 72578504, 67134632, 58783068, + 47932372, 35269196, 22805740, 13168370, 7159711, 4658429, 6695854, 13236015, 20955146, 26955752, + 32157494, 37723772, 41839960, 43308840, 43981000, 44657460, 43328704, 39527656, 35013648, 29002840, + 18725520, 4880694, -9757092, -26069378, -46313168, -68515464, -89910848, -112319840, -137518944, -162332576, + -184521456, -206985744, -230567808, -250843264, -266689008, -282178272, -296575008, -304221120, -306310624, -308853248, + -308671232, -298050336, -281906080, -269787296, -252016336, -207995600, -140258592, -77732464, -44070660, }, }, { { 44819596, - 59101436, 58700928, 27790586, -10742787, -21221434, 2320356, 30586072, 32460826, 4057134, -34835944, - -63029180, -72648296, -68759744, -61424476, -57075820, -53681184, -43654048, -22186728, 8320426, 42098732, - 75254808, 105620760, 130752760, 149856784, 166403136, 185202208, 206822544, 227415840, 243862880, 256345120, - 265526160, 269954816, 267554448, 257967008, 242157232, 220848288, 194568464, 164723808, 133708776, 103919416, - 76802072, 52618180, 30959198, 11466489, -6078990, -22204980, -37602440, -52282100, -65415572, -76193792, - -84300008, -89560272, -92070144, -92894240, -93715648, -95483568, -98152888, -101720392, -106421240, -111830208, - -117003496, -121723128, -126485176, -131264936, -135584064, -139702400, -144242720, -148783568, -152498176, -155868656, - -159711040, -163078832, -164956816, -167140800, -170631536, -168793824, -151206464, -119230440, -92601104, }, + 59101436, 58700928, 27790586, -10742787, -21221434, 2320356, 30586072, 32460826, 4057134, -34835944, + -63029180, -72648296, -68759744, -61424476, -57075820, -53681184, -43654048, -22186728, 8320426, 42098732, + 75254808, 105620760, 130752760, 149856784, 166403136, 185202208, 206822544, 227415840, 243862880, 256345120, + 265526160, 269954816, 267554448, 257967008, 242157232, 220848288, 194568464, 164723808, 133708776, 103919416, + 76802072, 52618180, 30959198, 11466489, -6078990, -22204980, -37602440, -52282100, -65415572, -76193792, + -84300008, -89560272, -92070144, -92894240, -93715648, -95483568, -98152888, -101720392, -106421240, -111830208, + -117003496, -121723128, -126485176, -131264936, -135584064, -139702400, -144242720, -148783568, -152498176, -155868656, + -159711040, -163078832, -164956816, -167140800, -170631536, -168793824, -151206464, -119230440, -92601104, }, { 44819596, - 59101436, 58700928, 27790586, -10742787, -21221434, 2320356, 30586072, 32460826, 4057134, -34835944, - -63029180, -72648296, -68759744, -61424476, -57075820, -53681184, -43654048, -22186728, 8320426, 42098732, - 75254808, 105620760, 130752760, 149856784, 166403136, 185202208, 206822544, 227415840, 243862880, 256345120, - 265526160, 269954816, 267554448, 257967008, 242157232, 220848288, 194568464, 164723808, 133708776, 103919416, - 76802072, 52618180, 30959198, 11466489, -6078990, -22204980, -37602440, -52282100, -65415572, -76193792, - -84300008, -89560272, -92070144, -92894240, -93715648, -95483568, -98152888, -101720392, -106421240, -111830208, - -117003496, -121723128, -126485176, -131264936, -135584064, -139702400, -144242720, -148783568, -152498176, -155868656, - -159711040, -163078832, -164956816, -167140800, -170631536, -168793824, -151206464, -119230440, -92601104, }, + 59101436, 58700928, 27790586, -10742787, -21221434, 2320356, 30586072, 32460826, 4057134, -34835944, + -63029180, -72648296, -68759744, -61424476, -57075820, -53681184, -43654048, -22186728, 8320426, 42098732, + 75254808, 105620760, 130752760, 149856784, 166403136, 185202208, 206822544, 227415840, 243862880, 256345120, + 265526160, 269954816, 267554448, 257967008, 242157232, 220848288, 194568464, 164723808, 133708776, 103919416, + 76802072, 52618180, 30959198, 11466489, -6078990, -22204980, -37602440, -52282100, -65415572, -76193792, + -84300008, -89560272, -92070144, -92894240, -93715648, -95483568, -98152888, -101720392, -106421240, -111830208, + -117003496, -121723128, -126485176, -131264936, -135584064, -139702400, -144242720, -148783568, -152498176, -155868656, + -159711040, -163078832, -164956816, -167140800, -170631536, -168793824, -151206464, -119230440, -92601104, }, }, }; -const Word32 CRendBin_FOA_HRIR_coeff_im_16kHz_fx[4][BINAURAL_CHANNELS][80] ={ +const Word32 CRendBin_FOA_HRIR_coeff_im_16kHz_fx[FOA_CHANNELS][BINAURAL_CHANNELS][80] ={ { { -124641560, - -330995936, -435895168, -437441344, -373644960, -285947648, -195637904, -102814000, -970663, 107208824, 208084192, - 288674400, 344239488, 374285984, 379003488, 362399136, 332406304, 294898912, 251757024, 204752896, 156264864, - 107070312, 58171572, 12713103, -28032714, -66919348, -105292736, -139822128, -168325136, -193051264, -215338928, - -233332688, -247173216, -259894384, -271925120, -281149088, -288219680, -295403552, -301753120, -305660480, -309210816, - -314223552, -318274272, -319749568, -321241536, -323750336, -324336608, -322656192, -322037728, -322309920, -320046464, - -316118720, -313960512, -311962272, -306865216, -301171712, -297990208, -294138688, -287096544, -280967104, -277678752, - -272357312, -263981040, -258198944, -254881616, -247710624, -238365312, -233833584, -230562976, -221124784, -211508880, - -209043040, -203756464, -188322512, -177797680, -174789600, -141778480, -58569396, 18691698, 21820582, }, + -330995936, -435895168, -437441344, -373644960, -285947648, -195637904, -102814000, -970663, 107208824, 208084192, + 288674400, 344239488, 374285984, 379003488, 362399136, 332406304, 294898912, 251757024, 204752896, 156264864, + 107070312, 58171572, 12713103, -28032714, -66919348, -105292736, -139822128, -168325136, -193051264, -215338928, + -233332688, -247173216, -259894384, -271925120, -281149088, -288219680, -295403552, -301753120, -305660480, -309210816, + -314223552, -318274272, -319749568, -321241536, -323750336, -324336608, -322656192, -322037728, -322309920, -320046464, + -316118720, -313960512, -311962272, -306865216, -301171712, -297990208, -294138688, -287096544, -280967104, -277678752, + -272357312, -263981040, -258198944, -254881616, -247710624, -238365312, -233833584, -230562976, -221124784, -211508880, + -209043040, -203756464, -188322512, -177797680, -174789600, -141778480, -58569396, 18691698, 21820582, }, { -124641560, - -330995936, -435895168, -437441344, -373644960, -285947648, -195637904, -102814000, -970663, 107208824, 208084192, - 288674400, 344239488, 374285984, 379003488, 362399136, 332406304, 294898912, 251757024, 204752896, 156264864, - 107070312, 58171572, 12713103, -28032714, -66919348, -105292736, -139822128, -168325136, -193051264, -215338928, - -233332688, -247173216, -259894384, -271925120, -281149088, -288219680, -295403552, -301753120, -305660480, -309210816, - -314223552, -318274272, -319749568, -321241536, -323750336, -324336608, -322656192, -322037728, -322309920, -320046464, - -316118720, -313960512, -311962272, -306865216, -301171712, -297990208, -294138688, -287096544, -280967104, -277678752, - -272357312, -263981040, -258198944, -254881616, -247710624, -238365312, -233833584, -230562976, -221124784, -211508880, - -209043040, -203756464, -188322512, -177797680, -174789600, -141778480, -58569396, 18691698, 21820582, }, + -330995936, -435895168, -437441344, -373644960, -285947648, -195637904, -102814000, -970663, 107208824, 208084192, + 288674400, 344239488, 374285984, 379003488, 362399136, 332406304, 294898912, 251757024, 204752896, 156264864, + 107070312, 58171572, 12713103, -28032714, -66919348, -105292736, -139822128, -168325136, -193051264, -215338928, + -233332688, -247173216, -259894384, -271925120, -281149088, -288219680, -295403552, -301753120, -305660480, -309210816, + -314223552, -318274272, -319749568, -321241536, -323750336, -324336608, -322656192, -322037728, -322309920, -320046464, + -316118720, -313960512, -311962272, -306865216, -301171712, -297990208, -294138688, -287096544, -280967104, -277678752, + -272357312, -263981040, -258198944, -254881616, -247710624, -238365312, -233833584, -230562976, -221124784, -211508880, + -209043040, -203756464, -188322512, -177797680, -174789600, -141778480, -58569396, 18691698, 21820582, }, }, { { 75593568, - 155059056, 65981972, -176542480, -455539808, -637033280, -657530496, -539268608, -342454912, -120152784, 93872416, - 282080576, 438413088, 560683840, 646364096, 696203456, 715256448, 707575488, 676227584, 628872896, 575156800, - 518422432, 457256192, 393254176, 330107968, 268590080, 209222352, 155216352, 107179296, 60949880, 14872935, - -27944668, -66942436, -105086576, -141653920, -173350256, -201999824, -231627056, -260288432, -284058944, -304740288, - -324854688, -341365088, -352426752, -362333632, -372995360, -380162592, -383072960, -386599680, -390847392, -391133536, - -388979616, -389657152, -390702976, -386790784, -381270688, -378934752, -375216384, -366126112, -357851296, -353983680, - -347605664, -336765696, -329902336, -327582528, -320349792, -309751968, -306260704, -305536992, -296023104, -285476800, - -286087776, -284915232, -269088832, -259352672, -266973552, -245536832, -154669296, -45682884, 1611, }, + 155059056, 65981972, -176542480, -455539808, -637033280, -657530496, -539268608, -342454912, -120152784, 93872416, + 282080576, 438413088, 560683840, 646364096, 696203456, 715256448, 707575488, 676227584, 628872896, 575156800, + 518422432, 457256192, 393254176, 330107968, 268590080, 209222352, 155216352, 107179296, 60949880, 14872935, + -27944668, -66942436, -105086576, -141653920, -173350256, -201999824, -231627056, -260288432, -284058944, -304740288, + -324854688, -341365088, -352426752, -362333632, -372995360, -380162592, -383072960, -386599680, -390847392, -391133536, + -388979616, -389657152, -390702976, -386790784, -381270688, -378934752, -375216384, -366126112, -357851296, -353983680, + -347605664, -336765696, -329902336, -327582528, -320349792, -309751968, -306260704, -305536992, -296023104, -285476800, + -286087776, -284915232, -269088832, -259352672, -266973552, -245536832, -154669296, -45682884, 1611, }, { -75593568, - -155059056, -65981972, 176542480, 455539808, 637033280, 657530496, 539268608, 342454912, 120152784, -93872416, - -282080576, -438413088, -560683840, -646364096, -696203456, -715256448, -707575488, -676227584, -628872896, -575156800, - -518422432, -457256192, -393254176, -330107968, -268590080, -209222352, -155216352, -107179296, -60949880, -14872935, - 27944668, 66942436, 105086576, 141653920, 173350256, 201999824, 231627056, 260288432, 284058944, 304740288, - 324854688, 341365088, 352426752, 362333632, 372995360, 380162592, 383072960, 386599680, 390847392, 391133536, - 388979616, 389657152, 390702976, 386790784, 381270688, 378934752, 375216384, 366126112, 357851296, 353983680, - 347605664, 336765696, 329902336, 327582528, 320349792, 309751968, 306260704, 305536992, 296023104, 285476800, - 286087776, 284915232, 269088832, 259352672, 266973552, 245536832, 154669296, 45682884, -1611, }, + -155059056, -65981972, 176542480, 455539808, 637033280, 657530496, 539268608, 342454912, 120152784, -93872416, + -282080576, -438413088, -560683840, -646364096, -696203456, -715256448, -707575488, -676227584, -628872896, -575156800, + -518422432, -457256192, -393254176, -330107968, -268590080, -209222352, -155216352, -107179296, -60949880, -14872935, + 27944668, 66942436, 105086576, 141653920, 173350256, 201999824, 231627056, 260288432, 284058944, 304740288, + 324854688, 341365088, 352426752, 362333632, 372995360, 380162592, 383072960, 386599680, 390847392, 391133536, + 388979616, 389657152, 390702976, 386790784, 381270688, 378934752, 375216384, 366126112, 357851296, 353983680, + 347605664, 336765696, 329902336, 327582528, 320349792, 309751968, 306260704, 305536992, 296023104, 285476800, + 286087776, 284915232, 269088832, 259352672, 266973552, 245536832, 154669296, 45682884, -1611, }, }, { { -13516799, - -47047608, -75309032, -62113280, -5710159, 44517336, 47165720, 14072460, -18145164, -33218350, -34133716, - -21449066, 3812857, 28223304, 37196028, 34013456, 34574488, 45631344, 58047556, 60662120, 52355652, - 38347616, 20948702, -663572, -23905252, -42361264, -53194780, -60423748, -68946576, -79115448, -88714696, - -96179352, -100115152, -99302864, -94590752, -88048976, -80552648, -73115376, -68803768, -69573640, -73409584, - -78094856, -84709640, -94160176, -104377368, -114173656, -125358288, -138490688, -151593024, -164659376, -179687472, - -195560592, -209066656, -220571808, -232225664, -242282320, -247946848, -250888368, -253211952, -252287984, -246004992, - -237357616, -227911360, -214068144, -194943200, -174967840, -154628480, -129406824, -100615512, -74480104, -49318036, - -18799608, 12666395, 36197448, 58251032, 91465624, 125506464, 131118912, 95768640, 34258268, }, + -47047608, -75309032, -62113280, -5710159, 44517336, 47165720, 14072460, -18145164, -33218350, -34133716, + -21449066, 3812857, 28223304, 37196028, 34013456, 34574488, 45631344, 58047556, 60662120, 52355652, + 38347616, 20948702, -663572, -23905252, -42361264, -53194780, -60423748, -68946576, -79115448, -88714696, + -96179352, -100115152, -99302864, -94590752, -88048976, -80552648, -73115376, -68803768, -69573640, -73409584, + -78094856, -84709640, -94160176, -104377368, -114173656, -125358288, -138490688, -151593024, -164659376, -179687472, + -195560592, -209066656, -220571808, -232225664, -242282320, -247946848, -250888368, -253211952, -252287984, -246004992, + -237357616, -227911360, -214068144, -194943200, -174967840, -154628480, -129406824, -100615512, -74480104, -49318036, + -18799608, 12666395, 36197448, 58251032, 91465624, 125506464, 131118912, 95768640, 34258268, }, { -13516799, - -47047608, -75309032, -62113280, -5710159, 44517336, 47165720, 14072460, -18145164, -33218350, -34133716, - -21449066, 3812857, 28223304, 37196028, 34013456, 34574488, 45631344, 58047556, 60662120, 52355652, - 38347616, 20948702, -663572, -23905252, -42361264, -53194780, -60423748, -68946576, -79115448, -88714696, - -96179352, -100115152, -99302864, -94590752, -88048976, -80552648, -73115376, -68803768, -69573640, -73409584, - -78094856, -84709640, -94160176, -104377368, -114173656, -125358288, -138490688, -151593024, -164659376, -179687472, - -195560592, -209066656, -220571808, -232225664, -242282320, -247946848, -250888368, -253211952, -252287984, -246004992, - -237357616, -227911360, -214068144, -194943200, -174967840, -154628480, -129406824, -100615512, -74480104, -49318036, - -18799608, 12666395, 36197448, 58251032, 91465624, 125506464, 131118912, 95768640, 34258268, }, + -47047608, -75309032, -62113280, -5710159, 44517336, 47165720, 14072460, -18145164, -33218350, -34133716, + -21449066, 3812857, 28223304, 37196028, 34013456, 34574488, 45631344, 58047556, 60662120, 52355652, + 38347616, 20948702, -663572, -23905252, -42361264, -53194780, -60423748, -68946576, -79115448, -88714696, + -96179352, -100115152, -99302864, -94590752, -88048976, -80552648, -73115376, -68803768, -69573640, -73409584, + -78094856, -84709640, -94160176, -104377368, -114173656, -125358288, -138490688, -151593024, -164659376, -179687472, + -195560592, -209066656, -220571808, -232225664, -242282320, -247946848, -250888368, -253211952, -252287984, -246004992, + -237357616, -227911360, -214068144, -194943200, -174967840, -154628480, -129406824, -100615512, -74480104, -49318036, + -18799608, 12666395, 36197448, 58251032, 91465624, 125506464, 131118912, 95768640, 34258268, }, }, { { 2524904, - -6667400, -36648956, -59020904, -46782932, -10592463, 12430709, 528281, -32361504, -55874840, -52653616, - -27202712, 5201206, 32166620, 50741816, 66517232, 86834576, 112838992, 138209904, 155768800, 163266208, - 162048048, 153503744, 139643344, 124723168, 112251120, 100708392, 85207320, 63358284, 37009196, 8313983, - -22997940, -57576184, -93972272, -129579160, -162667584, -192314672, -217229248, -235842016, -247436288, -252719104, - -253362272, -251080032, -246946128, -241466288, -235115104, -228319920, -220868160, -211994224, -201354512, -189441344, - -177004736, -164805408, -153993376, -145716960, -140006272, -135824576, -132352104, -129337032, -126228552, -122214368, - -117293944, -112182400, -107019848, -101358544, -95343440, -89495848, -83437256, -76397808, -68776384, -61350388, - -53382684, -43865036, -33872260, -24074902, -10565620, 10658498, 32707786, 38097432, 17067126, }, + -6667400, -36648956, -59020904, -46782932, -10592463, 12430709, 528281, -32361504, -55874840, -52653616, + -27202712, 5201206, 32166620, 50741816, 66517232, 86834576, 112838992, 138209904, 155768800, 163266208, + 162048048, 153503744, 139643344, 124723168, 112251120, 100708392, 85207320, 63358284, 37009196, 8313983, + -22997940, -57576184, -93972272, -129579160, -162667584, -192314672, -217229248, -235842016, -247436288, -252719104, + -253362272, -251080032, -246946128, -241466288, -235115104, -228319920, -220868160, -211994224, -201354512, -189441344, + -177004736, -164805408, -153993376, -145716960, -140006272, -135824576, -132352104, -129337032, -126228552, -122214368, + -117293944, -112182400, -107019848, -101358544, -95343440, -89495848, -83437256, -76397808, -68776384, -61350388, + -53382684, -43865036, -33872260, -24074902, -10565620, 10658498, 32707786, 38097432, 17067126, }, { 2524904, - -6667400, -36648956, -59020904, -46782932, -10592463, 12430709, 528281, -32361504, -55874840, -52653616, - -27202712, 5201206, 32166620, 50741816, 66517232, 86834576, 112838992, 138209904, 155768800, 163266208, - 162048048, 153503744, 139643344, 124723168, 112251120, 100708392, 85207320, 63358284, 37009196, 8313983, - -22997940, -57576184, -93972272, -129579160, -162667584, -192314672, -217229248, -235842016, -247436288, -252719104, - -253362272, -251080032, -246946128, -241466288, -235115104, -228319920, -220868160, -211994224, -201354512, -189441344, - -177004736, -164805408, -153993376, -145716960, -140006272, -135824576, -132352104, -129337032, -126228552, -122214368, - -117293944, -112182400, -107019848, -101358544, -95343440, -89495848, -83437256, -76397808, -68776384, -61350388, - -53382684, -43865036, -33872260, -24074902, -10565620, 10658498, 32707786, 38097432, 17067126, }, + -6667400, -36648956, -59020904, -46782932, -10592463, 12430709, 528281, -32361504, -55874840, -52653616, + -27202712, 5201206, 32166620, 50741816, 66517232, 86834576, 112838992, 138209904, 155768800, 163266208, + 162048048, 153503744, 139643344, 124723168, 112251120, 100708392, 85207320, 63358284, 37009196, 8313983, + -22997940, -57576184, -93972272, -129579160, -162667584, -192314672, -217229248, -235842016, -247436288, -252719104, + -253362272, -251080032, -246946128, -241466288, -235115104, -228319920, -220868160, -211994224, -201354512, -189441344, + -177004736, -164805408, -153993376, -145716960, -140006272, -135824576, -132352104, -129337032, -126228552, -122214368, + -117293944, -112182400, -107019848, -101358544, -95343440, -89495848, -83437256, -76397808, -68776384, -61350388, + -53382684, -43865036, -33872260, -24074902, -10565620, 10658498, 32707786, 38097432, 17067126, }, }, }; //BRIR coeff diffuse tables in Q31 const Word32 CRendBin_Combined_BRIR_coeff_diffuse_re_48kHz_fx[BINAURAL_CHANNELS][2885] ={ { -77309, - -23622, -40802, -27917, -64425, -12885, -103079, -27917, -339302, 229781, -17180, - 231928, -47245, 98784, 642098, -79457, -753767, -760209, -242666, -472446, 68719, - -386547, -1015760, 279173, -249108, -195421, 283468, 73014, -339302, -560493, -700080, - 79457, -418759, -279173, 163209, -775242, 689342, 691490, -397284, -70867, -251256, - -738734, 77309, -674310, -502511, 478889, -322123, 1037235, 4367982, -1913408, 1932735, - -833224, 685047, -38655, 1007170, -453119, 244813, 423054, 513249, 545461, 955630, - -249108, 105227, 1752347, 1314260, -3481071, 685047, -457414, 169651, -1194001, 775242, - -1501091, 1479616, 1217623, 605590, -206158, -470299, -560493, 1050120, 955630, -438087, - 206158, 1816771, -693637, -38655, -633508, 212601, 266288, -51540, -528281, 852551, - 115964, -261993, 633508, 17557826, -1297080, 2422362, -70867, 749472, 311385, 566936, - 373662, 1657857, -996432, 682900, -371515, 264141, 897648, 1415192, 547608, 253403, - -719407, 1286343, -979253, 474594, -470299, -1408749, 115964, 455267, 21475, -457414, - 92342, -508954, 878321, -1891933, 405874, -457414, 463856, -42950, -2645700, -932008, - 236223, 388695, 270583, -478889, -620623, -534723, 339302, 989990, -450972, 423054, - 10630044, -12513387, 2529736, -2989297, 1677185, -1928440, 1552631, -2645700, -773094, -1623498, - -272730, -1348620, 148176, 2486786, 3609920, 1524713, 826781, 88047, 1155346, 2583423, - 1894081, -1144609, -1372242, -1851131, -858993, -1060857, 133144, -152471, -128849, 73014, - 579821, -850404, 1144609, -1125281, -1490354, 577673, 15032, 133144, 358630, -1041530, - -1166084, 384400, -693637, -968515, -146029, 156766, 809601, -24262270, 4885526, -1183264, - 654983, 564788, -1995012, -876173, 1973538, -277025, 206158, 2207613, 743029, -788127, - -1468879, 1550483, 173946, -1795296, -2583423, -3762391, 1267015, -1651415, 433792, -508954, - 753767, -350040, 311385, -1937030, -1904818, -1176821, -476741, -1191853, 410169, -558346, - 736587, 2317135, 438087, 433792, 1552631, 453119, 395137, -15032, -251256, -1471026, - -311385, 384400, -234076, -36507, -29021094, 10904922, -2682207, 3526168, -1672890, 2553358, - -1357210, -358630, -2445984, 1943473, -2901251, 1990717, -472446, 2770254, -3680787, 1002875, - 3489661, 1060857, -2886218, -985695, -1726577, -680752, 1133871, 614180, 846109, -408022, - -964220, -1352915, -1342177, -62277, -1544041, -221191, -1434519, -979253, -4032974, -1078037, - -545461, 281320, 118112, 1468879, 627065, 1449552, -120259, 1677185, 405874, 208306, - 423054, 3579855, 12605729, -3536906, 5566278, -3455301, 1421634, -3723737, 2845416, -313533, - 3105261, -300648, -360777, 3049427, -556198, -478889, 2665027, -1374390, -2529736, -4015795, - 3478924, -337155, 2366527, 229781, 1668595, 777389, -2342905, 927713, 891206, -208306, - 1144609, 1760937, -2327872, 249108, -111669, -249108, -1352915, -644245, -1324997, 296353, - -307090, 938450, 2927020, 60130, 1464584, -324270, 251256, -373662, 416612, 1144609, - -584116, -1125281, 38158636, -9461813, 3590593, -1866163, 3173981, -1447404, 2426657, -1415192, - 809601, -3762391, 1687922, -3594888, 2680060, -1129576, 764504, -1078037, 3790309, 481036, - 925565, -1883343, 2465311, -270583, -1189706, 2083059, -1683627, -2611340, 32212, -848256, - 1189706, -60130, -416612, -884763, 339302, -133144, 448824, -1814624, 382252, -828929, - 2720862, -564788, 1286343, 197569, 1075889, 2010045, -1447404, 57982, 448824, -753767, - 1589138, -386547, -749472, 3253438, -19782620, 7859790, -6081674, 3642132, -3012920, 1082332, - -3981435, 2641405, -1571958, 3676492, -375810, 1625645, -3171833, -1314260, -178241, -1127429, - -1058710, 4239133, -3066607, 573378, 1984275, -3798899, 1015760, 1395864, -936303, 1361505, - 468151, 801011, -2418067, -173946, -758062, 1548336, -1191853, 865436, -2858301, -539018, - 2134599, 1063004, 693637, -691490, -410169, -2158221, -2319282, 1318555, 496069, -60130, - -322123, -158914, 229781, 251256, -470299, -431644, 309238, 354335, -783832, -586263, - -481036, -31969590, 10554882, -5609228, 1518271, -466004, 1853278, -2338610, 2656437, -998580, - -837519, -255551, 1941325, -951335, -1434519, 1157494, 3674345, -435939, 216896, -5987185, - 586263, 158914, 3017215, -897648, -386547, -4563403, -1516124, 115964, 156766, 1666447, - 2278480, -3435974, -3137474, 2128156, 590558, -3545496, -2695092, 1410897, 852551, -156766, - -34360, -1327145, 1483911, -380105, 586263, 238371, -1816771, -743029, 1080184, -2862596, - -1387274, -530428, 687195, -534723, 122407, -1404454, -53687, -1005022, 173946, -31930934, - 14194867, -7776039, 5985037, -5413807, 2753074, -6167573, 1477469, -4007205, 6438156, -3193308, - 2304250, -356482, 94489, -2890513, -785979, -1172526, 5834713, -1063004, 3004330, 4724464, - 2742337, 727997, -573378, 1159641, -970663, 2658585, 2592013, 395137, -1221918, 481036, - 541166, -1715839, -730144, 1359357, 1962800, -1406602, -1350767, -1428077, 154619, -575526, - 874026, -1378685, 1065152, -2183991, 712965, -1185411, -19327, 253403, -816044, -1176821, - -1464584, -1410897, -1838246, 261993, -1670742, -833224, 68719, 11800423, 12266427, -4638565, - 4035122, -5083094, 700080, 1445257, 60130, -2078764, 2231236, 513249, 4818954, 2473901, - 5452461, -921271, 3189013, -962073, 2014340, 2830384, -457414, -4105989, 3777424, -496069, - 1550483, -979253, -68719, 472446, 4636417, 620623, -2615635, -944893, 558346, -1486059, - 3483219, 1432372, -614180, -1002875, -2068027, 1498944, -2027225, 1937030, 2059437, -1644973, - 1157494, 1017907, 506806, -238371, 3384434, 2046552, 2463164, -182536, 249108, 1045825, - -788127, -369367, -287763, -828929, -70867, 94489, 261993, -700080, -1479616, -1578401, - 272730, 760209, 36030480, -12966506, 4404489, -6101001, 4037269, -4045859, 5209796, -1889786, - 176094, -4041564, 7861938, -1219771, 7075959, 365072, 1155346, -4870493, 1642825, 7103876, - -2276333, -6128919, 826781, 173946, 2740189, -4443144, 3508988, -120259, 249108, -466004, - -4271345, -1320703, 639950, -5145371, 779537, 1971390, 1632088, -1509681, -461709, -279173, - 2314987, 624918, -461709, -1127429, 1793149, 1185411, 4535486, 1093069, -736587, 2469606, - 974958, -358630, 796716, 1851131, 1232656, 171799, 257698, -1586990, 272730, -244813, - 1853278, -296353, 704375, -309238, 629213, -139586, 581968, 12120398, -17433272, 10494753, - -7735236, 3298535, 1209033, -758062, -631360, 2113124, -4367982, -2761664, -2250563, -1737314, - -5985037, 3081639, -5557688, -186831, -4443144, 1679332, -3339337, -2611340, -1316408, 5117454, - 734439, 4982162, 2617783, 3427384, 4913443, 296353, -601295, -706522, 1398012, 3803194, - -296353, -229781, -2493229, 1954210, -289910, -1453846, 1408749, 1206886, 3940633, 1649268, - 1864016, -2731599, -1282048, -111669, -504659, 1964948, -5607080, 1264868, -1370095, -895501, - -1733019, -1919850, -657130, -1896228, 801011, -1309965, -216896, -2907693, -2905546, 55835, - -1030792, 2426657, -37005440, -8042327, 1754494, -6972880, -2849711, 356482, -167504, -5933498, - 1769527, -5907728, 227633, 4857608, -843961, -740882, 2686502, 1786706, 2733747, 216896, - 3296388, -1739462, 970663, 3824669, -208306, -176094, -2420214, 3644280, -2729452, -1462436, - 985695, 1513976, 2780991, 8506183, -2267743, -1309965, -3592740, 270583, -2634963, 706522, - -1026497, -3906273, -204011, 5147519, 1473174, -3360812, -1662152, 1754494, -2035815, -2529736, - 528281, -1157494, 339302, 605590, 3240553, 526134, 1610613, 912681, -2654290, -1309965, - 1726577, 1653562, -1047972, 1015760, -176094, -1174674, 68719, -45425720, 37499360, -13103945, - 11145440, -8207683, 6279242, -2381559, 4002910, -4355097, 2686502, 3126736, 4531191, -2946348, - 5484673, 2707977, 9326521, -1462436, 794569, -4937065, 1260573, -1735167, -3070902, -3826816, - -4385162, -4054449, 6055904, -279173, 7267085, 1876901, 1344325, -128849, 938450, -3210488, - 530428, -1176821, 1526861, 4288525, 788127, 1406602, 272730, 438087, -3249143, -1801739, - -107374, -261993, 457414, -1009317, -2989297, 57982, 3251290, -1054415, 974958, 925565, - -2645700, 1818919, 811749, 992137, -526134, 287763, -266288, -850404, 261993, 2884071, - 51540, 169651, 26416196, -4127464, -8596377, -3021510, -1855426, -1428077, -7578470, -4007205, - 2042257, 1236951, 2091649, 2624225, -5111011, 1988570, -1047972, 1765232, 8057359, -8250632, - 2778844, 2787434, 2153926, -2166811, -4797479, 3648575, 1047972, 2598455, 4945655, -40802, - 6835441, 551903, 3150359, 225486, 2119566, -1937030, 2553358, 1836099, 2435247, -1002875, - 775242, -240518, 3137474, 3891240, -5879810, 7818988, 618475, 2153926, 296353, 1327145, - 1477469, -1698660, 4668630, 2503966, 135291, 4277788, 1791001, -2415919, -242666, -1629940, - -1756642, -1331440, 738734, -375810, 223338, -143881, -4864051, 2443837, -1954210, 642098, - -691490, -319975, -1236951, -723702, 20933670, 1788854, 4230543, -5473936, -1071594, -13531294, - 3182571, -693637, -9206262, 7636452, -4282083, 225486, 5598490, 2486786, 4194036, -3294240, - 1831804, -4301410, 45097, -3687230, 1324997, -5579163, 7887708, 5665062, 4645007, 5398774, - 1178969, -1857573, -3457449, 1488206, 4318590, -42950, 2933463, -2199023, 571231, 2826089, - 2005750, 2538326, 156766, 874026, -354335, -1906966, 1812476, -1337882, 833224, 697932, - -1917703, 2518998, -3519726, 3064459, -1664300, 2149631, 3345780, -4174708, 388695, 418759, - -1705102, -3302830, 2269890, -5319317, -4086662, 2463164, 1041530, 1114544, 998580, 3210488, - 3128884, -1202591, 423054, 1848983, -777389, -79457, 33116346, -27489938, 9358734, -6824703, - 2445984, 8619999, 7015829, -4589173, 8407398, 4741644, 5091684, -3448859, 2385854, -1750199, - 9979357, 2785286, 2841121, 3871913, 4243428, 2688650, 2909840, -8158291, 1340030, -14759655, - -5111011, -1355062, -8435316, 2143189, 4571993, -3176128, -4561256, -5385889, -5153961, -2750927, - 3012920, 2366527, -7492571, -8693014, -635655, -4428112, 2409477, 1945620, 863288, -609885, - 4155381, -2151779, 244813, -562641, -1810329, -5581310, 4370129, 7370164, -957778, -912681, - 3496104, -5177583, 6335077, 1632088, -3152506, -109522, -2924873, -1241246, -710817, -2113124, - -526134, -1425929, -4299263, 1136019, 1599875, 1471026, 1586990, 502511, -51105816, 5196911, - -4458176, 1992865, 5330055, 3859028, 10559177, -4183298, -253403, 953483, 12616466, 4453881, - -9689446, -6289980, 5626407, 7509751, -1750199, -2686502, -98784, 3521873, 7752416, 7879118, - -6442, -13799730, -3917010, -1329292, -1565516, 8177618, -3603478, 4818954, 566936, -777389, - -7114614, 676457, 5849746, -9126806, -5310727, -2065879, -1516124, -4273493, -3558381, -8525510, - -1494649, -5748814, 152471, 1367947, 6317897, -4140349, -2697240, 635655, -530428, 1069447, - -5267778, 2203318, 2130304, 770947, 395137, -3955665, -3588445, -1949915, -1065152, -221191, - -6841883, 1507534, 2110977, -2894808, -6281390, 2645700, -221191, -3096672, -543313, -1389422, - -977105, 4127464, -30163556, 31842888, -4645007, 1937030, 7436736, 8942122, -6882685, 4264903, - 1627793, 5495411, 3685082, 7791071, 4352950, -5398774, -8942122, 1187559, 9272834, 18640158, - -4617090, -6423124, 4801774, 2972117, -3676492, -9283572, -1979980, -1917703, -8443906, 7239168, - 8592082, 75162, 1915555, -234076, 6730214, -5396627, -16649441, 6917045, -2098092, 5478231, - 2536178, 180389, -4211216, -6410239, 4286378, 5160403, 3685082, -790274, -461709, 5682242, - 3096672, 1720134, -3536906, 4778151, 3904125, -710817, -1378685, -2841121, 3178276, 66572, - -8291435, 6676527, 3889093, -1559073, 1795296, -1052267, 85899, -191126, 1857573, 493921, - 2312840, 3929895, 1979980, -633508, -2538326, -1612760, 5654325, 2220498, -1129576, -1801739, - -335007, 8939974, 322123, -6977175, -14229227, 3375844, -785979, -11759620, 3910568, -3932043, - 504659, -4490389, -3496104, 3629247, 8866960, 1039382, 11761768, 5295695, -5978595, -7868380, - 12876312, -5662915, -450972, 1093069, -12156905, -156766, 6378027, -7099581, -1900523, 8050916, - 481036, 4172561, 94489, 5276368, -934155, -3695819, -515396, 7026567, 9554155, -3212636, - 1917703, 1593433, 6365142, -3878356, -693637, 1170379, -1640678, 4071629, 1851131, 266288, - -2199023, 3238405, 3665755, 113817, 161061, 2680060, 4292820, -5261335, -36507, 1363652, - 2351495, -2735894, 2130304, 979253, 60130, 1417339, -1651415, 635655, 1702955, 3491809, - 4312147, -3575560, 384400, 67025112, -6560563, 1013612, 4078072, -6124624, -10511932, -6150393, - -2695092, -11935714, -12818330, 878321, -11366631, -5044439, -3358665, -2864743, 6813966, 7975755, - 2445984, 16797618, 2957085, -8450348, 14439680, -1544041, 10194105, -3377992, -1189706, -9663676, - 253403, 8398809, -399432, -4211216, -1752347, 788127, -2237678, -1870458, 3161096, -7707319, - 2980707, 1069447, -3732327, -7312182, -5025112, 5508296, 5379447, 6485401, -11184095, 6146098, - 1586990, -330712, 380105, 1032940, 1097364, 1372242, -1067299, 528281, 5723044, -1709397, - 2173254, 2684355, -2566243, 4797479, 5428839, 874026, -629213, 5080947, 3528316, 2783139, - 3322157, -4367982, -2136746, 947040, -616328, -689342, 143881, 2248416, 472446, -4232691, - -39352636, -66065188, 24013162, -1612760, 10030896, -11510512, 618475, -13344463, -1666447, -19271518, - 8426726, 8976482, -358630, -1449552, -167504, 1855426, -4552666, -16426102, 30419106, 2156074, - -3816079, 10456098, 1921998, -5437429, 14643691, 16237124, -6882685, 9597104, 1930588, -2020782, - -15109695, -8272107, 11940009, -6064494, 1750199, -781684, 8143258, -12348031, -13846975, 2003602, - 279173, -9380209, 5757404, 1185411, -5798206, 4183298, -6395207, -5366562, 2643552, 2493229, - 416612, -1713692, -2976412, 3876208, 6562710, 962073, 2115272, -1851131, -1791001, 5680094, - 751619, 1279900, -5703717, -1324997, -3783866, 3193308, 4810364, 47245, 3972845, -53687, - 5269925, -4202626, 2680060, -62277, -178241, -3972845, 27917, -3408057, -380105, -21206402, - 63977832, -28329604, 4853313, 4243428, 16097537, -1973538, 10305774, -10052371, 700080, -19331648, - -3631395, 152471, 7894150, 1350767, 8128226, -5506148, -11688753, 1574106, -17624398, -18614388, - 633508, -6083821, -249108, 1642825, 2772402, -4582730, -2995740, -6618545, -10000831, 4110284, - 5001490, -13114683, -5847598, -16499117, 373662, -7267085, 6060199, 6992207, -13509820, 2186138, - 11368778, 10159745, -5126044, 3721589, -3751654, -1891933, 3300682, -6137509, -1191853, 5772436, - 4619238, 3964255, 4962835, 2604898, -1292785, 3816079, 2643552, -2815351, 0, 7756711, - -663572, -3543348, -981400, 3208341, -3161096, -7898445, -418759, -2750927, 2179696, 1694365, - -996432, -3197603, -4608500, -5572720, 5815386, -1887638, -60130, -1247688, -236223, -695785, - -52632676, -16187732, 6111739, -8177618, 7700877, -3313567, 240518, -15393163, -18532784, -2368675, - -6380174, 7999377, 2394444, -2102387, -38482908, 19572166, 1539746, 17078938, 21187074, 14718853, - -20044612, -4756677, -1797444, -4870493, 4518306, 4971425, -188979, -7183333, 8332237, -13488345, - -7148973, 12311524, 781684, -5044439, 14351633, 500364, 15047418, -4964982, -2226941, 1956358, - 4818954, -10477573, -7720204, -1690070, 8542690, -2866891, 1513976, -3169686, 5757404, 7224135, - 1516124, 566936, -12219182, -1095217, 6204081, 6981470, -3723737, 7799661, 2652142, -1904818, - 2132451, -7524783, -2267743, -4969277, 5242008, 1000727, -1662152, 2042257, -13050258, 287763, - 2660732, 6524056, 2229088, -3251290, 6255620, 788127, -8171176, -3573413, -4121021, -962073, - 1896228, 33601676, 11207717, -20525648, -3661460, -8955007, 6891275, -12470438, 10075993, -2488934, - 11751031, 8085276, 14306536, -19685982, 23244364, -14577119, 13539884, -8072391, 8061654, 1331440, - 6826851, -12674448, -28709708, 10874857, 19765440, -7436736, 8042327, -10337986, 2269890, -6865505, - 20798380, -418759, -2173254, 4769561, -10260677, -7290707, -6053757, 8950712, -4295, -3605625, - -85899, -2035815, 14267881, 9401683, -5463199, 4425964, 5375152, -6195491, -3545496, -5604933, - -10969346, -1733019, 137439, -1709397, -4086662, -11276437, -539018, 16621523, 9064528, -7284265, - 9328669, -1251983, -244813, 7655779, 4045859, -8287140, 2954938, 1546188, 8224863, 9702331, - -7984344, 3337190, 5731634, 7346542, -749472, -476741, -2808909, -1647120, 4194036, -957778, - 7687992, -2007897, 71625024, -58344984, -9758166, 2946348, -1093069, -16110422, 5448166, 4245575, - 22898618, -7464653, 4531191, 18805514, 545461, 11315091, 37179384, -8057359, -2379412, -19318762, - -18036716, 839666, 6186901, -8147553, 3566970, 32751274, 18988050, 2725157, 1284195, 2669322, - 18172006, -15118285, -6637872, -837519, 9399536, -1451699, 2299955, -7670812, 2950643, -13625784, - -7956427, -10303627, 225486, -9229885, 2267743, -16436840, 7642895, -32839320, -8340827, 4496831, - 6128919, -1236951, -7503308, 2531883, 1037235, 3925600, -8912057, 3985730, -5188321, -5950677, - -14418205, -10812580, -3113851, -1821066, 785979, 2443837, 4720169, 867583, 2295660, -8665097, - 17180, -10574209, -1511829, -747324, 360777, 3491809, 10617159, -6614250, -2858301, -719407, - -5538361, -9764608, 2261300, -45105748, -31346818, -2171106, -6221260, 23890756, 938450, 4548371, - -29545080, 1698660, 4243428, 1864016, 2452426, 18083960, -22174916, 4885526, -4606353, -15238544, - -7303592, 14364518, -4808216, 11720966, -3786014, 6854768, 3796751, -2244121, -1593433, 7739531, - -856846, 32212, -18955838, 9603547, 8738111, 8235600, 9494025, -17035988, -17529910, 10438918, - 15526307, -18330920, 6972880, 2774549, 16125455, 9300752, 1707250, 10844792, -5471789, -11025181, - -1503239, -21365314, -15509127, -1649268, -616328, 3504693, -10065256, 3659312, -8035884, -27421218, - -7887708, -7337952, -26961658, 122407, -4252018, -3098819, 3283503, 8521215, -7803956, 5278515, - 3635690, -12195560, -7647190, -9360881, -1825361, -2733747, -64425, -3835406, 5392332, -5909875, - -1329292, -5016522, 9109626, -9822590, 6079526, -1516124, -1990717, 579821, 2710124, -2280628, - -28166396, 43095700, -22503482, -9545565, -13134010, 3496104, 3768834, 6438156, -2660732, 18876382, - 14218489, -13376676, -23875724, 9073118, -8927090, 22136262, 1864016, 9521942, 11615739, -8211978, - -8038032, 29384018, -16720308, -3914863, -8469676, 1161789, -3468186, 4024384, -4915590, -1803886, - -22533546, 20061792, -6919193, -1623498, 23596550, -15988016, -20319490, 2001455, -9204115, -13228499, - -55835, -6700149, 5366562, -29197188, -9730248, -7039452, -672162, 10514080, 163209, 2235531, - 5381594, -4861903, 4116726, 7090991, 6000070, 6738804, -3730179, -6043019, -5413807, 7642895, - -17744658, -3697967, -4161823, -4202626, 11647951, -7683697, -12412455, 12792560, 3861176, 7780334, - 14961519, -5282810, -4967130, 7580618, -8057359, -10020159, -9401683, 5804649, 4303557, -5349382, - 5166846, 1926293, 6090264, 1299228, -11218455, 7726646, -3723737, -58961312, 29693256, 31978180, - 16449725, 14944339, -10441065, 15187004, -25398290, 959925, -29862908, -3826816, -12964359, 14044543, - -14214194, -11796128, -3131031, -21891448, 6590628, -9953587, 9844065, -20549272, 34561600, -11224897, - 16396038, -14050986, 1513976, -14078903, -4406637, 7883413, 22177064, 24809878, -12264279, 169651, - -7194070, -12990129, -9848360, -35246648, -727997, 5985037, -33105608, 13022341, 6667937, 9163313, - 16015933, 10084583, 5448166, -11102490, -3534758, -12390981, -6206228, 6715182, -26454852, 10529112, - 5315022, 1750199, -12442520, -7359427, 6936372, 21464100, 9122511, 5583458, -8336532, 8974334, - 1350767, -10127533, 2847563, -7316477, -11486890, -6006512, -2632815, -10471130, 12060268, 6805376, - 9835475, 5433134, -8643622, 2907693, 15043123, -2929168, 13980119, 7385197, 5233418, 9371619, - -4784594, -5589900, 3715147, 2448131, 49147312, -33496450, -13945759, -4108136, 8590, 24017458, - -4355097, 7977902, -13587129, 7554848, -8390219, -38530152, -26456998, -9747428, 14014478, -1492501, - -21245056, -19883552, -42069204, -13458280, 5534066, 5871221, 2080912, -4185446, -2362232, -12925704, - 3549791, 5654325, 7290707, 1803886, -1812476, -4898410, -20016696, -4975720, -4464619, 10286447, - -1997160, -15908559, -6204081, 4808216, -17944374, 3251290, -18511310, 10520522, 14654428, -13675176, - -26839250, -5059472, -8375186, -12186970, 1391569, 2587718, 2746632, 6762426, 429497, -10432476, - 16982300, 26383984, -12573517, 11025181, 4475356, 12575664, -18923626, 7310035, 2488934, 6919193, - -27260158, 21749714, 2692945, 2568391, -3257733, -15483357, 4127464, 2106682, 3895535, 4896263, - -16973710, -8875550, 3420942, 8123931, -4252018, 105227, 6388764, 2626373, -3017215, -8050916, - 5963562, 79590040, -44493712, 4058744, -4483946, -9496173, -33202244, -1808181, -1851131, 26989574, - 12335146, 54541788, -21713208, 2076617, 5954972, 13045963, -5596343, -2544768, 22106196, -13913547, - 31823560, 19273666, -44266080, 42150808, 14856292, -15255724, -11008001, -16640851, -8673686, 2989297, - 1924145, -11978664, 28016072, 3547643, -13445395, -11942157, 2720862, -14774687, -26025354, 195421, - 15513422, 6118181, 18869938, -8834748, 5862631, 20160576, 29085518, 6792491, -30122754, 9807558, - -9702331, -16681653, 4378719, 12650826, 7316477, -3768834, -27335320, -24026048, 33711200, -4554813, - 26053272, 2877628, -10262824, 12659416, -22591528, -10125385, 10900627, -3042984, 22417582, -18146236, - -35682588, -10157598, -1739462, -11106785, -8544837, 22056804, -7417409, 3929895, -20366734, -20063940, - 9758166, 4949950, 8224863, -8839043, 8398809, 682900, -4733054, -1206886, -89620936, -58177480, - 21592948, -30148522, 9852655, -14980846, -54159536, -40035536, 72703056, -33217278, 32923072, 18663780, - -18773302, 17057462, -10582799, 22995254, 25479894, -1477469, -7020124, 43621836, -13962939, -48964776, - 968515, -20420422, 5179731, 4797479, 29577292, 15736760, 6285685, 14544907, -13067438, 143881, - 32373316, 20731808, -5641440, 8433168, -28275918, -43836584, -32244466, -22531398, -6191196, -6126771, - 8308614, -3974992, -12081743, 28310276, 7582765, -21064668, -19651622, -5592048, 8362302, -21227876, - 8699456, 26414048, -360777, 9964324, -17897128, 14134737, 10376641, 3345780, 10580652, -15790447, - -24404004, -34497176, 17547088, 13731010, 1363652, 13625784, 2731599, -15779710, -3171833, 1305670, - -27502824, -2426657, -42820824, -23547158, 7355132, -10894185, 8420283, 1099512, -5512591, -5787469, - -3869766, -7928510, 7799661, 292058, -1097364, -107176616, 36754184, -8370892, -6865505, 19344532, - 4887673, 10857677, 46952584, 28071906, 35508644, 17918604, 48423608, -8327942, -46787228, 7069516, - -5085242, -19995220, -41420664, -18023830, 36590972, 8381629, -2312840, 7718056, -2564096, 633508, - 30878668, 4011500, 11592117, -4526896, 7806103, 30659624, -8231305, -20446192, 15747498, -36395552, - -36442796, -23480586, -4410932, 1101659, 15425375, 35888748, 788127, -12275017, -35450660, -58405112, - -20336670, -8461086, -3246995, -324270, 21837762, -26738318, 48528836, 25142738, -4325032, 13945759, - -18743238, 3511136, 670015, 22376780, 43411380, 29137058, -25097642, -10630044, 7509751, -4060892, - -5104569, 2252710, -12799003, -41766408, -2845416, -7687992, -2671470, 6567005, -15940771, -5480379, - -28174986, -3023657, 4357245, 29873646, 15017353, 4194036, 5190468, 7544110, 1318555, -25284472, - 5600638, -5896990, 7148973, -3094524, -2920578, -13855564, 43364136, 43898860, 14721000, 29278792, - 21045340, 46080704, -41047004, 47921096, -59105192, -10604274, 54741504, 75172664, 15479062, -5057324, - 27206470, -23448374, -27290222, 54314156, 8549132, -8665097, 13039521, 43619688, -11785390, 26658862, - -9064528, -11239929, -5512591, 19557134, -51065012, -6442451, 24438364, -11512660, 2342905, -18217104, - 10290742, 40007620, -37372656, 11761768, -11250667, 12932147, -19666656, 26813480, 2050847, 9554155, - 10711648, -45210972, 21741124, -62861140, -13005161, 35313220, 3577708, -22576496, 38989712, -13737453, - -23927262, 28284508, -11972221, -8319352, -4756677, 17018808, -2849711, 4365835, -34482144, 12264279, - 2896956, 66752380, -50594716, -22089016, 5695127, -13108240, 14811195, 18713172, -24496346, 46645492, - 17212082, -362925, 7380902, 15530602, -7900593, -25524990, 9704479, -13234942, 3865471, -5304285, - 11875585, -16226386, 4574140, 27917, -8875550, 10636487, -4105989, 89526448, -56173876, 2055142, - -9105331, -15071040, 1705102, -20581484, -8800388, -66406636, -55649892, -55364276, 18356690, -11611444, - 18133352, -12700218, -40355512, 64046552, 44502304, -29845728, -25196426, -35218732, -7548405, 13675176, - 20952998, 25898652, -2040110, 20040318, -5991480, -25396142, -31172872, 19314468, -14325863, 58512488, - 36436356, 53972708, 7352984, 19617264, 52918292, 36846524, -11931419, 9706626, -2639258, 665720, - 5357972, -24775518, -18126910, 9562745, -31286690, -31913754, 30618822, 35188668, -38860864, -1236951, - 68184752, 47749300, -2770254, -22604412, -5315022, 14239964, 12539157, -9212705, -25853556, 30674656, - -2405182, 7567733, 21569326, 27910844, -29506426, 12594992, -5149666, 11660836, -45679124, 8471823, - 40510132, -40617504, -33846488, -17239998, 17761838, 32388348, -18642306, 17879948, -16134045, -1468879, - 508954, 6863358, 11652246, -5493263, -2937758, 7492571, 6335077, 242666, -1376537, 5471789, - 72606424, 27940910, -9715216, -2362232, 22763326, -27206470, -35373352, 30307436, -42258184, -54715736, - 14523432, -29368986, -37845104, -19752554, 36135708, 88650272, 36689760, -48262548, 90806344, 10531260, - -14235669, 16357383, -53027812, 13481902, 7325067, -38016904, 32877974, -10228465, 6489696, -27373974, - 15375983, -25016038, 45958296, -54432268, -20044612, -18807662, 25930866, 29920890, 26667452, -28930900, - 8461086, -30245160, -8677981, 16116865, 38416336, 17731772, -17643726, 37415608, 19088982, 30182882, - 2029372, 35184372, -15382425, 19454054, -53560388, 60185376, -5216238, 8381629, -15949361, -31376884, - 1617055, 20104742, 48088600, 14139032, -57490284, 24524264, -23248658, 47373488, 4114579, -18081812, - 9199820, -15635828, 9899900, -33481418, 13415330, 3197603, 2954938, 5366562, -6517613, 3459596, - -8978629, -14029511, 18801220, 11766063, 10861972, -24820616, 8237748, -13460428, 11647951, 2615635, - -1477469, 5815386, 2845416, -148921552, 6358699, 24691766, 58244052, 19007378, -91684664, 121678568, - 44498008, -56008520, 19896436, 121023592, 27064736, -29639570, -3841848, -73652248, 37572372, 3302830, - -18949396, 10389526, 24985972, -47826608, 25303800, -59882580, 6146098, -54593328, -49067852, -21006686, - 22840636, 34806416, -26897232, 30419106, -53203908, -7801808, 59431608, 5332202, -21642340, -7174743, - 11493332, -13973676, -39492224, -44079248, -5959267, -20325932, 42900280, -60591252, 63872608, 20222854, - 8070244, -21599390, -7148973, 29448444, -24099062, 39786428, 9805410, 35948876, -13428215, -21120502, - -63359356, 21453362, -6483253, -65373696, 19475530, -4582730, 39603892, 63739464, -27090506, 14340896, - 31437014, 33429878, 6805376, -19698868, -3895535, -79136920, -3938485, 7005092, 19417548, -618475, - 52982716, 11276437, 26310970, -30041148, -21410412, 39483636, -4133906, -8302172, 23976654, -5813238, - -6805376, -685047, -1378685, 2347200, -4352950, 21900038, 184451664, 84091168, 17529910, 29991756, - -37752764, -25338160, -8894877, 69720208, -49340584, 7937100, -41042708, -113359216, -54320600, 26029650, - -28915868, 18747532, -44869524, -2252710, -48249664, 41467908, -48850960, -35165044, -105149392, -19606526, - -16471200, -27633820, 54863912, -17798344, -43840880, 14302241, 42341936, 15700253, 14413910, -6298570, - -8821863, -27801324, 21620866, -35794256, -9607842, -22241488, -62672164, 9562745, -43471512, 17583596, - 5667210, -12773233, -1359357, -45704896, -2551211, -10400263, 66911296, -19245748, -1535451, 27200028, - -36621040, -16275779, 67901288, -39603892, 25982404, 1778117, 60393684, 85755464, -5010080, 11085311, - 8589935, 29673930, 15539192, -65420940, 6027987, 16544214, 23109072, -27998892, -43548820, 4578435, - 12674448, -11390253, -16548509, -70177616, -34617436, -40364104, 2838974, 8864812, -13224204, -19288698, - -21904334, -5379447, -10992969, -12281459, 14626511, -6889128, 7086696, -25252260, 1808181, -9756018, - -17493402, 4101694, 10284299, -13623636, }, + -23622, -40802, -27917, -64425, -12885, -103079, -27917, -339302, 229781, -17180, + 231928, -47245, 98784, 642098, -79457, -753767, -760209, -242666, -472446, 68719, + -386547, -1015760, 279173, -249108, -195421, 283468, 73014, -339302, -560493, -700080, + 79457, -418759, -279173, 163209, -775242, 689342, 691490, -397284, -70867, -251256, + -738734, 77309, -674310, -502511, 478889, -322123, 1037235, 4367982, -1913408, 1932735, + -833224, 685047, -38655, 1007170, -453119, 244813, 423054, 513249, 545461, 955630, + -249108, 105227, 1752347, 1314260, -3481071, 685047, -457414, 169651, -1194001, 775242, + -1501091, 1479616, 1217623, 605590, -206158, -470299, -560493, 1050120, 955630, -438087, + 206158, 1816771, -693637, -38655, -633508, 212601, 266288, -51540, -528281, 852551, + 115964, -261993, 633508, 17557826, -1297080, 2422362, -70867, 749472, 311385, 566936, + 373662, 1657857, -996432, 682900, -371515, 264141, 897648, 1415192, 547608, 253403, + -719407, 1286343, -979253, 474594, -470299, -1408749, 115964, 455267, 21475, -457414, + 92342, -508954, 878321, -1891933, 405874, -457414, 463856, -42950, -2645700, -932008, + 236223, 388695, 270583, -478889, -620623, -534723, 339302, 989990, -450972, 423054, + 10630044, -12513387, 2529736, -2989297, 1677185, -1928440, 1552631, -2645700, -773094, -1623498, + -272730, -1348620, 148176, 2486786, 3609920, 1524713, 826781, 88047, 1155346, 2583423, + 1894081, -1144609, -1372242, -1851131, -858993, -1060857, 133144, -152471, -128849, 73014, + 579821, -850404, 1144609, -1125281, -1490354, 577673, 15032, 133144, 358630, -1041530, + -1166084, 384400, -693637, -968515, -146029, 156766, 809601, -24262270, 4885526, -1183264, + 654983, 564788, -1995012, -876173, 1973538, -277025, 206158, 2207613, 743029, -788127, + -1468879, 1550483, 173946, -1795296, -2583423, -3762391, 1267015, -1651415, 433792, -508954, + 753767, -350040, 311385, -1937030, -1904818, -1176821, -476741, -1191853, 410169, -558346, + 736587, 2317135, 438087, 433792, 1552631, 453119, 395137, -15032, -251256, -1471026, + -311385, 384400, -234076, -36507, -29021094, 10904922, -2682207, 3526168, -1672890, 2553358, + -1357210, -358630, -2445984, 1943473, -2901251, 1990717, -472446, 2770254, -3680787, 1002875, + 3489661, 1060857, -2886218, -985695, -1726577, -680752, 1133871, 614180, 846109, -408022, + -964220, -1352915, -1342177, -62277, -1544041, -221191, -1434519, -979253, -4032974, -1078037, + -545461, 281320, 118112, 1468879, 627065, 1449552, -120259, 1677185, 405874, 208306, + 423054, 3579855, 12605729, -3536906, 5566278, -3455301, 1421634, -3723737, 2845416, -313533, + 3105261, -300648, -360777, 3049427, -556198, -478889, 2665027, -1374390, -2529736, -4015795, + 3478924, -337155, 2366527, 229781, 1668595, 777389, -2342905, 927713, 891206, -208306, + 1144609, 1760937, -2327872, 249108, -111669, -249108, -1352915, -644245, -1324997, 296353, + -307090, 938450, 2927020, 60130, 1464584, -324270, 251256, -373662, 416612, 1144609, + -584116, -1125281, 38158636, -9461813, 3590593, -1866163, 3173981, -1447404, 2426657, -1415192, + 809601, -3762391, 1687922, -3594888, 2680060, -1129576, 764504, -1078037, 3790309, 481036, + 925565, -1883343, 2465311, -270583, -1189706, 2083059, -1683627, -2611340, 32212, -848256, + 1189706, -60130, -416612, -884763, 339302, -133144, 448824, -1814624, 382252, -828929, + 2720862, -564788, 1286343, 197569, 1075889, 2010045, -1447404, 57982, 448824, -753767, + 1589138, -386547, -749472, 3253438, -19782620, 7859790, -6081674, 3642132, -3012920, 1082332, + -3981435, 2641405, -1571958, 3676492, -375810, 1625645, -3171833, -1314260, -178241, -1127429, + -1058710, 4239133, -3066607, 573378, 1984275, -3798899, 1015760, 1395864, -936303, 1361505, + 468151, 801011, -2418067, -173946, -758062, 1548336, -1191853, 865436, -2858301, -539018, + 2134599, 1063004, 693637, -691490, -410169, -2158221, -2319282, 1318555, 496069, -60130, + -322123, -158914, 229781, 251256, -470299, -431644, 309238, 354335, -783832, -586263, + -481036, -31969590, 10554882, -5609228, 1518271, -466004, 1853278, -2338610, 2656437, -998580, + -837519, -255551, 1941325, -951335, -1434519, 1157494, 3674345, -435939, 216896, -5987185, + 586263, 158914, 3017215, -897648, -386547, -4563403, -1516124, 115964, 156766, 1666447, + 2278480, -3435974, -3137474, 2128156, 590558, -3545496, -2695092, 1410897, 852551, -156766, + -34360, -1327145, 1483911, -380105, 586263, 238371, -1816771, -743029, 1080184, -2862596, + -1387274, -530428, 687195, -534723, 122407, -1404454, -53687, -1005022, 173946, -31930934, + 14194867, -7776039, 5985037, -5413807, 2753074, -6167573, 1477469, -4007205, 6438156, -3193308, + 2304250, -356482, 94489, -2890513, -785979, -1172526, 5834713, -1063004, 3004330, 4724464, + 2742337, 727997, -573378, 1159641, -970663, 2658585, 2592013, 395137, -1221918, 481036, + 541166, -1715839, -730144, 1359357, 1962800, -1406602, -1350767, -1428077, 154619, -575526, + 874026, -1378685, 1065152, -2183991, 712965, -1185411, -19327, 253403, -816044, -1176821, + -1464584, -1410897, -1838246, 261993, -1670742, -833224, 68719, 11800423, 12266427, -4638565, + 4035122, -5083094, 700080, 1445257, 60130, -2078764, 2231236, 513249, 4818954, 2473901, + 5452461, -921271, 3189013, -962073, 2014340, 2830384, -457414, -4105989, 3777424, -496069, + 1550483, -979253, -68719, 472446, 4636417, 620623, -2615635, -944893, 558346, -1486059, + 3483219, 1432372, -614180, -1002875, -2068027, 1498944, -2027225, 1937030, 2059437, -1644973, + 1157494, 1017907, 506806, -238371, 3384434, 2046552, 2463164, -182536, 249108, 1045825, + -788127, -369367, -287763, -828929, -70867, 94489, 261993, -700080, -1479616, -1578401, + 272730, 760209, 36030480, -12966506, 4404489, -6101001, 4037269, -4045859, 5209796, -1889786, + 176094, -4041564, 7861938, -1219771, 7075959, 365072, 1155346, -4870493, 1642825, 7103876, + -2276333, -6128919, 826781, 173946, 2740189, -4443144, 3508988, -120259, 249108, -466004, + -4271345, -1320703, 639950, -5145371, 779537, 1971390, 1632088, -1509681, -461709, -279173, + 2314987, 624918, -461709, -1127429, 1793149, 1185411, 4535486, 1093069, -736587, 2469606, + 974958, -358630, 796716, 1851131, 1232656, 171799, 257698, -1586990, 272730, -244813, + 1853278, -296353, 704375, -309238, 629213, -139586, 581968, 12120398, -17433272, 10494753, + -7735236, 3298535, 1209033, -758062, -631360, 2113124, -4367982, -2761664, -2250563, -1737314, + -5985037, 3081639, -5557688, -186831, -4443144, 1679332, -3339337, -2611340, -1316408, 5117454, + 734439, 4982162, 2617783, 3427384, 4913443, 296353, -601295, -706522, 1398012, 3803194, + -296353, -229781, -2493229, 1954210, -289910, -1453846, 1408749, 1206886, 3940633, 1649268, + 1864016, -2731599, -1282048, -111669, -504659, 1964948, -5607080, 1264868, -1370095, -895501, + -1733019, -1919850, -657130, -1896228, 801011, -1309965, -216896, -2907693, -2905546, 55835, + -1030792, 2426657, -37005440, -8042327, 1754494, -6972880, -2849711, 356482, -167504, -5933498, + 1769527, -5907728, 227633, 4857608, -843961, -740882, 2686502, 1786706, 2733747, 216896, + 3296388, -1739462, 970663, 3824669, -208306, -176094, -2420214, 3644280, -2729452, -1462436, + 985695, 1513976, 2780991, 8506183, -2267743, -1309965, -3592740, 270583, -2634963, 706522, + -1026497, -3906273, -204011, 5147519, 1473174, -3360812, -1662152, 1754494, -2035815, -2529736, + 528281, -1157494, 339302, 605590, 3240553, 526134, 1610613, 912681, -2654290, -1309965, + 1726577, 1653562, -1047972, 1015760, -176094, -1174674, 68719, -45425720, 37499360, -13103945, + 11145440, -8207683, 6279242, -2381559, 4002910, -4355097, 2686502, 3126736, 4531191, -2946348, + 5484673, 2707977, 9326521, -1462436, 794569, -4937065, 1260573, -1735167, -3070902, -3826816, + -4385162, -4054449, 6055904, -279173, 7267085, 1876901, 1344325, -128849, 938450, -3210488, + 530428, -1176821, 1526861, 4288525, 788127, 1406602, 272730, 438087, -3249143, -1801739, + -107374, -261993, 457414, -1009317, -2989297, 57982, 3251290, -1054415, 974958, 925565, + -2645700, 1818919, 811749, 992137, -526134, 287763, -266288, -850404, 261993, 2884071, + 51540, 169651, 26416196, -4127464, -8596377, -3021510, -1855426, -1428077, -7578470, -4007205, + 2042257, 1236951, 2091649, 2624225, -5111011, 1988570, -1047972, 1765232, 8057359, -8250632, + 2778844, 2787434, 2153926, -2166811, -4797479, 3648575, 1047972, 2598455, 4945655, -40802, + 6835441, 551903, 3150359, 225486, 2119566, -1937030, 2553358, 1836099, 2435247, -1002875, + 775242, -240518, 3137474, 3891240, -5879810, 7818988, 618475, 2153926, 296353, 1327145, + 1477469, -1698660, 4668630, 2503966, 135291, 4277788, 1791001, -2415919, -242666, -1629940, + -1756642, -1331440, 738734, -375810, 223338, -143881, -4864051, 2443837, -1954210, 642098, + -691490, -319975, -1236951, -723702, 20933670, 1788854, 4230543, -5473936, -1071594, -13531294, + 3182571, -693637, -9206262, 7636452, -4282083, 225486, 5598490, 2486786, 4194036, -3294240, + 1831804, -4301410, 45097, -3687230, 1324997, -5579163, 7887708, 5665062, 4645007, 5398774, + 1178969, -1857573, -3457449, 1488206, 4318590, -42950, 2933463, -2199023, 571231, 2826089, + 2005750, 2538326, 156766, 874026, -354335, -1906966, 1812476, -1337882, 833224, 697932, + -1917703, 2518998, -3519726, 3064459, -1664300, 2149631, 3345780, -4174708, 388695, 418759, + -1705102, -3302830, 2269890, -5319317, -4086662, 2463164, 1041530, 1114544, 998580, 3210488, + 3128884, -1202591, 423054, 1848983, -777389, -79457, 33116346, -27489938, 9358734, -6824703, + 2445984, 8619999, 7015829, -4589173, 8407398, 4741644, 5091684, -3448859, 2385854, -1750199, + 9979357, 2785286, 2841121, 3871913, 4243428, 2688650, 2909840, -8158291, 1340030, -14759655, + -5111011, -1355062, -8435316, 2143189, 4571993, -3176128, -4561256, -5385889, -5153961, -2750927, + 3012920, 2366527, -7492571, -8693014, -635655, -4428112, 2409477, 1945620, 863288, -609885, + 4155381, -2151779, 244813, -562641, -1810329, -5581310, 4370129, 7370164, -957778, -912681, + 3496104, -5177583, 6335077, 1632088, -3152506, -109522, -2924873, -1241246, -710817, -2113124, + -526134, -1425929, -4299263, 1136019, 1599875, 1471026, 1586990, 502511, -51105816, 5196911, + -4458176, 1992865, 5330055, 3859028, 10559177, -4183298, -253403, 953483, 12616466, 4453881, + -9689446, -6289980, 5626407, 7509751, -1750199, -2686502, -98784, 3521873, 7752416, 7879118, + -6442, -13799730, -3917010, -1329292, -1565516, 8177618, -3603478, 4818954, 566936, -777389, + -7114614, 676457, 5849746, -9126806, -5310727, -2065879, -1516124, -4273493, -3558381, -8525510, + -1494649, -5748814, 152471, 1367947, 6317897, -4140349, -2697240, 635655, -530428, 1069447, + -5267778, 2203318, 2130304, 770947, 395137, -3955665, -3588445, -1949915, -1065152, -221191, + -6841883, 1507534, 2110977, -2894808, -6281390, 2645700, -221191, -3096672, -543313, -1389422, + -977105, 4127464, -30163556, 31842888, -4645007, 1937030, 7436736, 8942122, -6882685, 4264903, + 1627793, 5495411, 3685082, 7791071, 4352950, -5398774, -8942122, 1187559, 9272834, 18640158, + -4617090, -6423124, 4801774, 2972117, -3676492, -9283572, -1979980, -1917703, -8443906, 7239168, + 8592082, 75162, 1915555, -234076, 6730214, -5396627, -16649441, 6917045, -2098092, 5478231, + 2536178, 180389, -4211216, -6410239, 4286378, 5160403, 3685082, -790274, -461709, 5682242, + 3096672, 1720134, -3536906, 4778151, 3904125, -710817, -1378685, -2841121, 3178276, 66572, + -8291435, 6676527, 3889093, -1559073, 1795296, -1052267, 85899, -191126, 1857573, 493921, + 2312840, 3929895, 1979980, -633508, -2538326, -1612760, 5654325, 2220498, -1129576, -1801739, + -335007, 8939974, 322123, -6977175, -14229227, 3375844, -785979, -11759620, 3910568, -3932043, + 504659, -4490389, -3496104, 3629247, 8866960, 1039382, 11761768, 5295695, -5978595, -7868380, + 12876312, -5662915, -450972, 1093069, -12156905, -156766, 6378027, -7099581, -1900523, 8050916, + 481036, 4172561, 94489, 5276368, -934155, -3695819, -515396, 7026567, 9554155, -3212636, + 1917703, 1593433, 6365142, -3878356, -693637, 1170379, -1640678, 4071629, 1851131, 266288, + -2199023, 3238405, 3665755, 113817, 161061, 2680060, 4292820, -5261335, -36507, 1363652, + 2351495, -2735894, 2130304, 979253, 60130, 1417339, -1651415, 635655, 1702955, 3491809, + 4312147, -3575560, 384400, 67025112, -6560563, 1013612, 4078072, -6124624, -10511932, -6150393, + -2695092, -11935714, -12818330, 878321, -11366631, -5044439, -3358665, -2864743, 6813966, 7975755, + 2445984, 16797618, 2957085, -8450348, 14439680, -1544041, 10194105, -3377992, -1189706, -9663676, + 253403, 8398809, -399432, -4211216, -1752347, 788127, -2237678, -1870458, 3161096, -7707319, + 2980707, 1069447, -3732327, -7312182, -5025112, 5508296, 5379447, 6485401, -11184095, 6146098, + 1586990, -330712, 380105, 1032940, 1097364, 1372242, -1067299, 528281, 5723044, -1709397, + 2173254, 2684355, -2566243, 4797479, 5428839, 874026, -629213, 5080947, 3528316, 2783139, + 3322157, -4367982, -2136746, 947040, -616328, -689342, 143881, 2248416, 472446, -4232691, + -39352636, -66065188, 24013162, -1612760, 10030896, -11510512, 618475, -13344463, -1666447, -19271518, + 8426726, 8976482, -358630, -1449552, -167504, 1855426, -4552666, -16426102, 30419106, 2156074, + -3816079, 10456098, 1921998, -5437429, 14643691, 16237124, -6882685, 9597104, 1930588, -2020782, + -15109695, -8272107, 11940009, -6064494, 1750199, -781684, 8143258, -12348031, -13846975, 2003602, + 279173, -9380209, 5757404, 1185411, -5798206, 4183298, -6395207, -5366562, 2643552, 2493229, + 416612, -1713692, -2976412, 3876208, 6562710, 962073, 2115272, -1851131, -1791001, 5680094, + 751619, 1279900, -5703717, -1324997, -3783866, 3193308, 4810364, 47245, 3972845, -53687, + 5269925, -4202626, 2680060, -62277, -178241, -3972845, 27917, -3408057, -380105, -21206402, + 63977832, -28329604, 4853313, 4243428, 16097537, -1973538, 10305774, -10052371, 700080, -19331648, + -3631395, 152471, 7894150, 1350767, 8128226, -5506148, -11688753, 1574106, -17624398, -18614388, + 633508, -6083821, -249108, 1642825, 2772402, -4582730, -2995740, -6618545, -10000831, 4110284, + 5001490, -13114683, -5847598, -16499117, 373662, -7267085, 6060199, 6992207, -13509820, 2186138, + 11368778, 10159745, -5126044, 3721589, -3751654, -1891933, 3300682, -6137509, -1191853, 5772436, + 4619238, 3964255, 4962835, 2604898, -1292785, 3816079, 2643552, -2815351, 0, 7756711, + -663572, -3543348, -981400, 3208341, -3161096, -7898445, -418759, -2750927, 2179696, 1694365, + -996432, -3197603, -4608500, -5572720, 5815386, -1887638, -60130, -1247688, -236223, -695785, + -52632676, -16187732, 6111739, -8177618, 7700877, -3313567, 240518, -15393163, -18532784, -2368675, + -6380174, 7999377, 2394444, -2102387, -38482908, 19572166, 1539746, 17078938, 21187074, 14718853, + -20044612, -4756677, -1797444, -4870493, 4518306, 4971425, -188979, -7183333, 8332237, -13488345, + -7148973, 12311524, 781684, -5044439, 14351633, 500364, 15047418, -4964982, -2226941, 1956358, + 4818954, -10477573, -7720204, -1690070, 8542690, -2866891, 1513976, -3169686, 5757404, 7224135, + 1516124, 566936, -12219182, -1095217, 6204081, 6981470, -3723737, 7799661, 2652142, -1904818, + 2132451, -7524783, -2267743, -4969277, 5242008, 1000727, -1662152, 2042257, -13050258, 287763, + 2660732, 6524056, 2229088, -3251290, 6255620, 788127, -8171176, -3573413, -4121021, -962073, + 1896228, 33601676, 11207717, -20525648, -3661460, -8955007, 6891275, -12470438, 10075993, -2488934, + 11751031, 8085276, 14306536, -19685982, 23244364, -14577119, 13539884, -8072391, 8061654, 1331440, + 6826851, -12674448, -28709708, 10874857, 19765440, -7436736, 8042327, -10337986, 2269890, -6865505, + 20798380, -418759, -2173254, 4769561, -10260677, -7290707, -6053757, 8950712, -4295, -3605625, + -85899, -2035815, 14267881, 9401683, -5463199, 4425964, 5375152, -6195491, -3545496, -5604933, + -10969346, -1733019, 137439, -1709397, -4086662, -11276437, -539018, 16621523, 9064528, -7284265, + 9328669, -1251983, -244813, 7655779, 4045859, -8287140, 2954938, 1546188, 8224863, 9702331, + -7984344, 3337190, 5731634, 7346542, -749472, -476741, -2808909, -1647120, 4194036, -957778, + 7687992, -2007897, 71625024, -58344984, -9758166, 2946348, -1093069, -16110422, 5448166, 4245575, + 22898618, -7464653, 4531191, 18805514, 545461, 11315091, 37179384, -8057359, -2379412, -19318762, + -18036716, 839666, 6186901, -8147553, 3566970, 32751274, 18988050, 2725157, 1284195, 2669322, + 18172006, -15118285, -6637872, -837519, 9399536, -1451699, 2299955, -7670812, 2950643, -13625784, + -7956427, -10303627, 225486, -9229885, 2267743, -16436840, 7642895, -32839320, -8340827, 4496831, + 6128919, -1236951, -7503308, 2531883, 1037235, 3925600, -8912057, 3985730, -5188321, -5950677, + -14418205, -10812580, -3113851, -1821066, 785979, 2443837, 4720169, 867583, 2295660, -8665097, + 17180, -10574209, -1511829, -747324, 360777, 3491809, 10617159, -6614250, -2858301, -719407, + -5538361, -9764608, 2261300, -45105748, -31346818, -2171106, -6221260, 23890756, 938450, 4548371, + -29545080, 1698660, 4243428, 1864016, 2452426, 18083960, -22174916, 4885526, -4606353, -15238544, + -7303592, 14364518, -4808216, 11720966, -3786014, 6854768, 3796751, -2244121, -1593433, 7739531, + -856846, 32212, -18955838, 9603547, 8738111, 8235600, 9494025, -17035988, -17529910, 10438918, + 15526307, -18330920, 6972880, 2774549, 16125455, 9300752, 1707250, 10844792, -5471789, -11025181, + -1503239, -21365314, -15509127, -1649268, -616328, 3504693, -10065256, 3659312, -8035884, -27421218, + -7887708, -7337952, -26961658, 122407, -4252018, -3098819, 3283503, 8521215, -7803956, 5278515, + 3635690, -12195560, -7647190, -9360881, -1825361, -2733747, -64425, -3835406, 5392332, -5909875, + -1329292, -5016522, 9109626, -9822590, 6079526, -1516124, -1990717, 579821, 2710124, -2280628, + -28166396, 43095700, -22503482, -9545565, -13134010, 3496104, 3768834, 6438156, -2660732, 18876382, + 14218489, -13376676, -23875724, 9073118, -8927090, 22136262, 1864016, 9521942, 11615739, -8211978, + -8038032, 29384018, -16720308, -3914863, -8469676, 1161789, -3468186, 4024384, -4915590, -1803886, + -22533546, 20061792, -6919193, -1623498, 23596550, -15988016, -20319490, 2001455, -9204115, -13228499, + -55835, -6700149, 5366562, -29197188, -9730248, -7039452, -672162, 10514080, 163209, 2235531, + 5381594, -4861903, 4116726, 7090991, 6000070, 6738804, -3730179, -6043019, -5413807, 7642895, + -17744658, -3697967, -4161823, -4202626, 11647951, -7683697, -12412455, 12792560, 3861176, 7780334, + 14961519, -5282810, -4967130, 7580618, -8057359, -10020159, -9401683, 5804649, 4303557, -5349382, + 5166846, 1926293, 6090264, 1299228, -11218455, 7726646, -3723737, -58961312, 29693256, 31978180, + 16449725, 14944339, -10441065, 15187004, -25398290, 959925, -29862908, -3826816, -12964359, 14044543, + -14214194, -11796128, -3131031, -21891448, 6590628, -9953587, 9844065, -20549272, 34561600, -11224897, + 16396038, -14050986, 1513976, -14078903, -4406637, 7883413, 22177064, 24809878, -12264279, 169651, + -7194070, -12990129, -9848360, -35246648, -727997, 5985037, -33105608, 13022341, 6667937, 9163313, + 16015933, 10084583, 5448166, -11102490, -3534758, -12390981, -6206228, 6715182, -26454852, 10529112, + 5315022, 1750199, -12442520, -7359427, 6936372, 21464100, 9122511, 5583458, -8336532, 8974334, + 1350767, -10127533, 2847563, -7316477, -11486890, -6006512, -2632815, -10471130, 12060268, 6805376, + 9835475, 5433134, -8643622, 2907693, 15043123, -2929168, 13980119, 7385197, 5233418, 9371619, + -4784594, -5589900, 3715147, 2448131, 49147312, -33496450, -13945759, -4108136, 8590, 24017458, + -4355097, 7977902, -13587129, 7554848, -8390219, -38530152, -26456998, -9747428, 14014478, -1492501, + -21245056, -19883552, -42069204, -13458280, 5534066, 5871221, 2080912, -4185446, -2362232, -12925704, + 3549791, 5654325, 7290707, 1803886, -1812476, -4898410, -20016696, -4975720, -4464619, 10286447, + -1997160, -15908559, -6204081, 4808216, -17944374, 3251290, -18511310, 10520522, 14654428, -13675176, + -26839250, -5059472, -8375186, -12186970, 1391569, 2587718, 2746632, 6762426, 429497, -10432476, + 16982300, 26383984, -12573517, 11025181, 4475356, 12575664, -18923626, 7310035, 2488934, 6919193, + -27260158, 21749714, 2692945, 2568391, -3257733, -15483357, 4127464, 2106682, 3895535, 4896263, + -16973710, -8875550, 3420942, 8123931, -4252018, 105227, 6388764, 2626373, -3017215, -8050916, + 5963562, 79590040, -44493712, 4058744, -4483946, -9496173, -33202244, -1808181, -1851131, 26989574, + 12335146, 54541788, -21713208, 2076617, 5954972, 13045963, -5596343, -2544768, 22106196, -13913547, + 31823560, 19273666, -44266080, 42150808, 14856292, -15255724, -11008001, -16640851, -8673686, 2989297, + 1924145, -11978664, 28016072, 3547643, -13445395, -11942157, 2720862, -14774687, -26025354, 195421, + 15513422, 6118181, 18869938, -8834748, 5862631, 20160576, 29085518, 6792491, -30122754, 9807558, + -9702331, -16681653, 4378719, 12650826, 7316477, -3768834, -27335320, -24026048, 33711200, -4554813, + 26053272, 2877628, -10262824, 12659416, -22591528, -10125385, 10900627, -3042984, 22417582, -18146236, + -35682588, -10157598, -1739462, -11106785, -8544837, 22056804, -7417409, 3929895, -20366734, -20063940, + 9758166, 4949950, 8224863, -8839043, 8398809, 682900, -4733054, -1206886, -89620936, -58177480, + 21592948, -30148522, 9852655, -14980846, -54159536, -40035536, 72703056, -33217278, 32923072, 18663780, + -18773302, 17057462, -10582799, 22995254, 25479894, -1477469, -7020124, 43621836, -13962939, -48964776, + 968515, -20420422, 5179731, 4797479, 29577292, 15736760, 6285685, 14544907, -13067438, 143881, + 32373316, 20731808, -5641440, 8433168, -28275918, -43836584, -32244466, -22531398, -6191196, -6126771, + 8308614, -3974992, -12081743, 28310276, 7582765, -21064668, -19651622, -5592048, 8362302, -21227876, + 8699456, 26414048, -360777, 9964324, -17897128, 14134737, 10376641, 3345780, 10580652, -15790447, + -24404004, -34497176, 17547088, 13731010, 1363652, 13625784, 2731599, -15779710, -3171833, 1305670, + -27502824, -2426657, -42820824, -23547158, 7355132, -10894185, 8420283, 1099512, -5512591, -5787469, + -3869766, -7928510, 7799661, 292058, -1097364, -107176616, 36754184, -8370892, -6865505, 19344532, + 4887673, 10857677, 46952584, 28071906, 35508644, 17918604, 48423608, -8327942, -46787228, 7069516, + -5085242, -19995220, -41420664, -18023830, 36590972, 8381629, -2312840, 7718056, -2564096, 633508, + 30878668, 4011500, 11592117, -4526896, 7806103, 30659624, -8231305, -20446192, 15747498, -36395552, + -36442796, -23480586, -4410932, 1101659, 15425375, 35888748, 788127, -12275017, -35450660, -58405112, + -20336670, -8461086, -3246995, -324270, 21837762, -26738318, 48528836, 25142738, -4325032, 13945759, + -18743238, 3511136, 670015, 22376780, 43411380, 29137058, -25097642, -10630044, 7509751, -4060892, + -5104569, 2252710, -12799003, -41766408, -2845416, -7687992, -2671470, 6567005, -15940771, -5480379, + -28174986, -3023657, 4357245, 29873646, 15017353, 4194036, 5190468, 7544110, 1318555, -25284472, + 5600638, -5896990, 7148973, -3094524, -2920578, -13855564, 43364136, 43898860, 14721000, 29278792, + 21045340, 46080704, -41047004, 47921096, -59105192, -10604274, 54741504, 75172664, 15479062, -5057324, + 27206470, -23448374, -27290222, 54314156, 8549132, -8665097, 13039521, 43619688, -11785390, 26658862, + -9064528, -11239929, -5512591, 19557134, -51065012, -6442451, 24438364, -11512660, 2342905, -18217104, + 10290742, 40007620, -37372656, 11761768, -11250667, 12932147, -19666656, 26813480, 2050847, 9554155, + 10711648, -45210972, 21741124, -62861140, -13005161, 35313220, 3577708, -22576496, 38989712, -13737453, + -23927262, 28284508, -11972221, -8319352, -4756677, 17018808, -2849711, 4365835, -34482144, 12264279, + 2896956, 66752380, -50594716, -22089016, 5695127, -13108240, 14811195, 18713172, -24496346, 46645492, + 17212082, -362925, 7380902, 15530602, -7900593, -25524990, 9704479, -13234942, 3865471, -5304285, + 11875585, -16226386, 4574140, 27917, -8875550, 10636487, -4105989, 89526448, -56173876, 2055142, + -9105331, -15071040, 1705102, -20581484, -8800388, -66406636, -55649892, -55364276, 18356690, -11611444, + 18133352, -12700218, -40355512, 64046552, 44502304, -29845728, -25196426, -35218732, -7548405, 13675176, + 20952998, 25898652, -2040110, 20040318, -5991480, -25396142, -31172872, 19314468, -14325863, 58512488, + 36436356, 53972708, 7352984, 19617264, 52918292, 36846524, -11931419, 9706626, -2639258, 665720, + 5357972, -24775518, -18126910, 9562745, -31286690, -31913754, 30618822, 35188668, -38860864, -1236951, + 68184752, 47749300, -2770254, -22604412, -5315022, 14239964, 12539157, -9212705, -25853556, 30674656, + -2405182, 7567733, 21569326, 27910844, -29506426, 12594992, -5149666, 11660836, -45679124, 8471823, + 40510132, -40617504, -33846488, -17239998, 17761838, 32388348, -18642306, 17879948, -16134045, -1468879, + 508954, 6863358, 11652246, -5493263, -2937758, 7492571, 6335077, 242666, -1376537, 5471789, + 72606424, 27940910, -9715216, -2362232, 22763326, -27206470, -35373352, 30307436, -42258184, -54715736, + 14523432, -29368986, -37845104, -19752554, 36135708, 88650272, 36689760, -48262548, 90806344, 10531260, + -14235669, 16357383, -53027812, 13481902, 7325067, -38016904, 32877974, -10228465, 6489696, -27373974, + 15375983, -25016038, 45958296, -54432268, -20044612, -18807662, 25930866, 29920890, 26667452, -28930900, + 8461086, -30245160, -8677981, 16116865, 38416336, 17731772, -17643726, 37415608, 19088982, 30182882, + 2029372, 35184372, -15382425, 19454054, -53560388, 60185376, -5216238, 8381629, -15949361, -31376884, + 1617055, 20104742, 48088600, 14139032, -57490284, 24524264, -23248658, 47373488, 4114579, -18081812, + 9199820, -15635828, 9899900, -33481418, 13415330, 3197603, 2954938, 5366562, -6517613, 3459596, + -8978629, -14029511, 18801220, 11766063, 10861972, -24820616, 8237748, -13460428, 11647951, 2615635, + -1477469, 5815386, 2845416, -148921552, 6358699, 24691766, 58244052, 19007378, -91684664, 121678568, + 44498008, -56008520, 19896436, 121023592, 27064736, -29639570, -3841848, -73652248, 37572372, 3302830, + -18949396, 10389526, 24985972, -47826608, 25303800, -59882580, 6146098, -54593328, -49067852, -21006686, + 22840636, 34806416, -26897232, 30419106, -53203908, -7801808, 59431608, 5332202, -21642340, -7174743, + 11493332, -13973676, -39492224, -44079248, -5959267, -20325932, 42900280, -60591252, 63872608, 20222854, + 8070244, -21599390, -7148973, 29448444, -24099062, 39786428, 9805410, 35948876, -13428215, -21120502, + -63359356, 21453362, -6483253, -65373696, 19475530, -4582730, 39603892, 63739464, -27090506, 14340896, + 31437014, 33429878, 6805376, -19698868, -3895535, -79136920, -3938485, 7005092, 19417548, -618475, + 52982716, 11276437, 26310970, -30041148, -21410412, 39483636, -4133906, -8302172, 23976654, -5813238, + -6805376, -685047, -1378685, 2347200, -4352950, 21900038, 184451664, 84091168, 17529910, 29991756, + -37752764, -25338160, -8894877, 69720208, -49340584, 7937100, -41042708, -113359216, -54320600, 26029650, + -28915868, 18747532, -44869524, -2252710, -48249664, 41467908, -48850960, -35165044, -105149392, -19606526, + -16471200, -27633820, 54863912, -17798344, -43840880, 14302241, 42341936, 15700253, 14413910, -6298570, + -8821863, -27801324, 21620866, -35794256, -9607842, -22241488, -62672164, 9562745, -43471512, 17583596, + 5667210, -12773233, -1359357, -45704896, -2551211, -10400263, 66911296, -19245748, -1535451, 27200028, + -36621040, -16275779, 67901288, -39603892, 25982404, 1778117, 60393684, 85755464, -5010080, 11085311, + 8589935, 29673930, 15539192, -65420940, 6027987, 16544214, 23109072, -27998892, -43548820, 4578435, + 12674448, -11390253, -16548509, -70177616, -34617436, -40364104, 2838974, 8864812, -13224204, -19288698, + -21904334, -5379447, -10992969, -12281459, 14626511, -6889128, 7086696, -25252260, 1808181, -9756018, + -17493402, 4101694, 10284299, -13623636, }, { -92342, - -25770, -98784, 6442, -64425, 146029, 96637, -463856, 6442, -302795, -360777, - 96637, 302795, 294205, 107374, -670015, -410169, 133144, -210453, 34360, 135291, - 173946, 281320, -208306, -227633, -423054, -244813, -2147, -962073, -21475, -96637, - -281320, 197569, -556198, -485331, -985695, -137439, -871878, -268435, -23622, 691490, - 188979, 528281, -274878, 560493, -152471, 109522, 674310, 4179003, -3274913, 2037962, - -2589865, 1318555, -1262720, -1247688, -751619, -710817, 753767, 865436, -3206193, -178241, - 470299, -322123, -539018, -1879048, -685047, 1333587, 2025077, 1011465, 3193308, 646393, - -569083, 652835, 551903, -330712, 1043677, 2267743, -871878, -25770, 968515, -32212, - -221191, -1629940, -62277, 822486, 661425, 130997, 47245, -543313, 575526, -62277, - 70867, 30065, -554051, 15154792, -1002875, 1305670, -974958, 962073, -1168231, 227633, - -298500, -283468, 854699, -816044, -2770254, 779537, 268435, 837519, 1846836, 981400, - 652835, -264141, -1612760, -562641, 719407, -231928, -274878, 1541893, -1990717, -639950, - -49392, -352187, -504659, 734439, 805306, 1002875, 270583, 347892, -433792, 1395864, - -79457, 1067299, 745177, -266288, -158914, 500364, -4295, -315680, -161061, 2147, - 11162620, -10640781, 1685775, -2866891, 1556926, -182536, 1127429, -1009317, 2018635, -841814, - 1228361, -2534031, 113817, -1464584, 435939, -223338, -335007, -674310, -1857573, -180389, - 236223, -912681, 1548336, -682900, -1099512, -1398012, 856846, -891206, 2196876, -219043, - 21475, 650688, 23622, 55835, -955630, -809601, -210453, 229781, -356482, -932008, - 850404, 603443, 1513976, -341450, 508954, -201863, 296353, -26124138, 3103114, -1928440, - 90194, -268435, -2160369, 2407329, -549756, 244813, 1037235, 337155, 2785286, -103079, - -1086627, 3330747, 1367947, 3008625, -27917, -3912715, -2327872, -1870458, 1662152, -2027225, - 206158, -717260, -661425, 270583, 646393, -566936, -1202591, -891206, 833224, 932008, - 1756642, -107374, -204011, -79457, 1101659, -1166084, 345745, 500364, 826781, -944893, - 1054415, -1151051, -171799, 423054, -33002528, 12010876, -4791036, 5577015, -3809636, 2579128, - -4133906, 2409477, -3060164, 1234803, 2338610, 156766, 919123, 2151779, -1322850, 1559073, - -1707250, -1241246, -3811784, 3549791, -2224793, 2394444, 210453, 34360, -3655017, -85899, - 747324, -474594, -88047, -88047, 1574106, -178241, -1047972, 1217623, 388695, -418759, - 109522, 105227, 165356, 725850, -964220, 2617783, -176094, -1550483, -133144, -818191, - -60130, 1625645, 15025943, -3231963, 5699422, -2617783, 1956358, -2123861, 7103876, -1370095, - 3790309, -438087, -279173, 959925, -4295, -4885526, 1108102, -442382, -2203318, -534723, - 81604, -6146098, -169651, 504659, 1941325, -47245, -1168231, -238371, 2104534, 386547, - -1043677, -2068027, 3161096, -1960653, -77309, -2922725, -322123, 8590, 508954, -710817, - 775242, 1264868, -1236951, 1002875, -47245, 801011, -45097, 1449552, -730144, -438087, - 1305670, 1823214, 39575976, -11632919, 1653562, -2033667, 2536178, -45097, -100932, -5405217, - 2321430, -2405182, 1565516, 496069, 770947, 1644973, 2613488, 341450, 867583, -4561256, - 1584843, 1582696, -2950643, -635655, 2976412, 1889786, 1879048, 4234838, 2353642, 551903, - 1084479, -1692217, 1312113, -463856, 2424509, 3146064, -511101, 1007170, 1971390, -934155, - 646393, -2888366, -809601, 2725157, -6442, -2055142, -727997, 762357, 2029372, -234076, - 1127429, -103079, -1730872, 2862596, -21159156, 8972187, -6139656, 4084514, -3635690, 4812511, - -3062312, 244813, -2600603, -3204046, -4507568, 362925, -2662880, 1355062, 1556926, 3478924, - -5574868, 3506841, -1307818, 4851166, 1088774, -236223, 412317, 418759, -1103807, -914828, - 760209, -2239826, 1533303, 2765959, -3663607, -764504, -193274, 1533303, -1382980, 3936338, - -4028679, 835371, 17180, 294205, -1720134, 326418, -1071594, 1078037, 180389, 246961, - -1219771, -167504, -2551211, -822486, -128849, 616328, 216896, -889058, -3238405, -64425, - -646393, -34144992, 10870562, -6964290, -431644, -1391569, 2173254, -5869073, 453119, 1906966, - 1586990, -2031520, 1206886, -2602750, -4288525, -1657857, 577673, -2559801, 9101036, 274878, - -2480344, -798864, -2995740, -1395864, 2804614, 1683627, 3629247, -302795, 1638530, -2003602, - 871878, -1812476, -586263, -1052267, 642098, 1142461, -534723, -1720134, 468151, 676457, - 2527588, -414464, -874026, -3221226, -2604898, -1241246, -472446, 627065, 481036, -1309965, - -504659, 257698, 1232656, 635655, 251256, -564788, 1251983, -386547, 2108829, -32867238, - 15474767, -7243463, 6925635, -3560528, 4118874, 2055142, 1282048, -3710852, 493921, -1876901, - 597000, -4870493, 1881196, 3098819, 1032940, -5186173, -2546916, -2594160, -2692945, -1760937, - 3779571, 925565, 2673617, 2138894, -882616, -184684, -3899830, 5113159, -1406602, -487479, - 367220, -1063004, -1518271, -1816771, -373662, -4116726, 1275605, -2173254, 1702955, 1471026, - 2424509, -618475, 311385, -2665027, 1067299, 2007897, 523986, -416612, 453119, 1576253, - 2368675, 1030792, 2207613, 122407, 386547, -103079, -435939, 10647224, 13179107, -6006512, - 3502546, -1874753, 1292785, -1458141, 725850, 1127429, 6438156, -2327872, 2634963, 6043019, - -1690070, -285615, -1058710, 1436667, 3109556, 3182571, 4155381, 1093069, 3532611, -949188, - -2136746, -7168301, 1471026, -1123134, -3607773, -2594160, -150324, -717260, 2272038, -371515, - -4166118, -4312147, 1123134, -3753802, 472446, 2214056, -3360812, -2276333, -1443109, 1612760, - 1479616, -154619, -463856, 2450279, 508954, -1009317, 979253, -2201171, 249108, -1181116, - -1644973, -1142461, 1677185, -914828, 1260573, -1007170, -2102387, 517544, 1133871, -781684, - 642098, -970663, 38019052, -13247827, 7168301, -4973572, 7127498, -5042292, 4367982, -1640678, - 4436701, 1069447, 3120294, -3648575, 3725884, -1288490, -3107409, -332860, -3337190, -5327907, - -2813204, -590558, 2690797, -3655017, -4876936, -5980742, -1078037, -536871, 4767414, 2600603, - 3062312, -2110977, 2476049, -1909113, -1866163, -1039382, 3146064, 2703682, 846109, -36507, - -115964, 70867, -884763, -515396, 2177549, 408022, 5362267, -2074469, -646393, -4488241, - 2927020, -1185411, -695785, -1071594, -277025, 242666, -743029, 796716, -1196148, -2147, - -1696512, -768799, 380105, 1728724, -908386, -135291, -609885, 10660109, -16344498, 9545565, - -6128919, 7410966, -107374, 4591320, 1279900, -7176891, -3416647, -2435247, 850404, 1771674, - 977105, 8055211, -4567698, 6433861, 1099512, 796716, -4440996, -979253, 5555540, -388695, - -4765266, 5373004, 4093104, 891206, -2248416, -1775969, -496069, -397284, 2473901, -1245541, - 1088774, -3042984, -695785, 1722282, -4383014, 1647120, -1715839, 1539746, -1288490, -405874, - 5113159, 2199023, 2901251, -244813, 1185411, 1864016, -412317, -1436667, -2293513, 755914, - 1011465, 1806034, 2183991, 498216, -523986, -2291365, -1058710, -2319282, -2078764, 246961, - 42950, -1745904, -40443560, -8134668, -1043677, -6713034, -2757369, 6103149, 2630668, -1720134, - -1524713, -4814659, -3182571, -3897683, -4376572, -3624953, -2291365, -3274913, -5602785, -4784594, - 1909113, -4859756, 1683627, -6554120, 266288, -2682207, -2130304, 5802501, -536871, -2744484, - 3768834, -4116726, 3981435, 1232656, 4198331, 2879776, -25770, -1928440, 4415227, -2147, - -609885, 4026532, -1591285, -5340792, -6043019, -1509681, 2089502, 1355062, -1752347, -120259, - -1617055, 448824, 152471, 373662, 3891240, 1563368, -2695092, -981400, 566936, 2486786, - 631360, 3682935, 1063004, -242666, -1784559, -1632088, 96637, -47620448, 41461468, -16883516, - 11512660, -10819023, 2658585, -5312875, 7022272, 1329292, 826781, -3393024, 4763119, 966368, - -8546985, 867583, 1275605, -4307852, -6584185, 6515466, 8100309, -2615635, -2121714, 1344325, - 3740917, -2194728, 7380902, -242666, 1881196, -5360119, -1887638, -3199751, 4816806, -1082332, - 1060857, 1024350, -2740189, 4638565, 4481799, 1202591, 1550483, 5437429, -3309272, -904091, - -678605, -3987877, 869731, -2611340, 987843, -148176, 373662, 4432406, -150324, -1041530, - 1009317, 206158, 2937758, -2738042, 1045825, -208306, 5738077, -1737314, -204011, -2282775, - -459562, -1479616, 31731218, -3893388, -6700149, -1638530, 4213363, 2145336, 1870458, -294205, - -4479651, 1035087, 2624225, 2982855, -2078764, -1960653, 6354404, 2132451, -5074504, 1017907, - 8239895, -10426033, 6869800, 781684, 8800388, -644245, 448824, 1683627, 1733019, 4606353, - -3493956, -1355062, 1690070, 3294240, -1374390, -141734, 380105, 732292, 2055142, -4303557, - -148176, 2433099, 657130, -2388002, -775242, 5441724, 3992172, 1881196, -2143189, -1576253, - 1531156, -743029, -1395864, 929860, -1733019, -2673617, 5596343, 2179696, 3582003, 539018, - 2692945, 2192581, 2390149, 242666, 2905546, 1445257, 2052994, -1733019, 354335, 762357, - -2546916, 878321, -1249836, -268435, 15098958, 4385162, 3642132, -2214056, -1481764, -4103841, - -2931315, 745177, -1608465, -2020782, -5877663, 5003637, 3466039, -3663607, 6259915, -5896990, - -1782411, 2624225, -4365835, 2534031, 4065187, 6206228, 5482526, 5220533, 2712272, -11046656, - 4295, -2321430, 2214056, -1069447, 4322885, 2924873, -1421634, -2690797, 2838974, -1977833, - 7292855, -4295, 2413772, 7383049, 7078106, -5345087, 450972, -3526168, -6352257, -691490, - 1198296, -816044, -1299228, -682900, 554051, -2980707, 399432, -3476776, -968515, -414464, - 929860, 21475, -2025077, -2166811, 4434554, -1567663, 685047, 1975685, 2454574, -1357210, - -1374390, -652835, -3493956, -2388002, 384400, 758062, 35680440, -25104084, 9139690, -9536975, - -734439, -6663642, 6030134, 5989332, 1932735, 1217623, 5665062, 15571404, -13683766, -1902671, - -3556233, -5527623, 12081743, 9096741, -1861868, -8278550, 3356517, -6764574, -5405217, -9476845, - 1213328, -9704479, -3204046, 5714454, 826781, -2978560, -8005819, 12885, -1930588, 4864051, - 4475356, 2063732, -3635690, 543313, -227633, 1964948, 3863323, -2454574, -1236951, -4344360, - 6582038, -820339, 972810, 5864778, -1211181, -541166, 2347200, -2954938, -304943, 2540473, - -4361540, 985695, -809601, -388695, -4548371, 2203318, -974958, 384400, 1118839, -1690070, - 2982855, -2355790, -609885, -4876936, 438087, -685047, 2022930, 2128156, -55548960, 7703024, - 792421, 3917010, -4254165, -6919193, -15032, 4666482, 7406671, -433792, 11254962, 6279242, - -7582765, -6762426, 5272073, 966368, -5394479, -10039486, -11519102, -7376607, -8493298, -9509058, - 1750199, 3062312, 2568391, -7028714, -6755984, 1065152, -1754494, -1127429, -874026, -5602785, - 4801774, -9665824, -3592740, -1445257, -317828, 3135326, 1129576, -635655, 4516158, -1329292, - 4503273, 2602750, -3397319, 586263, 7295002, -2860448, -2858301, 225486, 4290673, 1136019, - -2972117, -3837553, 3594888, 225486, -5044439, 7026567, 7926362, 989990, -2201171, 977105, - -96637, 1709397, 3532611, -304943, 4670777, 2976412, 2695092, 2355790, 1251983, 1969243, - -2259153, -135291, -34048352, 29072634, -9749576, 6199786, -180389, 4829691, -11802570, 4544076, - -8053064, 25770, -5458904, 10907069, 9268539, 3500398, 730144, -8985072, -5980742, -936303, - -3635690, 10355166, -8497593, -345745, -4224101, 15171972, -4855461, 1352915, -455267, 2609193, - 1163936, 2602750, 1885491, -2514703, 1340030, -614180, 5272073, 816044, 10020159, 5211943, - -3270618, -682900, -1279900, 184684, -3865471, -2705830, -989990, 1795296, 12221329, 1114544, - 790274, -3362960, 4967130, -1853278, -2647847, 1617055, -2574833, 1511829, -3189013, -6854768, - 3371549, 3038689, -985695, 7166153, 1494649, 1702955, 2544768, -1919850, 818191, 2325725, - -5961415, -2783139, -489626, -2699387, 2697240, 4234838, -1556926, 7269232, 4829691, -163209, - -1932735, -1462436, -504659, 22215718, -487479, 5016522, -15079630, -2499671, 1917703, -12167642, - 983548, 16879222, -2929168, 1221918, -7599945, -10417443, 2662880, -9517648, 14877767, -10314364, - 3577708, 3524021, 7971460, 6199786, -1614908, -9201967, -1058710, -841814, 4724464, -6448894, - -1241246, -1887638, -3062312, -2181844, 4518306, 2778844, 12066711, 4099546, -4479651, 5007932, - -3272765, -3451006, 3717294, 10327249, -1475321, -5323612, -4980015, 5491116, -126702, -7471096, - -6878390, 3532611, 3292093, -3098819, -5684389, -9446781, 2619930, 3521873, 2375117, -5334350, - 4015795, 2467459, 1677185, -1894081, -573378, 2924873, -7088844, -925565, 3131031, 3682935, - -670015, 1795296, 154619, 75520560, -4870493, 2987150, 6865505, -6674379, -2877628, -2323577, - -17862768, 11903502, -1992865, -11100343, 2327872, -5723044, 6433861, 5078799, 8192650, -2997887, - 11141145, 9536975, 6077379, -9938554, 7524783, -13612899, -8055211, -9283572, 3588445, -7146826, - -1342177, -2476049, -9090298, -4964982, 7563438, -5731634, -4348655, -8682276, 2740189, 2723009, - 6397354, -3706557, 11053098, 2716567, 12607876, -1513976, 2244121, 2493229, -7054484, 4930623, - 12910672, -4526896, -418759, 3466039, -3826816, -5291400, 3021510, -5272073, -2866891, -6874095, - -4522601, 4992900, 4453881, 2976412, 4786741, 6025839, 5744519, 8665097, 1372242, -2643552, - 4471061, 3015067, -90194, -923418, 324270, -3320010, -736587, 633508, 760209, -238371, - -33247342, -65399468, 24535000, 433792, 1544041, -6358699, -6807523, -1382980, 2456721, -4056597, - 17334488, -7741679, -14774687, 1067299, 1144609, -1799591, -5080947, 11847667, 2314987, -5080947, - 5632850, -10206990, 13338021, -7198365, -3635690, -8802535, 14867029, -6191196, -1930588, -8727374, - -3914863, 8111046, -3524021, 8768176, -10954314, -12889197, 1267015, 2400887, 2454574, -212601, - -6551973, 1378685, 3678640, 1857573, 7000797, 85899, 10866267, 1602023, 10198400, 13209172, - 2927020, -871878, 2671470, -7219840, -1677185, -12139725, -10711648, 3315715, 3448859, 2252710, - -554051, -3388729, -1625645, -2884071, -1462436, -2879776, 268435, -171799, 2497524, -650688, - -1221918, -4088809, -113817, -4767414, -377957, -6360847, -639950, -2308545, -502511, -21912924, - 64132452, -29149944, 13423920, -6152541, 20405390, -3169686, -8939974, -9345849, 5398774, -2761664, - -1155346, 496069, 4041564, -21509196, -10458245, -5527623, 8626442, 7226283, 12629351, 2327872, - -1846836, -1960653, 15144055, -19561428, 11420318, -9397388, -1891933, -9902047, 15648713, 6279242, - -10048076, 1372242, -4359392, 1705102, 6687264, -28093382, -11660836, 2340757, 9968619, -5759551, - 2173254, 7239168, -2834679, -3152506, -929860, 10907069, 4395899, 1887638, 1320703, 4219806, - 12889197, -7735236, 5954972, -17927194, -2989297, 4065187, 8772471, 1642825, 1372242, 438087, - 4810364, -3493956, 663572, -1247688, -4101694, -3672197, 6841883, 6543383, -2332167, -3382287, - -11029476, -4715874, -2360085, -1992865, 8287140, -3100967, -2901251, -5461051, -4784594, -395137, - -57488136, -12393128, 5639292, -13623636, 3448859, 2521146, 8439611, -25770, 16076063, 10503343, - 5819681, -4387309, -7870528, -390842, 17005924, -14512694, -5538361, -11242077, -236223, -30760556, - -24257976, 1550483, 15075335, 20755430, 4799626, -7522635, 7084549, -6676527, -4460324, -4537633, - 2063732, 5454609, 1337882, 8096014, -6111739, -10922102, 9075266, 5989332, 19048180, -2304250, - 3111704, -2701535, 15365246, -15945066, -8010114, -3747359, -12113955, 7750269, -4990752, 6515466, - -12977244, 12987981, 12579959, 11605002, -4700842, 10292889, 564788, 3618510, 6023692, 4327180, - -5418101, 996432, -1677185, -249108, 11819750, 4462471, -5177583, 9614284, -1537598, -8216273, - -2727304, -539018, -11628624, -405874, 4872641, 6401649, 1024350, -176094, -4797479, 1831804, - 2832531, 41624676, 27041114, -8609262, 12225624, -27790586, 19402514, 7067369, 14585709, -5100274, - -3770981, -15247134, -7866233, -26010322, -4569845, -20725364, -6352257, -12801150, -13106093, -17622250, - 6878390, -24049670, 3137474, 10271414, -4694400, 3176128, -10406706, -227633, -3309272, -3511136, - -14151917, -1990717, 1529008, -1058710, -2259153, -7462506, -6491843, 4234838, 4520453, 5976447, - 30356828, -12384538, -801011, 12223477, -3051574, -5179731, -11781095, 3496104, 10241350, 16986596, - 5667210, 14143327, -14033806, -21058224, 1898376, 13612899, 7582765, -11422466, 13035226, -10024454, - 6227703, 2499671, 11839077, 6624987, 4279935, 7960722, -8169028, 5031554, 4194036, 2321430, - 11626476, 2572686, 9373766, -1539746, -3897683, 1380832, 2147484, 1844689, 11278584, -1947768, - -6517613, -738734, 84217864, -54445152, -2916283, 6354404, 1737314, 6670084, 11577084, -2289218, - -1808181, 6502581, -9676561, -9259949, -1477469, 7492571, 30346092, 1301375, 10520522, -9730248, - 665720, -29927332, 18564996, -18092550, -25750476, 6027987, 7305740, -9554155, 8677981, 3637837, - 20068234, 22164178, -3616363, -8340827, -6242735, -33077690, -17972290, 25960930, 8626442, 9562745, - -14858439, -15305116, 4610648, -2957085, -13112535, 11510512, -2433099, -8235600, -9451076, 6524056, - -8456791, -4552666, 30492120, -18530636, 5708012, -6644315, 7127498, -8338679, -3347927, -22686018, - 3901978, -8398809, -5577015, 18137646, 4456029, 5059472, 11050951, 13153337, 3996467, 9105331, - -3977140, -1078037, -14828375, 6813966, 12382391, -2813204, 884763, -1367947, -3021510, -3839701, - 1458141, -3949223, -1713692, -52104396, -25512106, 9998684, -2959233, 19288698, -2403034, -4707284, - -14847702, -16666621, 9255655, -17435420, -5849746, -9764608, -1698660, -10320806, -6987912, -8233453, - -4093104, -10277857, -19765440, 11798275, -39483636, -133144, 35886600, 8972187, 92342, -9446781, - 2804614, -35699768, 15135465, 9330816, 2761664, 13292924, 19608674, -14959371, -7752416, -15577846, - 2609193, 854699, -9133248, -10453950, -11639361, -6777459, -274878, 8196945, 923418, 6775311, - 3942780, 1101659, 24973088, 6240588, -3706557, 19887846, -9300752, -21945136, -6573448, -2302103, - -2931315, -1123134, -7432441, -1408749, -9332964, -1984275, -9496173, 1318555, 5527623, -10346576, - -2768107, -5551245, 715112, -10492605, -13477607, -5609228, 5836861, 10075993, 4196183, -2869038, - -100932, 4084514, -1505386, -1911261, -4544076, 2564096, 5405217, 1421634, 45097, -5695127, - -32089848, 43628276, -21288006, -10473278, -35358320, 27876486, -9631464, 16492674, 1157494, 1159641, - -10634339, 21891448, -5291400, 7243463, 5519033, -9781788, -3255585, -3051574, -18691698, 3925600, - 3536906, -14375256, -24298778, -14985141, -22348862, -5278515, 12298639, 6571300, -13112535, -12964359, - 19754702, 13722421, -16879222, 15824807, -8360154, 14027363, -21427592, -16808354, -16312286, 6049462, - -14439680, 9423158, -6468221, 4116726, -3912715, -1846836, 3474629, 15921444, -34218004, -4099546, - 6927782, -2886218, -10350871, -24500640, -2130304, 22975928, 8590, 19947976, 14577119, 4473209, - -2742337, 15300821, -14847702, -11952894, 9650792, -3317862, -9201967, 6635725, 1909113, -6968585, - -10591389, 18303004, -16737488, -8849780, -9987946, 10520522, 562641, -6929930, -4039417, 5628555, - -15461882, 341450, 4191888, 3466039, 399432, -4975720, -7509751, -73916384, 28112708, 12148315, - -18279380, 9631464, -20729660, 19447612, 16844862, 14385993, -37666864, 23444078, 40763536, -5186173, - 14134737, 1022202, -12146168, -16056735, 44865228, -221191, -3502546, -24081882, -47908212, -25812754, - 2871186, -21030308, 18249316, -31318902, -10106058, -18352396, 5546951, -6970732, -23212150, 4297115, - -5037997, 15850577, -4810364, -18247168, -6713034, -56549688, 10604274, -1455994, 26703960, -15792595, - -17422534, 24818468, 5568425, 4320737, -9410273, -14948634, 5836861, 11441793, 8506183, -3730179, - 9012989, 4939213, 1410897, -4726612, -4960687, -18515604, 1881196, -7217693, -10531260, 10086731, - 5948530, 27908698, 6199786, -18431852, -18337362, 4337917, -11738146, -8714489, 3513283, -8974334, - -15032, -4030827, -5046587, 5473936, -6964290, 2901251, -513249, -1294933, -2336462, -3893388, - -8632884, -10791105, -3002182, -9279277, 61132416, -25333864, -485331, 2583423, 25037512, -4176856, - -5922760, 16928614, 29654602, -21444772, -24676734, 17716740, -4432406, 15307263, 22486302, 18650896, - 15895674, 12644384, 14963666, 59390808, -6002217, 3627100, 10808285, 32407676, -7786776, -12970801, - 11879880, -1692217, -11753178, -14156212, -12605729, -470299, -16112570, 22181358, 33681132, -2574833, - -9524090, 13711683, -9352291, 19965156, 13922136, -223338, -18811956, 12880607, -2308545, -6573448, - 1879048, -3171833, 39320424, -4105989, 16582869, -9562745, 34924528, -4032974, 2280628, -13144747, - -22724672, 17637284, -11774653, 35521528, 7009387, 16492674, -801011, -466004, 9547712, 2183991, - 24921548, 13851270, 3762391, 12425340, -16125455, 5164698, 10952167, 751619, -5267778, 20699594, - 4305705, -7503308, -7943542, 7999377, -4904853, -463856, 11014444, -4194036, 6320045, 2463164, - -7627862, 80474800, -22943716, 7750269, -7486128, 3798899, 10533407, 27215060, -20744692, 11544872, - -266288, 1707250, 14804752, -11710228, 15807627, -42011224, -19024558, 7365869, 15880642, 11441793, - 33758444, -33170032, 5345087, -4702989, -45758580, 19838454, -17742510, -11323681, -6599218, -37325412, - 12300786, 13565654, 5927055, -19301584, -32858648, 13249974, -20347408, 18184892, -31499290, 801011, - -37705516, -8897025, -25183540, -21487722, 22314502, 35126392, 4827543, 13176960, -16041703, 6880538, - -26912266, 11824045, -17695266, 5317170, 25701084, 13544179, -9122511, 16058883, 2518998, 13975824, - -11678016, 23117662, 38635380, 2566243, -23514946, -15700253, -10576357, -3783866, 2362232, 17912162, - 3309272, 28778428, -251256, 11353746, -25823490, -3236258, -18700288, -2952790, -2948495, 6380174, - -23461258, 3768834, -1986422, 7593502, 2308545, 4984310, 2126009, 2471754, -81559280, -68373728, - 29280940, -8332237, 34003256, -2342905, 11308649, -40733468, -38210176, -23117662, 13129715, -31467078, - -21640192, -9101036, 6644315, 23514946, 8555575, -46263240, 12814035, 26336740, -65779572, -7578470, - 3446711, -69808248, -23796266, 31525060, -64688648, 32122060, 33743412, 727997, -9118216, -2347200, - -15375983, -16935056, 11903502, 14652281, 48964776, -28479928, -14867029, -11791833, -22368190, 1644973, - -38360500, -9313637, 3184718, -777389, -12322261, -1649268, -21023864, -3998615, 12105365, -4995047, - -13627931, 16430397, -7316477, -15455440, -22310208, 48290464, -1780264, 29551522, 4080219, 11291469, - 31840740, 4898410, 21758304, -14014478, 24152748, 17703856, 5415954, 6612102, 6077379, 21197812, - 9717364, 4211216, 20353850, -8227010, 3137474, -2001455, -31284542, 15066745, 7670812, 4645007, - -19086834, -5149666, 3764539, 6459631, -5362267, -132559872, 50304804, -14448270, -59332824, -14319421, - 1737314, -15189152, 23237920, -51359220, 25074020, -3951370, -59055800, -40675488, 8364449, 23744726, - 22492744, 16518444, 35169340, 10168335, 57685704, 31630286, 67572720, 8933532, 54941220, -41942504, - -32920924, 11493332, 5020817, -33238752, 9616432, 7249905, -4387309, -12573517, 32682554, 6365142, - -71236328, -31726924, 24247238, 8409546, -14892799, 20602958, 21146272, 32637456, 7273527, 9786083, - 6360847, 9575630, 12154757, -24711094, 4075924, 4702989, -52587580, 25054692, 18650896, 22565758, - -35946728, -20918638, 26749056, 152471, -6721624, -5353677, -15193447, -13593571, 403727, -18126910, - -40336184, 13937169, 43679816, -30384746, 4552666, -17231408, -6708739, -12537010, -3603478, 22443352, - 5697274, 18556406, 5718749, -19567872, -13630079, -15880642, -9214852, -12977244, 3474629, -8201240, - -1432372, -12423193, 4340065, 6541235, 7466801, -3728032, 56446608, 38392712, 26761942, 14879914, - 2439542, -12264279, -19078244, 18195628, -54891828, 59392956, -35652524, 10161893, -59652800, -1498944, - 57466664, 23008140, -19411104, 36724116, -56639880, 23618026, 11375221, 4722317, -69911328, -20461224, - 5010080, 12075301, 46033460, -68743096, -8705899, -22357452, -64716568, -13630079, 16355235, 33389076, - 49694920, 38809324, 38588132, -2521146, -23703924, 25690346, 8214125, -14261439, 9614284, -31226560, - 51455856, 24492052, 17847736, -25771952, -57445188, -14815490, 1986422, -69709464, -56296284, -14265734, - -50429360, 33532958, 13353053, 10919954, -22877144, -24567212, 10475425, 7836168, 4928475, 16486232, - -9186935, 12631499, 34235184, 15977278, 6335077, 5267778, -21504902, -17856326, -16030965, 10486163, - -5304285, -44386340, -35450660, -2907693, -28430536, -25031070, -6781754, -36515812, -22776212, -5153961, - 2619930, -4632122, -1825361, 9592809, -6515466, -2003602, 2611340, 64171108, -49984828, 13499082, - -7017977, -6463926, 1239098, 17766132, -31095564, 41732048, -11957189, 28619514, -2699387, -23212150, - 44470092, 43780748, 31432718, -14665166, 67355824, 24889336, -75067440, 77524160, 7204808, -236223, - 56178172, 2454574, -24169928, -32549410, 55465208, -34688304, -46059228, 44721348, 39208756, -25477746, - -61291332, 24056112, -20912196, 8484708, -43046308, -35504348, -14489072, 41843720, 37840808, 4902705, - 34752728, -50236084, 16402480, -13267154, -18453326, 23957328, 3620658, 7292855, -69965016, -19299436, - 39335456, -50272592, -12788265, -63052268, -11446088, -23602992, 10907069, -15300821, 7417409, 6403796, - -1846836, 6234145, -16520592, -56034292, -10219875, 28436978, -3461744, 19692426, -21189222, -49196704, - -8349417, 10737418, 31595926, 7514046, 17467632, -1924145, 7406671, 11690901, 7584912, -17182016, - 4735202, -7110319, 7784628, -13720273, 8508330, 3176128, 1380832, -1664300, -11317239, -6034429, - 58254788, 4614943, -16758962, -41487236, -1267015, -19754702, 15625091, -34243776, 22007412, 14068165, - -29923038, -30696132, 46669116, -54713588, -2007897, 35558036, -39573828, 12938589, 45612552, -36039072, - 31329638, 23046794, 33520072, -54795192, 47586092, -55022828, 16763257, -41854456, 5381594, -21341692, - 37497212, 1279900, 23003844, 11929272, -39056284, -23766202, -54043572, 31737660, -36565204, 31913754, - -43997644, -50115824, -84022448, 8345122, 44311176, -6607807, -1166084, 14100378, 38210176, -12771085, - 10353019, -46349140, 11948599, 61873300, -6109591, 56109452, 73360192, -335007, 12386686, 15197742, - -31164282, 16387448, -37782828, -1760937, -38785704, -37576668, 2325725, -14147622, -63808180, 43465068, - 1131724, 32371168, -37617472, -19110456, -14328011, 16670916, -268435, -9829033, -9848360, -6294275, - -2360085, 3826816, 4215511, -7441031, 8768176, -8557722, -8564165, -4670777, 12339441, 9283572, - 10269267, -4829691, 7758859, -131621424, 33436320, 49329848, 13718126, -57015692, -8310762, 92876520, - -106646184, -2660732, -17946520, -69735240, -17540646, -47238196, 17388176, 17282948, 40864468, 16582869, - -55714316, -19752554, 40288940, -63606320, -18010946, -68027984, 58181776, 17489106, 45530948, 77500536, - -27193586, -16292958, -12674448, -38744900, 37260988, -18148384, -46110768, -51777980, -8963597, 19939386, - -1324997, 10640781, 12773233, 30208652, -13114683, -1355062, 22501334, -21502754, 43997644, 49954764, - 47221016, -38087768, 5274220, -11830487, 22688164, 94173600, 70759584, 134786816, 10877005, 53334904, - 43288976, -20394652, -4436701, -6977175, -12365211, 17087528, 4179003, 48578228, 36745592, -16359530, - -4737349, -28729036, -56324200, 22801982, -581968, 19406810, -3871913, -39011188, -5482526, 5974300, - -21575768, 13297219, -13662291, -18897856, 794569, -18936510, 173946, -5192616, -4436701, 221191, - 3178276, -11800423, 1949915, 843961, 216896, 4844723, 204930064, 99151464, 35676144, 32192928, - -48019880, 31879394, -38686916, 47470128, 38978976, 36571648, 9753871, -66378720, -36919540, 73508368, - 13144747, -3704409, -14957224, 82218560, -88018912, -36715528, -21726092, -6085969, -62206160, 15451145, - -53693532, -29753386, 9442486, -33833604, 51133732, -48318384, -20598664, -11512660, 54619100, -89425512, - -16831976, -66432408, -1440962, 143881, -58282708, 10106058, 46662672, 25514254, -605590, -27144194, - 2952790, 28239410, -36494336, 74790416, 101515848, -5912023, -62337156, -58727236, 42133628, -14568529, - -13159780, 87383256, -18017388, 28185722, -1900523, 55106576, -10473278, 7565585, -10005126, -34194384, - -96091304, -57286272, -8572755, -25497074, -66073776, -43374876, 25559350, 56515328, -4114579, -6768869, - -5471789, -8581345, 31241592, 19868518, 4917738, -18418968, 22080426, -12006581, -43608952, -41856604, - 6036577, 29478508, -33865816, 23111220, -1642825, -12764643, -10915659, 1342177, -18661632, -14441828, - 1449552, -5302137, -2272038, -8710194, }, + -25770, -98784, 6442, -64425, 146029, 96637, -463856, 6442, -302795, -360777, + 96637, 302795, 294205, 107374, -670015, -410169, 133144, -210453, 34360, 135291, + 173946, 281320, -208306, -227633, -423054, -244813, -2147, -962073, -21475, -96637, + -281320, 197569, -556198, -485331, -985695, -137439, -871878, -268435, -23622, 691490, + 188979, 528281, -274878, 560493, -152471, 109522, 674310, 4179003, -3274913, 2037962, + -2589865, 1318555, -1262720, -1247688, -751619, -710817, 753767, 865436, -3206193, -178241, + 470299, -322123, -539018, -1879048, -685047, 1333587, 2025077, 1011465, 3193308, 646393, + -569083, 652835, 551903, -330712, 1043677, 2267743, -871878, -25770, 968515, -32212, + -221191, -1629940, -62277, 822486, 661425, 130997, 47245, -543313, 575526, -62277, + 70867, 30065, -554051, 15154792, -1002875, 1305670, -974958, 962073, -1168231, 227633, + -298500, -283468, 854699, -816044, -2770254, 779537, 268435, 837519, 1846836, 981400, + 652835, -264141, -1612760, -562641, 719407, -231928, -274878, 1541893, -1990717, -639950, + -49392, -352187, -504659, 734439, 805306, 1002875, 270583, 347892, -433792, 1395864, + -79457, 1067299, 745177, -266288, -158914, 500364, -4295, -315680, -161061, 2147, + 11162620, -10640781, 1685775, -2866891, 1556926, -182536, 1127429, -1009317, 2018635, -841814, + 1228361, -2534031, 113817, -1464584, 435939, -223338, -335007, -674310, -1857573, -180389, + 236223, -912681, 1548336, -682900, -1099512, -1398012, 856846, -891206, 2196876, -219043, + 21475, 650688, 23622, 55835, -955630, -809601, -210453, 229781, -356482, -932008, + 850404, 603443, 1513976, -341450, 508954, -201863, 296353, -26124138, 3103114, -1928440, + 90194, -268435, -2160369, 2407329, -549756, 244813, 1037235, 337155, 2785286, -103079, + -1086627, 3330747, 1367947, 3008625, -27917, -3912715, -2327872, -1870458, 1662152, -2027225, + 206158, -717260, -661425, 270583, 646393, -566936, -1202591, -891206, 833224, 932008, + 1756642, -107374, -204011, -79457, 1101659, -1166084, 345745, 500364, 826781, -944893, + 1054415, -1151051, -171799, 423054, -33002528, 12010876, -4791036, 5577015, -3809636, 2579128, + -4133906, 2409477, -3060164, 1234803, 2338610, 156766, 919123, 2151779, -1322850, 1559073, + -1707250, -1241246, -3811784, 3549791, -2224793, 2394444, 210453, 34360, -3655017, -85899, + 747324, -474594, -88047, -88047, 1574106, -178241, -1047972, 1217623, 388695, -418759, + 109522, 105227, 165356, 725850, -964220, 2617783, -176094, -1550483, -133144, -818191, + -60130, 1625645, 15025943, -3231963, 5699422, -2617783, 1956358, -2123861, 7103876, -1370095, + 3790309, -438087, -279173, 959925, -4295, -4885526, 1108102, -442382, -2203318, -534723, + 81604, -6146098, -169651, 504659, 1941325, -47245, -1168231, -238371, 2104534, 386547, + -1043677, -2068027, 3161096, -1960653, -77309, -2922725, -322123, 8590, 508954, -710817, + 775242, 1264868, -1236951, 1002875, -47245, 801011, -45097, 1449552, -730144, -438087, + 1305670, 1823214, 39575976, -11632919, 1653562, -2033667, 2536178, -45097, -100932, -5405217, + 2321430, -2405182, 1565516, 496069, 770947, 1644973, 2613488, 341450, 867583, -4561256, + 1584843, 1582696, -2950643, -635655, 2976412, 1889786, 1879048, 4234838, 2353642, 551903, + 1084479, -1692217, 1312113, -463856, 2424509, 3146064, -511101, 1007170, 1971390, -934155, + 646393, -2888366, -809601, 2725157, -6442, -2055142, -727997, 762357, 2029372, -234076, + 1127429, -103079, -1730872, 2862596, -21159156, 8972187, -6139656, 4084514, -3635690, 4812511, + -3062312, 244813, -2600603, -3204046, -4507568, 362925, -2662880, 1355062, 1556926, 3478924, + -5574868, 3506841, -1307818, 4851166, 1088774, -236223, 412317, 418759, -1103807, -914828, + 760209, -2239826, 1533303, 2765959, -3663607, -764504, -193274, 1533303, -1382980, 3936338, + -4028679, 835371, 17180, 294205, -1720134, 326418, -1071594, 1078037, 180389, 246961, + -1219771, -167504, -2551211, -822486, -128849, 616328, 216896, -889058, -3238405, -64425, + -646393, -34144992, 10870562, -6964290, -431644, -1391569, 2173254, -5869073, 453119, 1906966, + 1586990, -2031520, 1206886, -2602750, -4288525, -1657857, 577673, -2559801, 9101036, 274878, + -2480344, -798864, -2995740, -1395864, 2804614, 1683627, 3629247, -302795, 1638530, -2003602, + 871878, -1812476, -586263, -1052267, 642098, 1142461, -534723, -1720134, 468151, 676457, + 2527588, -414464, -874026, -3221226, -2604898, -1241246, -472446, 627065, 481036, -1309965, + -504659, 257698, 1232656, 635655, 251256, -564788, 1251983, -386547, 2108829, -32867238, + 15474767, -7243463, 6925635, -3560528, 4118874, 2055142, 1282048, -3710852, 493921, -1876901, + 597000, -4870493, 1881196, 3098819, 1032940, -5186173, -2546916, -2594160, -2692945, -1760937, + 3779571, 925565, 2673617, 2138894, -882616, -184684, -3899830, 5113159, -1406602, -487479, + 367220, -1063004, -1518271, -1816771, -373662, -4116726, 1275605, -2173254, 1702955, 1471026, + 2424509, -618475, 311385, -2665027, 1067299, 2007897, 523986, -416612, 453119, 1576253, + 2368675, 1030792, 2207613, 122407, 386547, -103079, -435939, 10647224, 13179107, -6006512, + 3502546, -1874753, 1292785, -1458141, 725850, 1127429, 6438156, -2327872, 2634963, 6043019, + -1690070, -285615, -1058710, 1436667, 3109556, 3182571, 4155381, 1093069, 3532611, -949188, + -2136746, -7168301, 1471026, -1123134, -3607773, -2594160, -150324, -717260, 2272038, -371515, + -4166118, -4312147, 1123134, -3753802, 472446, 2214056, -3360812, -2276333, -1443109, 1612760, + 1479616, -154619, -463856, 2450279, 508954, -1009317, 979253, -2201171, 249108, -1181116, + -1644973, -1142461, 1677185, -914828, 1260573, -1007170, -2102387, 517544, 1133871, -781684, + 642098, -970663, 38019052, -13247827, 7168301, -4973572, 7127498, -5042292, 4367982, -1640678, + 4436701, 1069447, 3120294, -3648575, 3725884, -1288490, -3107409, -332860, -3337190, -5327907, + -2813204, -590558, 2690797, -3655017, -4876936, -5980742, -1078037, -536871, 4767414, 2600603, + 3062312, -2110977, 2476049, -1909113, -1866163, -1039382, 3146064, 2703682, 846109, -36507, + -115964, 70867, -884763, -515396, 2177549, 408022, 5362267, -2074469, -646393, -4488241, + 2927020, -1185411, -695785, -1071594, -277025, 242666, -743029, 796716, -1196148, -2147, + -1696512, -768799, 380105, 1728724, -908386, -135291, -609885, 10660109, -16344498, 9545565, + -6128919, 7410966, -107374, 4591320, 1279900, -7176891, -3416647, -2435247, 850404, 1771674, + 977105, 8055211, -4567698, 6433861, 1099512, 796716, -4440996, -979253, 5555540, -388695, + -4765266, 5373004, 4093104, 891206, -2248416, -1775969, -496069, -397284, 2473901, -1245541, + 1088774, -3042984, -695785, 1722282, -4383014, 1647120, -1715839, 1539746, -1288490, -405874, + 5113159, 2199023, 2901251, -244813, 1185411, 1864016, -412317, -1436667, -2293513, 755914, + 1011465, 1806034, 2183991, 498216, -523986, -2291365, -1058710, -2319282, -2078764, 246961, + 42950, -1745904, -40443560, -8134668, -1043677, -6713034, -2757369, 6103149, 2630668, -1720134, + -1524713, -4814659, -3182571, -3897683, -4376572, -3624953, -2291365, -3274913, -5602785, -4784594, + 1909113, -4859756, 1683627, -6554120, 266288, -2682207, -2130304, 5802501, -536871, -2744484, + 3768834, -4116726, 3981435, 1232656, 4198331, 2879776, -25770, -1928440, 4415227, -2147, + -609885, 4026532, -1591285, -5340792, -6043019, -1509681, 2089502, 1355062, -1752347, -120259, + -1617055, 448824, 152471, 373662, 3891240, 1563368, -2695092, -981400, 566936, 2486786, + 631360, 3682935, 1063004, -242666, -1784559, -1632088, 96637, -47620448, 41461468, -16883516, + 11512660, -10819023, 2658585, -5312875, 7022272, 1329292, 826781, -3393024, 4763119, 966368, + -8546985, 867583, 1275605, -4307852, -6584185, 6515466, 8100309, -2615635, -2121714, 1344325, + 3740917, -2194728, 7380902, -242666, 1881196, -5360119, -1887638, -3199751, 4816806, -1082332, + 1060857, 1024350, -2740189, 4638565, 4481799, 1202591, 1550483, 5437429, -3309272, -904091, + -678605, -3987877, 869731, -2611340, 987843, -148176, 373662, 4432406, -150324, -1041530, + 1009317, 206158, 2937758, -2738042, 1045825, -208306, 5738077, -1737314, -204011, -2282775, + -459562, -1479616, 31731218, -3893388, -6700149, -1638530, 4213363, 2145336, 1870458, -294205, + -4479651, 1035087, 2624225, 2982855, -2078764, -1960653, 6354404, 2132451, -5074504, 1017907, + 8239895, -10426033, 6869800, 781684, 8800388, -644245, 448824, 1683627, 1733019, 4606353, + -3493956, -1355062, 1690070, 3294240, -1374390, -141734, 380105, 732292, 2055142, -4303557, + -148176, 2433099, 657130, -2388002, -775242, 5441724, 3992172, 1881196, -2143189, -1576253, + 1531156, -743029, -1395864, 929860, -1733019, -2673617, 5596343, 2179696, 3582003, 539018, + 2692945, 2192581, 2390149, 242666, 2905546, 1445257, 2052994, -1733019, 354335, 762357, + -2546916, 878321, -1249836, -268435, 15098958, 4385162, 3642132, -2214056, -1481764, -4103841, + -2931315, 745177, -1608465, -2020782, -5877663, 5003637, 3466039, -3663607, 6259915, -5896990, + -1782411, 2624225, -4365835, 2534031, 4065187, 6206228, 5482526, 5220533, 2712272, -11046656, + 4295, -2321430, 2214056, -1069447, 4322885, 2924873, -1421634, -2690797, 2838974, -1977833, + 7292855, -4295, 2413772, 7383049, 7078106, -5345087, 450972, -3526168, -6352257, -691490, + 1198296, -816044, -1299228, -682900, 554051, -2980707, 399432, -3476776, -968515, -414464, + 929860, 21475, -2025077, -2166811, 4434554, -1567663, 685047, 1975685, 2454574, -1357210, + -1374390, -652835, -3493956, -2388002, 384400, 758062, 35680440, -25104084, 9139690, -9536975, + -734439, -6663642, 6030134, 5989332, 1932735, 1217623, 5665062, 15571404, -13683766, -1902671, + -3556233, -5527623, 12081743, 9096741, -1861868, -8278550, 3356517, -6764574, -5405217, -9476845, + 1213328, -9704479, -3204046, 5714454, 826781, -2978560, -8005819, 12885, -1930588, 4864051, + 4475356, 2063732, -3635690, 543313, -227633, 1964948, 3863323, -2454574, -1236951, -4344360, + 6582038, -820339, 972810, 5864778, -1211181, -541166, 2347200, -2954938, -304943, 2540473, + -4361540, 985695, -809601, -388695, -4548371, 2203318, -974958, 384400, 1118839, -1690070, + 2982855, -2355790, -609885, -4876936, 438087, -685047, 2022930, 2128156, -55548960, 7703024, + 792421, 3917010, -4254165, -6919193, -15032, 4666482, 7406671, -433792, 11254962, 6279242, + -7582765, -6762426, 5272073, 966368, -5394479, -10039486, -11519102, -7376607, -8493298, -9509058, + 1750199, 3062312, 2568391, -7028714, -6755984, 1065152, -1754494, -1127429, -874026, -5602785, + 4801774, -9665824, -3592740, -1445257, -317828, 3135326, 1129576, -635655, 4516158, -1329292, + 4503273, 2602750, -3397319, 586263, 7295002, -2860448, -2858301, 225486, 4290673, 1136019, + -2972117, -3837553, 3594888, 225486, -5044439, 7026567, 7926362, 989990, -2201171, 977105, + -96637, 1709397, 3532611, -304943, 4670777, 2976412, 2695092, 2355790, 1251983, 1969243, + -2259153, -135291, -34048352, 29072634, -9749576, 6199786, -180389, 4829691, -11802570, 4544076, + -8053064, 25770, -5458904, 10907069, 9268539, 3500398, 730144, -8985072, -5980742, -936303, + -3635690, 10355166, -8497593, -345745, -4224101, 15171972, -4855461, 1352915, -455267, 2609193, + 1163936, 2602750, 1885491, -2514703, 1340030, -614180, 5272073, 816044, 10020159, 5211943, + -3270618, -682900, -1279900, 184684, -3865471, -2705830, -989990, 1795296, 12221329, 1114544, + 790274, -3362960, 4967130, -1853278, -2647847, 1617055, -2574833, 1511829, -3189013, -6854768, + 3371549, 3038689, -985695, 7166153, 1494649, 1702955, 2544768, -1919850, 818191, 2325725, + -5961415, -2783139, -489626, -2699387, 2697240, 4234838, -1556926, 7269232, 4829691, -163209, + -1932735, -1462436, -504659, 22215718, -487479, 5016522, -15079630, -2499671, 1917703, -12167642, + 983548, 16879222, -2929168, 1221918, -7599945, -10417443, 2662880, -9517648, 14877767, -10314364, + 3577708, 3524021, 7971460, 6199786, -1614908, -9201967, -1058710, -841814, 4724464, -6448894, + -1241246, -1887638, -3062312, -2181844, 4518306, 2778844, 12066711, 4099546, -4479651, 5007932, + -3272765, -3451006, 3717294, 10327249, -1475321, -5323612, -4980015, 5491116, -126702, -7471096, + -6878390, 3532611, 3292093, -3098819, -5684389, -9446781, 2619930, 3521873, 2375117, -5334350, + 4015795, 2467459, 1677185, -1894081, -573378, 2924873, -7088844, -925565, 3131031, 3682935, + -670015, 1795296, 154619, 75520560, -4870493, 2987150, 6865505, -6674379, -2877628, -2323577, + -17862768, 11903502, -1992865, -11100343, 2327872, -5723044, 6433861, 5078799, 8192650, -2997887, + 11141145, 9536975, 6077379, -9938554, 7524783, -13612899, -8055211, -9283572, 3588445, -7146826, + -1342177, -2476049, -9090298, -4964982, 7563438, -5731634, -4348655, -8682276, 2740189, 2723009, + 6397354, -3706557, 11053098, 2716567, 12607876, -1513976, 2244121, 2493229, -7054484, 4930623, + 12910672, -4526896, -418759, 3466039, -3826816, -5291400, 3021510, -5272073, -2866891, -6874095, + -4522601, 4992900, 4453881, 2976412, 4786741, 6025839, 5744519, 8665097, 1372242, -2643552, + 4471061, 3015067, -90194, -923418, 324270, -3320010, -736587, 633508, 760209, -238371, + -33247342, -65399468, 24535000, 433792, 1544041, -6358699, -6807523, -1382980, 2456721, -4056597, + 17334488, -7741679, -14774687, 1067299, 1144609, -1799591, -5080947, 11847667, 2314987, -5080947, + 5632850, -10206990, 13338021, -7198365, -3635690, -8802535, 14867029, -6191196, -1930588, -8727374, + -3914863, 8111046, -3524021, 8768176, -10954314, -12889197, 1267015, 2400887, 2454574, -212601, + -6551973, 1378685, 3678640, 1857573, 7000797, 85899, 10866267, 1602023, 10198400, 13209172, + 2927020, -871878, 2671470, -7219840, -1677185, -12139725, -10711648, 3315715, 3448859, 2252710, + -554051, -3388729, -1625645, -2884071, -1462436, -2879776, 268435, -171799, 2497524, -650688, + -1221918, -4088809, -113817, -4767414, -377957, -6360847, -639950, -2308545, -502511, -21912924, + 64132452, -29149944, 13423920, -6152541, 20405390, -3169686, -8939974, -9345849, 5398774, -2761664, + -1155346, 496069, 4041564, -21509196, -10458245, -5527623, 8626442, 7226283, 12629351, 2327872, + -1846836, -1960653, 15144055, -19561428, 11420318, -9397388, -1891933, -9902047, 15648713, 6279242, + -10048076, 1372242, -4359392, 1705102, 6687264, -28093382, -11660836, 2340757, 9968619, -5759551, + 2173254, 7239168, -2834679, -3152506, -929860, 10907069, 4395899, 1887638, 1320703, 4219806, + 12889197, -7735236, 5954972, -17927194, -2989297, 4065187, 8772471, 1642825, 1372242, 438087, + 4810364, -3493956, 663572, -1247688, -4101694, -3672197, 6841883, 6543383, -2332167, -3382287, + -11029476, -4715874, -2360085, -1992865, 8287140, -3100967, -2901251, -5461051, -4784594, -395137, + -57488136, -12393128, 5639292, -13623636, 3448859, 2521146, 8439611, -25770, 16076063, 10503343, + 5819681, -4387309, -7870528, -390842, 17005924, -14512694, -5538361, -11242077, -236223, -30760556, + -24257976, 1550483, 15075335, 20755430, 4799626, -7522635, 7084549, -6676527, -4460324, -4537633, + 2063732, 5454609, 1337882, 8096014, -6111739, -10922102, 9075266, 5989332, 19048180, -2304250, + 3111704, -2701535, 15365246, -15945066, -8010114, -3747359, -12113955, 7750269, -4990752, 6515466, + -12977244, 12987981, 12579959, 11605002, -4700842, 10292889, 564788, 3618510, 6023692, 4327180, + -5418101, 996432, -1677185, -249108, 11819750, 4462471, -5177583, 9614284, -1537598, -8216273, + -2727304, -539018, -11628624, -405874, 4872641, 6401649, 1024350, -176094, -4797479, 1831804, + 2832531, 41624676, 27041114, -8609262, 12225624, -27790586, 19402514, 7067369, 14585709, -5100274, + -3770981, -15247134, -7866233, -26010322, -4569845, -20725364, -6352257, -12801150, -13106093, -17622250, + 6878390, -24049670, 3137474, 10271414, -4694400, 3176128, -10406706, -227633, -3309272, -3511136, + -14151917, -1990717, 1529008, -1058710, -2259153, -7462506, -6491843, 4234838, 4520453, 5976447, + 30356828, -12384538, -801011, 12223477, -3051574, -5179731, -11781095, 3496104, 10241350, 16986596, + 5667210, 14143327, -14033806, -21058224, 1898376, 13612899, 7582765, -11422466, 13035226, -10024454, + 6227703, 2499671, 11839077, 6624987, 4279935, 7960722, -8169028, 5031554, 4194036, 2321430, + 11626476, 2572686, 9373766, -1539746, -3897683, 1380832, 2147484, 1844689, 11278584, -1947768, + -6517613, -738734, 84217864, -54445152, -2916283, 6354404, 1737314, 6670084, 11577084, -2289218, + -1808181, 6502581, -9676561, -9259949, -1477469, 7492571, 30346092, 1301375, 10520522, -9730248, + 665720, -29927332, 18564996, -18092550, -25750476, 6027987, 7305740, -9554155, 8677981, 3637837, + 20068234, 22164178, -3616363, -8340827, -6242735, -33077690, -17972290, 25960930, 8626442, 9562745, + -14858439, -15305116, 4610648, -2957085, -13112535, 11510512, -2433099, -8235600, -9451076, 6524056, + -8456791, -4552666, 30492120, -18530636, 5708012, -6644315, 7127498, -8338679, -3347927, -22686018, + 3901978, -8398809, -5577015, 18137646, 4456029, 5059472, 11050951, 13153337, 3996467, 9105331, + -3977140, -1078037, -14828375, 6813966, 12382391, -2813204, 884763, -1367947, -3021510, -3839701, + 1458141, -3949223, -1713692, -52104396, -25512106, 9998684, -2959233, 19288698, -2403034, -4707284, + -14847702, -16666621, 9255655, -17435420, -5849746, -9764608, -1698660, -10320806, -6987912, -8233453, + -4093104, -10277857, -19765440, 11798275, -39483636, -133144, 35886600, 8972187, 92342, -9446781, + 2804614, -35699768, 15135465, 9330816, 2761664, 13292924, 19608674, -14959371, -7752416, -15577846, + 2609193, 854699, -9133248, -10453950, -11639361, -6777459, -274878, 8196945, 923418, 6775311, + 3942780, 1101659, 24973088, 6240588, -3706557, 19887846, -9300752, -21945136, -6573448, -2302103, + -2931315, -1123134, -7432441, -1408749, -9332964, -1984275, -9496173, 1318555, 5527623, -10346576, + -2768107, -5551245, 715112, -10492605, -13477607, -5609228, 5836861, 10075993, 4196183, -2869038, + -100932, 4084514, -1505386, -1911261, -4544076, 2564096, 5405217, 1421634, 45097, -5695127, + -32089848, 43628276, -21288006, -10473278, -35358320, 27876486, -9631464, 16492674, 1157494, 1159641, + -10634339, 21891448, -5291400, 7243463, 5519033, -9781788, -3255585, -3051574, -18691698, 3925600, + 3536906, -14375256, -24298778, -14985141, -22348862, -5278515, 12298639, 6571300, -13112535, -12964359, + 19754702, 13722421, -16879222, 15824807, -8360154, 14027363, -21427592, -16808354, -16312286, 6049462, + -14439680, 9423158, -6468221, 4116726, -3912715, -1846836, 3474629, 15921444, -34218004, -4099546, + 6927782, -2886218, -10350871, -24500640, -2130304, 22975928, 8590, 19947976, 14577119, 4473209, + -2742337, 15300821, -14847702, -11952894, 9650792, -3317862, -9201967, 6635725, 1909113, -6968585, + -10591389, 18303004, -16737488, -8849780, -9987946, 10520522, 562641, -6929930, -4039417, 5628555, + -15461882, 341450, 4191888, 3466039, 399432, -4975720, -7509751, -73916384, 28112708, 12148315, + -18279380, 9631464, -20729660, 19447612, 16844862, 14385993, -37666864, 23444078, 40763536, -5186173, + 14134737, 1022202, -12146168, -16056735, 44865228, -221191, -3502546, -24081882, -47908212, -25812754, + 2871186, -21030308, 18249316, -31318902, -10106058, -18352396, 5546951, -6970732, -23212150, 4297115, + -5037997, 15850577, -4810364, -18247168, -6713034, -56549688, 10604274, -1455994, 26703960, -15792595, + -17422534, 24818468, 5568425, 4320737, -9410273, -14948634, 5836861, 11441793, 8506183, -3730179, + 9012989, 4939213, 1410897, -4726612, -4960687, -18515604, 1881196, -7217693, -10531260, 10086731, + 5948530, 27908698, 6199786, -18431852, -18337362, 4337917, -11738146, -8714489, 3513283, -8974334, + -15032, -4030827, -5046587, 5473936, -6964290, 2901251, -513249, -1294933, -2336462, -3893388, + -8632884, -10791105, -3002182, -9279277, 61132416, -25333864, -485331, 2583423, 25037512, -4176856, + -5922760, 16928614, 29654602, -21444772, -24676734, 17716740, -4432406, 15307263, 22486302, 18650896, + 15895674, 12644384, 14963666, 59390808, -6002217, 3627100, 10808285, 32407676, -7786776, -12970801, + 11879880, -1692217, -11753178, -14156212, -12605729, -470299, -16112570, 22181358, 33681132, -2574833, + -9524090, 13711683, -9352291, 19965156, 13922136, -223338, -18811956, 12880607, -2308545, -6573448, + 1879048, -3171833, 39320424, -4105989, 16582869, -9562745, 34924528, -4032974, 2280628, -13144747, + -22724672, 17637284, -11774653, 35521528, 7009387, 16492674, -801011, -466004, 9547712, 2183991, + 24921548, 13851270, 3762391, 12425340, -16125455, 5164698, 10952167, 751619, -5267778, 20699594, + 4305705, -7503308, -7943542, 7999377, -4904853, -463856, 11014444, -4194036, 6320045, 2463164, + -7627862, 80474800, -22943716, 7750269, -7486128, 3798899, 10533407, 27215060, -20744692, 11544872, + -266288, 1707250, 14804752, -11710228, 15807627, -42011224, -19024558, 7365869, 15880642, 11441793, + 33758444, -33170032, 5345087, -4702989, -45758580, 19838454, -17742510, -11323681, -6599218, -37325412, + 12300786, 13565654, 5927055, -19301584, -32858648, 13249974, -20347408, 18184892, -31499290, 801011, + -37705516, -8897025, -25183540, -21487722, 22314502, 35126392, 4827543, 13176960, -16041703, 6880538, + -26912266, 11824045, -17695266, 5317170, 25701084, 13544179, -9122511, 16058883, 2518998, 13975824, + -11678016, 23117662, 38635380, 2566243, -23514946, -15700253, -10576357, -3783866, 2362232, 17912162, + 3309272, 28778428, -251256, 11353746, -25823490, -3236258, -18700288, -2952790, -2948495, 6380174, + -23461258, 3768834, -1986422, 7593502, 2308545, 4984310, 2126009, 2471754, -81559280, -68373728, + 29280940, -8332237, 34003256, -2342905, 11308649, -40733468, -38210176, -23117662, 13129715, -31467078, + -21640192, -9101036, 6644315, 23514946, 8555575, -46263240, 12814035, 26336740, -65779572, -7578470, + 3446711, -69808248, -23796266, 31525060, -64688648, 32122060, 33743412, 727997, -9118216, -2347200, + -15375983, -16935056, 11903502, 14652281, 48964776, -28479928, -14867029, -11791833, -22368190, 1644973, + -38360500, -9313637, 3184718, -777389, -12322261, -1649268, -21023864, -3998615, 12105365, -4995047, + -13627931, 16430397, -7316477, -15455440, -22310208, 48290464, -1780264, 29551522, 4080219, 11291469, + 31840740, 4898410, 21758304, -14014478, 24152748, 17703856, 5415954, 6612102, 6077379, 21197812, + 9717364, 4211216, 20353850, -8227010, 3137474, -2001455, -31284542, 15066745, 7670812, 4645007, + -19086834, -5149666, 3764539, 6459631, -5362267, -132559872, 50304804, -14448270, -59332824, -14319421, + 1737314, -15189152, 23237920, -51359220, 25074020, -3951370, -59055800, -40675488, 8364449, 23744726, + 22492744, 16518444, 35169340, 10168335, 57685704, 31630286, 67572720, 8933532, 54941220, -41942504, + -32920924, 11493332, 5020817, -33238752, 9616432, 7249905, -4387309, -12573517, 32682554, 6365142, + -71236328, -31726924, 24247238, 8409546, -14892799, 20602958, 21146272, 32637456, 7273527, 9786083, + 6360847, 9575630, 12154757, -24711094, 4075924, 4702989, -52587580, 25054692, 18650896, 22565758, + -35946728, -20918638, 26749056, 152471, -6721624, -5353677, -15193447, -13593571, 403727, -18126910, + -40336184, 13937169, 43679816, -30384746, 4552666, -17231408, -6708739, -12537010, -3603478, 22443352, + 5697274, 18556406, 5718749, -19567872, -13630079, -15880642, -9214852, -12977244, 3474629, -8201240, + -1432372, -12423193, 4340065, 6541235, 7466801, -3728032, 56446608, 38392712, 26761942, 14879914, + 2439542, -12264279, -19078244, 18195628, -54891828, 59392956, -35652524, 10161893, -59652800, -1498944, + 57466664, 23008140, -19411104, 36724116, -56639880, 23618026, 11375221, 4722317, -69911328, -20461224, + 5010080, 12075301, 46033460, -68743096, -8705899, -22357452, -64716568, -13630079, 16355235, 33389076, + 49694920, 38809324, 38588132, -2521146, -23703924, 25690346, 8214125, -14261439, 9614284, -31226560, + 51455856, 24492052, 17847736, -25771952, -57445188, -14815490, 1986422, -69709464, -56296284, -14265734, + -50429360, 33532958, 13353053, 10919954, -22877144, -24567212, 10475425, 7836168, 4928475, 16486232, + -9186935, 12631499, 34235184, 15977278, 6335077, 5267778, -21504902, -17856326, -16030965, 10486163, + -5304285, -44386340, -35450660, -2907693, -28430536, -25031070, -6781754, -36515812, -22776212, -5153961, + 2619930, -4632122, -1825361, 9592809, -6515466, -2003602, 2611340, 64171108, -49984828, 13499082, + -7017977, -6463926, 1239098, 17766132, -31095564, 41732048, -11957189, 28619514, -2699387, -23212150, + 44470092, 43780748, 31432718, -14665166, 67355824, 24889336, -75067440, 77524160, 7204808, -236223, + 56178172, 2454574, -24169928, -32549410, 55465208, -34688304, -46059228, 44721348, 39208756, -25477746, + -61291332, 24056112, -20912196, 8484708, -43046308, -35504348, -14489072, 41843720, 37840808, 4902705, + 34752728, -50236084, 16402480, -13267154, -18453326, 23957328, 3620658, 7292855, -69965016, -19299436, + 39335456, -50272592, -12788265, -63052268, -11446088, -23602992, 10907069, -15300821, 7417409, 6403796, + -1846836, 6234145, -16520592, -56034292, -10219875, 28436978, -3461744, 19692426, -21189222, -49196704, + -8349417, 10737418, 31595926, 7514046, 17467632, -1924145, 7406671, 11690901, 7584912, -17182016, + 4735202, -7110319, 7784628, -13720273, 8508330, 3176128, 1380832, -1664300, -11317239, -6034429, + 58254788, 4614943, -16758962, -41487236, -1267015, -19754702, 15625091, -34243776, 22007412, 14068165, + -29923038, -30696132, 46669116, -54713588, -2007897, 35558036, -39573828, 12938589, 45612552, -36039072, + 31329638, 23046794, 33520072, -54795192, 47586092, -55022828, 16763257, -41854456, 5381594, -21341692, + 37497212, 1279900, 23003844, 11929272, -39056284, -23766202, -54043572, 31737660, -36565204, 31913754, + -43997644, -50115824, -84022448, 8345122, 44311176, -6607807, -1166084, 14100378, 38210176, -12771085, + 10353019, -46349140, 11948599, 61873300, -6109591, 56109452, 73360192, -335007, 12386686, 15197742, + -31164282, 16387448, -37782828, -1760937, -38785704, -37576668, 2325725, -14147622, -63808180, 43465068, + 1131724, 32371168, -37617472, -19110456, -14328011, 16670916, -268435, -9829033, -9848360, -6294275, + -2360085, 3826816, 4215511, -7441031, 8768176, -8557722, -8564165, -4670777, 12339441, 9283572, + 10269267, -4829691, 7758859, -131621424, 33436320, 49329848, 13718126, -57015692, -8310762, 92876520, + -106646184, -2660732, -17946520, -69735240, -17540646, -47238196, 17388176, 17282948, 40864468, 16582869, + -55714316, -19752554, 40288940, -63606320, -18010946, -68027984, 58181776, 17489106, 45530948, 77500536, + -27193586, -16292958, -12674448, -38744900, 37260988, -18148384, -46110768, -51777980, -8963597, 19939386, + -1324997, 10640781, 12773233, 30208652, -13114683, -1355062, 22501334, -21502754, 43997644, 49954764, + 47221016, -38087768, 5274220, -11830487, 22688164, 94173600, 70759584, 134786816, 10877005, 53334904, + 43288976, -20394652, -4436701, -6977175, -12365211, 17087528, 4179003, 48578228, 36745592, -16359530, + -4737349, -28729036, -56324200, 22801982, -581968, 19406810, -3871913, -39011188, -5482526, 5974300, + -21575768, 13297219, -13662291, -18897856, 794569, -18936510, 173946, -5192616, -4436701, 221191, + 3178276, -11800423, 1949915, 843961, 216896, 4844723, 204930064, 99151464, 35676144, 32192928, + -48019880, 31879394, -38686916, 47470128, 38978976, 36571648, 9753871, -66378720, -36919540, 73508368, + 13144747, -3704409, -14957224, 82218560, -88018912, -36715528, -21726092, -6085969, -62206160, 15451145, + -53693532, -29753386, 9442486, -33833604, 51133732, -48318384, -20598664, -11512660, 54619100, -89425512, + -16831976, -66432408, -1440962, 143881, -58282708, 10106058, 46662672, 25514254, -605590, -27144194, + 2952790, 28239410, -36494336, 74790416, 101515848, -5912023, -62337156, -58727236, 42133628, -14568529, + -13159780, 87383256, -18017388, 28185722, -1900523, 55106576, -10473278, 7565585, -10005126, -34194384, + -96091304, -57286272, -8572755, -25497074, -66073776, -43374876, 25559350, 56515328, -4114579, -6768869, + -5471789, -8581345, 31241592, 19868518, 4917738, -18418968, 22080426, -12006581, -43608952, -41856604, + 6036577, 29478508, -33865816, 23111220, -1642825, -12764643, -10915659, 1342177, -18661632, -14441828, + 1449552, -5302137, -2272038, -8710194, }, }; const Word32 CRendBin_Combined_BRIR_coeff_diffuse_im_48kHz_fx[BINAURAL_CHANNELS][2885] ={ { -9659381, - 5362267, -3098819, 1329292, -1745904, 399432, -1284195, -347892, 55835, 2576981, -1692217, - 1123134, -2744484, 2025077, -3098819, -4211216, -3702262, 850404, -397284, 579821, 79457, - -1915555, 1105954, 1917703, -1084479, 1535451, -242666, -670015, -1357210, -244813, 399432, - 1078037, -785979, 1612760, -654983, 1028645, 1501091, -1097364, -1056562, 68719, -1110249, - 298500, 27917, -508954, 1103807, 180389, -513249, 3689377, -3813931, -676457, -818191, - -858993, -294205, -38655, -743029, -500364, -15032, 180389, -549756, 328565, -1198296, - -326418, -212601, 736587, -4054449, -358630, 811749, -362925, -513249, 373662, 53687, - 307090, 1833951, -876173, -616328, -970663, -206158, 569083, 811749, -831076, -661425, - 1011465, -932008, -1329292, -171799, -345745, 448824, -380105, -408022, 244813, 392990, - -811749, 251256, 337155, -12947179, -8793946, -3573413, -4080219, -2280628, -2134599, -2022930, - -914828, -2439542, -1921998, -839666, -1498944, -197569, -539018, -1307818, -1767379, -1979980, - -779537, -1148904, -1995012, -261993, -2497524, 6442, -188979, -347892, -1511829, -261993, - -1142461, 8590, -1475321, -942745, 508954, -1086627, 191126, -2521146, -463856, 1228361, - 753767, -47245, -367220, -725850, 206158, 227633, 1168231, -702227, -115964, -362925, - -17038136, -910533, 2173254, -19327, 637803, -100932, 0, -1346472, 1436667, 590558, - 1733019, 1264868, 3569118, 2652142, 186831, -1398012, -831076, -315680, 654983, -461709, - -3180423, -2826089, -1488206, -420907, 122407, 420907, 571231, -94489, 83752, 367220, - -678605, -70867, -105227, -1930588, 1131724, 491774, -229781, 0, -760209, -1063004, - 659278, 279173, -721555, 697932, 562641, 846109, -382252, 19097572, 13387413, 2647847, - 5173288, 1090922, 1700807, 4247723, 2164664, 689342, 2529736, 1052267, -1133871, -536871, - 869731, 1492501, -2600603, -326418, -1567663, 3463891, 1698660, 901943, 1700807, 895501, - 874026, 64425, -180389, -824634, 1335735, 1655710, 1378685, 1760937, 2089502, 1279900, - 3058017, 719407, -184684, 1118839, 193274, -508954, -253403, -450972, -616328, 42950, - 1415192, 369367, 225486, 858993, 28509992, 12066711, 3697967, 3292093, 2368675, 1402307, - 500364, 73014, 3161096, 594853, 1771674, 2319282, 1284195, -201863, -826781, 4939213, - -408022, -2755222, -1518271, 1202591, 109522, 2628520, 914828, 296353, -448824, -1271310, - -309238, -599148, 1209033, -231928, 526134, 88047, 225486, -667867, 989990, 3427384, - 2226941, 2267743, 2110977, 1681480, 977105, 642098, 435939, 1105954, -910533, 665720, - -408022, 9382356, -9887015, -2985002, -4271345, -3687230, -2016487, -590558, 1367947, -1370095, - 139586, -3652870, 1241246, -1327145, -3324305, 882616, -2379412, -3158949, -2274185, 3030100, - 2265595, -1060857, 1144609, -2091649, 798864, -3809636, 182536, 633508, -665720, -889058, - 779537, -3015067, -1389422, 395137, -1075889, -886911, -708670, 251256, 298500, 1526861, - 66572, 2630668, -1041530, -717260, -852551, -1294933, -429497, -646393, 341450, -1116692, - -1754494, -266288, -33844344, -17119740, -6178311, -4795331, -5280663, -3268470, -4569845, -2929168, - -4973572, -874026, -2269890, -551903, 184684, -2029372, -605590, 343597, -17180, -3098819, - -2115272, -1391569, 249108, -4185446, 371515, -1887638, -3786014, 341450, -98784, 279173, - -143881, -1301375, -1063004, 62277, -337155, -27917, -1451699, 64425, 324270, 1148904, - 373662, -1434519, 775242, -1434519, 927713, -2480344, -1760937, 395137, -1440962, 88047, - -581968, -1988570, -652835, -20029580, 10522670, 4372277, 1664300, 2675765, 534723, 693637, - 2411624, 2628520, 1473174, 1739462, -1314260, -603443, -2068027, 2523293, 566936, 429497, - 3519726, 81604, -2304250, 4112431, -2714419, 302795, 3459596, -1065152, 934155, 412317, - -42950, -1750199, -373662, 916976, 1024350, 137439, -575526, 38655, -1174674, 3880503, - 371515, -90194, -1501091, -803159, -955630, -959925, 2153926, 1999307, -485331, 171799, - -94489, 584116, 186831, -161061, -377957, 455267, 356482, -618475, -513249, 83752, - 504659, 30129196, 12751758, 3451006, 6869800, 4041564, 1685775, 3040837, 2555506, 38655, - 1859721, 3019362, 661425, 40802, 1498944, 4241280, -1451699, -736587, -3354370, 882616, - 3809636, 1655710, 152471, -2130304, -1187559, -895501, 4015795, 1290638, 2089502, 1217623, - -1939178, -3051574, 3481071, 1958505, -2171106, -989990, 3382287, 2903398, -165356, 749472, - -373662, 1533303, 938450, -296353, 676457, -1163936, -577673, 1870458, -983548, -710817, - 1945620, 1711545, 916976, 371515, 395137, 450972, 1385127, 798864, 2192581, 35654672, - 7681549, 5985037, 2576981, 2774549, 1112397, 2854006, 3272765, 5325760, 3201898, -947040, - 4121021, -751619, 1084479, 977105, 3483219, 5239860, 3309272, -848256, 5768141, -1052267, - -629213, -3004330, 796716, -858993, 923418, 1612760, -1782411, -2385854, -1037235, 526134, - -1979980, -592706, 869731, 1340030, -2317135, -1906966, -837519, 801011, -36507, 654983, - -852551, 32212, -581968, -725850, 914828, -1273458, 1245541, -1370095, -511101, -1030792, - 219043, -341450, 1404454, 685047, -124554, 1999307, 663572, 4136054, -15805480, -5053029, - -5656472, -3622805, 962073, -886911, -3401614, 1949915, 128849, 2394444, -281320, 261993, - -3708704, -2592013, -1730872, -2669322, 214748, -2841121, -5523328, 1101659, 631360, -2544768, - -575526, -2308545, 472446, 790274, -466004, -5671505, -1625645, 369367, -650688, 493921, - 1509681, -4037269, -1230508, -2521146, 1292785, -307090, -236223, 2652142, -2703682, -176094, - 805306, -337155, -906238, 1284195, 654983, -1604170, -1992865, -3133179, -502511, -2394444, - -1967095, -1022202, -1370095, -798864, -397284, -734439, -1236951, -1623498, -955630, 584116, - 1073742, -191126, -37052684, -12517682, -7614977, -1879048, -3964255, -103079, -2164664, -2705830, - -3438121, 4254165, 53687, -1567663, -442382, -6103149, -3543348, -2952790, 4973572, -4179003, - -8974334, 788127, 1050120, 749472, -3330747, -820339, 1836099, -4056597, -470299, -4140349, - -1297080, 2390149, -2059437, 622770, 4516158, 547608, -989990, -1056562, 1191853, 1464584, - 1097364, -1309965, -298500, 1520418, 1964948, 1262720, 633508, -3796751, 682900, -135291, - -1995012, -676457, 332860, -470299, -2016487, -1256278, -2091649, -539018, 57982, 337155, - -356482, -1380832, -304943, -1063004, -139586, -1140314, -53687, -24631638, 5761699, 298500, - -2924873, 4337917, -2710124, -2216203, 1183264, -4213363, -2405182, -947040, 1797444, -3337190, - 4548371, 34360, -45097, 2027225, 2160369, 3216931, -274878, 4453881, 6562710, 4625680, - 1559073, 3949223, -1226213, 2486786, -2881923, -3077344, -1185411, 313533, 2042257, -1644973, - -2763812, -1591285, 8590, 1698660, -2669322, 1926293, 758062, 1473174, -622770, -2559801, - -3298535, -4069482, 1129576, -2106682, 1172526, -4310000, -1155346, 1861868, -2609193, 390842, - -1810329, 1236951, -528281, 1200443, 373662, -807454, 10737, -1763084, 3279208, 1299228, - 3034395, 1219771, 16460462, 27092654, 7902740, 7024419, 9824738, 7911330, 1599875, 6270653, - 5641440, 3030100, 11907797, 2808909, 2059437, 5119601, 4801774, 2488934, 2158221, 1236951, - 2029372, -1541893, 6045167, -1612760, 637803, -1889786, 3852586, 182536, -916976, 3133179, - 3801046, 1314260, 5025112, -3517578, -5748814, -1314260, -272730, 1260573, -335007, 2503966, - -2257005, 2280628, 5068062, 2151779, -4380867, -921271, 2340757, 889058, -2108829, 3148211, - 1307818, 1866163, 2138894, 2813204, 994285, -781684, 760209, -2536178, -597000, 2375117, - 2241973, -1221918, 38655, 586263, -1002875, 343597, 1793149, 62337156, 6390912, -571231, - 3837553, -62277, 5308580, 115964, 1417339, 730144, 5596343, 2675765, -2323577, 1937030, - 2675765, 1496796, -3403762, -6990060, -3244848, -2905546, 1236951, -4271345, -770947, -221191, - 1148904, 7801808, 4292820, 1513976, 3096672, -4769561, -304943, -2473901, -977105, -1937030, - 2901251, -1058710, 4861903, -2183991, -884763, -2443837, -1120987, -3554086, -1685775, 884763, - 783832, -133144, 40802, -1924145, 1123134, 3412352, 272730, -1750199, 2106682, -2911988, - 1299228, 1361505, -289910, -865436, -627065, -75162, -551903, 206158, 2018635, -167504, - -1840394, 444529, -18126910, -21575768, -4009352, -1204738, -882616, -3433826, -1417339, 6541235, - 3874061, 1374390, 1786706, -2862596, -571231, 4907000, -1810329, 7992934, -6212670, -1702955, - 6519761, -1264868, -732292, -3798899, 4466766, 4932770, 90194, 4861903, -1775969, 2149631, - -103079, -2735894, -431644, -2166811, -904091, -1410897, 2686502, -1992865, -476741, -3060164, - 2059437, -1595580, 4498978, -7123204, 2982855, 2465311, -4301410, 77309, -2845416, 749472, - -3238405, 1009317, 1340030, -4118874, -627065, -1509681, -6116034, -3554086, -1702955, -3053722, - -667867, -528281, 324270, -2501819, 341450, -4818954, 1333587, 569083, -1666447, 581968, - -1662152, -463856, -1084479, -521839, -15988016, -9083856, -12416750, -6292127, -8312909, -880468, - 7913477, -8274255, 6350109, 4140349, -4595615, 9135395, -1494649, 1816771, -5989332, -588411, - -2697240, -330712, -19327, 2287070, 1037235, 4788889, 9032316, -2415919, 1191853, -4301410, - -4604205, -3990025, 856846, 3824669, -1393717, -1277753, -1269163, -2768107, 3090229, -949188, - -274878, -2710124, -2229088, -1791001, -2901251, -201863, -188979, -2360085, 1507534, -3633542, - 1290638, -2095944, -448824, 1367947, -2778844, 3386582, -5896990, -1780264, 481036, -1694365, - -3180423, 1559073, -927713, -3470334, 5675800, 3281355, 723702, 1127429, 1084479, 1440962, - -2976412, -1876901, 667867, -1005022, -2085207, 2199023, -44420700, -5025112, 3545496, -3197603, - 7325067, 3455301, -9021579, 1271310, 1475321, -2838974, -7559143, -2727304, -1868311, 2207613, - 506806, -6899865, -2662880, -3650722, -6732361, -5581310, -13164075, -6771016, -7703024, -9242770, - 7359427, -4883378, 2671470, 5607080, -4041564, -6244883, -2465311, -1290638, 1479616, 4230543, - 2388002, -5160403, -6521908, 5188321, 3173981, 4118874, 5669357, 897648, -51540, 2310693, - -298500, -2443837, 1417339, -1286343, -893353, 3423089, 8506183, -2753074, -4292820, 2063732, - -2744484, -180389, 4372277, -8358007, -141734, -2701535, -483184, -98784, 30065, -923418, - 1664300, -2430952, 3040837, 3408057, 1382980, -113817, -40802, -2761664, 35577360, 30983894, - 8422431, 18833432, 5242008, 10838350, -1735167, -1739462, 5304285, 7118909, 3816079, -12324409, - -4052302, 7662222, 8701604, -3210488, -4146791, 1398012, 3644280, 4088809, 646393, -6414534, - -13722421, -5177583, 7548405, -672162, 7756711, -1833951, -2415919, 1556926, -6354404, -3710852, - -3676492, 7069516, -8768176, -6079526, 1629940, 1475321, -2222646, -279173, -2478196, 2647847, - 3652870, 3098819, 7033009, 4069482, 171799, -5708012, 5430986, -500364, 3036542, -2785286, - 2136746, 4264903, -590558, -1129576, -2600603, -3143916, 1997160, 446677, 2800319, -2716567, - 2349347, 5538361, -1095217, -3012920, 3917010, 5022965, -1962800, 2252710, 2576981, 2025077, - 4851166, 4105989, 43228844, 7934952, -8340827, 6899865, 4636417, -8276402, -1754494, 4065187, - 317828, 1230508, -601295, -1818919, -8967892, -8935679, 3972845, 8227010, 8656507, -8609262, - -17175574, 2293513, -234076, -7022272, -8774618, -1675037, 4421669, -3161096, 6549825, 10363756, - -3917010, -3554086, -1398012, -1681480, -2033667, -16170552, 8388071, 7505456, -289910, 4791036, - -4861903, -1679332, -4423817, 6332930, 6914898, 631360, -1730872, -2660732, 3850438, 785979, - -2263448, -4209068, 2147, 3277060, -5209796, -3373697, -2843268, 734439, 1649268, -6695854, - 3322157, 7080254, -5916318, -227633, -1438814, -1166084, -66572, 569083, 384400, -571231, - 1271310, -2104534, -3886946, -4711579, -2031520, -1271310, -2508261, -4494684, -3526168, -1022202, - 3111704, -1462436, -11905649, -7713762, 1028645, 10771778, -10851235, 7722351, 3403762, 1737314, - 2087354, 1909113, 6882685, 11366631, 206158, 3466039, 1151051, -9665824, -8933532, 8680129, - 1065152, -9990094, 5821828, -8523363, 1307818, 10597832, -779537, -2828236, 11931419, 1926293, - 712965, 1039382, 249108, 1133871, -5407364, 3221226, 4741644, 7990787, -6420976, -3079492, - 1120987, 1151051, -3008625, -5654325, 3526168, -2035815, 2435247, 1393717, -2098092, -1801739, - 697932, 3655017, -2858301, -1168231, -732292, 2117419, -5890548, -2654290, 2561948, 614180, - -2068027, -966368, 2304250, -2398739, 642098, -1608465, -523986, 1995012, 450972, 1181116, - -5102421, -3508988, 1213328, -46415712, -42518028, -9571335, -19673098, -17373142, -9764608, -3034395, - -7318625, -8927090, 6073084, 1548336, -2016487, 10052371, 3753802, 12090333, 9455371, 2639258, - 3807489, 4363687, -18592914, 8712341, -1402307, -4017942, -3455301, -11098195, -3380139, -3901978, - 10621454, -3620658, -6296422, -3231963, 1713692, -1464584, -2087354, 2250563, -2774549, -1904818, - 6502581, -6440304, -532576, -2145336, 11675869, 4535486, 4679367, -9058086, 708670, 7885560, - -4176856, 1810329, 53687, 1842541, 62277, 571231, -601295, 4986457, -654983, -1758789, - 3710852, -2731599, 2083059, 4329327, -2070174, -3184718, 1374390, 1589138, -3330747, -1471026, - -6148246, -4975720, 1610613, -667867, -1088774, -221191, 803159, -504659, -3908420, -1947768, - -29186450, 61467424, 38315404, 12524125, 3588445, 4385162, 4174708, 7054484, 5871221, 13153337, - 25769804, 1655710, 2785286, 5828271, 5145371, 6856916, -5007932, 25366076, 17779018, -16529182, - 12184822, 2473901, -2854006, 6238440, 15053860, -14085345, -4224101, 1350767, -12008729, -7889855, - -8622147, 17493402, -912681, -2888366, 2156074, 1144609, -5310727, -13707388, 9498320, 8057359, - -2493229, 4483946, 9745281, -6382322, 5250598, 747324, -2703682, 7990787, 6530498, 1743757, - 775242, 987843, 5237713, 7763154, -57982, -1178969, -195421, -2207613, 5194763, 1305670, - -2272038, -2458869, -2050847, 4232691, 1756642, 9369471, -2881923, 3476776, -2147484, 2486786, - -3850438, -1129576, 1024350, -1836099, -2720862, 433792, 345745, 1380832, 2383707, 66520452, - -23514946, -22883586, 10305774, 2671470, -8808978, -7552700, -12275017, -11950747, -8924942, -7361574, - 10894185, 2677912, 1228361, -6122476, -5544803, -19325206, -120259, -7567733, -13460428, 11252814, - 7310035, 2415919, 6788196, 2052994, -2439542, -4185446, -459562, -3517578, 5540508, 9665824, - -10224170, -3605625, 55835, 5338645, 13138305, 4108136, 17652316, -8970039, 5510443, 14922864, - 8630737, -7232725, -2280628, 1870458, -3837553, 6541235, -1075889, 517544, 9365176, 5347235, - 1432372, 1075889, -313533, -3777424, -191126, 1335735, -4318590, -2196876, 4114579, -1425929, - -8117488, -957778, 167504, -1174674, -8448201, 2409477, 1653562, 2330020, 2272038, -1511829, - -3545496, -944893, -1821066, 7054484, 2849711, -2409477, 1833951, -377957, 1376537, 356482, - 21393232, 40450000, 15990163, 10797548, 12775380, -3745212, 4170413, -11607149, 20233590, 7894150, - 19441170, 5748814, 7473243, -17693118, 22157736, 32654636, 4260608, 21163452, -4140349, -17224966, - -16911434, 15522012, -4887673, 12390981, 2420214, 4954245, -9405978, 9588514, -3212636, -3448859, - 16000901, 11014444, -8181913, 14815490, 1812476, 2697240, -2836826, -11196980, 3266323, 824634, - -6066642, -7054484, 6721624, 9210557, 3189013, -3253438, 4518306, 350040, 9981504, -5918465, - -687195, -9756018, 1316408, 9543417, 6601365, -4432406, 148176, 3354370, -8480413, -650688, - -5729487, -3294240, 1995012, 2284923, 6015102, -6837588, 3156801, -7866233, 884763, 9758166, - 3624953, 1928440, -5978595, 921271, 938450, -10172630, -2497524, 1191853, 1941325, 4041564, - 1846836, -51540, -47493748, -2415919, -10861972, 13595719, -10408853, 11212012, 156766, 9017284, - -1410897, 7797513, -23828478, 7106024, -2959233, -8377334, 3972845, -10239202, 6189048, -10340134, - -5725192, -23029614, 12996571, 27902256, -11085311, -3549791, -3367254, -4415227, 4035122, 5637145, - 7853348, -20478404, 5957120, -12713103, -3874061, -603443, 10368051, 4125316, -5516886, 2323577, - 2046552, 7645042, 7507603, -12768938, -4445291, 1937030, -9584220, -8280697, -1797444, -5896990, - 2330020, 7260642, 749472, 1314260, -1913408, 6771016, 17886392, 10280004, -11336566, 2308545, - 3889093, -5448166, 6161131, 1720134, -7340099, -616328, 7930657, 927713, 7580618, -10447508, - -2673617, 6358699, 77309, -3399467, -7531225, -504659, -4103841, 6083821, -1943473, 3818226, - -2033667, -725850, -87061136, -32411970, 17452600, 6549825, -11345156, 12537010, 9990094, 16492674, - -4123169, -6919193, 14055280, 826781, -9775346, 19591494, -21889300, -28048284, -13524852, -14944339, - 9730248, 14480482, -502511, 3914863, 22308060, 10142565, -22950158, -10048076, -14181982, 4443144, - -21320218, -18199924, -1286343, 3113851, -8257075, -8592082, -13054553, -6436009, -11959336, -11297911, - -4498978, 1260573, -4367982, -410169, -8111046, -953483, -6247030, -13166222, 28898688, 2639258, - 6730214, -11562052, 7554848, -472446, 3798899, -9223442, -517544, -1249836, -8040179, -4657892, - -3732327, 9738838, 6766721, 7687992, 4473209, 6032282, -1460289, 395137, -6968585, -942745, - -450972, -221191, 8806830, 2742337, 5117454, 5778879, -4146791, -9324374, 4020090, -3382287, - -1827509, 4264903, 11327976, -1075889, 45479408, 16823386, 36633924, 5871221, 2420214, -14590004, - 5602785, 22065394, 8231305, 1707250, 14727443, -13086765, -5916318, 12120398, -9148280, 4307852, - 21105470, 6923488, 2888366, 6867653, -3828963, 9326521, -6955700, 390842, 3612068, 1385127, - -5351530, -5645735, 2323577, 21897890, -6983617, 5551245, -19978040, -10537702, 9227737, 23072564, - -17529910, 324270, 11108933, 2965675, 4279935, -14366666, -5001490, -12386686, -21917218, -5613523, - -12141873, -12723841, 10544145, 4383014, 3715147, -7346542, -4518306, -1290638, -21028160, -1767379, - 11976516, -8160438, 9637907, 19756850, 3103114, 13161927, 8667244, 962073, -3760244, 11458973, - -14040248, -429497, -697932, 9171903, 4477504, 8473970, 478889, 9375914, -403727, 2145336, - 1565516, 9972914, 246961, 362925, 8890582, -4430259, 5613523, 2192581, 1660005, -2540473, - 55624120, -12431783, -16709570, 2435247, 13015898, 10069551, 10883447, -3365107, 11716671, 3309272, - -13290776, -27457726, 18494130, 4614943, 13460428, 7591355, -6942815, 2931315, -10114648, -18047452, - 18762564, -11821897, -21818434, 2093797, -3328600, 2476049, -1900523, -2486786, -5317170, -9012989, - 6816113, 14669461, -21257940, 20841328, -17937930, -24043226, 2617783, 6148246, -13131863, 10353019, - -1597728, 6487548, -11263552, -5959267, 19986630, 7838316, 20235738, 5091684, 1821066, 6143951, - 253403, 558346, 10750303, -1093069, 2156074, -9494025, -6034429, -5692979, 7666517, -7417409, - -5866926, 11697343, -30065, 13121125, 2347200, -9871982, 16228534, 12212740, -693637, 7907035, - -7827578, -13559212, 5478231, -5070209, -9322227, 670015, 8826158, 11392401, -4030827, 3446711, - 5927055, -925565, 2729452, -11731703, 4773856, 3856881, -5448166, 46471548, 56390772, -8557722, - 244813, -28321014, -3317862, -20637318, -15614354, -4849018, -10707353, 16101832, -90194, 12515535, - -26626650, 22157736, -16804060, 22625888, 706522, 17989470, -6554120, 22645216, 7318625, -10617159, - 4662187, -15902116, 10535555, -8811125, 25284472, 7675107, 16589311, -27635968, -15979426, -6693707, - -14147622, -5772436, -9706626, 1017907, 34213708, -15734613, 17162690, 29186450, 4039417, 12902082, - 92342, -6395207, -13647259, -10228465, 1367947, -7346542, 17471926, -11246372, 7971460, 21356724, - -2869038, -1627793, -1773822, 17491254, 18698140, 6008659, -8785356, -7509751, -4670777, 7468948, - -17263622, 3360812, -3150359, -4602058, 178241, 11484743, 949188, 16209207, 14654428, 3051574, - 3470334, -6856916, -410169, 16662326, -2192581, 1118839, 6874095, -8682276, 111669, -9957882, - -11050951, 1739462, 1533303, -2059437, -43862352, -39612484, 17740362, -5392332, 21908628, -12524125, - -10037339, -14918569, -11937862, -5753109, -34561600, -12887049, 13563507, 18539226, 7902740, -24350318, - -6682969, -11755325, 10468983, 34896608, 19816980, 8435316, 1582696, 2534031, 2035815, 6038724, - 18333068, 1359357, 4988605, -10415296, 1080184, -14879914, 6019397, 7127498, 13342316, 1610613, - -8701604, -4578435, 17521320, -8108899, 6781754, 3463891, 6530498, 21992380, -12000139, -18706730, - 7286412, 15665893, 4440996, 15659451, 19142670, 9053791, 13363791, 4999342, 3109556, 10322954, - 31726924, -17532056, 285615, 5130339, 3096672, -13602161, -2093797, 10428181, 135291, -12197707, - 5158256, 22789096, -18242874, 6027987, -17257178, 10146860, 7226283, 2791729, 1007170, -8308614, - -7934952, 16035260, 9000104, 3264175, -4567698, 11237782, -1271310, 32212, -7475391, 8284992, - 3425237, -88409752, -31151398, -1773822, -9062381, -21642340, 13131863, 18041010, 29858612, 10097468, - 18689550, -17349520, -37276020, 17467632, -8978629, 1136019, -20175608, 19836306, -12013024, -725850, - 18015240, -50343460, 4642860, 26493506, -49289044, -12768938, -17617956, 2572686, 1586990, 12199855, - -13883482, 16103980, 2022930, -25527138, -13501230, 3236258, -3547643, -12549894, 10965052, 30096984, - 6137509, 8461086, -5055177, -7258495, 17190606, 3369402, -9025874, -42777876, -7106024, 5600638, - -22048214, 10522670, 8529805, 1919850, -17104708, -14882062, -18221398, 38738456, 9957882, -5708012, - 7187628, -32613834, 3569118, -15178414, -17918604, 17235704, -3199751, 384400, -11407433, -40853728, - 5239860, 12625056, 6912750, -2834679, 23965918, 968515, -10468983, -1466731, -16230681, 25295210, - 13391708, 7189776, -4460324, 1866163, 7793218, -7327214, 2864743, 3618510, 1060857, 94128504, - 23607288, 24365350, 20544976, -5903433, 745177, 96812856, 27867896, -7889855, 59017144, -33021856, - 24595130, 5302137, 15017353, 24270860, -7505456, -16722455, 18169860, -3173981, -58437324, 15077483, - 15122580, 12513387, 27788438, 17770428, 18148384, -16292958, 3620658, -15721728, -8291435, 17482664, - 5750961, -33917356, -20349556, -28394028, -42528768, -6326487, 8798241, 20974472, 17965848, 15655156, - 12994424, -6094559, 22293028, 12592844, -27036820, -10144713, 7273527, 20620138, 545461, 4627828, - 35974648, -6197638, -2972117, -9062381, -1799591, 18549964, -15547782, 523986, -22018150, -19383188, - -12491912, 23274428, 31722628, -8905615, 2662880, -5815386, -19516332, -13022341, 5218386, -22447646, - -5920613, -5781026, -14568529, 40587440, 8965744, 13786845, 11890617, -850404, 204011, 7284265, - 2276333, 13000866, 8151848, 562641, -1108102, 96125664, 56098716, 4492536, 35465692, 27844272, - 7406671, 41897404, 11265699, 285615, -13303661, -9133248, -27455578, -72924248, -5854041, 7550553, - -25445534, -13849122, -3227668, 51627656, 16361678, -12869870, 124554, 3974992, -7733089, 22009560, - -4035122, -12887049, -9468255, -12124693, 7700877, -18013092, -45417132, 1436667, -23892904, -36013300, - 6753836, 16125455, 22419730, 13254269, 19801946, -13348758, -39170100, -24891482, -35272420, 14106820, - 32319628, 27348204, 17033840, 33062658, 453119, 20817706, 43946104, -36271000, 6231998, -16146930, - -212601, 13157632, 12837657, 21968758, -2325725, -44424996, -35021164, 7874823, -10172630, -12326556, - -8931384, -9369471, -31080530, 3141769, 20426864, -1797444, 15472620, -9096741, -1196148, -1290638, - 7548405, 30900142, 21105470, 19005230, -17978734, 1466731, -10967199, 1700807, -28585154, 6124624, - 4275640, 3526168, -964220, -2987150, -8512625, 7511898, 23478438, -47983376, 6094559, -36777804, - 16531329, -70044472, -1728724, -23381802, -35867272, 64276332, 36633924, -23229330, -57773752, -14888504, - -20987358, -50861004, 39528732, 1859721, -34855808, -13265006, 20362440, -33386928, -22417582, -17671642, - -39140036, -15337328, -682900, -32042604, -28703266, 40160092, -15000173, -12912819, -3637837, -9337259, - 34475704, -38405596, -17718888, 7735236, -10071698, -360777, -8572755, 19509888, -36054104, 12534862, - -57690000, 5538361, -16460462, -23405424, 60694332, 5950677, -22374632, 11205570, 12708808, -49327700, - 33998960, -8660802, -10518375, -4090956, 19443316, -8486855, 876173, -23843510, 12762495, 15483357, - 27292370, -23987392, -60462404, 41790032, -4849018, 17001628, 20648056, -12957916, 11899207, 30764850, - -39893804, 1685775, -14083198, -4801774, -41422812, 13647259, -6485401, 1185411, -1095217, 4992900, - -7030862, -6753836, 11317239, -10982231, 8169028, 1909113, -7857643, -91905856, -50298364, 10819023, - -31862214, 3317862, -22870700, -12764643, -33814276, -24296630, 17914308, 50667728, 54470924, 7952132, - 38603168, -26882200, 67005784, 48142288, -38281044, -35581656, 11574937, 10333691, 56717192, 19743964, - 36515812, -13597866, 14970109, -7937100, -5467494, -12543452, 53053584, 22853520, 50837380, 45021996, - 9326521, -3347927, -21685290, 21391084, -2091649, -46641196, -30118458, -9403831, -23227184, -5972152, - -23890756, -22101902, 15040975, -7161858, -14931454, 37718404, 45773612, -26710402, -8179765, 61042224, - 25690346, -42829412, -40928892, -15618649, 16108275, -2647847, -7209103, -30678952, 25832080, 7127498, - -9270687, 6350109, 7456063, -37879464, -15893526, 2854006, -13544179, -18747532, -19035296, 49787260, - -39073464, -36127116, 15028091, 25211458, 37368364, -19400368, -5521181, 2879776, -16527034, 16954384, - -2188286, 12560632, -10634339, -5252745, 3882651, 4466766, -5918465, -6247030, -42950, -7483981, - -34930968, -50813760, -44012676, -180389, -34673272, -44165148, 11248519, -3629247, -61976380, 44313324, - 7718056, -3588445, 21848498, 68199784, 64879776, 28194312, -79729624, 29725468, 21000242, -77846280, - -1202591, -37505800, -18395344, 40325448, -47285444, 27543626, -109522, -7971460, -16962974, 8244190, - -4020090, 13655849, -9176198, -41635412, 40475772, 19333796, 48496624, -4926328, -16458315, -23364622, - 19591494, -21045340, 57299160, 12208445, 34389804, -44581760, 35538708, 1507534, 12537010, -28898688, - 9680856, -34346852, -5506148, -35238060, 14394583, 24573656, -47019156, 2020782, -38749196, 18229988, - 22797686, 22374632, -3103114, -66256312, 83752, 17637284, -5765994, 29611652, -63541892, 16393890, - -26459146, 8632884, -22426172, 4728759, 16376710, -7039452, -274878, -6798933, -8291435, 2645700, - -17149804, 21629456, 4814659, -438087, -27318140, -2420214, 2836826, -1846836, 11411728, -11667279, - 2587718, -1138166, -6051609, 95490008, 115833120, 48451528, 40387724, -66780300, 64233384, 93258776, - -102039832, 12210592, 66179004, 11521250, -121708632, -12150462, -66071628, 21328808, 24206436, -30764850, - -12045236, 22194244, -55886116, -4462471, -21897890, -27457726, 10900627, -42384884, 45653356, 32545114, - 59042916, -29250874, 9646497, -6378027, -24088324, 74549896, -1479616, -34316788, -16228534, 16103980, - -16080358, -19529216, -22932978, 37920268, 14061723, 52718576, -3768834, 19323058, 69170448, -43920336, - 9148280, -29828548, 54872504, -21588654, 25645250, 10879152, -2239826, -20828444, -39172248, -26474178, - 10969346, 49604724, -46757160, 41848012, 49456548, 24865714, 57805964, -28308130, -23089744, 37673304, - -6607807, -7043747, -53470196, -3410204, -44132936, 9019431, 55718612, 27341762, 13962939, 25546466, - 15129022, -24017458, -10913512, -41916732, 47259672, 1945620, -18934364, 12474733, 4151086, -22054658, - 11394548, -3199751, 13460428, -2321430, 20484846, 9814000, -44571024, -151485648, -63621352, -108920368, - -58911920, -46544560, 25063282, -69913480, -71567040, -34168612, -95614560, -31035434, 71902048, -2177549, - 2733747, -19449760, -17040282, -9012989, 6416681, -1148904, -64087356, -10144713, -12768938, 92721904, - -12161200, 82441896, 6541235, -22166326, 21294448, 67875512, -3672197, 708670, -27474906, -7975755, - -28829968, 16138340, -12270722, -24388972, 12165495, -32948842, 26628798, 27204322, 5119601, 59435904, - -27064736, 30296700, -25312390, 33436320, 22460532, 62618476, 8415988, -25516400, 33513630, -4290673, - -21131240, 79527760, -6083821, -4797479, 45657648, 14128295, 61523260, -48037060, -47029892, -7142531, - -20456930, -6463926, -75995152, -17248588, 26175678, -10292889, -32785632, -53362820, 3478924, 16312286, - -26819924, -25559350, -46533824, -16533477, 19593640, 20336670, 40980432, -6592775, -3895535, -1464584, - 13606456, 16408923, 2686502, 26027502, 7071664, 2798171, -3586298, -2482491, 18556406, -7965017, - 18341658, 20746840, -968515, 6156836, }, + 5362267, -3098819, 1329292, -1745904, 399432, -1284195, -347892, 55835, 2576981, -1692217, + 1123134, -2744484, 2025077, -3098819, -4211216, -3702262, 850404, -397284, 579821, 79457, + -1915555, 1105954, 1917703, -1084479, 1535451, -242666, -670015, -1357210, -244813, 399432, + 1078037, -785979, 1612760, -654983, 1028645, 1501091, -1097364, -1056562, 68719, -1110249, + 298500, 27917, -508954, 1103807, 180389, -513249, 3689377, -3813931, -676457, -818191, + -858993, -294205, -38655, -743029, -500364, -15032, 180389, -549756, 328565, -1198296, + -326418, -212601, 736587, -4054449, -358630, 811749, -362925, -513249, 373662, 53687, + 307090, 1833951, -876173, -616328, -970663, -206158, 569083, 811749, -831076, -661425, + 1011465, -932008, -1329292, -171799, -345745, 448824, -380105, -408022, 244813, 392990, + -811749, 251256, 337155, -12947179, -8793946, -3573413, -4080219, -2280628, -2134599, -2022930, + -914828, -2439542, -1921998, -839666, -1498944, -197569, -539018, -1307818, -1767379, -1979980, + -779537, -1148904, -1995012, -261993, -2497524, 6442, -188979, -347892, -1511829, -261993, + -1142461, 8590, -1475321, -942745, 508954, -1086627, 191126, -2521146, -463856, 1228361, + 753767, -47245, -367220, -725850, 206158, 227633, 1168231, -702227, -115964, -362925, + -17038136, -910533, 2173254, -19327, 637803, -100932, 0, -1346472, 1436667, 590558, + 1733019, 1264868, 3569118, 2652142, 186831, -1398012, -831076, -315680, 654983, -461709, + -3180423, -2826089, -1488206, -420907, 122407, 420907, 571231, -94489, 83752, 367220, + -678605, -70867, -105227, -1930588, 1131724, 491774, -229781, 0, -760209, -1063004, + 659278, 279173, -721555, 697932, 562641, 846109, -382252, 19097572, 13387413, 2647847, + 5173288, 1090922, 1700807, 4247723, 2164664, 689342, 2529736, 1052267, -1133871, -536871, + 869731, 1492501, -2600603, -326418, -1567663, 3463891, 1698660, 901943, 1700807, 895501, + 874026, 64425, -180389, -824634, 1335735, 1655710, 1378685, 1760937, 2089502, 1279900, + 3058017, 719407, -184684, 1118839, 193274, -508954, -253403, -450972, -616328, 42950, + 1415192, 369367, 225486, 858993, 28509992, 12066711, 3697967, 3292093, 2368675, 1402307, + 500364, 73014, 3161096, 594853, 1771674, 2319282, 1284195, -201863, -826781, 4939213, + -408022, -2755222, -1518271, 1202591, 109522, 2628520, 914828, 296353, -448824, -1271310, + -309238, -599148, 1209033, -231928, 526134, 88047, 225486, -667867, 989990, 3427384, + 2226941, 2267743, 2110977, 1681480, 977105, 642098, 435939, 1105954, -910533, 665720, + -408022, 9382356, -9887015, -2985002, -4271345, -3687230, -2016487, -590558, 1367947, -1370095, + 139586, -3652870, 1241246, -1327145, -3324305, 882616, -2379412, -3158949, -2274185, 3030100, + 2265595, -1060857, 1144609, -2091649, 798864, -3809636, 182536, 633508, -665720, -889058, + 779537, -3015067, -1389422, 395137, -1075889, -886911, -708670, 251256, 298500, 1526861, + 66572, 2630668, -1041530, -717260, -852551, -1294933, -429497, -646393, 341450, -1116692, + -1754494, -266288, -33844344, -17119740, -6178311, -4795331, -5280663, -3268470, -4569845, -2929168, + -4973572, -874026, -2269890, -551903, 184684, -2029372, -605590, 343597, -17180, -3098819, + -2115272, -1391569, 249108, -4185446, 371515, -1887638, -3786014, 341450, -98784, 279173, + -143881, -1301375, -1063004, 62277, -337155, -27917, -1451699, 64425, 324270, 1148904, + 373662, -1434519, 775242, -1434519, 927713, -2480344, -1760937, 395137, -1440962, 88047, + -581968, -1988570, -652835, -20029580, 10522670, 4372277, 1664300, 2675765, 534723, 693637, + 2411624, 2628520, 1473174, 1739462, -1314260, -603443, -2068027, 2523293, 566936, 429497, + 3519726, 81604, -2304250, 4112431, -2714419, 302795, 3459596, -1065152, 934155, 412317, + -42950, -1750199, -373662, 916976, 1024350, 137439, -575526, 38655, -1174674, 3880503, + 371515, -90194, -1501091, -803159, -955630, -959925, 2153926, 1999307, -485331, 171799, + -94489, 584116, 186831, -161061, -377957, 455267, 356482, -618475, -513249, 83752, + 504659, 30129196, 12751758, 3451006, 6869800, 4041564, 1685775, 3040837, 2555506, 38655, + 1859721, 3019362, 661425, 40802, 1498944, 4241280, -1451699, -736587, -3354370, 882616, + 3809636, 1655710, 152471, -2130304, -1187559, -895501, 4015795, 1290638, 2089502, 1217623, + -1939178, -3051574, 3481071, 1958505, -2171106, -989990, 3382287, 2903398, -165356, 749472, + -373662, 1533303, 938450, -296353, 676457, -1163936, -577673, 1870458, -983548, -710817, + 1945620, 1711545, 916976, 371515, 395137, 450972, 1385127, 798864, 2192581, 35654672, + 7681549, 5985037, 2576981, 2774549, 1112397, 2854006, 3272765, 5325760, 3201898, -947040, + 4121021, -751619, 1084479, 977105, 3483219, 5239860, 3309272, -848256, 5768141, -1052267, + -629213, -3004330, 796716, -858993, 923418, 1612760, -1782411, -2385854, -1037235, 526134, + -1979980, -592706, 869731, 1340030, -2317135, -1906966, -837519, 801011, -36507, 654983, + -852551, 32212, -581968, -725850, 914828, -1273458, 1245541, -1370095, -511101, -1030792, + 219043, -341450, 1404454, 685047, -124554, 1999307, 663572, 4136054, -15805480, -5053029, + -5656472, -3622805, 962073, -886911, -3401614, 1949915, 128849, 2394444, -281320, 261993, + -3708704, -2592013, -1730872, -2669322, 214748, -2841121, -5523328, 1101659, 631360, -2544768, + -575526, -2308545, 472446, 790274, -466004, -5671505, -1625645, 369367, -650688, 493921, + 1509681, -4037269, -1230508, -2521146, 1292785, -307090, -236223, 2652142, -2703682, -176094, + 805306, -337155, -906238, 1284195, 654983, -1604170, -1992865, -3133179, -502511, -2394444, + -1967095, -1022202, -1370095, -798864, -397284, -734439, -1236951, -1623498, -955630, 584116, + 1073742, -191126, -37052684, -12517682, -7614977, -1879048, -3964255, -103079, -2164664, -2705830, + -3438121, 4254165, 53687, -1567663, -442382, -6103149, -3543348, -2952790, 4973572, -4179003, + -8974334, 788127, 1050120, 749472, -3330747, -820339, 1836099, -4056597, -470299, -4140349, + -1297080, 2390149, -2059437, 622770, 4516158, 547608, -989990, -1056562, 1191853, 1464584, + 1097364, -1309965, -298500, 1520418, 1964948, 1262720, 633508, -3796751, 682900, -135291, + -1995012, -676457, 332860, -470299, -2016487, -1256278, -2091649, -539018, 57982, 337155, + -356482, -1380832, -304943, -1063004, -139586, -1140314, -53687, -24631638, 5761699, 298500, + -2924873, 4337917, -2710124, -2216203, 1183264, -4213363, -2405182, -947040, 1797444, -3337190, + 4548371, 34360, -45097, 2027225, 2160369, 3216931, -274878, 4453881, 6562710, 4625680, + 1559073, 3949223, -1226213, 2486786, -2881923, -3077344, -1185411, 313533, 2042257, -1644973, + -2763812, -1591285, 8590, 1698660, -2669322, 1926293, 758062, 1473174, -622770, -2559801, + -3298535, -4069482, 1129576, -2106682, 1172526, -4310000, -1155346, 1861868, -2609193, 390842, + -1810329, 1236951, -528281, 1200443, 373662, -807454, 10737, -1763084, 3279208, 1299228, + 3034395, 1219771, 16460462, 27092654, 7902740, 7024419, 9824738, 7911330, 1599875, 6270653, + 5641440, 3030100, 11907797, 2808909, 2059437, 5119601, 4801774, 2488934, 2158221, 1236951, + 2029372, -1541893, 6045167, -1612760, 637803, -1889786, 3852586, 182536, -916976, 3133179, + 3801046, 1314260, 5025112, -3517578, -5748814, -1314260, -272730, 1260573, -335007, 2503966, + -2257005, 2280628, 5068062, 2151779, -4380867, -921271, 2340757, 889058, -2108829, 3148211, + 1307818, 1866163, 2138894, 2813204, 994285, -781684, 760209, -2536178, -597000, 2375117, + 2241973, -1221918, 38655, 586263, -1002875, 343597, 1793149, 62337156, 6390912, -571231, + 3837553, -62277, 5308580, 115964, 1417339, 730144, 5596343, 2675765, -2323577, 1937030, + 2675765, 1496796, -3403762, -6990060, -3244848, -2905546, 1236951, -4271345, -770947, -221191, + 1148904, 7801808, 4292820, 1513976, 3096672, -4769561, -304943, -2473901, -977105, -1937030, + 2901251, -1058710, 4861903, -2183991, -884763, -2443837, -1120987, -3554086, -1685775, 884763, + 783832, -133144, 40802, -1924145, 1123134, 3412352, 272730, -1750199, 2106682, -2911988, + 1299228, 1361505, -289910, -865436, -627065, -75162, -551903, 206158, 2018635, -167504, + -1840394, 444529, -18126910, -21575768, -4009352, -1204738, -882616, -3433826, -1417339, 6541235, + 3874061, 1374390, 1786706, -2862596, -571231, 4907000, -1810329, 7992934, -6212670, -1702955, + 6519761, -1264868, -732292, -3798899, 4466766, 4932770, 90194, 4861903, -1775969, 2149631, + -103079, -2735894, -431644, -2166811, -904091, -1410897, 2686502, -1992865, -476741, -3060164, + 2059437, -1595580, 4498978, -7123204, 2982855, 2465311, -4301410, 77309, -2845416, 749472, + -3238405, 1009317, 1340030, -4118874, -627065, -1509681, -6116034, -3554086, -1702955, -3053722, + -667867, -528281, 324270, -2501819, 341450, -4818954, 1333587, 569083, -1666447, 581968, + -1662152, -463856, -1084479, -521839, -15988016, -9083856, -12416750, -6292127, -8312909, -880468, + 7913477, -8274255, 6350109, 4140349, -4595615, 9135395, -1494649, 1816771, -5989332, -588411, + -2697240, -330712, -19327, 2287070, 1037235, 4788889, 9032316, -2415919, 1191853, -4301410, + -4604205, -3990025, 856846, 3824669, -1393717, -1277753, -1269163, -2768107, 3090229, -949188, + -274878, -2710124, -2229088, -1791001, -2901251, -201863, -188979, -2360085, 1507534, -3633542, + 1290638, -2095944, -448824, 1367947, -2778844, 3386582, -5896990, -1780264, 481036, -1694365, + -3180423, 1559073, -927713, -3470334, 5675800, 3281355, 723702, 1127429, 1084479, 1440962, + -2976412, -1876901, 667867, -1005022, -2085207, 2199023, -44420700, -5025112, 3545496, -3197603, + 7325067, 3455301, -9021579, 1271310, 1475321, -2838974, -7559143, -2727304, -1868311, 2207613, + 506806, -6899865, -2662880, -3650722, -6732361, -5581310, -13164075, -6771016, -7703024, -9242770, + 7359427, -4883378, 2671470, 5607080, -4041564, -6244883, -2465311, -1290638, 1479616, 4230543, + 2388002, -5160403, -6521908, 5188321, 3173981, 4118874, 5669357, 897648, -51540, 2310693, + -298500, -2443837, 1417339, -1286343, -893353, 3423089, 8506183, -2753074, -4292820, 2063732, + -2744484, -180389, 4372277, -8358007, -141734, -2701535, -483184, -98784, 30065, -923418, + 1664300, -2430952, 3040837, 3408057, 1382980, -113817, -40802, -2761664, 35577360, 30983894, + 8422431, 18833432, 5242008, 10838350, -1735167, -1739462, 5304285, 7118909, 3816079, -12324409, + -4052302, 7662222, 8701604, -3210488, -4146791, 1398012, 3644280, 4088809, 646393, -6414534, + -13722421, -5177583, 7548405, -672162, 7756711, -1833951, -2415919, 1556926, -6354404, -3710852, + -3676492, 7069516, -8768176, -6079526, 1629940, 1475321, -2222646, -279173, -2478196, 2647847, + 3652870, 3098819, 7033009, 4069482, 171799, -5708012, 5430986, -500364, 3036542, -2785286, + 2136746, 4264903, -590558, -1129576, -2600603, -3143916, 1997160, 446677, 2800319, -2716567, + 2349347, 5538361, -1095217, -3012920, 3917010, 5022965, -1962800, 2252710, 2576981, 2025077, + 4851166, 4105989, 43228844, 7934952, -8340827, 6899865, 4636417, -8276402, -1754494, 4065187, + 317828, 1230508, -601295, -1818919, -8967892, -8935679, 3972845, 8227010, 8656507, -8609262, + -17175574, 2293513, -234076, -7022272, -8774618, -1675037, 4421669, -3161096, 6549825, 10363756, + -3917010, -3554086, -1398012, -1681480, -2033667, -16170552, 8388071, 7505456, -289910, 4791036, + -4861903, -1679332, -4423817, 6332930, 6914898, 631360, -1730872, -2660732, 3850438, 785979, + -2263448, -4209068, 2147, 3277060, -5209796, -3373697, -2843268, 734439, 1649268, -6695854, + 3322157, 7080254, -5916318, -227633, -1438814, -1166084, -66572, 569083, 384400, -571231, + 1271310, -2104534, -3886946, -4711579, -2031520, -1271310, -2508261, -4494684, -3526168, -1022202, + 3111704, -1462436, -11905649, -7713762, 1028645, 10771778, -10851235, 7722351, 3403762, 1737314, + 2087354, 1909113, 6882685, 11366631, 206158, 3466039, 1151051, -9665824, -8933532, 8680129, + 1065152, -9990094, 5821828, -8523363, 1307818, 10597832, -779537, -2828236, 11931419, 1926293, + 712965, 1039382, 249108, 1133871, -5407364, 3221226, 4741644, 7990787, -6420976, -3079492, + 1120987, 1151051, -3008625, -5654325, 3526168, -2035815, 2435247, 1393717, -2098092, -1801739, + 697932, 3655017, -2858301, -1168231, -732292, 2117419, -5890548, -2654290, 2561948, 614180, + -2068027, -966368, 2304250, -2398739, 642098, -1608465, -523986, 1995012, 450972, 1181116, + -5102421, -3508988, 1213328, -46415712, -42518028, -9571335, -19673098, -17373142, -9764608, -3034395, + -7318625, -8927090, 6073084, 1548336, -2016487, 10052371, 3753802, 12090333, 9455371, 2639258, + 3807489, 4363687, -18592914, 8712341, -1402307, -4017942, -3455301, -11098195, -3380139, -3901978, + 10621454, -3620658, -6296422, -3231963, 1713692, -1464584, -2087354, 2250563, -2774549, -1904818, + 6502581, -6440304, -532576, -2145336, 11675869, 4535486, 4679367, -9058086, 708670, 7885560, + -4176856, 1810329, 53687, 1842541, 62277, 571231, -601295, 4986457, -654983, -1758789, + 3710852, -2731599, 2083059, 4329327, -2070174, -3184718, 1374390, 1589138, -3330747, -1471026, + -6148246, -4975720, 1610613, -667867, -1088774, -221191, 803159, -504659, -3908420, -1947768, + -29186450, 61467424, 38315404, 12524125, 3588445, 4385162, 4174708, 7054484, 5871221, 13153337, + 25769804, 1655710, 2785286, 5828271, 5145371, 6856916, -5007932, 25366076, 17779018, -16529182, + 12184822, 2473901, -2854006, 6238440, 15053860, -14085345, -4224101, 1350767, -12008729, -7889855, + -8622147, 17493402, -912681, -2888366, 2156074, 1144609, -5310727, -13707388, 9498320, 8057359, + -2493229, 4483946, 9745281, -6382322, 5250598, 747324, -2703682, 7990787, 6530498, 1743757, + 775242, 987843, 5237713, 7763154, -57982, -1178969, -195421, -2207613, 5194763, 1305670, + -2272038, -2458869, -2050847, 4232691, 1756642, 9369471, -2881923, 3476776, -2147484, 2486786, + -3850438, -1129576, 1024350, -1836099, -2720862, 433792, 345745, 1380832, 2383707, 66520452, + -23514946, -22883586, 10305774, 2671470, -8808978, -7552700, -12275017, -11950747, -8924942, -7361574, + 10894185, 2677912, 1228361, -6122476, -5544803, -19325206, -120259, -7567733, -13460428, 11252814, + 7310035, 2415919, 6788196, 2052994, -2439542, -4185446, -459562, -3517578, 5540508, 9665824, + -10224170, -3605625, 55835, 5338645, 13138305, 4108136, 17652316, -8970039, 5510443, 14922864, + 8630737, -7232725, -2280628, 1870458, -3837553, 6541235, -1075889, 517544, 9365176, 5347235, + 1432372, 1075889, -313533, -3777424, -191126, 1335735, -4318590, -2196876, 4114579, -1425929, + -8117488, -957778, 167504, -1174674, -8448201, 2409477, 1653562, 2330020, 2272038, -1511829, + -3545496, -944893, -1821066, 7054484, 2849711, -2409477, 1833951, -377957, 1376537, 356482, + 21393232, 40450000, 15990163, 10797548, 12775380, -3745212, 4170413, -11607149, 20233590, 7894150, + 19441170, 5748814, 7473243, -17693118, 22157736, 32654636, 4260608, 21163452, -4140349, -17224966, + -16911434, 15522012, -4887673, 12390981, 2420214, 4954245, -9405978, 9588514, -3212636, -3448859, + 16000901, 11014444, -8181913, 14815490, 1812476, 2697240, -2836826, -11196980, 3266323, 824634, + -6066642, -7054484, 6721624, 9210557, 3189013, -3253438, 4518306, 350040, 9981504, -5918465, + -687195, -9756018, 1316408, 9543417, 6601365, -4432406, 148176, 3354370, -8480413, -650688, + -5729487, -3294240, 1995012, 2284923, 6015102, -6837588, 3156801, -7866233, 884763, 9758166, + 3624953, 1928440, -5978595, 921271, 938450, -10172630, -2497524, 1191853, 1941325, 4041564, + 1846836, -51540, -47493748, -2415919, -10861972, 13595719, -10408853, 11212012, 156766, 9017284, + -1410897, 7797513, -23828478, 7106024, -2959233, -8377334, 3972845, -10239202, 6189048, -10340134, + -5725192, -23029614, 12996571, 27902256, -11085311, -3549791, -3367254, -4415227, 4035122, 5637145, + 7853348, -20478404, 5957120, -12713103, -3874061, -603443, 10368051, 4125316, -5516886, 2323577, + 2046552, 7645042, 7507603, -12768938, -4445291, 1937030, -9584220, -8280697, -1797444, -5896990, + 2330020, 7260642, 749472, 1314260, -1913408, 6771016, 17886392, 10280004, -11336566, 2308545, + 3889093, -5448166, 6161131, 1720134, -7340099, -616328, 7930657, 927713, 7580618, -10447508, + -2673617, 6358699, 77309, -3399467, -7531225, -504659, -4103841, 6083821, -1943473, 3818226, + -2033667, -725850, -87061136, -32411970, 17452600, 6549825, -11345156, 12537010, 9990094, 16492674, + -4123169, -6919193, 14055280, 826781, -9775346, 19591494, -21889300, -28048284, -13524852, -14944339, + 9730248, 14480482, -502511, 3914863, 22308060, 10142565, -22950158, -10048076, -14181982, 4443144, + -21320218, -18199924, -1286343, 3113851, -8257075, -8592082, -13054553, -6436009, -11959336, -11297911, + -4498978, 1260573, -4367982, -410169, -8111046, -953483, -6247030, -13166222, 28898688, 2639258, + 6730214, -11562052, 7554848, -472446, 3798899, -9223442, -517544, -1249836, -8040179, -4657892, + -3732327, 9738838, 6766721, 7687992, 4473209, 6032282, -1460289, 395137, -6968585, -942745, + -450972, -221191, 8806830, 2742337, 5117454, 5778879, -4146791, -9324374, 4020090, -3382287, + -1827509, 4264903, 11327976, -1075889, 45479408, 16823386, 36633924, 5871221, 2420214, -14590004, + 5602785, 22065394, 8231305, 1707250, 14727443, -13086765, -5916318, 12120398, -9148280, 4307852, + 21105470, 6923488, 2888366, 6867653, -3828963, 9326521, -6955700, 390842, 3612068, 1385127, + -5351530, -5645735, 2323577, 21897890, -6983617, 5551245, -19978040, -10537702, 9227737, 23072564, + -17529910, 324270, 11108933, 2965675, 4279935, -14366666, -5001490, -12386686, -21917218, -5613523, + -12141873, -12723841, 10544145, 4383014, 3715147, -7346542, -4518306, -1290638, -21028160, -1767379, + 11976516, -8160438, 9637907, 19756850, 3103114, 13161927, 8667244, 962073, -3760244, 11458973, + -14040248, -429497, -697932, 9171903, 4477504, 8473970, 478889, 9375914, -403727, 2145336, + 1565516, 9972914, 246961, 362925, 8890582, -4430259, 5613523, 2192581, 1660005, -2540473, + 55624120, -12431783, -16709570, 2435247, 13015898, 10069551, 10883447, -3365107, 11716671, 3309272, + -13290776, -27457726, 18494130, 4614943, 13460428, 7591355, -6942815, 2931315, -10114648, -18047452, + 18762564, -11821897, -21818434, 2093797, -3328600, 2476049, -1900523, -2486786, -5317170, -9012989, + 6816113, 14669461, -21257940, 20841328, -17937930, -24043226, 2617783, 6148246, -13131863, 10353019, + -1597728, 6487548, -11263552, -5959267, 19986630, 7838316, 20235738, 5091684, 1821066, 6143951, + 253403, 558346, 10750303, -1093069, 2156074, -9494025, -6034429, -5692979, 7666517, -7417409, + -5866926, 11697343, -30065, 13121125, 2347200, -9871982, 16228534, 12212740, -693637, 7907035, + -7827578, -13559212, 5478231, -5070209, -9322227, 670015, 8826158, 11392401, -4030827, 3446711, + 5927055, -925565, 2729452, -11731703, 4773856, 3856881, -5448166, 46471548, 56390772, -8557722, + 244813, -28321014, -3317862, -20637318, -15614354, -4849018, -10707353, 16101832, -90194, 12515535, + -26626650, 22157736, -16804060, 22625888, 706522, 17989470, -6554120, 22645216, 7318625, -10617159, + 4662187, -15902116, 10535555, -8811125, 25284472, 7675107, 16589311, -27635968, -15979426, -6693707, + -14147622, -5772436, -9706626, 1017907, 34213708, -15734613, 17162690, 29186450, 4039417, 12902082, + 92342, -6395207, -13647259, -10228465, 1367947, -7346542, 17471926, -11246372, 7971460, 21356724, + -2869038, -1627793, -1773822, 17491254, 18698140, 6008659, -8785356, -7509751, -4670777, 7468948, + -17263622, 3360812, -3150359, -4602058, 178241, 11484743, 949188, 16209207, 14654428, 3051574, + 3470334, -6856916, -410169, 16662326, -2192581, 1118839, 6874095, -8682276, 111669, -9957882, + -11050951, 1739462, 1533303, -2059437, -43862352, -39612484, 17740362, -5392332, 21908628, -12524125, + -10037339, -14918569, -11937862, -5753109, -34561600, -12887049, 13563507, 18539226, 7902740, -24350318, + -6682969, -11755325, 10468983, 34896608, 19816980, 8435316, 1582696, 2534031, 2035815, 6038724, + 18333068, 1359357, 4988605, -10415296, 1080184, -14879914, 6019397, 7127498, 13342316, 1610613, + -8701604, -4578435, 17521320, -8108899, 6781754, 3463891, 6530498, 21992380, -12000139, -18706730, + 7286412, 15665893, 4440996, 15659451, 19142670, 9053791, 13363791, 4999342, 3109556, 10322954, + 31726924, -17532056, 285615, 5130339, 3096672, -13602161, -2093797, 10428181, 135291, -12197707, + 5158256, 22789096, -18242874, 6027987, -17257178, 10146860, 7226283, 2791729, 1007170, -8308614, + -7934952, 16035260, 9000104, 3264175, -4567698, 11237782, -1271310, 32212, -7475391, 8284992, + 3425237, -88409752, -31151398, -1773822, -9062381, -21642340, 13131863, 18041010, 29858612, 10097468, + 18689550, -17349520, -37276020, 17467632, -8978629, 1136019, -20175608, 19836306, -12013024, -725850, + 18015240, -50343460, 4642860, 26493506, -49289044, -12768938, -17617956, 2572686, 1586990, 12199855, + -13883482, 16103980, 2022930, -25527138, -13501230, 3236258, -3547643, -12549894, 10965052, 30096984, + 6137509, 8461086, -5055177, -7258495, 17190606, 3369402, -9025874, -42777876, -7106024, 5600638, + -22048214, 10522670, 8529805, 1919850, -17104708, -14882062, -18221398, 38738456, 9957882, -5708012, + 7187628, -32613834, 3569118, -15178414, -17918604, 17235704, -3199751, 384400, -11407433, -40853728, + 5239860, 12625056, 6912750, -2834679, 23965918, 968515, -10468983, -1466731, -16230681, 25295210, + 13391708, 7189776, -4460324, 1866163, 7793218, -7327214, 2864743, 3618510, 1060857, 94128504, + 23607288, 24365350, 20544976, -5903433, 745177, 96812856, 27867896, -7889855, 59017144, -33021856, + 24595130, 5302137, 15017353, 24270860, -7505456, -16722455, 18169860, -3173981, -58437324, 15077483, + 15122580, 12513387, 27788438, 17770428, 18148384, -16292958, 3620658, -15721728, -8291435, 17482664, + 5750961, -33917356, -20349556, -28394028, -42528768, -6326487, 8798241, 20974472, 17965848, 15655156, + 12994424, -6094559, 22293028, 12592844, -27036820, -10144713, 7273527, 20620138, 545461, 4627828, + 35974648, -6197638, -2972117, -9062381, -1799591, 18549964, -15547782, 523986, -22018150, -19383188, + -12491912, 23274428, 31722628, -8905615, 2662880, -5815386, -19516332, -13022341, 5218386, -22447646, + -5920613, -5781026, -14568529, 40587440, 8965744, 13786845, 11890617, -850404, 204011, 7284265, + 2276333, 13000866, 8151848, 562641, -1108102, 96125664, 56098716, 4492536, 35465692, 27844272, + 7406671, 41897404, 11265699, 285615, -13303661, -9133248, -27455578, -72924248, -5854041, 7550553, + -25445534, -13849122, -3227668, 51627656, 16361678, -12869870, 124554, 3974992, -7733089, 22009560, + -4035122, -12887049, -9468255, -12124693, 7700877, -18013092, -45417132, 1436667, -23892904, -36013300, + 6753836, 16125455, 22419730, 13254269, 19801946, -13348758, -39170100, -24891482, -35272420, 14106820, + 32319628, 27348204, 17033840, 33062658, 453119, 20817706, 43946104, -36271000, 6231998, -16146930, + -212601, 13157632, 12837657, 21968758, -2325725, -44424996, -35021164, 7874823, -10172630, -12326556, + -8931384, -9369471, -31080530, 3141769, 20426864, -1797444, 15472620, -9096741, -1196148, -1290638, + 7548405, 30900142, 21105470, 19005230, -17978734, 1466731, -10967199, 1700807, -28585154, 6124624, + 4275640, 3526168, -964220, -2987150, -8512625, 7511898, 23478438, -47983376, 6094559, -36777804, + 16531329, -70044472, -1728724, -23381802, -35867272, 64276332, 36633924, -23229330, -57773752, -14888504, + -20987358, -50861004, 39528732, 1859721, -34855808, -13265006, 20362440, -33386928, -22417582, -17671642, + -39140036, -15337328, -682900, -32042604, -28703266, 40160092, -15000173, -12912819, -3637837, -9337259, + 34475704, -38405596, -17718888, 7735236, -10071698, -360777, -8572755, 19509888, -36054104, 12534862, + -57690000, 5538361, -16460462, -23405424, 60694332, 5950677, -22374632, 11205570, 12708808, -49327700, + 33998960, -8660802, -10518375, -4090956, 19443316, -8486855, 876173, -23843510, 12762495, 15483357, + 27292370, -23987392, -60462404, 41790032, -4849018, 17001628, 20648056, -12957916, 11899207, 30764850, + -39893804, 1685775, -14083198, -4801774, -41422812, 13647259, -6485401, 1185411, -1095217, 4992900, + -7030862, -6753836, 11317239, -10982231, 8169028, 1909113, -7857643, -91905856, -50298364, 10819023, + -31862214, 3317862, -22870700, -12764643, -33814276, -24296630, 17914308, 50667728, 54470924, 7952132, + 38603168, -26882200, 67005784, 48142288, -38281044, -35581656, 11574937, 10333691, 56717192, 19743964, + 36515812, -13597866, 14970109, -7937100, -5467494, -12543452, 53053584, 22853520, 50837380, 45021996, + 9326521, -3347927, -21685290, 21391084, -2091649, -46641196, -30118458, -9403831, -23227184, -5972152, + -23890756, -22101902, 15040975, -7161858, -14931454, 37718404, 45773612, -26710402, -8179765, 61042224, + 25690346, -42829412, -40928892, -15618649, 16108275, -2647847, -7209103, -30678952, 25832080, 7127498, + -9270687, 6350109, 7456063, -37879464, -15893526, 2854006, -13544179, -18747532, -19035296, 49787260, + -39073464, -36127116, 15028091, 25211458, 37368364, -19400368, -5521181, 2879776, -16527034, 16954384, + -2188286, 12560632, -10634339, -5252745, 3882651, 4466766, -5918465, -6247030, -42950, -7483981, + -34930968, -50813760, -44012676, -180389, -34673272, -44165148, 11248519, -3629247, -61976380, 44313324, + 7718056, -3588445, 21848498, 68199784, 64879776, 28194312, -79729624, 29725468, 21000242, -77846280, + -1202591, -37505800, -18395344, 40325448, -47285444, 27543626, -109522, -7971460, -16962974, 8244190, + -4020090, 13655849, -9176198, -41635412, 40475772, 19333796, 48496624, -4926328, -16458315, -23364622, + 19591494, -21045340, 57299160, 12208445, 34389804, -44581760, 35538708, 1507534, 12537010, -28898688, + 9680856, -34346852, -5506148, -35238060, 14394583, 24573656, -47019156, 2020782, -38749196, 18229988, + 22797686, 22374632, -3103114, -66256312, 83752, 17637284, -5765994, 29611652, -63541892, 16393890, + -26459146, 8632884, -22426172, 4728759, 16376710, -7039452, -274878, -6798933, -8291435, 2645700, + -17149804, 21629456, 4814659, -438087, -27318140, -2420214, 2836826, -1846836, 11411728, -11667279, + 2587718, -1138166, -6051609, 95490008, 115833120, 48451528, 40387724, -66780300, 64233384, 93258776, + -102039832, 12210592, 66179004, 11521250, -121708632, -12150462, -66071628, 21328808, 24206436, -30764850, + -12045236, 22194244, -55886116, -4462471, -21897890, -27457726, 10900627, -42384884, 45653356, 32545114, + 59042916, -29250874, 9646497, -6378027, -24088324, 74549896, -1479616, -34316788, -16228534, 16103980, + -16080358, -19529216, -22932978, 37920268, 14061723, 52718576, -3768834, 19323058, 69170448, -43920336, + 9148280, -29828548, 54872504, -21588654, 25645250, 10879152, -2239826, -20828444, -39172248, -26474178, + 10969346, 49604724, -46757160, 41848012, 49456548, 24865714, 57805964, -28308130, -23089744, 37673304, + -6607807, -7043747, -53470196, -3410204, -44132936, 9019431, 55718612, 27341762, 13962939, 25546466, + 15129022, -24017458, -10913512, -41916732, 47259672, 1945620, -18934364, 12474733, 4151086, -22054658, + 11394548, -3199751, 13460428, -2321430, 20484846, 9814000, -44571024, -151485648, -63621352, -108920368, + -58911920, -46544560, 25063282, -69913480, -71567040, -34168612, -95614560, -31035434, 71902048, -2177549, + 2733747, -19449760, -17040282, -9012989, 6416681, -1148904, -64087356, -10144713, -12768938, 92721904, + -12161200, 82441896, 6541235, -22166326, 21294448, 67875512, -3672197, 708670, -27474906, -7975755, + -28829968, 16138340, -12270722, -24388972, 12165495, -32948842, 26628798, 27204322, 5119601, 59435904, + -27064736, 30296700, -25312390, 33436320, 22460532, 62618476, 8415988, -25516400, 33513630, -4290673, + -21131240, 79527760, -6083821, -4797479, 45657648, 14128295, 61523260, -48037060, -47029892, -7142531, + -20456930, -6463926, -75995152, -17248588, 26175678, -10292889, -32785632, -53362820, 3478924, 16312286, + -26819924, -25559350, -46533824, -16533477, 19593640, 20336670, 40980432, -6592775, -3895535, -1464584, + 13606456, 16408923, 2686502, 26027502, 7071664, 2798171, -3586298, -2482491, 18556406, -7965017, + 18341658, 20746840, -968515, 6156836, }, { -11093901, - 5963562, -3131031, 3644280, -2179696, 3064459, -6444599, 283468, -264141, -738734, 1475321, - 3195456, -122407, -311385, -3536906, -1413044, 1507534, 867583, -427349, 1387274, -440234, - 483184, -1602023, -1086627, -1095217, -371515, 139586, -818191, -581968, 1881196, -1110249, - 1144609, -1093069, -186831, -856846, 1050120, 377957, 865436, 1473174, 1859721, 691490, - 502511, -176094, 208306, 279173, -386547, 358630, 3919158, -4483946, -597000, -826781, - -1110249, 721555, -2222646, 751619, -49392, 1009317, 891206, -1769527, -624918, 2688650, - -279173, 571231, -498216, 1166084, 2471754, 2851858, 487479, 1226213, -40802, -2259153, - -66572, 240518, -487479, 4295, 1243393, -1299228, -1739462, 753767, -839666, -781684, - -1219771, -60130, 1284195, 317828, -380105, -470299, -511101, -12885, 285615, -693637, - 253403, -790274, 474594, -11257109, -7954280, -3925600, -2909840, -2278480, -2291365, -826781, - -1687922, -558346, -1054415, -2806761, 554051, 1391569, -214748, 781684, -521839, -1471026, - -1432372, -2207613, -732292, 493921, 75162, -1256278, 835371, -1513976, -1451699, 927713, - 6442, 15032, 777389, 839666, 236223, -371515, -429497, -609885, 300648, 118112, - -762357, 375810, -1522566, -693637, -377957, -195421, -1086627, -257698, -401579, -62277, - -16026670, -2080912, 1172526, 302795, 1103807, 191126, -938450, 644245, -736587, -687195, - -1490354, -1142461, 521839, -384400, 959925, -916976, -40802, -884763, 242666, 1685775, - -481036, 1271310, 10737, -1043677, -279173, 1535451, 682900, 1022202, 1028645, -1464584, - 977105, -558346, -180389, -760209, -450972, 513249, 607738, 423054, -425202, 1251983, - 970663, 682900, -408022, -697932, 53687, -562641, 75162, 18850612, 14944339, 3584150, - 6670084, 1655710, 5151814, 3687230, 1086627, 3712999, 1438814, 2828236, 1174674, -964220, - 2763812, 2016487, -792421, -204011, -5220533, -508954, 240518, 3219078, 337155, 176094, - 1593433, 182536, 1440962, 1400159, 197569, -51540, 498216, 2220498, 1642825, 1453846, - -150324, -496069, 81604, 1065152, -386547, -42950, 1114544, 433792, -560493, 38655, - 238371, -1037235, 1378685, -736587, 33208688, 12000139, 5978595, 3358665, 2239826, 2022930, - 2149631, 3264175, 953483, 5400922, 882616, 388695, 2499671, -1406602, 702227, -691490, - -459562, -1032940, 3682935, 1840394, -148176, 2585570, -1711545, -586263, -504659, 4058744, - -238371, 1387274, 485331, 1934883, 513249, -715112, 1236951, 1294933, -481036, 392990, - 740882, 272730, 1020055, -377957, 1146756, 779537, -2506114, 487479, 491774, 414464, - 2016487, 12841952, -9539122, -3148211, -4496831, -2559801, -2735894, 1881196, -1632088, -3781719, - -1142461, -5076652, -1382980, -2136746, -5158256, -1142461, 955630, -3036542, -1228361, 607738, - -3700114, -42950, 3882651, 1024350, 399432, -1752347, -109522, 1526861, -161061, -1606318, - -2007897, 1971390, -362925, -2310693, 23622, -923418, 2750927, 17180, 1123134, -375810, - 2342905, -1582696, 807454, 438087, 377957, 126702, 433792, 21475, -1045825, 1651415, - 977105, 158914, -34999688, -19593640, -4166118, -4793184, -3517578, -4179003, -6208375, -444529, - 12885, -1670742, 1363652, -1546188, 96637, -73014, -2151779, -2102387, -3631395, -1125281, - 3251290, -3167539, -536871, 3169686, 1801739, -423054, 962073, -392990, -3536906, -1619203, - -2937758, -889058, -53687, -648540, 1415192, -2909840, -2516851, -64425, -3051574, -2188286, - -2216203, -2332167, 2276333, -717260, -3214783, -953483, 624918, 940598, -1224066, -1546188, - -901943, -2879776, -1561221, -21728240, 12620761, 4262755, 2353642, 1769527, 2218351, 605590, - -1943473, 277025, -1015760, -717260, 4176856, 2025077, 3648575, 3064459, 3837553, -3219078, - 1829656, 3442416, 962073, 2961380, -3500398, 427349, -612033, -562641, -1080184, 1084479, - -133144, -236223, 3775276, -3805341, -691490, 1050120, 2336462, -1204738, 2012192, -1677185, - -1926293, 2461016, -985695, -397284, -380105, 758062, 40802, 987843, -970663, -794569, - -839666, -612033, -680752, 1773822, 594853, 388695, -856846, -1793149, 513249, 1806034, - 508954, 32006096, 12844100, 2950643, 7071664, 5877663, 919123, 2740189, 6682969, 3335042, - -343597, 1675037, 676457, -803159, 1788854, 6109591, 1211181, 7254200, 3251290, -5585605, - 919123, 423054, 1030792, 5418101, 2768107, 2314987, -616328, -588411, -861141, -654983, - 657130, -914828, 1582696, 749472, 2211908, -249108, -749472, 1097364, 1784559, 1284195, - -347892, -2310693, -1209033, -1176821, 2145336, 1887638, 2441689, 1662152, 261993, 614180, - 2076617, 1984275, 1329292, 481036, 219043, 1346472, 1063004, 841814, 1692217, 35704064, - 10033044, 4604205, 5396627, 1078037, 5209796, -706522, -2211908, 49392, 1221918, 738734, - -319975, 1187559, 5323612, -637803, -3575560, -2229088, 2503966, 848256, 2946348, 5072357, - 4151086, -120259, 2720862, -2942053, 204011, -2246268, 3161096, 2063732, -3852586, 2342905, - -1898376, 435939, -1554778, 2372970, -1498944, 2933463, 2080912, 1956358, 3446711, 1340030, - -184684, -697932, -98784, 657130, 3837553, 68719, 2147, 455267, 1812476, 1447404, - 53687, -313533, -663572, -1906966, -444529, -1421634, -618475, 5089536, -15307263, -5961415, - -2637110, -3279208, -1758789, -1120987, 47245, 2349347, -2396592, -3908420, 3633542, -4733054, - -4872641, -678605, -1275605, 2317135, -1520418, 77309, -4718022, -2523293, -5654325, -5821828, - -6869800, -747324, 1359357, -4488241, -1451699, 843961, 302795, 380105, -798864, -4447439, - -3075197, 2186138, 575526, -901943, 4176856, -2755222, -1520418, 1267015, 2480344, 2366527, - -584116, -489626, 850404, 822486, -3042984, 433792, -1872606, -581968, 12885, -974958, - -49392, 2108829, 221191, -225486, 279173, -1967095, 1099512, 1928440, -581968, 90194, - 45097, -176094, -38732016, -12079596, -7389491, -2942053, -5340792, -4110284, -1322850, -2909840, - -1335735, -3912715, -5486821, -3777424, -1408749, -7909183, -2003602, -3169686, -4937065, -515396, - 743029, 2684355, -2927020, -3912715, -1567663, 3358665, 4116726, 5242008, 2677912, -64425, - -2639258, -1082332, -60130, -3068754, 1226213, 2211908, 2604898, -1756642, -1653562, -1387274, - -807454, -545461, -1187559, 2158221, -691490, 1425929, -2750927, -4550518, -2025077, -105227, - 2237678, -3929895, 1245541, -1848983, 1801739, -1883343, 1043677, -1563368, -167504, -992137, - -191126, 749472, 1395864, -934155, -1421634, 23622, -1417339, -22207128, 5927055, 1627793, - 34360, 3871913, -3719442, 977105, -8572755, -2813204, 2989297, 2089502, 5538361, -431644, - 6038724, -3547643, -889058, 2860448, -5254893, -1958505, -3094524, 5854041, -380105, -4911295, - 2445984, 4655745, -4183298, -3219078, -3770981, 1047972, -893353, 1984275, -1458141, -1234803, - -1030792, -2323577, 3298535, -2720862, 618475, 2130304, -302795, 2467459, -1490354, 5454609, - 792421, -605590, -1964948, -1967095, 42950, -2257005, -2731599, -1724429, 384400, 1825361, - -309238, 461709, -2394444, -2407329, -3395172, -1389422, -1120987, -936303, 895501, 1314260, - -1408749, 156766, 19142670, 27608050, 9442486, 9635759, 13000866, 9524090, -1378685, 1986422, - -1071594, 1881196, 1559073, 2531883, 1730872, 4844723, 1767379, 3096672, 889058, 9444633, - 2149631, 4722317, 2675765, 2568391, 7303592, 1919850, 9161165, 4932770, -1870458, 6672232, - 1692217, 3395172, 6470368, 1531156, 3854733, -1748052, -665720, 2050847, 2918430, -3721589, - 3390877, -2048699, -4286378, -2289218, 3573413, 5587753, 4063039, -521839, 1327145, 1494649, - 2018635, 3073049, 1636383, 3444564, 1947768, -2763812, -62277, 2503966, 3098819, 1198296, - 1024350, 822486, -3023657, -959925, -1859721, 2031520, -124554, 66486092, 4694400, -3055869, - 5025112, -3287798, 7191923, 2568391, 7567733, -3569118, 453119, 350040, 4436701, -8033737, - 1350767, 5686537, -1415192, -912681, 6631430, 11184095, -4797479, -2194728, 1052267, 5699422, - -2662880, 3822521, -90194, -3165391, -3182571, -2454574, 2040110, 3644280, 3547643, -2396592, - 3944928, -2364380, 3826816, 4028679, -1187559, -2080912, 1157494, -3558381, -5781026, 1606318, - -4026532, 1934883, 156766, 989990, 2132451, 352187, 2641405, 590558, -3985730, 1900523, - -1200443, 2196876, -2965675, -139586, 219043, 2312840, -1709397, -4350802, -1011465, -1655710, - 227633, -1232656, -22546430, -21938692, -4945655, 1668595, -959925, -3341485, -3564823, -4937065, - -1305670, 3579855, -1185411, -1284195, -5053029, 5263483, -324270, -4425964, -3788161, 9152575, - -8362302, 801011, 6081674, -785979, 981400, -8115341, 2540473, -3521873, 1894081, -5669357, - -3691525, 841814, 1451699, -2692945, -2967823, 197569, -1239098, 317828, -3466039, -2022930, - 3541201, -478889, -1722282, -1103807, 4511863, 1921998, -2639258, -4054449, -3560528, 1090922, - -586263, -1767379, 337155, 652835, -1982127, 5308580, 2886218, -665720, -468151, -1509681, - 601295, -1683627, -1623498, -1735167, -367220, -3165391, -2478196, -4215511, 899796, -4505421, - -214748, -1219771, -1125281, -347892, -9021579, -7380902, -9281424, -6328635, -4962835, -2967823, - 502511, 118112, -2506114, -702227, 1956358, 8078834, -7075959, 3657165, -2514703, -4114579, - 5330055, -259846, 884763, 7505456, 858993, 3285650, -4786741, -865436, -13522705, -1299228, - 2310693, 1868311, 942745, 1571958, 1666447, -2729452, -4194036, 3270618, -554051, 3103114, - 1247688, -3287798, 2697240, -66572, -9640054, -7546258, -1503239, -7129646, 758062, 2521146, - -700080, -1666447, -1041530, 551903, -2364380, -461709, -622770, -1060857, 2089502, 826781, - 560493, -1108102, -1148904, 3837553, 755914, -2143189, 2319282, -375810, -1879048, -3624953, - -92342, -1885491, -839666, 2894808, 1977833, 3064459, -43089260, -9805410, 622770, -8551280, - 3444564, 871878, 10320806, -4821101, 601295, -2826089, 6912750, -14111115, -13567802, 5727339, - -6582038, 10206990, 3676492, -8175470, -14366666, -313533, -4075924, -6951405, -2869038, 1653562, - 2310693, -3350075, 12277164, 674310, -1234803, -5123896, 4172561, 4670777, 5001490, 5405217, - -680752, -3176128, -1219771, 3201898, -261993, 3861176, -3631395, -1408749, -1256278, 4471061, - 3566970, -3889093, 5053029, -2808909, -3539053, 448824, -1614908, -3339337, 3446711, -3955665, - -536871, 1024350, -970663, -1604170, 897648, 3337190, -2070174, 3201898, -2643552, 2153926, - -1471026, -1634235, -1039382, 657130, 4108136, 760209, 3848291, -2435247, 39498668, 34720516, - 7256347, 9290014, -1848983, 11358041, 9092446, 11441793, -466004, 4610648, 2761664, -10694469, - -9070971, 5016522, 983548, -7645042, -8104604, -4494684, 534723, 4647155, 1363652, 10892037, - 9923522, 4391604, -2272038, -2351495, 6577743, 6197638, 506806, 5441724, -1717987, 6942815, - 408022, -1410897, 9586367, 5053029, 7868380, 5145371, 1752347, 5585605, 2796024, 1999307, - 5123896, -2699387, 1052267, 6863358, -36507, -4258460, 4054449, 4093104, 2894808, -2957085, - -38655, 4052302, 5978595, -2860448, 7221988, 8319352, -1382980, -4325032, 807454, 2005750, - 1320703, 3721589, 32212, 1413044, 2830384, -1868311, 253403, -2707977, -667867, -3695819, - -2136746, -337155, 47991964, 3839701, -1286343, 3317862, 2385854, -7922067, 2128156, 2074469, - 79457, 5044439, 7400229, 10896332, -4812511, -5014375, -7666517, -6322192, 7146826, -609885, - 10286447, -2510409, -2400887, 4157528, 8948564, 3474629, -8834748, 7002944, -2525441, 5592048, - -2864743, 4329327, -5289252, 3244848, -352187, 5091684, 704375, 2881923, 1657857, -9088151, - -4889821, -891206, -1748052, -897648, -2738042, 4310000, 1737314, 9266392, -1361505, -6425271, - -3635690, -689342, 637803, -7140383, 2471754, -2461016, -236223, -736587, -4063039, 3723737, - 7290707, -2319282, 3790309, 811749, -3970697, -433792, -3775276, -3259880, 723702, -5697274, - -3936338, 2308545, -212601, 1215476, 3951370, -5396627, 6451041, 682900, -2641405, -6412386, - 1857573, -2342905, 13821205, -3285650, -13230647, -8914205, -11929272, 11035918, -8817568, 2461016, - 13443248, -575526, -13675176, 955630, -14353781, 11965779, -4172561, 11927124, 68719, -4514011, - 10234907, 401579, 2123861, -7685844, -9736691, -1546188, 3425237, 2113124, -1900523, -4471061, - 4531191, -1367947, 3386582, 5224828, 6326487, 2944200, 3502546, -12807592, 1075889, -2890513, - -4378719, 1775969, 6365142, -5338645, -9844065, -4331475, 2894808, 1140314, -8647917, -3511136, - 4045859, 5922760, -5194763, -3369402, -3994320, 6060199, 8031589, 1638530, -2690797, 927713, - 5757404, -2738042, -216896, -3760244, 4041564, -4709432, -543313, 5624260, 3367254, -1617055, - -841814, -122407, -1795296, -48320528, -49012020, -7913477, -24043226, -14877767, -8555575, -13303661, - -1655710, 10073846, -21996676, 8040179, -4533338, 7335804, 1226213, 4501126, -9148280, 2325725, - -1185411, -4739497, -20186346, -4095251, -10520522, -12799003, -1385127, 3242700, 631360, -4350802, - 2738042, -4129611, -1277753, 10700911, -281320, -3560528, 609885, 7000797, 9347996, 6305012, - -53687, 5033702, 5757404, -569083, -6442, -10462540, 3781719, -8647917, 1554778, 8336532, - -5808944, -10473278, 2959233, -5877663, -5684389, 1155346, -154619, -4967130, 2338610, -1183264, - 11212012, 6330782, 3377992, 1389422, 4063039, -418759, 1170379, -4456029, -8078834, -1329292, - 609885, -5723044, -4045859, -3146064, -2757369, -3246995, 1702955, -1672890, -575526, -3601330, - -28771986, 53437984, 41873784, 2660732, 8493298, 3438121, 9264244, 14229227, 3214783, 13825500, - 2454574, -14441828, 9622874, 11671574, 3420942, 3536906, 8662949, 11506217, -11469710, 9612137, - -6062347, 8454643, 1234803, -6867653, 1322850, 9558450, 5355824, -11169062, 5430986, -4507568, - 16335908, -1262720, 3796751, -2403034, -10584947, 10767483, 10550587, 5177583, 2667175, -339302, - 3777424, 11428908, 2594160, 8216273, 981400, 5759551, 3027952, -594853, 6079526, -7232725, - -11523397, -4891968, -8796093, -7262790, -3835406, -7460358, 10239202, 7473243, 863288, -1657857, - -3689377, -1024350, -294205, 264141, 481036, 1619203, 2123861, 1378685, -236223, -2514703, - -2327872, -186831, -234076, -783832, 1140314, -985695, 6178311, -1187559, 8121783, 71766760, - -28237262, -14948634, 2372970, 81604, -3762391, -19619410, -8703751, 5319317, -1181116, -2594160, - -4101694, 3311420, -16544214, -4408784, 8276402, 16168404, 8467528, 7398081, -5304285, -4569845, - -9612137, 11237782, -15685221, -2437394, 3631395, -9934259, 3141769, 4653597, 12262132, -18788334, - -1806034, -68719, -4142496, 5332202, -17845590, -8937827, 19228568, 13058848, 2465311, -3062312, - 11405286, -3126736, -1700807, 2437394, 8877697, 5504001, -5808944, 1468879, -3474629, 7713762, - -12090333, -5080947, -7400229, -7297150, 14355928, 4271345, 1610613, -6146098, -734439, -1898376, - -2763812, -6455336, 889058, -6105296, -468151, 2482491, 5411659, -9408126, -6908455, -8282845, - -2808909, 4904853, 620623, 6420976, -1017907, -7677254, -1037235, -3309272, 3513283, -70867, - 21335250, 48859548, 8119636, 18595060, 16956530, 16110422, 5493263, 12025908, 7539815, -3582003, - -9846213, -6380174, -2778844, 13786845, -11748883, -13179107, -807454, -663572, -5272073, -10101763, - 29759828, 27803470, 21068962, 970663, -11875585, 2065879, 2085207, -6025839, 6925635, 4318590, - 12068858, 1342177, 4986457, -620623, -8138963, 13518410, 11347304, 8063801, -1840394, -10801843, - 762357, -869731, -2901251, -22013854, 15934329, -10052371, 18360986, 1000727, 9977209, -2134599, - 10992969, 16501264, 3408057, -7520488, -453119, 2997887, -5351530, 2873333, -2014340, -7058779, - -3743064, 2265595, -1604170, 6897718, 2557653, -11768210, 848256, -1647120, -12521977, -3006477, - 2675765, -4842576, 1490354, 10677289, 4505421, -661425, -3605625, -2884071, 332860, 4636417, - -1185411, 5134634, -51430084, -6786049, -32074816, 397284, 5596343, -10840497, -18777598, -21633750, - -20590074, -12128988, -16801912, -4075924, -1187559, -4299263, 5330055, -3311420, 1039382, 13179107, - 5851893, -1273458, 31059056, -6805376, 6176163, -4524748, 2553358, 4541928, 1597728, -1724429, - 4511863, 14592151, 4325032, 5179731, 1571958, 5849746, 12242804, 16978006, 5267778, 20596516, - -5572720, -17723182, 17854180, -5667210, -3837553, -3599183, 10065256, 15734613, 11781095, -292058, - -4153234, -8987219, -23008140, 14139032, 15981573, 11370926, -13771813, 8297877, 2065879, -1374390, - 12923557, 2203318, 8654359, -7258495, 4181151, -9049496, -951335, 7853348, -2370822, 5905580, - -1329292, -3307125, -3315715, -11027329, 1026497, 822486, -178241, 2115272, -2531883, -13608604, - 944893, 704375, -90067608, -40235252, 18169860, -3375844, -3216931, 3330747, -11403138, -9762461, - -3521873, -4335770, -15887084, 11244224, 1075889, 23633058, -13282186, -11160473, -19370302, -10636487, - -19943680, 1735167, 7099581, -29442000, 18915036, 16527034, -2501819, 3393024, 12270722, 1960653, - 10778220, -22282290, -22701050, -12390981, -14942191, -11267847, 36378372, 12030203, -8205535, -12994424, - -18867792, 8989367, 4866198, -8761733, 7133941, 7322919, -13357348, 1350767, 2785286, 10507637, - -12416750, 30204358, -13344463, -10398116, 4533338, -3131031, -330712, -8952859, -3586298, 1045825, - 18951544, -5830418, 27382564, 5980742, 1627793, 3182571, 7189776, -8162586, -3143916, -10767483, - -8957154, -8229158, -206158, 14948634, -9844065, -7002944, -4262755, -5443871, -5340792, -530428, - -3590593, -5016522, -4675072, 14214194, 45466524, 23394686, 14514842, 9878425, -15990163, 1644973, - -12929999, 20250770, -2177549, -2649995, 6895570, 4496831, 4724464, -554051, 7155416, 2632815, - 7556995, -6146098, 19797652, 2735894, -1754494, 59332824, 3274913, -4443144, -15118285, 8912057, - -14055280, 13320841, 31978180, -2403034, 7879118, 7975755, -16368120, -18268644, 618475, 506806, - 14093935, -8967892, 579821, -843961, 10408853, 10776073, 17858474, 6822556, 6249178, 7509751, - 835371, 11877732, 5555540, -21434034, 4715874, -10967199, -27616640, -2231236, 7898445, 317828, - 2426657, -3502546, 650688, -704375, -25770, 3680787, 732292, 12824772, -7434589, -974958, - 2594160, 2862596, 508954, -4636417, 8879845, 15060303, 14693083, 3277060, -2918430, -1254131, - 5342940, -448824, -1653562, -51540, 3042984, 7110319, -1013612, -2381559, -4709432, -2761664, - 67121752, -19907174, -6878390, -18549964, 34026880, 11866995, 3255585, 6322192, -4413079, -8310762, - 12298639, 616328, -11143293, 2538326, -14849849, -12090333, 1262720, -16020228, 2617783, 4610648, - -10984379, -20673826, 2435247, 627065, 14197014, 22011708, 16179142, -10988674, 358630, 13503377, - 26012470, -27135604, 10602127, -5452461, 92342, -12618614, -16580721, 1020055, 15906411, 4078072, - 7423851, 9274982, -517544, 6055904, -987843, 4213363, 10415296, -18234284, -11924977, 27270894, - -1644973, -1275605, -5708012, 10647224, 36406292, 8564165, 5970005, 11222750, -8866960, -11057393, - 577673, -8353712, -19960860, 12824772, 2278480, -10632192, 6225555, 2692945, -5229123, -10030896, - 13664438, -4883378, -15000173, 6917045, 7834021, 10657961, -10267119, 637803, 5373004, -2274185, - -3536906, 16172699, -706522, 2686502, -6723772, -1318555, 425202, 57183196, 53633404, -17257178, - 14437533, 4737349, 11164767, 29227252, -3818226, -14787572, -5540508, 56186764, -31638876, -5647882, - -15792595, -12139725, -25668872, 28280212, -8278550, -37632504, -28516436, -34299608, -13490492, 31054762, - -3837553, 14858439, -5602785, -15298674, 13514115, 4428112, 17164836, -16297253, 15264314, 12661564, - 6182606, 7537668, -27423366, 8291435, -22905060, 19709604, 40660456, 12253542, 12156905, -25486336, - 36412732, 10222022, -3874061, -5188321, -7473243, 11903502, 18189186, 4913443, -4301410, -581968, - 4891968, -8340827, -6350109, -8001524, -6597070, -197569, 13338021, -8452496, 19954418, 7694434, - 12206297, -3639985, -28656022, -18693846, 7290707, 2461016, -8551280, 11203422, -536871, -459562, - 5765994, -3502546, 8396661, -899796, -962073, 4614943, -4939213, -330712, -5338645, -2695092, - -6698002, 4943508, 365072, 1969243, -53068616, -32396938, 8128226, 3693672, 133144, -24053964, - 14368813, 7344394, -13795435, -39051992, 31797790, 7142531, 12034498, 17199196, 10827613, -5645735, - 6075231, -10310069, 26420492, -22348862, -37310380, -1861868, -1604170, -18461916, -40604620, 644245, - -8164733, -22123376, -11626476, -7380902, 9339406, 874026, 15191299, 29388314, -12622909, -25520696, - 7969312, -3601330, 429497, 11613592, -17495550, -16789028, -2072322, 13808320, -18957986, 15126875, - -5400922, 29832842, -4284230, -10312216, -3528316, -577673, 6174016, -35704064, 5098126, -31003222, - 30975304, -642098, 19445464, 10784663, -11826192, -2330020, -15693810, 6893423, -1709397, 5293547, - 5774584, -21633750, -3195456, -20907900, -8903467, 8121783, -6148246, -13166222, 5830418, -1032940, - -20879984, -11123965, 2134599, -152471, -8684424, 8207683, -4767414, -6221260, 4318590, -13408888, - 6414534, -75026640, -33316062, -13350906, -7438884, -3161096, 8615704, -26665304, -17688822, 5967857, - -20811264, 5961415, -23210004, -8375186, -22413286, -28935194, 30543660, 11469710, 5304285, -2628520, - -23684598, -42408508, 21580064, -55351392, 20607254, -32212, -16630113, 2029372, -9994389, 3330747, - 38813620, -19950124, -1187559, -41796476, 33056216, -10353019, 15509127, -15264314, -3974992, -4170413, - -700080, 18234284, 7402376, 38884488, 48586816, -5849746, 1548336, -16627966, 2611340, -6987912, - 8300025, 14377403, 2733747, 33717640, 10636487, -13681618, 6375879, 6335077, 1060857, -3264175, - 1941325, 25439092, -18734648, -40346924, -15360951, -238371, 10191957, 6040872, 20740398, -2823941, - 9360881, -10838350, -15021648, -22840636, -16716013, 672162, -4760971, 9910637, 3730179, -6889128, - -1881196, 18122614, 581968, 9700184, -3655017, 2780991, -3712999, -5179731, -7050189, 94280976, - 42402064, 28943784, 12313671, -10965052, -16960826, -29693256, 16582869, 28074054, 11909944, -13430363, - 33599528, 18592914, 33595236, 2078764, -23897198, -9554155, 50332720, -52473764, -10501195, 34396244, - -20237886, -11665131, 81146968, -10322954, 23377506, 73181944, -11514807, -4992900, -1885491, 8952859, - -3805341, 31643172, 20721070, 26055420, -18285824, -43486544, 17592186, -17248588, 21090436, -8269960, - 7838316, 30739080, 18174154, 1666447, 13872744, 6122476, 13372381, 29721174, 17126182, -3317862, - 29328184, 12038793, 4443144, 6777459, 53775140, 31950262, 375810, 29016800, -12539157, 36717676, - -8860518, 8005819, -10136123, 4297115, 21436182, -11817603, -511101, -2194728, 7664369, 715112, - -13486197, 455267, -11497627, -21268678, 3899830, -28278064, 11315091, 17197050, -6710887, -12154757, - -7739531, 15058155, 4851166, 732292, -5952825, 122228328, 54840288, -24421184, 10385231, 63292784, - 1215476, 45788648, -13636521, 18285824, 37671160, -28293098, 3193308, 66486092, 59201828, 48692044, - 16842714, 41860900, 6745246, 36737004, 12461848, 11325829, -23031762, -26452704, -38296076, -75086768, - 23785528, 1196148, -20708184, -6908455, 25844966, -16827682, -2830384, 3253438, 14431090, -66488240, - -11038066, 48788680, 37095632, -13172665, 24434068, 21378200, 13432510, -7868380, -15749645, -6423124, - -10666551, -6440304, -24893630, -20641612, 16892106, -41293964, 13563507, 34477848, -10335839, -24034636, - -38169376, 35944580, -1316408, -17652316, -11957189, -7876970, -13226352, 7838316, -6210523, -12899934, - 13335873, 55778740, -27895812, -16320876, 6893423, -10428181, 12614319, 854699, 28404766, 5871221, - -2957085, -2044404, -29865056, -13662291, -4784594, 2884071, 2123861, 10980084, 6401649, 1593433, - 4610648, 5881958, 17355962, 1808181, 326418, -11010149, 3738769, -48408576, -13209172, -58136676, - -12356621, -58095876, 28067612, -55357832, 29923038, -9773198, -31668942, -9869835, -14682346, 67242008, - 10735271, -49340584, 1224066, -32285270, -25013890, 33034740, -37209448, -34868692, -38845832, 58656368, - -7614977, 38665444, -59547576, -32087700, 24142012, -28067612, 23048942, 64969972, 43119324, 40149356, - 7249905, -7056632, -31263066, -45092860, -2044404, 9871982, -41289668, 792421, -24174224, 11942157, - 18781892, -47766480, -40091372, -74788264, -11280732, 5057324, -31705448, -46269684, 45932528, 2261300, - 47175920, 45820860, -5207648, -6532646, -18197776, 26426934, 23368918, 3279208, 11783243, -3773129, - -1885491, 22370338, -5435281, -26214332, -19658066, -32996086, -27227946, -10234907, -785979, -4511863, - -41212360, -24161338, 14100378, 3201898, -14319421, 18008798, -3126736, 985695, 28752658, 23379654, - 15560667, 6030134, 18625126, 2765959, 1047972, 8465381, 6517613, -81585048, -14903537, 7960722, - -8312909, 833224, 21562884, -17514876, 19095424, 19469086, -13711683, 26102664, -36000416, 44936096, - 29615946, 2224793, -33217278, 3328600, 20862804, -95451352, 19228568, 39928164, -69591352, 29055454, - -35983236, -49808736, -46774340, 24105504, -12236362, -71083856, 37864432, 21361020, -44197360, -71927816, - 13973676, 9281424, -23600846, -4567698, -38057704, 35809288, 28252294, 51775832, -41598904, 7372312, - -55009940, -19816980, 8630737, -34005404, 13705241, -3590593, -27986006, -40248140, -45017700, 65487512, - -44394928, -19924354, -17171280, 3438121, 29012504, 18367428, 20959440, 949188, 24648818, -7818988, - 3315715, -10048076, -27593018, 6025839, 56751552, 9650792, 575526, 508954, -37793564, 24831354, - 37931004, 41109280, 7312182, 3745212, -2525441, -2484639, 5076652, 1535451, -19192062, 339302, - 2942053, 3455301, -491774, 1125281, 13505525, -4200478, 1050120, -2849711, -21475, 25649544, - -54606216, -29083372, -57662084, 16391743, -10198400, 22870700, -15672336, 10819023, 18951544, -19355270, - -32893008, 49140868, -12839805, -21951578, 57193932, -11789685, -13247827, 65270616, -37705516, 9586367, - 16056735, 5068062, -57505316, 169651, -8323647, -34632468, 19868518, -27210766, 36715528, -6468221, - 40860172, -44637596, 27831388, -79023104, 964220, -43121472, 48202416, -7425999, 6672232, -8293582, - -43750684, -3193308, 38306812, 100824360, 7546258, 6335077, 21530672, 34458524, -5740224, -9715216, - 3262028, -1733019, 88789856, -8040179, 13776108, 35605280, -34441344, -59075128, 307090, -62431644, - -7541963, -32053340, -22866406, -12526272, -26231512, 14832670, 22104050, -36361192, 46027016, 38132868, - -5321465, -9442486, -37366216, 26195006, 9431748, 24848534, -20884278, 10277857, -3949223, 18796924, - 2304250, 18187040, -9105331, 13340168, -2108829, 335007, 4582730, 20630876, 10028749, 6326487, - -6637872, 536871, 2042257, 95163592, 103386304, 874026, -31928786, -25396142, 86558624, -56910464, - -65165392, 67703720, -61570504, 39586712, 11834782, 54784456, 50242528, 34129956, 5278515, -34419868, - -29974576, 71066680, -30361124, -3008625, 17115444, 60544008, 87359632, -2632815, 59609852, -48958332, - -51380692, 5808944, -19123342, 28286654, 17688822, -43662636, 5729487, 27797028, 71792528, 24590836, - 29283088, 27109834, 31978180, 8323647, -2772402, 45732812, 7799661, 36578088, 58295592, 12242804, - -24326694, -20422570, 52518860, 13851270, 107994808, 25293062, 42410656, -44130788, -69677256, -6659347, - -81314472, -51924008, -18743238, -27704686, 2783139, -4114579, 384400, 1129576, -60881160, -50182396, - -26776974, -51820928, 18676666, 20605106, -15955804, -4009352, -48374216, -7546258, 13913547, -13696651, - -4402342, 4924180, -30636002, 12698071, -9605694, 3635690, 5111011, 184684, 1801739, 6597070, - -7529078, 1140314, 6788196, -272730, 1408749, 2057289, -45202384, -158937408, -65622804, -129708016, - -29115584, -45341968, -18339510, 11834782, -42548092, -51500952, -82390360, -65483220, 58538256, -10402411, - -52417928, -55679956, 12607876, -74098920, -104576008, 17280800, -24346022, -22391812, -22477712, 20139102, - -62328564, 65622804, -38137164, 44581760, -31024696, -29759828, 725850, 36017596, -50820200, -48513804, - 26064010, -9148280, 71798968, -31419834, 41156524, 61924840, 29433410, -22499186, -10271414, -6418829, - 50785840, -17763984, 34106336, 68560560, -57535380, -100364792, -39517996, 34119220, 41811508, -47324096, - 77990160, -25037512, -28151364, -9356586, -8504035, -24079734, -63088776, -26620208, -65184720, -62395136, - -38656852, 46166604, 10928544, -11016591, 4269198, 71350144, 67010080, 4814659, -30906584, 12852690, - -6942815, 29435558, 9285719, -12695923, -29416232, -2555506, -5823976, -46737836, -12025908, 17931488, - 48717816, -21644488, 163209, 18657338, -27193586, -747324, -1769527, 938450, -14100378, 18339510, - 1221918, 4868346, -2121714, 2881923, }, + 5963562, -3131031, 3644280, -2179696, 3064459, -6444599, 283468, -264141, -738734, 1475321, + 3195456, -122407, -311385, -3536906, -1413044, 1507534, 867583, -427349, 1387274, -440234, + 483184, -1602023, -1086627, -1095217, -371515, 139586, -818191, -581968, 1881196, -1110249, + 1144609, -1093069, -186831, -856846, 1050120, 377957, 865436, 1473174, 1859721, 691490, + 502511, -176094, 208306, 279173, -386547, 358630, 3919158, -4483946, -597000, -826781, + -1110249, 721555, -2222646, 751619, -49392, 1009317, 891206, -1769527, -624918, 2688650, + -279173, 571231, -498216, 1166084, 2471754, 2851858, 487479, 1226213, -40802, -2259153, + -66572, 240518, -487479, 4295, 1243393, -1299228, -1739462, 753767, -839666, -781684, + -1219771, -60130, 1284195, 317828, -380105, -470299, -511101, -12885, 285615, -693637, + 253403, -790274, 474594, -11257109, -7954280, -3925600, -2909840, -2278480, -2291365, -826781, + -1687922, -558346, -1054415, -2806761, 554051, 1391569, -214748, 781684, -521839, -1471026, + -1432372, -2207613, -732292, 493921, 75162, -1256278, 835371, -1513976, -1451699, 927713, + 6442, 15032, 777389, 839666, 236223, -371515, -429497, -609885, 300648, 118112, + -762357, 375810, -1522566, -693637, -377957, -195421, -1086627, -257698, -401579, -62277, + -16026670, -2080912, 1172526, 302795, 1103807, 191126, -938450, 644245, -736587, -687195, + -1490354, -1142461, 521839, -384400, 959925, -916976, -40802, -884763, 242666, 1685775, + -481036, 1271310, 10737, -1043677, -279173, 1535451, 682900, 1022202, 1028645, -1464584, + 977105, -558346, -180389, -760209, -450972, 513249, 607738, 423054, -425202, 1251983, + 970663, 682900, -408022, -697932, 53687, -562641, 75162, 18850612, 14944339, 3584150, + 6670084, 1655710, 5151814, 3687230, 1086627, 3712999, 1438814, 2828236, 1174674, -964220, + 2763812, 2016487, -792421, -204011, -5220533, -508954, 240518, 3219078, 337155, 176094, + 1593433, 182536, 1440962, 1400159, 197569, -51540, 498216, 2220498, 1642825, 1453846, + -150324, -496069, 81604, 1065152, -386547, -42950, 1114544, 433792, -560493, 38655, + 238371, -1037235, 1378685, -736587, 33208688, 12000139, 5978595, 3358665, 2239826, 2022930, + 2149631, 3264175, 953483, 5400922, 882616, 388695, 2499671, -1406602, 702227, -691490, + -459562, -1032940, 3682935, 1840394, -148176, 2585570, -1711545, -586263, -504659, 4058744, + -238371, 1387274, 485331, 1934883, 513249, -715112, 1236951, 1294933, -481036, 392990, + 740882, 272730, 1020055, -377957, 1146756, 779537, -2506114, 487479, 491774, 414464, + 2016487, 12841952, -9539122, -3148211, -4496831, -2559801, -2735894, 1881196, -1632088, -3781719, + -1142461, -5076652, -1382980, -2136746, -5158256, -1142461, 955630, -3036542, -1228361, 607738, + -3700114, -42950, 3882651, 1024350, 399432, -1752347, -109522, 1526861, -161061, -1606318, + -2007897, 1971390, -362925, -2310693, 23622, -923418, 2750927, 17180, 1123134, -375810, + 2342905, -1582696, 807454, 438087, 377957, 126702, 433792, 21475, -1045825, 1651415, + 977105, 158914, -34999688, -19593640, -4166118, -4793184, -3517578, -4179003, -6208375, -444529, + 12885, -1670742, 1363652, -1546188, 96637, -73014, -2151779, -2102387, -3631395, -1125281, + 3251290, -3167539, -536871, 3169686, 1801739, -423054, 962073, -392990, -3536906, -1619203, + -2937758, -889058, -53687, -648540, 1415192, -2909840, -2516851, -64425, -3051574, -2188286, + -2216203, -2332167, 2276333, -717260, -3214783, -953483, 624918, 940598, -1224066, -1546188, + -901943, -2879776, -1561221, -21728240, 12620761, 4262755, 2353642, 1769527, 2218351, 605590, + -1943473, 277025, -1015760, -717260, 4176856, 2025077, 3648575, 3064459, 3837553, -3219078, + 1829656, 3442416, 962073, 2961380, -3500398, 427349, -612033, -562641, -1080184, 1084479, + -133144, -236223, 3775276, -3805341, -691490, 1050120, 2336462, -1204738, 2012192, -1677185, + -1926293, 2461016, -985695, -397284, -380105, 758062, 40802, 987843, -970663, -794569, + -839666, -612033, -680752, 1773822, 594853, 388695, -856846, -1793149, 513249, 1806034, + 508954, 32006096, 12844100, 2950643, 7071664, 5877663, 919123, 2740189, 6682969, 3335042, + -343597, 1675037, 676457, -803159, 1788854, 6109591, 1211181, 7254200, 3251290, -5585605, + 919123, 423054, 1030792, 5418101, 2768107, 2314987, -616328, -588411, -861141, -654983, + 657130, -914828, 1582696, 749472, 2211908, -249108, -749472, 1097364, 1784559, 1284195, + -347892, -2310693, -1209033, -1176821, 2145336, 1887638, 2441689, 1662152, 261993, 614180, + 2076617, 1984275, 1329292, 481036, 219043, 1346472, 1063004, 841814, 1692217, 35704064, + 10033044, 4604205, 5396627, 1078037, 5209796, -706522, -2211908, 49392, 1221918, 738734, + -319975, 1187559, 5323612, -637803, -3575560, -2229088, 2503966, 848256, 2946348, 5072357, + 4151086, -120259, 2720862, -2942053, 204011, -2246268, 3161096, 2063732, -3852586, 2342905, + -1898376, 435939, -1554778, 2372970, -1498944, 2933463, 2080912, 1956358, 3446711, 1340030, + -184684, -697932, -98784, 657130, 3837553, 68719, 2147, 455267, 1812476, 1447404, + 53687, -313533, -663572, -1906966, -444529, -1421634, -618475, 5089536, -15307263, -5961415, + -2637110, -3279208, -1758789, -1120987, 47245, 2349347, -2396592, -3908420, 3633542, -4733054, + -4872641, -678605, -1275605, 2317135, -1520418, 77309, -4718022, -2523293, -5654325, -5821828, + -6869800, -747324, 1359357, -4488241, -1451699, 843961, 302795, 380105, -798864, -4447439, + -3075197, 2186138, 575526, -901943, 4176856, -2755222, -1520418, 1267015, 2480344, 2366527, + -584116, -489626, 850404, 822486, -3042984, 433792, -1872606, -581968, 12885, -974958, + -49392, 2108829, 221191, -225486, 279173, -1967095, 1099512, 1928440, -581968, 90194, + 45097, -176094, -38732016, -12079596, -7389491, -2942053, -5340792, -4110284, -1322850, -2909840, + -1335735, -3912715, -5486821, -3777424, -1408749, -7909183, -2003602, -3169686, -4937065, -515396, + 743029, 2684355, -2927020, -3912715, -1567663, 3358665, 4116726, 5242008, 2677912, -64425, + -2639258, -1082332, -60130, -3068754, 1226213, 2211908, 2604898, -1756642, -1653562, -1387274, + -807454, -545461, -1187559, 2158221, -691490, 1425929, -2750927, -4550518, -2025077, -105227, + 2237678, -3929895, 1245541, -1848983, 1801739, -1883343, 1043677, -1563368, -167504, -992137, + -191126, 749472, 1395864, -934155, -1421634, 23622, -1417339, -22207128, 5927055, 1627793, + 34360, 3871913, -3719442, 977105, -8572755, -2813204, 2989297, 2089502, 5538361, -431644, + 6038724, -3547643, -889058, 2860448, -5254893, -1958505, -3094524, 5854041, -380105, -4911295, + 2445984, 4655745, -4183298, -3219078, -3770981, 1047972, -893353, 1984275, -1458141, -1234803, + -1030792, -2323577, 3298535, -2720862, 618475, 2130304, -302795, 2467459, -1490354, 5454609, + 792421, -605590, -1964948, -1967095, 42950, -2257005, -2731599, -1724429, 384400, 1825361, + -309238, 461709, -2394444, -2407329, -3395172, -1389422, -1120987, -936303, 895501, 1314260, + -1408749, 156766, 19142670, 27608050, 9442486, 9635759, 13000866, 9524090, -1378685, 1986422, + -1071594, 1881196, 1559073, 2531883, 1730872, 4844723, 1767379, 3096672, 889058, 9444633, + 2149631, 4722317, 2675765, 2568391, 7303592, 1919850, 9161165, 4932770, -1870458, 6672232, + 1692217, 3395172, 6470368, 1531156, 3854733, -1748052, -665720, 2050847, 2918430, -3721589, + 3390877, -2048699, -4286378, -2289218, 3573413, 5587753, 4063039, -521839, 1327145, 1494649, + 2018635, 3073049, 1636383, 3444564, 1947768, -2763812, -62277, 2503966, 3098819, 1198296, + 1024350, 822486, -3023657, -959925, -1859721, 2031520, -124554, 66486092, 4694400, -3055869, + 5025112, -3287798, 7191923, 2568391, 7567733, -3569118, 453119, 350040, 4436701, -8033737, + 1350767, 5686537, -1415192, -912681, 6631430, 11184095, -4797479, -2194728, 1052267, 5699422, + -2662880, 3822521, -90194, -3165391, -3182571, -2454574, 2040110, 3644280, 3547643, -2396592, + 3944928, -2364380, 3826816, 4028679, -1187559, -2080912, 1157494, -3558381, -5781026, 1606318, + -4026532, 1934883, 156766, 989990, 2132451, 352187, 2641405, 590558, -3985730, 1900523, + -1200443, 2196876, -2965675, -139586, 219043, 2312840, -1709397, -4350802, -1011465, -1655710, + 227633, -1232656, -22546430, -21938692, -4945655, 1668595, -959925, -3341485, -3564823, -4937065, + -1305670, 3579855, -1185411, -1284195, -5053029, 5263483, -324270, -4425964, -3788161, 9152575, + -8362302, 801011, 6081674, -785979, 981400, -8115341, 2540473, -3521873, 1894081, -5669357, + -3691525, 841814, 1451699, -2692945, -2967823, 197569, -1239098, 317828, -3466039, -2022930, + 3541201, -478889, -1722282, -1103807, 4511863, 1921998, -2639258, -4054449, -3560528, 1090922, + -586263, -1767379, 337155, 652835, -1982127, 5308580, 2886218, -665720, -468151, -1509681, + 601295, -1683627, -1623498, -1735167, -367220, -3165391, -2478196, -4215511, 899796, -4505421, + -214748, -1219771, -1125281, -347892, -9021579, -7380902, -9281424, -6328635, -4962835, -2967823, + 502511, 118112, -2506114, -702227, 1956358, 8078834, -7075959, 3657165, -2514703, -4114579, + 5330055, -259846, 884763, 7505456, 858993, 3285650, -4786741, -865436, -13522705, -1299228, + 2310693, 1868311, 942745, 1571958, 1666447, -2729452, -4194036, 3270618, -554051, 3103114, + 1247688, -3287798, 2697240, -66572, -9640054, -7546258, -1503239, -7129646, 758062, 2521146, + -700080, -1666447, -1041530, 551903, -2364380, -461709, -622770, -1060857, 2089502, 826781, + 560493, -1108102, -1148904, 3837553, 755914, -2143189, 2319282, -375810, -1879048, -3624953, + -92342, -1885491, -839666, 2894808, 1977833, 3064459, -43089260, -9805410, 622770, -8551280, + 3444564, 871878, 10320806, -4821101, 601295, -2826089, 6912750, -14111115, -13567802, 5727339, + -6582038, 10206990, 3676492, -8175470, -14366666, -313533, -4075924, -6951405, -2869038, 1653562, + 2310693, -3350075, 12277164, 674310, -1234803, -5123896, 4172561, 4670777, 5001490, 5405217, + -680752, -3176128, -1219771, 3201898, -261993, 3861176, -3631395, -1408749, -1256278, 4471061, + 3566970, -3889093, 5053029, -2808909, -3539053, 448824, -1614908, -3339337, 3446711, -3955665, + -536871, 1024350, -970663, -1604170, 897648, 3337190, -2070174, 3201898, -2643552, 2153926, + -1471026, -1634235, -1039382, 657130, 4108136, 760209, 3848291, -2435247, 39498668, 34720516, + 7256347, 9290014, -1848983, 11358041, 9092446, 11441793, -466004, 4610648, 2761664, -10694469, + -9070971, 5016522, 983548, -7645042, -8104604, -4494684, 534723, 4647155, 1363652, 10892037, + 9923522, 4391604, -2272038, -2351495, 6577743, 6197638, 506806, 5441724, -1717987, 6942815, + 408022, -1410897, 9586367, 5053029, 7868380, 5145371, 1752347, 5585605, 2796024, 1999307, + 5123896, -2699387, 1052267, 6863358, -36507, -4258460, 4054449, 4093104, 2894808, -2957085, + -38655, 4052302, 5978595, -2860448, 7221988, 8319352, -1382980, -4325032, 807454, 2005750, + 1320703, 3721589, 32212, 1413044, 2830384, -1868311, 253403, -2707977, -667867, -3695819, + -2136746, -337155, 47991964, 3839701, -1286343, 3317862, 2385854, -7922067, 2128156, 2074469, + 79457, 5044439, 7400229, 10896332, -4812511, -5014375, -7666517, -6322192, 7146826, -609885, + 10286447, -2510409, -2400887, 4157528, 8948564, 3474629, -8834748, 7002944, -2525441, 5592048, + -2864743, 4329327, -5289252, 3244848, -352187, 5091684, 704375, 2881923, 1657857, -9088151, + -4889821, -891206, -1748052, -897648, -2738042, 4310000, 1737314, 9266392, -1361505, -6425271, + -3635690, -689342, 637803, -7140383, 2471754, -2461016, -236223, -736587, -4063039, 3723737, + 7290707, -2319282, 3790309, 811749, -3970697, -433792, -3775276, -3259880, 723702, -5697274, + -3936338, 2308545, -212601, 1215476, 3951370, -5396627, 6451041, 682900, -2641405, -6412386, + 1857573, -2342905, 13821205, -3285650, -13230647, -8914205, -11929272, 11035918, -8817568, 2461016, + 13443248, -575526, -13675176, 955630, -14353781, 11965779, -4172561, 11927124, 68719, -4514011, + 10234907, 401579, 2123861, -7685844, -9736691, -1546188, 3425237, 2113124, -1900523, -4471061, + 4531191, -1367947, 3386582, 5224828, 6326487, 2944200, 3502546, -12807592, 1075889, -2890513, + -4378719, 1775969, 6365142, -5338645, -9844065, -4331475, 2894808, 1140314, -8647917, -3511136, + 4045859, 5922760, -5194763, -3369402, -3994320, 6060199, 8031589, 1638530, -2690797, 927713, + 5757404, -2738042, -216896, -3760244, 4041564, -4709432, -543313, 5624260, 3367254, -1617055, + -841814, -122407, -1795296, -48320528, -49012020, -7913477, -24043226, -14877767, -8555575, -13303661, + -1655710, 10073846, -21996676, 8040179, -4533338, 7335804, 1226213, 4501126, -9148280, 2325725, + -1185411, -4739497, -20186346, -4095251, -10520522, -12799003, -1385127, 3242700, 631360, -4350802, + 2738042, -4129611, -1277753, 10700911, -281320, -3560528, 609885, 7000797, 9347996, 6305012, + -53687, 5033702, 5757404, -569083, -6442, -10462540, 3781719, -8647917, 1554778, 8336532, + -5808944, -10473278, 2959233, -5877663, -5684389, 1155346, -154619, -4967130, 2338610, -1183264, + 11212012, 6330782, 3377992, 1389422, 4063039, -418759, 1170379, -4456029, -8078834, -1329292, + 609885, -5723044, -4045859, -3146064, -2757369, -3246995, 1702955, -1672890, -575526, -3601330, + -28771986, 53437984, 41873784, 2660732, 8493298, 3438121, 9264244, 14229227, 3214783, 13825500, + 2454574, -14441828, 9622874, 11671574, 3420942, 3536906, 8662949, 11506217, -11469710, 9612137, + -6062347, 8454643, 1234803, -6867653, 1322850, 9558450, 5355824, -11169062, 5430986, -4507568, + 16335908, -1262720, 3796751, -2403034, -10584947, 10767483, 10550587, 5177583, 2667175, -339302, + 3777424, 11428908, 2594160, 8216273, 981400, 5759551, 3027952, -594853, 6079526, -7232725, + -11523397, -4891968, -8796093, -7262790, -3835406, -7460358, 10239202, 7473243, 863288, -1657857, + -3689377, -1024350, -294205, 264141, 481036, 1619203, 2123861, 1378685, -236223, -2514703, + -2327872, -186831, -234076, -783832, 1140314, -985695, 6178311, -1187559, 8121783, 71766760, + -28237262, -14948634, 2372970, 81604, -3762391, -19619410, -8703751, 5319317, -1181116, -2594160, + -4101694, 3311420, -16544214, -4408784, 8276402, 16168404, 8467528, 7398081, -5304285, -4569845, + -9612137, 11237782, -15685221, -2437394, 3631395, -9934259, 3141769, 4653597, 12262132, -18788334, + -1806034, -68719, -4142496, 5332202, -17845590, -8937827, 19228568, 13058848, 2465311, -3062312, + 11405286, -3126736, -1700807, 2437394, 8877697, 5504001, -5808944, 1468879, -3474629, 7713762, + -12090333, -5080947, -7400229, -7297150, 14355928, 4271345, 1610613, -6146098, -734439, -1898376, + -2763812, -6455336, 889058, -6105296, -468151, 2482491, 5411659, -9408126, -6908455, -8282845, + -2808909, 4904853, 620623, 6420976, -1017907, -7677254, -1037235, -3309272, 3513283, -70867, + 21335250, 48859548, 8119636, 18595060, 16956530, 16110422, 5493263, 12025908, 7539815, -3582003, + -9846213, -6380174, -2778844, 13786845, -11748883, -13179107, -807454, -663572, -5272073, -10101763, + 29759828, 27803470, 21068962, 970663, -11875585, 2065879, 2085207, -6025839, 6925635, 4318590, + 12068858, 1342177, 4986457, -620623, -8138963, 13518410, 11347304, 8063801, -1840394, -10801843, + 762357, -869731, -2901251, -22013854, 15934329, -10052371, 18360986, 1000727, 9977209, -2134599, + 10992969, 16501264, 3408057, -7520488, -453119, 2997887, -5351530, 2873333, -2014340, -7058779, + -3743064, 2265595, -1604170, 6897718, 2557653, -11768210, 848256, -1647120, -12521977, -3006477, + 2675765, -4842576, 1490354, 10677289, 4505421, -661425, -3605625, -2884071, 332860, 4636417, + -1185411, 5134634, -51430084, -6786049, -32074816, 397284, 5596343, -10840497, -18777598, -21633750, + -20590074, -12128988, -16801912, -4075924, -1187559, -4299263, 5330055, -3311420, 1039382, 13179107, + 5851893, -1273458, 31059056, -6805376, 6176163, -4524748, 2553358, 4541928, 1597728, -1724429, + 4511863, 14592151, 4325032, 5179731, 1571958, 5849746, 12242804, 16978006, 5267778, 20596516, + -5572720, -17723182, 17854180, -5667210, -3837553, -3599183, 10065256, 15734613, 11781095, -292058, + -4153234, -8987219, -23008140, 14139032, 15981573, 11370926, -13771813, 8297877, 2065879, -1374390, + 12923557, 2203318, 8654359, -7258495, 4181151, -9049496, -951335, 7853348, -2370822, 5905580, + -1329292, -3307125, -3315715, -11027329, 1026497, 822486, -178241, 2115272, -2531883, -13608604, + 944893, 704375, -90067608, -40235252, 18169860, -3375844, -3216931, 3330747, -11403138, -9762461, + -3521873, -4335770, -15887084, 11244224, 1075889, 23633058, -13282186, -11160473, -19370302, -10636487, + -19943680, 1735167, 7099581, -29442000, 18915036, 16527034, -2501819, 3393024, 12270722, 1960653, + 10778220, -22282290, -22701050, -12390981, -14942191, -11267847, 36378372, 12030203, -8205535, -12994424, + -18867792, 8989367, 4866198, -8761733, 7133941, 7322919, -13357348, 1350767, 2785286, 10507637, + -12416750, 30204358, -13344463, -10398116, 4533338, -3131031, -330712, -8952859, -3586298, 1045825, + 18951544, -5830418, 27382564, 5980742, 1627793, 3182571, 7189776, -8162586, -3143916, -10767483, + -8957154, -8229158, -206158, 14948634, -9844065, -7002944, -4262755, -5443871, -5340792, -530428, + -3590593, -5016522, -4675072, 14214194, 45466524, 23394686, 14514842, 9878425, -15990163, 1644973, + -12929999, 20250770, -2177549, -2649995, 6895570, 4496831, 4724464, -554051, 7155416, 2632815, + 7556995, -6146098, 19797652, 2735894, -1754494, 59332824, 3274913, -4443144, -15118285, 8912057, + -14055280, 13320841, 31978180, -2403034, 7879118, 7975755, -16368120, -18268644, 618475, 506806, + 14093935, -8967892, 579821, -843961, 10408853, 10776073, 17858474, 6822556, 6249178, 7509751, + 835371, 11877732, 5555540, -21434034, 4715874, -10967199, -27616640, -2231236, 7898445, 317828, + 2426657, -3502546, 650688, -704375, -25770, 3680787, 732292, 12824772, -7434589, -974958, + 2594160, 2862596, 508954, -4636417, 8879845, 15060303, 14693083, 3277060, -2918430, -1254131, + 5342940, -448824, -1653562, -51540, 3042984, 7110319, -1013612, -2381559, -4709432, -2761664, + 67121752, -19907174, -6878390, -18549964, 34026880, 11866995, 3255585, 6322192, -4413079, -8310762, + 12298639, 616328, -11143293, 2538326, -14849849, -12090333, 1262720, -16020228, 2617783, 4610648, + -10984379, -20673826, 2435247, 627065, 14197014, 22011708, 16179142, -10988674, 358630, 13503377, + 26012470, -27135604, 10602127, -5452461, 92342, -12618614, -16580721, 1020055, 15906411, 4078072, + 7423851, 9274982, -517544, 6055904, -987843, 4213363, 10415296, -18234284, -11924977, 27270894, + -1644973, -1275605, -5708012, 10647224, 36406292, 8564165, 5970005, 11222750, -8866960, -11057393, + 577673, -8353712, -19960860, 12824772, 2278480, -10632192, 6225555, 2692945, -5229123, -10030896, + 13664438, -4883378, -15000173, 6917045, 7834021, 10657961, -10267119, 637803, 5373004, -2274185, + -3536906, 16172699, -706522, 2686502, -6723772, -1318555, 425202, 57183196, 53633404, -17257178, + 14437533, 4737349, 11164767, 29227252, -3818226, -14787572, -5540508, 56186764, -31638876, -5647882, + -15792595, -12139725, -25668872, 28280212, -8278550, -37632504, -28516436, -34299608, -13490492, 31054762, + -3837553, 14858439, -5602785, -15298674, 13514115, 4428112, 17164836, -16297253, 15264314, 12661564, + 6182606, 7537668, -27423366, 8291435, -22905060, 19709604, 40660456, 12253542, 12156905, -25486336, + 36412732, 10222022, -3874061, -5188321, -7473243, 11903502, 18189186, 4913443, -4301410, -581968, + 4891968, -8340827, -6350109, -8001524, -6597070, -197569, 13338021, -8452496, 19954418, 7694434, + 12206297, -3639985, -28656022, -18693846, 7290707, 2461016, -8551280, 11203422, -536871, -459562, + 5765994, -3502546, 8396661, -899796, -962073, 4614943, -4939213, -330712, -5338645, -2695092, + -6698002, 4943508, 365072, 1969243, -53068616, -32396938, 8128226, 3693672, 133144, -24053964, + 14368813, 7344394, -13795435, -39051992, 31797790, 7142531, 12034498, 17199196, 10827613, -5645735, + 6075231, -10310069, 26420492, -22348862, -37310380, -1861868, -1604170, -18461916, -40604620, 644245, + -8164733, -22123376, -11626476, -7380902, 9339406, 874026, 15191299, 29388314, -12622909, -25520696, + 7969312, -3601330, 429497, 11613592, -17495550, -16789028, -2072322, 13808320, -18957986, 15126875, + -5400922, 29832842, -4284230, -10312216, -3528316, -577673, 6174016, -35704064, 5098126, -31003222, + 30975304, -642098, 19445464, 10784663, -11826192, -2330020, -15693810, 6893423, -1709397, 5293547, + 5774584, -21633750, -3195456, -20907900, -8903467, 8121783, -6148246, -13166222, 5830418, -1032940, + -20879984, -11123965, 2134599, -152471, -8684424, 8207683, -4767414, -6221260, 4318590, -13408888, + 6414534, -75026640, -33316062, -13350906, -7438884, -3161096, 8615704, -26665304, -17688822, 5967857, + -20811264, 5961415, -23210004, -8375186, -22413286, -28935194, 30543660, 11469710, 5304285, -2628520, + -23684598, -42408508, 21580064, -55351392, 20607254, -32212, -16630113, 2029372, -9994389, 3330747, + 38813620, -19950124, -1187559, -41796476, 33056216, -10353019, 15509127, -15264314, -3974992, -4170413, + -700080, 18234284, 7402376, 38884488, 48586816, -5849746, 1548336, -16627966, 2611340, -6987912, + 8300025, 14377403, 2733747, 33717640, 10636487, -13681618, 6375879, 6335077, 1060857, -3264175, + 1941325, 25439092, -18734648, -40346924, -15360951, -238371, 10191957, 6040872, 20740398, -2823941, + 9360881, -10838350, -15021648, -22840636, -16716013, 672162, -4760971, 9910637, 3730179, -6889128, + -1881196, 18122614, 581968, 9700184, -3655017, 2780991, -3712999, -5179731, -7050189, 94280976, + 42402064, 28943784, 12313671, -10965052, -16960826, -29693256, 16582869, 28074054, 11909944, -13430363, + 33599528, 18592914, 33595236, 2078764, -23897198, -9554155, 50332720, -52473764, -10501195, 34396244, + -20237886, -11665131, 81146968, -10322954, 23377506, 73181944, -11514807, -4992900, -1885491, 8952859, + -3805341, 31643172, 20721070, 26055420, -18285824, -43486544, 17592186, -17248588, 21090436, -8269960, + 7838316, 30739080, 18174154, 1666447, 13872744, 6122476, 13372381, 29721174, 17126182, -3317862, + 29328184, 12038793, 4443144, 6777459, 53775140, 31950262, 375810, 29016800, -12539157, 36717676, + -8860518, 8005819, -10136123, 4297115, 21436182, -11817603, -511101, -2194728, 7664369, 715112, + -13486197, 455267, -11497627, -21268678, 3899830, -28278064, 11315091, 17197050, -6710887, -12154757, + -7739531, 15058155, 4851166, 732292, -5952825, 122228328, 54840288, -24421184, 10385231, 63292784, + 1215476, 45788648, -13636521, 18285824, 37671160, -28293098, 3193308, 66486092, 59201828, 48692044, + 16842714, 41860900, 6745246, 36737004, 12461848, 11325829, -23031762, -26452704, -38296076, -75086768, + 23785528, 1196148, -20708184, -6908455, 25844966, -16827682, -2830384, 3253438, 14431090, -66488240, + -11038066, 48788680, 37095632, -13172665, 24434068, 21378200, 13432510, -7868380, -15749645, -6423124, + -10666551, -6440304, -24893630, -20641612, 16892106, -41293964, 13563507, 34477848, -10335839, -24034636, + -38169376, 35944580, -1316408, -17652316, -11957189, -7876970, -13226352, 7838316, -6210523, -12899934, + 13335873, 55778740, -27895812, -16320876, 6893423, -10428181, 12614319, 854699, 28404766, 5871221, + -2957085, -2044404, -29865056, -13662291, -4784594, 2884071, 2123861, 10980084, 6401649, 1593433, + 4610648, 5881958, 17355962, 1808181, 326418, -11010149, 3738769, -48408576, -13209172, -58136676, + -12356621, -58095876, 28067612, -55357832, 29923038, -9773198, -31668942, -9869835, -14682346, 67242008, + 10735271, -49340584, 1224066, -32285270, -25013890, 33034740, -37209448, -34868692, -38845832, 58656368, + -7614977, 38665444, -59547576, -32087700, 24142012, -28067612, 23048942, 64969972, 43119324, 40149356, + 7249905, -7056632, -31263066, -45092860, -2044404, 9871982, -41289668, 792421, -24174224, 11942157, + 18781892, -47766480, -40091372, -74788264, -11280732, 5057324, -31705448, -46269684, 45932528, 2261300, + 47175920, 45820860, -5207648, -6532646, -18197776, 26426934, 23368918, 3279208, 11783243, -3773129, + -1885491, 22370338, -5435281, -26214332, -19658066, -32996086, -27227946, -10234907, -785979, -4511863, + -41212360, -24161338, 14100378, 3201898, -14319421, 18008798, -3126736, 985695, 28752658, 23379654, + 15560667, 6030134, 18625126, 2765959, 1047972, 8465381, 6517613, -81585048, -14903537, 7960722, + -8312909, 833224, 21562884, -17514876, 19095424, 19469086, -13711683, 26102664, -36000416, 44936096, + 29615946, 2224793, -33217278, 3328600, 20862804, -95451352, 19228568, 39928164, -69591352, 29055454, + -35983236, -49808736, -46774340, 24105504, -12236362, -71083856, 37864432, 21361020, -44197360, -71927816, + 13973676, 9281424, -23600846, -4567698, -38057704, 35809288, 28252294, 51775832, -41598904, 7372312, + -55009940, -19816980, 8630737, -34005404, 13705241, -3590593, -27986006, -40248140, -45017700, 65487512, + -44394928, -19924354, -17171280, 3438121, 29012504, 18367428, 20959440, 949188, 24648818, -7818988, + 3315715, -10048076, -27593018, 6025839, 56751552, 9650792, 575526, 508954, -37793564, 24831354, + 37931004, 41109280, 7312182, 3745212, -2525441, -2484639, 5076652, 1535451, -19192062, 339302, + 2942053, 3455301, -491774, 1125281, 13505525, -4200478, 1050120, -2849711, -21475, 25649544, + -54606216, -29083372, -57662084, 16391743, -10198400, 22870700, -15672336, 10819023, 18951544, -19355270, + -32893008, 49140868, -12839805, -21951578, 57193932, -11789685, -13247827, 65270616, -37705516, 9586367, + 16056735, 5068062, -57505316, 169651, -8323647, -34632468, 19868518, -27210766, 36715528, -6468221, + 40860172, -44637596, 27831388, -79023104, 964220, -43121472, 48202416, -7425999, 6672232, -8293582, + -43750684, -3193308, 38306812, 100824360, 7546258, 6335077, 21530672, 34458524, -5740224, -9715216, + 3262028, -1733019, 88789856, -8040179, 13776108, 35605280, -34441344, -59075128, 307090, -62431644, + -7541963, -32053340, -22866406, -12526272, -26231512, 14832670, 22104050, -36361192, 46027016, 38132868, + -5321465, -9442486, -37366216, 26195006, 9431748, 24848534, -20884278, 10277857, -3949223, 18796924, + 2304250, 18187040, -9105331, 13340168, -2108829, 335007, 4582730, 20630876, 10028749, 6326487, + -6637872, 536871, 2042257, 95163592, 103386304, 874026, -31928786, -25396142, 86558624, -56910464, + -65165392, 67703720, -61570504, 39586712, 11834782, 54784456, 50242528, 34129956, 5278515, -34419868, + -29974576, 71066680, -30361124, -3008625, 17115444, 60544008, 87359632, -2632815, 59609852, -48958332, + -51380692, 5808944, -19123342, 28286654, 17688822, -43662636, 5729487, 27797028, 71792528, 24590836, + 29283088, 27109834, 31978180, 8323647, -2772402, 45732812, 7799661, 36578088, 58295592, 12242804, + -24326694, -20422570, 52518860, 13851270, 107994808, 25293062, 42410656, -44130788, -69677256, -6659347, + -81314472, -51924008, -18743238, -27704686, 2783139, -4114579, 384400, 1129576, -60881160, -50182396, + -26776974, -51820928, 18676666, 20605106, -15955804, -4009352, -48374216, -7546258, 13913547, -13696651, + -4402342, 4924180, -30636002, 12698071, -9605694, 3635690, 5111011, 184684, 1801739, 6597070, + -7529078, 1140314, 6788196, -272730, 1408749, 2057289, -45202384, -158937408, -65622804, -129708016, + -29115584, -45341968, -18339510, 11834782, -42548092, -51500952, -82390360, -65483220, 58538256, -10402411, + -52417928, -55679956, 12607876, -74098920, -104576008, 17280800, -24346022, -22391812, -22477712, 20139102, + -62328564, 65622804, -38137164, 44581760, -31024696, -29759828, 725850, 36017596, -50820200, -48513804, + 26064010, -9148280, 71798968, -31419834, 41156524, 61924840, 29433410, -22499186, -10271414, -6418829, + 50785840, -17763984, 34106336, 68560560, -57535380, -100364792, -39517996, 34119220, 41811508, -47324096, + 77990160, -25037512, -28151364, -9356586, -8504035, -24079734, -63088776, -26620208, -65184720, -62395136, + -38656852, 46166604, 10928544, -11016591, 4269198, 71350144, 67010080, 4814659, -30906584, 12852690, + -6942815, 29435558, 9285719, -12695923, -29416232, -2555506, -5823976, -46737836, -12025908, 17931488, + 48717816, -21644488, 163209, 18657338, -27193586, -747324, -1769527, 938450, -14100378, 18339510, + 1221918, 4868346, -2121714, 2881923, }, }; const Word32 CRendBin_Combined_BRIR_coeff_diffuse_re_32kHz_fx[BINAURAL_CHANNELS][2870] ={ { -118112, - -34360, -64425, -38655, -98784, -17180, -158914, -36507, -513249, 352187, -34360, - 354335, -77309, 156766, 947040, -105227, -1127429, -1114544, -369367, -685047, 90194, - -554051, -1509681, 429497, -380105, -268435, 399432, 128849, -508954, -790274, -1030792, - 139586, -620623, -375810, 216896, -1082332, 966368, 1013612, -581968, -68719, -373662, - -1009317, 90194, -908386, -719407, 700080, -466004, 1050120, 4378719, -1900523, 1943473, - -820339, 695785, -25770, 1017907, -438087, 255551, 435939, 523986, 558346, 966368, - -234076, 115964, 1765232, 1322850, -3468186, 693637, -442382, 178241, -1178969, 783832, - -1486059, 1488206, 1234803, 612033, -188979, -463856, -543313, 1058710, 970663, -429497, - 223338, 1823214, -676457, -32212, -616328, 219043, 283468, -45097, -511101, 858993, - 133144, -257698, 650688, 17585744, -1269163, 2450279, -42950, 777389, 339302, 592706, - 403727, 1683627, -968515, 710817, -343597, 292058, 925565, 1440962, 575526, 279173, - -691490, 1312113, -949188, 500364, -440234, -1382980, 143881, 481036, 49392, -431644, - 122407, -483184, 908386, -1866163, 435939, -431644, 493921, -19327, -2615635, -908386, - 266288, 414464, 302795, -453119, -590558, -511101, 371515, 1013612, -418759, 448824, - 10608569, -12532715, 2508261, -3008625, 1655710, -1947768, 1531156, -2665027, -794569, -1642825, - -294205, -1367947, 126702, 2467459, 3588445, 1505386, 805306, 70867, 1133871, 2568391, - 1870458, -1161789, -1395864, -1868311, -882616, -1075889, 109522, -169651, -154619, 57982, - 556198, -865436, 1118839, -1140314, -1516124, 564788, -10737, 118112, 332860, -1054415, - -1191853, 371515, -719407, -981400, -173946, 143881, 783832, -24303072, 4844723, -1224066, - 616328, 523986, -2035815, -916976, 1932735, -315680, 165356, 2168959, 702227, -828929, - -1511829, 1511829, 130997, -1833951, -2626373, -3801046, 1226213, -1690070, 390842, -547608, - 710817, -388695, 268435, -1973538, -1947768, -1215476, -519691, -1228361, 367220, -594853, - 693637, 2280628, 392990, 397284, 1509681, 416612, 350040, -49392, -296353, -1505386, - -356482, 350040, -277025, -70867, -29053306, 10872710, -2712272, 3491809, -1705102, 2518998, - -1389422, -392990, -2476049, 1906966, -2931315, 1954210, -500364, 2733747, -3710852, 966368, - 3461744, 1022202, -2914135, -1022202, -1752347, -719407, 1108102, 575526, 820339, -446677, - -989990, -1393717, -1367947, -103079, -1569811, -261993, -1458141, -1020055, -4056597, -1120987, - -566936, 238371, 96637, 1425929, 605590, 1404454, -141734, 1632088, 384400, 163209, - 403727, 3627100, 12652974, -3489661, 5613523, -3405909, 1468879, -3674345, 2892661, -264141, - 3152506, -251256, -315680, 3098819, -511101, -429497, 2710124, -1322850, -2486786, -3964255, - 3521873, -285615, 2409477, 281320, 1711545, 828929, -2299955, 979253, 934155, -154619, - 1187559, 1814624, -2287070, 302795, -68719, -193274, -1312113, -590558, -1284195, 350040, - -266288, 992137, 2965675, 115964, 1503239, -266288, 289910, -317828, 455267, 1200443, - -545461, 38201588, -9421011, 3631395, -1823214, 3214783, -1404454, 2467459, -1372242, 848256, - -3717294, 1726577, -3549791, 2718714, -1084479, 803159, -1032940, 3828963, 526134, 964220, - -1836099, 2501819, -223338, -1153199, 2130304, -1649268, -2561948, 66572, -798864, 1224066, - -10737, -382252, -835371, 373662, -83752, 483184, -1763084, 416612, -779537, 2753074, - -513249, 1318555, 249108, 1108102, 2061584, -1415192, 111669, 478889, -702227, 1619203, - -332860, 3219078, -19814832, 7825431, -6113886, 3607773, -3045132, 1047972, -4013647, 2607045, - -1604170, 3642132, -405874, 1589138, -3201898, -1350767, -208306, -1163936, -1086627, 4200478, - -3096672, 534723, 1956358, -3837553, 987843, 1357210, -962073, 1320703, 442382, 760209, - -2443837, -214748, -783832, 1507534, -1217623, 824634, -2884071, -581968, 2110977, 1020055, - 670015, -734439, -433792, -2201171, -2340757, 1273458, 474594, -103079, -343597, -204011, - 208306, 206158, -489626, -478889, 289910, 307090, -803159, -32031866, 10492605, -5671505, - 1455994, -528281, 1791001, -2398739, 2594160, -1058710, -901943, -313533, 1876901, -1009317, - -1498944, 1099512, 3609920, -493921, 152471, -6045167, 521839, 100932, 2950643, -955630, - -453119, -4621385, -1582696, 60130, 88047, 1610613, 2209761, -3491809, -3204046, 2074469, - 521839, -3599183, -2763812, 1357210, 783832, -210453, -105227, -1380832, 1415192, -433792, - 517544, 186831, -1887638, -796716, 1009317, -2914135, -1458141, -581968, 616328, -584116, - 51540, -1455994, -126702, -31976032, 14151917, -7818988, 5939940, -5454609, 2705830, -6208375, - 1432372, -4048007, 6390912, -3234110, 2254858, -395137, 47245, -2929168, -835371, -1211181, - 5785321, -1099512, 2952790, 4687957, 2690797, 693637, -624918, 1125281, -1024350, 2624225, - 2536178, 360777, -1275605, 446677, 485331, -1748052, -785979, 1327145, 1906966, -1438814, - -1408749, -1458141, 96637, -605590, 816044, -1406602, 1005022, -2211908, 652835, -1213328, - -81604, 225486, -878321, -1202591, -1529008, -1434519, -1902671, 238371, -1735167, 11877732, - 12343736, -4559108, 4112431, -5005785, 775242, 1524713, 137439, -1999307, 2306398, 592706, - 4894115, 2555506, 5525476, -839666, 3262028, -880468, 2087354, 2911988, -384400, -4024384, - 3850438, -414464, 1623498, -895501, 2147, 556198, 4707284, 706522, -2544768, -858993, - 627065, -1400159, 3551938, 1520418, -545461, -914828, -1999307, 1586990, -1958505, 2025077, - 2126009, -1556926, 1224066, 1105954, 573378, -150324, 3448859, 2134599, 2527588, -90194, - 315680, 1136019, -723702, -277025, -225486, -736587, -8590, 188979, 324270, -605590, - -1417339, -1483911, 36105644, -12891344, 4477504, -6025839, 4110284, -3968550, 5282810, -1812476, - 246961, -3962107, 7930657, -1140314, 7146826, 446677, 1224066, -4788889, 1709397, 7185481, - -2209761, -6047314, 893353, 257698, 2804614, -4359392, 3573413, -34360, 313533, -377957, - -4209068, -1234803, 702227, -5057324, 839666, 2061584, 1692217, -1419487, -401579, -186831, - 2372970, 717260, -403727, -1035087, 1848983, 1277753, 4591320, 1187559, -682900, 2566243, - 1028645, -261993, 848256, 1947768, 1284195, 270583, 309238, -1488206, 322123, -143881, - 1902671, -195421, 753767, -206158, 676457, 12088185, -17463338, 10462540, -7765301, 3266323, - 1181116, -792421, -659278, 2076617, -4395899, -2796024, -2276333, -1773822, -6010807, 3045132, - -5583458, -225486, -4466766, 1640678, -3362960, -2649995, -1337882, 5078799, 712965, 4941360, - 2596308, 3386582, 4891968, 253403, -620623, -749472, 1378685, 3758097, -313533, -274878, - -2510409, 1906966, -304943, -1501091, 1393717, 1159641, 3925600, 1602023, 1851131, -2780991, - -1292785, -163209, -515396, 1913408, -5617817, 1213328, -1380832, -949188, -1741609, -1973538, - -665720, -1952063, 794569, -1365800, -223338, -2965675, -2909840, -2147, -37061272, -8098161, - 1698660, -7030862, -2905546, 298500, -223338, -5991480, 1713692, -5967857, 171799, 4799626, - -897648, -798864, 2632815, 1726577, 2680060, 156766, 3242700, -1799591, 916976, 3764539, - -259846, -236223, -2471754, 3584150, -2780991, -1524713, 934155, 1451699, 2731599, 8443906, - -2317135, -1372242, -3644280, 208306, -2686502, 642098, -1075889, -3970697, -253403, 5085242, - 1425929, -3423089, -1709397, 1690070, -2083059, -2594160, 478889, -1221918, 292058, 541166, - 3193308, 461709, 1563368, 846109, -2701535, -1374390, 1681480, 1586990, -1093069, 949188, - -221191, -45427868, 37495064, -13106093, 11141145, -8207683, 6274947, -2381559, 3996467, -4355097, - 2682207, 3128884, 4524748, -2944200, 5478231, 2710124, 9320079, -1458141, 785979, -4932770, - 1251983, -1728724, -3081639, -3820374, -4395899, -4050154, 6043019, -272730, 7256347, 1883343, - 1331440, -122407, 925565, -3201898, 515396, -1168231, 1511829, 4299263, 770947, 1417339, - 255551, 448824, -3266323, -1788854, -124554, -249108, 438087, -996432, -3008625, 73014, - 3231963, -1039382, 953483, 940598, -2667175, 1833951, 790274, 1009317, -547608, 304943, - -289910, -833224, 238371, 2903398, 26472030, -4071629, -8540542, -2967823, -1799591, -1372242, - -7524783, -3951370, 2098092, 1290638, 2147484, 2677912, -5057324, 2044404, -992137, 1818919, - 8111046, -8196945, 2834679, 2843268, 2207613, -2110977, -4743792, 3704409, 1103807, 2654290, - 4999342, 15032, 6891275, 607738, 3204046, 279173, 2175401, -1881196, 2607045, 1889786, - 2488934, -947040, 828929, -184684, 3191161, 3944928, -5826123, 7874823, 672162, 2209761, - 350040, 1382980, 1531156, -1644973, 4720169, 2559801, 188979, 4331475, 1844689, -2360085, - -191126, -1574106, -1705102, -1275605, 792421, -319975, 274878, -88047, -4810364, 2497524, - -1900523, 697932, -639950, -264141, -1185411, -667867, 20980916, 1836099, 4275640, -5426691, - -1026497, -13481902, 3225521, -644245, -9161165, 7685844, -4239133, 274878, 5641440, 2538326, - 4236985, -3240553, 1872606, -4249870, 85899, -3635690, 1363652, -5525476, 7926362, 5718749, - 4681515, 5454609, 1217623, -1801739, -3420942, 1544041, 4355097, 12885, 2969970, -2141041, - 607738, 2884071, 2040110, 2596308, 188979, 934155, -322123, -1846836, 1844689, -1277753, - 865436, 760209, -1887638, 2581275, -3489661, 3128884, -1634235, 2214056, 3375844, -4110284, - 416612, 483184, -1677185, -3236258, 2295660, -5252745, -4060892, 2529736, 1067299, 1183264, - 1022202, 3281355, 3152506, -1133871, 444529, 1919850, -755914, -6442, 33094870, -27511414, - 9335111, -6846178, 2424509, 8598525, 6992207, -4610648, 8383776, 4722317, 5065914, -3468186, - 2360085, -1769527, 9953587, 2768107, 2815351, 3854733, 4215511, 2671470, 2881923, -8173323, - 1314260, -14774687, -5138929, -1370095, -8463233, 2128156, 4541928, -3191161, -4589173, -5398774, - -5184026, -2765959, 2980707, 2351495, -7524783, -8705899, -667867, -4440996, 2377265, 1934883, - 831076, -622770, 4121021, -2162516, 210453, -573378, -1844689, -5592048, 4335770, 7359427, - -994285, -921271, 3461744, -5186173, 6298570, 1625645, -3191161, -118112, -2963528, -1247688, - -749472, -2119566, -566936, -1432372, -4340065, 1131724, 1559073, 1466731, 1546188, 498216, - -51217484, 5083094, -4571993, 1879048, 5218386, 3745212, 10445360, -4297115, -365072, 839666, - 12504797, 4340065, -9801115, -6405944, 5514738, 7393786, -1859721, -2800319, -208306, 3408057, - 7642895, 7763154, -115964, -13915694, -4028679, -1443109, -1675037, 8061654, -3712999, 4702989, - 457414, -893353, -7221988, 560493, 5740224, -9242770, -5418101, -2183991, -1623498, -4391604, - -3665755, -8643622, -1602023, -5866926, 47245, 1249836, 6210523, -4258460, -2804614, 517544, - -635655, 951335, -5375152, 2085207, 2022930, 650688, 289910, -4075924, -3693672, -2070174, - -1170379, -341450, -6944962, 1387274, 2005750, -3015067, -6386617, 2523293, -324270, -3219078, - -646393, -1509681, -1080184, 4005057, -30081950, 31924492, -4561256, 2014340, 7520488, 9019431, - -6796786, 4342212, 1715839, 5570573, 3773129, 7864085, 4443144, -5325760, -8851928, 1258425, - 9365176, 18708878, -4524748, -6354404, 4896263, 3038689, -3579855, -9217000, -1881196, -1853278, - -8345122, 7303592, 8693014, 137439, 2016487, -171799, 6833293, -5336497, -16544214, 6975027, - -1992865, 5534066, 2643552, 234076, -4103841, -6356552, 4395899, 5211943, 3796751, -738734, - -347892, 5731634, 3208341, 1767379, -3423089, 4825396, 4020090, -667867, -1260573, -2796024, - 3296388, 107374, -8169028, 6717329, 4009352, -1520418, 1917703, -1015760, 210453, -154619, - 1984275, 528281, 2441689, 3962107, 2108829, -603443, -2407329, -1582696, 5705864, 2272038, - -1080184, -1750199, -287763, 8993662, 369367, -6923488, -14181982, 3431679, -738734, -11701638, - 3955665, -3876208, 547608, -4430259, -3453154, 3689377, 8909910, 1099512, 11802570, 5355824, - -5939940, -7806103, 12914967, -5598490, -412317, 1155346, -12120398, -90194, 6414534, -7033009, - -1864016, 8117488, 515396, 4241280, 126702, 5345087, -901943, -3627100, -485331, 7097434, - 9584220, -3141769, 1947768, 1666447, 6393059, -3805341, -667867, 1245541, -1614908, 4146791, - 1876901, 343597, -2175401, 3317862, 3689377, 191126, 182536, 2759517, 4314295, -5179731, - -17180, 1445257, 2368675, -2652142, 2147484, 1063004, 77309, 1503239, -1636383, 721555, - 1715839, 3577708, 4325032, -3487514, 395137, 67171144, -6414534, 1159641, 4226248, -5978595, - -10363756, -6004365, -2544768, -11791833, -12670154, 1022202, -11216307, -4900558, -3206193, -2723009, - 6966437, 8117488, 2598455, 16939352, 3111704, -8310762, 14594299, -1404454, 10348724, -3238405, - -1035087, -9526237, 412317, 8536248, -242666, -4075924, -1595580, 923418, -2078764, -1735167, - 3322157, -7572028, 3141769, 1204738, -3571265, -7179038, -4861903, 5641440, 5542656, 6618545, - -11020886, 6277095, 1752347, -199716, 547608, 1163936, 1264868, 1503239, -899796, 659278, - 5892695, -1580548, 2342905, 2813204, -2396592, 4926328, 5600638, 1000727, -455267, 5207648, - 3702262, 2907693, 3498251, -4243428, -1960653, 1071594, -440234, -564788, 322123, 2372970, - 652835, -4110284, -39462160, -66170412, 23903640, -1717987, 9919227, -11613592, 504659, -13447543, - -1782411, -19372450, 8310762, 8877697, -476741, -1546188, -287763, 1758789, -4672925, -16522739, - 30298846, 2063732, -3938485, 10363756, 1799591, -5527623, 14519137, 16149077, -7009387, 9509058, - 1801739, -2106682, -15238544, -8358007, 11809013, -6148246, 1617055, -863288, 8007967, -12427488, - -13984414, 1926293, 141734, -9457518, 5617817, 1110249, -5939940, 4110284, -6536940, -5439576, - 2499671, 2422362, 272730, -1782411, -3122441, 3809636, 6414534, 897648, 1964948, -1913408, - -1941325, 5617817, 599148, 1219771, -5858336, -1382980, -3940633, 3135326, 4653597, -8590, - 3813931, -107374, 5108864, -4254165, 2518998, -111669, -341450, -4022237, -137439, -3455301, - -547608, -21272974, 63909112, -28394028, 4782446, 4179003, 16026670, -2037962, 10234907, -10114648, - 627065, -19391778, -3706557, 92342, 7816841, 1292785, 8050916, -5561983, -11768210, 1518271, - -17703856, -18668076, 551903, -6137509, -330712, 1591285, 2688650, -4632122, -3079492, -6667937, - -10086731, 4063039, 4915590, -13161927, -5935645, -16542067, 283468, -7310035, 5967857, 6951405, - -13602161, 2145336, 11274289, 10121090, -5220533, 3685082, -3848291, -1928440, 3201898, -6171868, - -1290638, 5740224, 4520453, 3932043, 4861903, 2574833, -1393717, 3788161, 2540473, -2843268, - -105227, 7730941, -768799, -3566970, -1088774, 3184718, -3270618, -7919920, -528281, -2770254, - 2068027, 1677185, -1108102, -3212636, -4722317, -5585605, 5699422, -1900523, -176094, -1258425, - -354335, -704375, -52800180, -16357383, 5944235, -8349417, 7535520, -3485366, 73014, -15564961, - -18698140, -2542621, -6545530, 7825431, 2231236, -2278480, -38646116, 19396072, 1378685, 16902844, - 21028160, 14542759, -20203526, -4937065, -1954210, -5048734, 4361540, 4791036, -345745, -7365869, - 8175470, -13670881, -7303592, 12126840, 627065, -5229123, 14199162, 313533, 14894947, -5151814, - -2379412, 1767379, 4668630, -10666551, -7870528, -1879048, 8392366, -3058017, 1365800, -3360812, - 5611375, 7030862, 1370095, 373662, -12365211, -1290638, 6060199, 6786049, -3867618, 7602092, - 2510409, -2104534, 1990717, -7724499, -2409477, -5168993, 5102421, 798864, -1799591, 1838246, - -13187697, 83752, 2523293, 6317897, 2091649, -3459596, 6120329, 579821, -8306467, -3783866, - -4254165, -1172526, 1765232, 33792804, 11394548, -20332376, -3474629, -8761733, 7075959, -12277164, - 10258529, -2291365, 11931419, 8284992, 14486925, -19486266, 23422604, -14375256, 13715978, -7868380, - 8235600, 1537598, 6998649, -12468290, -28537910, 11083163, 19935090, -7226283, 8209830, -10125385, - 2437394, -6650757, 20963736, -204011, -2010045, 4988605, -10097468, -7071664, -5894843, 9171903, - 154619, -3382287, 73014, -1810329, 14424648, 9629317, -5308580, 4655745, 5527623, -5963562, - -3395172, -5370857, -10819023, -1498944, 285615, -1473174, -3940633, -11038066, -395137, 16862042, - 9206262, -7041599, 9468255, -1005022, -105227, 7904888, 4185446, -8038032, 3092377, 1797444, - 8360154, 9957882, -7851200, 3594888, 5862631, 7604240, -620623, -216896, -2680060, -1385127, - 4320737, -691490, 7812546, -1739462, 71534824, -58435176, -9850507, 2858301, -1187559, -16196322, - 5351530, 4161823, 22799834, -7548405, 4430259, 18726058, 444529, 11235634, 37076304, -8134668, - -2484639, -19393924, -18144090, 764504, 6077379, -8218420, 3457449, 32682554, 18876382, 2656437, - 1170379, 2602750, 18056042, -15182709, -6755984, -901943, 9279277, -1511829, 2179696, -7730941, - 2828236, -13683766, -8080981, -10359461, 98784, -9283572, 2138894, -16490527, 7511898, -32890860, - -8473970, 4447439, 5995775, -1284195, -7638600, 2486786, 899796, 3882651, -9053791, 3944928, - -5330055, -5991480, -14562087, -10851235, -3259880, -1857573, 637803, 2409477, 4569845, 835371, - 2143189, -8695161, -137439, -10602127, -1668595, -775242, 201863, 3466039, 10456098, -6637872, - -3021510, -740882, -5703717, -9783936, 2093797, -45397804, -31638876, -2461016, -6515466, 23602992, - 644245, 4260608, -29841432, 1410897, 3947075, 1578401, 2153926, 17798344, -22473416, 4602058, - -4904853, -15522012, -7604240, 14081050, -5108864, 11441793, -4088809, 6575595, 3493956, -2523293, - -1898376, 7460358, -1161789, -242666, -19260780, 9328669, 8431021, 7960722, 9186935, -17308718, - -17839146, 10166188, 15217069, -18601504, 6661495, 2503966, 15814070, 9032316, 1393717, 10576357, - -5785321, -11291469, -1818919, -21631602, -15824807, -1913408, -934155, 3242700, -10383083, 3399467, - -8355859, -27681064, -8207683, -7595650, -27283780, -135291, -4574140, -3354370, 2961380, 8265665, - -8128226, 5025112, 3309272, -12446815, -7973607, -9612137, -2153926, -2982855, -395137, -4082367, - 5061619, -6156836, -1660005, -5261335, 8776766, -10065256, 5744519, -1756642, -2325725, 341450, - 2375117, -2518998, -28271622, 42988328, -22604412, -9657234, -13230647, 3382287, 3676492, 6320045, - -2750927, 18756122, 14132590, -13503377, -23959476, 8944269, -9006546, 22003118, 1788854, 9386651, - 11542725, -8349417, -8106751, 29242284, -16784732, -4060892, -8529805, 1013612, -3526168, 3869766, - -4969277, -1960653, -22585086, 19900730, -6966437, -1786706, 23551454, -16155519, -20360292, 1829656, - -9238475, -13404593, -88047, -6878390, 5336497, -29379724, -9756018, -7224135, -693637, 10325101, - 146029, 2042257, 5368709, -5059472, 4108136, 6889128, 5993627, 6534793, -3732327, -6251325, - -5411659, 7430294, -17738214, -3914863, -4153234, -4423817, 11662984, -7907035, -12393128, 12562779, - 3884798, 7546258, 14987288, -5519033, -4937065, 7337952, -8022999, -10264972, -9363029, 5555540, - 4346507, -5602785, 5214091, 1666447, 6141803, 1037235, -11162620, 7460358, -3663607, -59126668, - 29527900, 31814970, 16282221, 14783277, -10608569, 15025943, -25567940, 801011, -30034706, -3983582, - -13136157, 13887777, -14385993, -11952894, -3307125, -22046068, 6414534, -10106058, 9665824, -20699594, - 34383360, -11375221, 16215649, -14199162, 1331440, -14227079, -4589173, 7735236, 21992380, 24665998, - -12451110, 25770, -7380902, -13131863, -10037339, -35388384, -919123, 5845451, -33298882, 12882754, - 6474663, 9025874, 15820512, 9947144, 5250598, -11237782, -3734474, -12526272, -6405944, 6579890, - -26656714, 10398116, 5108864, 1619203, -12648679, -7488276, 6728067, 21335250, 8912057, 5454609, - -8546985, 8847633, 1138166, -10252087, 2632815, -7441031, -11703786, -6131066, -2851858, -10593537, - 11839077, 6685117, 9609989, 5312875, -8869107, 2789581, 14815490, -3047279, 13750338, 7269232, - 5001490, 9257802, -5018670, -5703717, 3476776, 2334315, 48930416, -33711200, -14160507, -4327180, - -206158, 23798414, -4567698, 7758859, -13799730, 7333657, -8600672, -38753488, -26665304, -9970767, - 13808320, -1717987, -21449066, -20109036, -42273216, -13683766, 5330055, 5643587, 1876901, -4413079, - -2564096, -13155485, 3350075, 5424544, 7090991, 1571958, -2010045, -5130339, -20212116, -5209796, - -4657892, 10052371, -2190433, -16144782, -6395207, 4571993, -18135500, 3015067, -18700288, 10282152, - 14467597, -13913547, -27026082, -5297842, -8559870, -12427488, 1209033, 2345052, 2564096, 6521908, - 249108, -10677289, 16806208, 26139170, -12749610, 10780368, 4299263, 12330851, -19097572, 7063074, - 2317135, 6672232, -27429808, 21500606, 2523293, 2321430, -3423089, -15732465, 3962107, 1857573, - 3732327, 4647155, -17134772, -9126806, 3259880, 7872675, -4408784, -148176, 6231998, 2372970, - -3171833, -8304320, 5811091, 79675936, -44409960, 4148939, -4404489, -9401683, -33124936, -1713692, - -1778117, 27088358, 12406013, 54644868, -21644488, 2181844, 6019397, 13153337, -5534066, -2433099, - 22166326, -13799730, 31879394, 19389630, -44214540, 42271068, 14907831, -15133317, -10960757, -16514149, - -8628589, 3118146, 1964948, -11845520, 28052578, 3680787, -13411035, -11802570, 2753074, -14632954, - -25997438, 339302, 15539192, 6266358, 18891414, -8684424, 5881958, 20313048, 29100550, 6949257, - -30109868, 9966472, -9693741, -16518444, 4383014, 12818330, 7316477, -3599183, -27337466, -23854248, - 33704756, -4376572, 26044682, 3055869, -10273562, 12841952, -22606560, -9938554, 10881300, -2854006, - 22393960, -17952964, -35708360, -9962177, -1769527, -10904922, -8579197, 22258668, -7453916, 4138201, - -20405390, -19853486, 9713069, 5164698, 8177618, -8622147, 8347269, 904091, -4788889, -981400, - -90089088, -58643484, 21124796, -30614526, 9380209, -15446850, -54631984, -40501540, 72230616, -33681132, - 32450626, 18202072, -19250044, 16595754, -11059541, 22535694, 25003152, -1937030, -7499013, 43164420, - -14441828, -49422188, 489626, -20877836, 4698694, 4342212, 29096256, 15283641, 5802501, 14091788, - -13552769, -307090, 31887984, 20280836, -6126771, 7984344, -28763396, -44285408, -32734094, -22980222, - -6680822, -6573448, 7818988, -4421669, -12575664, 27865748, 7090991, -21507048, -20145544, -6034429, - 7866233, -21668110, 8201240, 25973814, -858993, 9526237, -18395344, 13696651, 9876277, 2909840, - 10080288, -16226386, -24908662, -34930968, 17044578, 13297219, 858993, 13194140, 2226941, -16211354, - -3680787, 876173, -28011776, -2854006, -43329776, -23972360, 6844031, -11321534, 7907035, 676457, - -6027987, -6210523, -4385162, -8351564, 7282117, -128849, -1614908, -107359152, 36565204, -8549132, - -7058779, 19172734, 4690105, 10690174, 46748572, 27910844, 35298188, 17763984, 48208860, -8478265, - -47010564, 6923488, -5312875, -20134806, -41654740, -18159122, 36352604, 8252780, -2557653, 7593502, - -2815351, 515396, 30620970, 3897683, 11330124, -4636417, 7537668, 30556544, -8504035, -20544976, - 15468325, -36487896, -36728412, -23568634, -4702989, 1020055, 15126875, 35811436, 483184, -12348031, - -35762044, -58471684, -20654498, -8523363, -3571265, -380105, 21509196, -26787712, 48191680, 25097642, - -4668630, 13907104, -19093278, 3476776, 313533, 22346714, 43046308, 29113436, -25469156, -10647224, - 7131793, -4073777, -5491116, 2244121, -13191992, -41768556, -3244848, -7685844, -3077344, 6575595, - -16355235, -5467494, -28598040, -3002182, 3925600, 29899414, 14579266, 4224101, 4743792, 7580618, - 863288, -25243670, 5136781, -5849746, 6676527, -3040837, -3401614, -13795435, 2080912, -14538464, - 43974024, 44510892, 15335181, 29890824, 21657372, 46690588, -40432824, 48528836, -58491012, -9996536, - 55357832, 75780400, 16095390, -4449586, 27822798, -22842784, -26673894, 54919748, 9167608, -8059506, - 13657996, 44223132, -11164767, 27262304, -8443906, -10636487, -4891968, 20160576, -50442244, -5839008, - 25061134, -10911364, 2967823, -17615808, 10915659, 40608916, -36747740, 12363063, -10623602, 13531294, - -19037442, 27412628, 2680060, 10153303, 11340861, -44613972, 22370338, -62264140, -12373801, 35910220, - 4209068, -21979496, 39623220, -13140452, -23291608, 28879360, -11336566, -7724499, -4121021, 17613660, - -2211908, 4960687, -33842196, 12859132, 3536906, 67345088, -49954764, -21494164, 6337224, -12515535, - 15453292, 19305878, -23852100, 47238196, 17858474, 229781, 8027294, 16123307, -7254200, -24932286, - 10353019, -12642236, 4516158, -4711579, 12528420, -15635828, 5224828, 620623, -8222715, 11227045, - -3451006, -2390149, -876173, 89730456, -55963424, 2252710, -8888435, -14877767, 1928440, -20396800, - -8570607, -66228396, -55413668, -55192476, 18599356, -11443940, 18382460, -12541305, -40102108, 64201172, - 44764296, -29697552, -24930138, -35076996, -7273527, 13808320, 21234318, 26027502, -1752347, 20160576, - -5697274, -25280178, -30872224, 19421842, -14018773, 58613420, 36749888, 54067196, 7672959, 19705310, - 53244708, 36928128, -11598559, 9781788, -2297808, 734439, 5703717, -24715390, -17772574, 9618579, - -30925912, -31866510, 30986042, 35229468, -38487200, -1202591, 68567008, 47775068, -2381559, -22585086, - -4917738, 14252849, 12942884, -9206262, -25443386, 30672508, -1986422, 7559143, 21994528, 27893666, - -29072634, 12571369, -4711579, 11630771, -45232448, 8433168, 40965400, -40662604, -33384780, -17293686, - 18229988, 32328218, -18163416, 17811230, -15648713, -1546188, 1002875, 6779606, 12154757, -5585605, - -2428804, 7393786, 6852621, 135291, -852551, 5355824, 72690176, 28028956, -9633612, -2272038, - 22842784, -27114128, -35296040, 30401926, -42183020, -54619100, 14596446, -29268054, -37774236, -19651622, - 36202280, 88753352, 36754184, -48157320, 90868624, 10640781, -14175540, 16469052, -52971980, 13593571, - 7378754, -37903088, 32929514, -10110353, 6536940, -27253714, 15418933, -24895778, 45999100, -54309860, - -20005958, -18680960, 25965224, 30047592, 26699664, -28799904, 8489003, -30112016, -8654359, 16250009, - 38437808, 17867064, -17626546, 37553048, 19104014, 30322470, 2040110, 35326108, -15375983, 19597936, - -53556096, 60329260, -5218386, 8527658, -15953656, -31228708, 1608465, 20255066, 48075716, 14291504, - -57505316, 24678882, -23270132, 47528108, 4088809, -17925046, 9171903, -15476915, 9865540, -33320356, - 13376676, 3358665, 2911988, 5529771, -6564858, 3624953, -9032316, -13862007, 18743238, 11933567, - 10797548, -24650964, 8169028, -13288629, 11574937, 2787434, -1556926, 5989332, 2759517, -148502784, - 6779606, 25108378, 58669252, 19419694, -91255168, 122088744, 44929652, -55600500, 20332376, 121429464, - 27502824, -29237990, -3401614, -73252816, 38014756, 3697967, -18500572, 10782515, 25436944, -47435768, - 25759066, -59491740, 6603512, -54206784, -48608292, -20622286, 23304492, 35188668, -26429082, 30799210, - -52731460, -7425999, 59908352, 5708012, -21163452, -6801081, 11978664, -13604309, -39004744, -43709884, - -5467494, -19958714, 43396348, -60226180, 64372968, 20585778, 8577050, -21238614, -6640020, 29807074, - -23583666, 40142912, 10322954, 36303212, -12904229, -20768314, -62831076, 21805548, -5948530, -65023656, - 20014548, -4234838, 40147208, 64085208, -26542898, 14684493, 31991064, 33773476, 7365869, -19357418, - -3328600, -78797616, -3367254, 7342247, 19997368, -281320, 53566832, 11611444, 26901528, -29706142, - -20813412, 39814348, -3530463, -7971460, 24588688, -5484673, -6186901, -356482, -753767, 2675765, - -3719442, 22226456, 183854672, 83496312, 16930762, 29399052, -38358352, -25926570, -9502615, 69133944, - -49950468, 7355132, -41656888, -113939040, -54936928, 25454124, -29534342, 18174154, -45492292, -2823941, - -48874580, 40900972, -49478024, -35729832, -105780752, -20169166, -17104708, -28192166, 54226108, -18352396, - -44480828, 13750338, 41699836, 15150497, 13767518, -6844031, -9472550, -28342490, 20968030, -36331128, - -10262824, -22776212, -63329292, 9030169, -44132936, 17055316, 5001490, -13297219, -2029372, -46226732, - -3223373, -10919954, 66236984, -19761144, -2214056, 26686780, -37301792, -16784732, 67216240, -40108552, - 25295210, 1277753, 59702192, 85259392, -5705864, 10593537, 7892003, 29184302, 14836965, -65906272, - 5321465, 16063178, 22402550, -28477780, -44259636, 4103841, 11959336, -11860552, -17267916, -70643624, - -35341140, -40825812, 2113124, 8407398, -13954349, -19741818, -22640920, -5828271, -11731703, -12725988, - 13883482, -7329362, 6339372, -25686052, 1056562, -10185515, -18249316, 3676492, 9524090, }, + -34360, -64425, -38655, -98784, -17180, -158914, -36507, -513249, 352187, -34360, + 354335, -77309, 156766, 947040, -105227, -1127429, -1114544, -369367, -685047, 90194, + -554051, -1509681, 429497, -380105, -268435, 399432, 128849, -508954, -790274, -1030792, + 139586, -620623, -375810, 216896, -1082332, 966368, 1013612, -581968, -68719, -373662, + -1009317, 90194, -908386, -719407, 700080, -466004, 1050120, 4378719, -1900523, 1943473, + -820339, 695785, -25770, 1017907, -438087, 255551, 435939, 523986, 558346, 966368, + -234076, 115964, 1765232, 1322850, -3468186, 693637, -442382, 178241, -1178969, 783832, + -1486059, 1488206, 1234803, 612033, -188979, -463856, -543313, 1058710, 970663, -429497, + 223338, 1823214, -676457, -32212, -616328, 219043, 283468, -45097, -511101, 858993, + 133144, -257698, 650688, 17585744, -1269163, 2450279, -42950, 777389, 339302, 592706, + 403727, 1683627, -968515, 710817, -343597, 292058, 925565, 1440962, 575526, 279173, + -691490, 1312113, -949188, 500364, -440234, -1382980, 143881, 481036, 49392, -431644, + 122407, -483184, 908386, -1866163, 435939, -431644, 493921, -19327, -2615635, -908386, + 266288, 414464, 302795, -453119, -590558, -511101, 371515, 1013612, -418759, 448824, + 10608569, -12532715, 2508261, -3008625, 1655710, -1947768, 1531156, -2665027, -794569, -1642825, + -294205, -1367947, 126702, 2467459, 3588445, 1505386, 805306, 70867, 1133871, 2568391, + 1870458, -1161789, -1395864, -1868311, -882616, -1075889, 109522, -169651, -154619, 57982, + 556198, -865436, 1118839, -1140314, -1516124, 564788, -10737, 118112, 332860, -1054415, + -1191853, 371515, -719407, -981400, -173946, 143881, 783832, -24303072, 4844723, -1224066, + 616328, 523986, -2035815, -916976, 1932735, -315680, 165356, 2168959, 702227, -828929, + -1511829, 1511829, 130997, -1833951, -2626373, -3801046, 1226213, -1690070, 390842, -547608, + 710817, -388695, 268435, -1973538, -1947768, -1215476, -519691, -1228361, 367220, -594853, + 693637, 2280628, 392990, 397284, 1509681, 416612, 350040, -49392, -296353, -1505386, + -356482, 350040, -277025, -70867, -29053306, 10872710, -2712272, 3491809, -1705102, 2518998, + -1389422, -392990, -2476049, 1906966, -2931315, 1954210, -500364, 2733747, -3710852, 966368, + 3461744, 1022202, -2914135, -1022202, -1752347, -719407, 1108102, 575526, 820339, -446677, + -989990, -1393717, -1367947, -103079, -1569811, -261993, -1458141, -1020055, -4056597, -1120987, + -566936, 238371, 96637, 1425929, 605590, 1404454, -141734, 1632088, 384400, 163209, + 403727, 3627100, 12652974, -3489661, 5613523, -3405909, 1468879, -3674345, 2892661, -264141, + 3152506, -251256, -315680, 3098819, -511101, -429497, 2710124, -1322850, -2486786, -3964255, + 3521873, -285615, 2409477, 281320, 1711545, 828929, -2299955, 979253, 934155, -154619, + 1187559, 1814624, -2287070, 302795, -68719, -193274, -1312113, -590558, -1284195, 350040, + -266288, 992137, 2965675, 115964, 1503239, -266288, 289910, -317828, 455267, 1200443, + -545461, 38201588, -9421011, 3631395, -1823214, 3214783, -1404454, 2467459, -1372242, 848256, + -3717294, 1726577, -3549791, 2718714, -1084479, 803159, -1032940, 3828963, 526134, 964220, + -1836099, 2501819, -223338, -1153199, 2130304, -1649268, -2561948, 66572, -798864, 1224066, + -10737, -382252, -835371, 373662, -83752, 483184, -1763084, 416612, -779537, 2753074, + -513249, 1318555, 249108, 1108102, 2061584, -1415192, 111669, 478889, -702227, 1619203, + -332860, 3219078, -19814832, 7825431, -6113886, 3607773, -3045132, 1047972, -4013647, 2607045, + -1604170, 3642132, -405874, 1589138, -3201898, -1350767, -208306, -1163936, -1086627, 4200478, + -3096672, 534723, 1956358, -3837553, 987843, 1357210, -962073, 1320703, 442382, 760209, + -2443837, -214748, -783832, 1507534, -1217623, 824634, -2884071, -581968, 2110977, 1020055, + 670015, -734439, -433792, -2201171, -2340757, 1273458, 474594, -103079, -343597, -204011, + 208306, 206158, -489626, -478889, 289910, 307090, -803159, -32031866, 10492605, -5671505, + 1455994, -528281, 1791001, -2398739, 2594160, -1058710, -901943, -313533, 1876901, -1009317, + -1498944, 1099512, 3609920, -493921, 152471, -6045167, 521839, 100932, 2950643, -955630, + -453119, -4621385, -1582696, 60130, 88047, 1610613, 2209761, -3491809, -3204046, 2074469, + 521839, -3599183, -2763812, 1357210, 783832, -210453, -105227, -1380832, 1415192, -433792, + 517544, 186831, -1887638, -796716, 1009317, -2914135, -1458141, -581968, 616328, -584116, + 51540, -1455994, -126702, -31976032, 14151917, -7818988, 5939940, -5454609, 2705830, -6208375, + 1432372, -4048007, 6390912, -3234110, 2254858, -395137, 47245, -2929168, -835371, -1211181, + 5785321, -1099512, 2952790, 4687957, 2690797, 693637, -624918, 1125281, -1024350, 2624225, + 2536178, 360777, -1275605, 446677, 485331, -1748052, -785979, 1327145, 1906966, -1438814, + -1408749, -1458141, 96637, -605590, 816044, -1406602, 1005022, -2211908, 652835, -1213328, + -81604, 225486, -878321, -1202591, -1529008, -1434519, -1902671, 238371, -1735167, 11877732, + 12343736, -4559108, 4112431, -5005785, 775242, 1524713, 137439, -1999307, 2306398, 592706, + 4894115, 2555506, 5525476, -839666, 3262028, -880468, 2087354, 2911988, -384400, -4024384, + 3850438, -414464, 1623498, -895501, 2147, 556198, 4707284, 706522, -2544768, -858993, + 627065, -1400159, 3551938, 1520418, -545461, -914828, -1999307, 1586990, -1958505, 2025077, + 2126009, -1556926, 1224066, 1105954, 573378, -150324, 3448859, 2134599, 2527588, -90194, + 315680, 1136019, -723702, -277025, -225486, -736587, -8590, 188979, 324270, -605590, + -1417339, -1483911, 36105644, -12891344, 4477504, -6025839, 4110284, -3968550, 5282810, -1812476, + 246961, -3962107, 7930657, -1140314, 7146826, 446677, 1224066, -4788889, 1709397, 7185481, + -2209761, -6047314, 893353, 257698, 2804614, -4359392, 3573413, -34360, 313533, -377957, + -4209068, -1234803, 702227, -5057324, 839666, 2061584, 1692217, -1419487, -401579, -186831, + 2372970, 717260, -403727, -1035087, 1848983, 1277753, 4591320, 1187559, -682900, 2566243, + 1028645, -261993, 848256, 1947768, 1284195, 270583, 309238, -1488206, 322123, -143881, + 1902671, -195421, 753767, -206158, 676457, 12088185, -17463338, 10462540, -7765301, 3266323, + 1181116, -792421, -659278, 2076617, -4395899, -2796024, -2276333, -1773822, -6010807, 3045132, + -5583458, -225486, -4466766, 1640678, -3362960, -2649995, -1337882, 5078799, 712965, 4941360, + 2596308, 3386582, 4891968, 253403, -620623, -749472, 1378685, 3758097, -313533, -274878, + -2510409, 1906966, -304943, -1501091, 1393717, 1159641, 3925600, 1602023, 1851131, -2780991, + -1292785, -163209, -515396, 1913408, -5617817, 1213328, -1380832, -949188, -1741609, -1973538, + -665720, -1952063, 794569, -1365800, -223338, -2965675, -2909840, -2147, -37061272, -8098161, + 1698660, -7030862, -2905546, 298500, -223338, -5991480, 1713692, -5967857, 171799, 4799626, + -897648, -798864, 2632815, 1726577, 2680060, 156766, 3242700, -1799591, 916976, 3764539, + -259846, -236223, -2471754, 3584150, -2780991, -1524713, 934155, 1451699, 2731599, 8443906, + -2317135, -1372242, -3644280, 208306, -2686502, 642098, -1075889, -3970697, -253403, 5085242, + 1425929, -3423089, -1709397, 1690070, -2083059, -2594160, 478889, -1221918, 292058, 541166, + 3193308, 461709, 1563368, 846109, -2701535, -1374390, 1681480, 1586990, -1093069, 949188, + -221191, -45427868, 37495064, -13106093, 11141145, -8207683, 6274947, -2381559, 3996467, -4355097, + 2682207, 3128884, 4524748, -2944200, 5478231, 2710124, 9320079, -1458141, 785979, -4932770, + 1251983, -1728724, -3081639, -3820374, -4395899, -4050154, 6043019, -272730, 7256347, 1883343, + 1331440, -122407, 925565, -3201898, 515396, -1168231, 1511829, 4299263, 770947, 1417339, + 255551, 448824, -3266323, -1788854, -124554, -249108, 438087, -996432, -3008625, 73014, + 3231963, -1039382, 953483, 940598, -2667175, 1833951, 790274, 1009317, -547608, 304943, + -289910, -833224, 238371, 2903398, 26472030, -4071629, -8540542, -2967823, -1799591, -1372242, + -7524783, -3951370, 2098092, 1290638, 2147484, 2677912, -5057324, 2044404, -992137, 1818919, + 8111046, -8196945, 2834679, 2843268, 2207613, -2110977, -4743792, 3704409, 1103807, 2654290, + 4999342, 15032, 6891275, 607738, 3204046, 279173, 2175401, -1881196, 2607045, 1889786, + 2488934, -947040, 828929, -184684, 3191161, 3944928, -5826123, 7874823, 672162, 2209761, + 350040, 1382980, 1531156, -1644973, 4720169, 2559801, 188979, 4331475, 1844689, -2360085, + -191126, -1574106, -1705102, -1275605, 792421, -319975, 274878, -88047, -4810364, 2497524, + -1900523, 697932, -639950, -264141, -1185411, -667867, 20980916, 1836099, 4275640, -5426691, + -1026497, -13481902, 3225521, -644245, -9161165, 7685844, -4239133, 274878, 5641440, 2538326, + 4236985, -3240553, 1872606, -4249870, 85899, -3635690, 1363652, -5525476, 7926362, 5718749, + 4681515, 5454609, 1217623, -1801739, -3420942, 1544041, 4355097, 12885, 2969970, -2141041, + 607738, 2884071, 2040110, 2596308, 188979, 934155, -322123, -1846836, 1844689, -1277753, + 865436, 760209, -1887638, 2581275, -3489661, 3128884, -1634235, 2214056, 3375844, -4110284, + 416612, 483184, -1677185, -3236258, 2295660, -5252745, -4060892, 2529736, 1067299, 1183264, + 1022202, 3281355, 3152506, -1133871, 444529, 1919850, -755914, -6442, 33094870, -27511414, + 9335111, -6846178, 2424509, 8598525, 6992207, -4610648, 8383776, 4722317, 5065914, -3468186, + 2360085, -1769527, 9953587, 2768107, 2815351, 3854733, 4215511, 2671470, 2881923, -8173323, + 1314260, -14774687, -5138929, -1370095, -8463233, 2128156, 4541928, -3191161, -4589173, -5398774, + -5184026, -2765959, 2980707, 2351495, -7524783, -8705899, -667867, -4440996, 2377265, 1934883, + 831076, -622770, 4121021, -2162516, 210453, -573378, -1844689, -5592048, 4335770, 7359427, + -994285, -921271, 3461744, -5186173, 6298570, 1625645, -3191161, -118112, -2963528, -1247688, + -749472, -2119566, -566936, -1432372, -4340065, 1131724, 1559073, 1466731, 1546188, 498216, + -51217484, 5083094, -4571993, 1879048, 5218386, 3745212, 10445360, -4297115, -365072, 839666, + 12504797, 4340065, -9801115, -6405944, 5514738, 7393786, -1859721, -2800319, -208306, 3408057, + 7642895, 7763154, -115964, -13915694, -4028679, -1443109, -1675037, 8061654, -3712999, 4702989, + 457414, -893353, -7221988, 560493, 5740224, -9242770, -5418101, -2183991, -1623498, -4391604, + -3665755, -8643622, -1602023, -5866926, 47245, 1249836, 6210523, -4258460, -2804614, 517544, + -635655, 951335, -5375152, 2085207, 2022930, 650688, 289910, -4075924, -3693672, -2070174, + -1170379, -341450, -6944962, 1387274, 2005750, -3015067, -6386617, 2523293, -324270, -3219078, + -646393, -1509681, -1080184, 4005057, -30081950, 31924492, -4561256, 2014340, 7520488, 9019431, + -6796786, 4342212, 1715839, 5570573, 3773129, 7864085, 4443144, -5325760, -8851928, 1258425, + 9365176, 18708878, -4524748, -6354404, 4896263, 3038689, -3579855, -9217000, -1881196, -1853278, + -8345122, 7303592, 8693014, 137439, 2016487, -171799, 6833293, -5336497, -16544214, 6975027, + -1992865, 5534066, 2643552, 234076, -4103841, -6356552, 4395899, 5211943, 3796751, -738734, + -347892, 5731634, 3208341, 1767379, -3423089, 4825396, 4020090, -667867, -1260573, -2796024, + 3296388, 107374, -8169028, 6717329, 4009352, -1520418, 1917703, -1015760, 210453, -154619, + 1984275, 528281, 2441689, 3962107, 2108829, -603443, -2407329, -1582696, 5705864, 2272038, + -1080184, -1750199, -287763, 8993662, 369367, -6923488, -14181982, 3431679, -738734, -11701638, + 3955665, -3876208, 547608, -4430259, -3453154, 3689377, 8909910, 1099512, 11802570, 5355824, + -5939940, -7806103, 12914967, -5598490, -412317, 1155346, -12120398, -90194, 6414534, -7033009, + -1864016, 8117488, 515396, 4241280, 126702, 5345087, -901943, -3627100, -485331, 7097434, + 9584220, -3141769, 1947768, 1666447, 6393059, -3805341, -667867, 1245541, -1614908, 4146791, + 1876901, 343597, -2175401, 3317862, 3689377, 191126, 182536, 2759517, 4314295, -5179731, + -17180, 1445257, 2368675, -2652142, 2147484, 1063004, 77309, 1503239, -1636383, 721555, + 1715839, 3577708, 4325032, -3487514, 395137, 67171144, -6414534, 1159641, 4226248, -5978595, + -10363756, -6004365, -2544768, -11791833, -12670154, 1022202, -11216307, -4900558, -3206193, -2723009, + 6966437, 8117488, 2598455, 16939352, 3111704, -8310762, 14594299, -1404454, 10348724, -3238405, + -1035087, -9526237, 412317, 8536248, -242666, -4075924, -1595580, 923418, -2078764, -1735167, + 3322157, -7572028, 3141769, 1204738, -3571265, -7179038, -4861903, 5641440, 5542656, 6618545, + -11020886, 6277095, 1752347, -199716, 547608, 1163936, 1264868, 1503239, -899796, 659278, + 5892695, -1580548, 2342905, 2813204, -2396592, 4926328, 5600638, 1000727, -455267, 5207648, + 3702262, 2907693, 3498251, -4243428, -1960653, 1071594, -440234, -564788, 322123, 2372970, + 652835, -4110284, -39462160, -66170412, 23903640, -1717987, 9919227, -11613592, 504659, -13447543, + -1782411, -19372450, 8310762, 8877697, -476741, -1546188, -287763, 1758789, -4672925, -16522739, + 30298846, 2063732, -3938485, 10363756, 1799591, -5527623, 14519137, 16149077, -7009387, 9509058, + 1801739, -2106682, -15238544, -8358007, 11809013, -6148246, 1617055, -863288, 8007967, -12427488, + -13984414, 1926293, 141734, -9457518, 5617817, 1110249, -5939940, 4110284, -6536940, -5439576, + 2499671, 2422362, 272730, -1782411, -3122441, 3809636, 6414534, 897648, 1964948, -1913408, + -1941325, 5617817, 599148, 1219771, -5858336, -1382980, -3940633, 3135326, 4653597, -8590, + 3813931, -107374, 5108864, -4254165, 2518998, -111669, -341450, -4022237, -137439, -3455301, + -547608, -21272974, 63909112, -28394028, 4782446, 4179003, 16026670, -2037962, 10234907, -10114648, + 627065, -19391778, -3706557, 92342, 7816841, 1292785, 8050916, -5561983, -11768210, 1518271, + -17703856, -18668076, 551903, -6137509, -330712, 1591285, 2688650, -4632122, -3079492, -6667937, + -10086731, 4063039, 4915590, -13161927, -5935645, -16542067, 283468, -7310035, 5967857, 6951405, + -13602161, 2145336, 11274289, 10121090, -5220533, 3685082, -3848291, -1928440, 3201898, -6171868, + -1290638, 5740224, 4520453, 3932043, 4861903, 2574833, -1393717, 3788161, 2540473, -2843268, + -105227, 7730941, -768799, -3566970, -1088774, 3184718, -3270618, -7919920, -528281, -2770254, + 2068027, 1677185, -1108102, -3212636, -4722317, -5585605, 5699422, -1900523, -176094, -1258425, + -354335, -704375, -52800180, -16357383, 5944235, -8349417, 7535520, -3485366, 73014, -15564961, + -18698140, -2542621, -6545530, 7825431, 2231236, -2278480, -38646116, 19396072, 1378685, 16902844, + 21028160, 14542759, -20203526, -4937065, -1954210, -5048734, 4361540, 4791036, -345745, -7365869, + 8175470, -13670881, -7303592, 12126840, 627065, -5229123, 14199162, 313533, 14894947, -5151814, + -2379412, 1767379, 4668630, -10666551, -7870528, -1879048, 8392366, -3058017, 1365800, -3360812, + 5611375, 7030862, 1370095, 373662, -12365211, -1290638, 6060199, 6786049, -3867618, 7602092, + 2510409, -2104534, 1990717, -7724499, -2409477, -5168993, 5102421, 798864, -1799591, 1838246, + -13187697, 83752, 2523293, 6317897, 2091649, -3459596, 6120329, 579821, -8306467, -3783866, + -4254165, -1172526, 1765232, 33792804, 11394548, -20332376, -3474629, -8761733, 7075959, -12277164, + 10258529, -2291365, 11931419, 8284992, 14486925, -19486266, 23422604, -14375256, 13715978, -7868380, + 8235600, 1537598, 6998649, -12468290, -28537910, 11083163, 19935090, -7226283, 8209830, -10125385, + 2437394, -6650757, 20963736, -204011, -2010045, 4988605, -10097468, -7071664, -5894843, 9171903, + 154619, -3382287, 73014, -1810329, 14424648, 9629317, -5308580, 4655745, 5527623, -5963562, + -3395172, -5370857, -10819023, -1498944, 285615, -1473174, -3940633, -11038066, -395137, 16862042, + 9206262, -7041599, 9468255, -1005022, -105227, 7904888, 4185446, -8038032, 3092377, 1797444, + 8360154, 9957882, -7851200, 3594888, 5862631, 7604240, -620623, -216896, -2680060, -1385127, + 4320737, -691490, 7812546, -1739462, 71534824, -58435176, -9850507, 2858301, -1187559, -16196322, + 5351530, 4161823, 22799834, -7548405, 4430259, 18726058, 444529, 11235634, 37076304, -8134668, + -2484639, -19393924, -18144090, 764504, 6077379, -8218420, 3457449, 32682554, 18876382, 2656437, + 1170379, 2602750, 18056042, -15182709, -6755984, -901943, 9279277, -1511829, 2179696, -7730941, + 2828236, -13683766, -8080981, -10359461, 98784, -9283572, 2138894, -16490527, 7511898, -32890860, + -8473970, 4447439, 5995775, -1284195, -7638600, 2486786, 899796, 3882651, -9053791, 3944928, + -5330055, -5991480, -14562087, -10851235, -3259880, -1857573, 637803, 2409477, 4569845, 835371, + 2143189, -8695161, -137439, -10602127, -1668595, -775242, 201863, 3466039, 10456098, -6637872, + -3021510, -740882, -5703717, -9783936, 2093797, -45397804, -31638876, -2461016, -6515466, 23602992, + 644245, 4260608, -29841432, 1410897, 3947075, 1578401, 2153926, 17798344, -22473416, 4602058, + -4904853, -15522012, -7604240, 14081050, -5108864, 11441793, -4088809, 6575595, 3493956, -2523293, + -1898376, 7460358, -1161789, -242666, -19260780, 9328669, 8431021, 7960722, 9186935, -17308718, + -17839146, 10166188, 15217069, -18601504, 6661495, 2503966, 15814070, 9032316, 1393717, 10576357, + -5785321, -11291469, -1818919, -21631602, -15824807, -1913408, -934155, 3242700, -10383083, 3399467, + -8355859, -27681064, -8207683, -7595650, -27283780, -135291, -4574140, -3354370, 2961380, 8265665, + -8128226, 5025112, 3309272, -12446815, -7973607, -9612137, -2153926, -2982855, -395137, -4082367, + 5061619, -6156836, -1660005, -5261335, 8776766, -10065256, 5744519, -1756642, -2325725, 341450, + 2375117, -2518998, -28271622, 42988328, -22604412, -9657234, -13230647, 3382287, 3676492, 6320045, + -2750927, 18756122, 14132590, -13503377, -23959476, 8944269, -9006546, 22003118, 1788854, 9386651, + 11542725, -8349417, -8106751, 29242284, -16784732, -4060892, -8529805, 1013612, -3526168, 3869766, + -4969277, -1960653, -22585086, 19900730, -6966437, -1786706, 23551454, -16155519, -20360292, 1829656, + -9238475, -13404593, -88047, -6878390, 5336497, -29379724, -9756018, -7224135, -693637, 10325101, + 146029, 2042257, 5368709, -5059472, 4108136, 6889128, 5993627, 6534793, -3732327, -6251325, + -5411659, 7430294, -17738214, -3914863, -4153234, -4423817, 11662984, -7907035, -12393128, 12562779, + 3884798, 7546258, 14987288, -5519033, -4937065, 7337952, -8022999, -10264972, -9363029, 5555540, + 4346507, -5602785, 5214091, 1666447, 6141803, 1037235, -11162620, 7460358, -3663607, -59126668, + 29527900, 31814970, 16282221, 14783277, -10608569, 15025943, -25567940, 801011, -30034706, -3983582, + -13136157, 13887777, -14385993, -11952894, -3307125, -22046068, 6414534, -10106058, 9665824, -20699594, + 34383360, -11375221, 16215649, -14199162, 1331440, -14227079, -4589173, 7735236, 21992380, 24665998, + -12451110, 25770, -7380902, -13131863, -10037339, -35388384, -919123, 5845451, -33298882, 12882754, + 6474663, 9025874, 15820512, 9947144, 5250598, -11237782, -3734474, -12526272, -6405944, 6579890, + -26656714, 10398116, 5108864, 1619203, -12648679, -7488276, 6728067, 21335250, 8912057, 5454609, + -8546985, 8847633, 1138166, -10252087, 2632815, -7441031, -11703786, -6131066, -2851858, -10593537, + 11839077, 6685117, 9609989, 5312875, -8869107, 2789581, 14815490, -3047279, 13750338, 7269232, + 5001490, 9257802, -5018670, -5703717, 3476776, 2334315, 48930416, -33711200, -14160507, -4327180, + -206158, 23798414, -4567698, 7758859, -13799730, 7333657, -8600672, -38753488, -26665304, -9970767, + 13808320, -1717987, -21449066, -20109036, -42273216, -13683766, 5330055, 5643587, 1876901, -4413079, + -2564096, -13155485, 3350075, 5424544, 7090991, 1571958, -2010045, -5130339, -20212116, -5209796, + -4657892, 10052371, -2190433, -16144782, -6395207, 4571993, -18135500, 3015067, -18700288, 10282152, + 14467597, -13913547, -27026082, -5297842, -8559870, -12427488, 1209033, 2345052, 2564096, 6521908, + 249108, -10677289, 16806208, 26139170, -12749610, 10780368, 4299263, 12330851, -19097572, 7063074, + 2317135, 6672232, -27429808, 21500606, 2523293, 2321430, -3423089, -15732465, 3962107, 1857573, + 3732327, 4647155, -17134772, -9126806, 3259880, 7872675, -4408784, -148176, 6231998, 2372970, + -3171833, -8304320, 5811091, 79675936, -44409960, 4148939, -4404489, -9401683, -33124936, -1713692, + -1778117, 27088358, 12406013, 54644868, -21644488, 2181844, 6019397, 13153337, -5534066, -2433099, + 22166326, -13799730, 31879394, 19389630, -44214540, 42271068, 14907831, -15133317, -10960757, -16514149, + -8628589, 3118146, 1964948, -11845520, 28052578, 3680787, -13411035, -11802570, 2753074, -14632954, + -25997438, 339302, 15539192, 6266358, 18891414, -8684424, 5881958, 20313048, 29100550, 6949257, + -30109868, 9966472, -9693741, -16518444, 4383014, 12818330, 7316477, -3599183, -27337466, -23854248, + 33704756, -4376572, 26044682, 3055869, -10273562, 12841952, -22606560, -9938554, 10881300, -2854006, + 22393960, -17952964, -35708360, -9962177, -1769527, -10904922, -8579197, 22258668, -7453916, 4138201, + -20405390, -19853486, 9713069, 5164698, 8177618, -8622147, 8347269, 904091, -4788889, -981400, + -90089088, -58643484, 21124796, -30614526, 9380209, -15446850, -54631984, -40501540, 72230616, -33681132, + 32450626, 18202072, -19250044, 16595754, -11059541, 22535694, 25003152, -1937030, -7499013, 43164420, + -14441828, -49422188, 489626, -20877836, 4698694, 4342212, 29096256, 15283641, 5802501, 14091788, + -13552769, -307090, 31887984, 20280836, -6126771, 7984344, -28763396, -44285408, -32734094, -22980222, + -6680822, -6573448, 7818988, -4421669, -12575664, 27865748, 7090991, -21507048, -20145544, -6034429, + 7866233, -21668110, 8201240, 25973814, -858993, 9526237, -18395344, 13696651, 9876277, 2909840, + 10080288, -16226386, -24908662, -34930968, 17044578, 13297219, 858993, 13194140, 2226941, -16211354, + -3680787, 876173, -28011776, -2854006, -43329776, -23972360, 6844031, -11321534, 7907035, 676457, + -6027987, -6210523, -4385162, -8351564, 7282117, -128849, -1614908, -107359152, 36565204, -8549132, + -7058779, 19172734, 4690105, 10690174, 46748572, 27910844, 35298188, 17763984, 48208860, -8478265, + -47010564, 6923488, -5312875, -20134806, -41654740, -18159122, 36352604, 8252780, -2557653, 7593502, + -2815351, 515396, 30620970, 3897683, 11330124, -4636417, 7537668, 30556544, -8504035, -20544976, + 15468325, -36487896, -36728412, -23568634, -4702989, 1020055, 15126875, 35811436, 483184, -12348031, + -35762044, -58471684, -20654498, -8523363, -3571265, -380105, 21509196, -26787712, 48191680, 25097642, + -4668630, 13907104, -19093278, 3476776, 313533, 22346714, 43046308, 29113436, -25469156, -10647224, + 7131793, -4073777, -5491116, 2244121, -13191992, -41768556, -3244848, -7685844, -3077344, 6575595, + -16355235, -5467494, -28598040, -3002182, 3925600, 29899414, 14579266, 4224101, 4743792, 7580618, + 863288, -25243670, 5136781, -5849746, 6676527, -3040837, -3401614, -13795435, 2080912, -14538464, + 43974024, 44510892, 15335181, 29890824, 21657372, 46690588, -40432824, 48528836, -58491012, -9996536, + 55357832, 75780400, 16095390, -4449586, 27822798, -22842784, -26673894, 54919748, 9167608, -8059506, + 13657996, 44223132, -11164767, 27262304, -8443906, -10636487, -4891968, 20160576, -50442244, -5839008, + 25061134, -10911364, 2967823, -17615808, 10915659, 40608916, -36747740, 12363063, -10623602, 13531294, + -19037442, 27412628, 2680060, 10153303, 11340861, -44613972, 22370338, -62264140, -12373801, 35910220, + 4209068, -21979496, 39623220, -13140452, -23291608, 28879360, -11336566, -7724499, -4121021, 17613660, + -2211908, 4960687, -33842196, 12859132, 3536906, 67345088, -49954764, -21494164, 6337224, -12515535, + 15453292, 19305878, -23852100, 47238196, 17858474, 229781, 8027294, 16123307, -7254200, -24932286, + 10353019, -12642236, 4516158, -4711579, 12528420, -15635828, 5224828, 620623, -8222715, 11227045, + -3451006, -2390149, -876173, 89730456, -55963424, 2252710, -8888435, -14877767, 1928440, -20396800, + -8570607, -66228396, -55413668, -55192476, 18599356, -11443940, 18382460, -12541305, -40102108, 64201172, + 44764296, -29697552, -24930138, -35076996, -7273527, 13808320, 21234318, 26027502, -1752347, 20160576, + -5697274, -25280178, -30872224, 19421842, -14018773, 58613420, 36749888, 54067196, 7672959, 19705310, + 53244708, 36928128, -11598559, 9781788, -2297808, 734439, 5703717, -24715390, -17772574, 9618579, + -30925912, -31866510, 30986042, 35229468, -38487200, -1202591, 68567008, 47775068, -2381559, -22585086, + -4917738, 14252849, 12942884, -9206262, -25443386, 30672508, -1986422, 7559143, 21994528, 27893666, + -29072634, 12571369, -4711579, 11630771, -45232448, 8433168, 40965400, -40662604, -33384780, -17293686, + 18229988, 32328218, -18163416, 17811230, -15648713, -1546188, 1002875, 6779606, 12154757, -5585605, + -2428804, 7393786, 6852621, 135291, -852551, 5355824, 72690176, 28028956, -9633612, -2272038, + 22842784, -27114128, -35296040, 30401926, -42183020, -54619100, 14596446, -29268054, -37774236, -19651622, + 36202280, 88753352, 36754184, -48157320, 90868624, 10640781, -14175540, 16469052, -52971980, 13593571, + 7378754, -37903088, 32929514, -10110353, 6536940, -27253714, 15418933, -24895778, 45999100, -54309860, + -20005958, -18680960, 25965224, 30047592, 26699664, -28799904, 8489003, -30112016, -8654359, 16250009, + 38437808, 17867064, -17626546, 37553048, 19104014, 30322470, 2040110, 35326108, -15375983, 19597936, + -53556096, 60329260, -5218386, 8527658, -15953656, -31228708, 1608465, 20255066, 48075716, 14291504, + -57505316, 24678882, -23270132, 47528108, 4088809, -17925046, 9171903, -15476915, 9865540, -33320356, + 13376676, 3358665, 2911988, 5529771, -6564858, 3624953, -9032316, -13862007, 18743238, 11933567, + 10797548, -24650964, 8169028, -13288629, 11574937, 2787434, -1556926, 5989332, 2759517, -148502784, + 6779606, 25108378, 58669252, 19419694, -91255168, 122088744, 44929652, -55600500, 20332376, 121429464, + 27502824, -29237990, -3401614, -73252816, 38014756, 3697967, -18500572, 10782515, 25436944, -47435768, + 25759066, -59491740, 6603512, -54206784, -48608292, -20622286, 23304492, 35188668, -26429082, 30799210, + -52731460, -7425999, 59908352, 5708012, -21163452, -6801081, 11978664, -13604309, -39004744, -43709884, + -5467494, -19958714, 43396348, -60226180, 64372968, 20585778, 8577050, -21238614, -6640020, 29807074, + -23583666, 40142912, 10322954, 36303212, -12904229, -20768314, -62831076, 21805548, -5948530, -65023656, + 20014548, -4234838, 40147208, 64085208, -26542898, 14684493, 31991064, 33773476, 7365869, -19357418, + -3328600, -78797616, -3367254, 7342247, 19997368, -281320, 53566832, 11611444, 26901528, -29706142, + -20813412, 39814348, -3530463, -7971460, 24588688, -5484673, -6186901, -356482, -753767, 2675765, + -3719442, 22226456, 183854672, 83496312, 16930762, 29399052, -38358352, -25926570, -9502615, 69133944, + -49950468, 7355132, -41656888, -113939040, -54936928, 25454124, -29534342, 18174154, -45492292, -2823941, + -48874580, 40900972, -49478024, -35729832, -105780752, -20169166, -17104708, -28192166, 54226108, -18352396, + -44480828, 13750338, 41699836, 15150497, 13767518, -6844031, -9472550, -28342490, 20968030, -36331128, + -10262824, -22776212, -63329292, 9030169, -44132936, 17055316, 5001490, -13297219, -2029372, -46226732, + -3223373, -10919954, 66236984, -19761144, -2214056, 26686780, -37301792, -16784732, 67216240, -40108552, + 25295210, 1277753, 59702192, 85259392, -5705864, 10593537, 7892003, 29184302, 14836965, -65906272, + 5321465, 16063178, 22402550, -28477780, -44259636, 4103841, 11959336, -11860552, -17267916, -70643624, + -35341140, -40825812, 2113124, 8407398, -13954349, -19741818, -22640920, -5828271, -11731703, -12725988, + 13883482, -7329362, 6339372, -25686052, 1056562, -10185515, -18249316, 3676492, 9524090, }, { -137439, - -40802, -150324, 8590, -96637, 221191, 146029, -695785, 8590, -453119, -541166, - 143881, 450972, 440234, 158914, -994285, -609885, 199716, -311385, 53687, 199716, - 259846, 412317, -300648, -335007, -616328, -360777, 0, -1402307, -25770, -139586, - -401579, 285615, -796716, -697932, -1406602, -197569, -1234803, -382252, -25770, 979253, - 274878, 743029, -375810, 783832, -201863, 154619, 685047, 4189741, -3266323, 2046552, - -2579128, 1329292, -1254131, -1236951, -740882, -700080, 764504, 874026, -3195456, -167504, - 481036, -313533, -528281, -1868311, -674310, 1344325, 2035815, 1022202, 3204046, 654983, - -558346, 661425, 562641, -319975, 1054415, 2278480, -861141, -17180, 979253, -23622, - -208306, -1619203, -51540, 831076, 672162, 139586, 57982, -534723, 586263, -53687, - 83752, 38655, -543313, 15180562, -979253, 1331440, -951335, 987843, -1142461, 251256, - -272730, -259846, 880468, -792421, -2744484, 803159, 294205, 861141, 1872606, 1005022, - 678605, -240518, -1586990, -539018, 743029, -208306, -249108, 1565516, -1964948, -618475, - -23622, -328565, -478889, 758062, 831076, 1024350, 296353, 371515, -405874, 1417339, - -53687, 1090922, 770947, -242666, -130997, 521839, 21475, -294205, -135291, 25770, - 11151883, -10651519, 1672890, -2877628, 1544041, -193274, 1114544, -1020055, 2005750, -850404, - 1215476, -2542621, 100932, -1475321, 423054, -231928, -347892, -682900, -1872606, -188979, - 221191, -921271, 1533303, -691490, -1114544, -1406602, 841814, -899796, 2179696, -227633, - 6442, 644245, 8590, 49392, -972810, -816044, -227633, 223338, -373662, -936303, - 831076, 599148, 1496796, -345745, 491774, -206158, 277025, -26160646, 3068754, -1962800, - 55835, -304943, -2194728, 2370822, -586263, 210453, 1002875, 302795, 2748779, -137439, - -1123134, 3296388, 1331440, 2974265, -62277, -3947075, -2362232, -1904818, 1627793, -2059437, - 171799, -751619, -697932, 236223, 612033, -601295, -1239098, -923418, 796716, 897648, - 1720134, -141734, -240518, -111669, 1065152, -1198296, 309238, 468151, 788127, -977105, - 1017907, -1185411, -210453, 390842, -33039036, 11974369, -4825396, 5538361, -3846143, 2542621, - -4168266, 2370822, -3094524, 1198296, 2304250, 118112, 884763, 2113124, -1357210, 1520418, - -1741609, -1282048, -3843996, 3508988, -2257005, 2353642, 178241, -6442, -3687230, -126702, - 715112, -517544, -118112, -128849, 1544041, -221191, -1078037, 1172526, 358630, -461709, - 81604, 60130, 137439, 680752, -992137, 2572686, -201863, -1597728, -161061, -865436, - -85899, 1662152, 15060303, -3195456, 5735929, -2581275, 1990717, -2087354, 7138236, -1333587, - 3822521, -399432, -246961, 996432, 27917, -4846871, 1140314, -403727, -2171106, -496069, - 113817, -6105296, -139586, 545461, 1973538, -8590, -1138166, -197569, 2134599, 427349, - -1013612, -2025077, 3191161, -1919850, -47245, -2879776, -294205, 51540, 536871, -665720, - 803159, 1307818, -1211181, 1047972, -19327, 846109, -17180, 1494649, -704375, -392990, - 1331440, 39653284, -11557757, 1728724, -1956358, 2611340, 32212, -25770, -5327907, 2394444, - -2325725, 1638530, 575526, 843961, 1724429, 2686502, 418759, 940598, -4481799, 1655710, - 1664300, -2879776, -556198, 3047279, 1971390, 1949915, 4316442, 2424509, 633508, 1155346, - -1610613, 1380832, -382252, 2493229, 3227668, -442382, 1090922, 2040110, -850404, 712965, - -2804614, -743029, 2808909, 60130, -1969243, -661425, 848256, 2093797, -146029, 1191853, - -15032, 2811056, -21210696, 8916352, -6191196, 4028679, -3685082, 4756677, -3111704, 188979, - -2649995, -3262028, -4556961, 304943, -2710124, 1297080, 1509681, 3418794, -5622112, 3446711, - -1352915, 4791036, 1043677, -298500, 367220, 354335, -1146756, -977105, 717260, -2304250, - 1492501, 2701535, -3704409, -831076, -234076, 1466731, -1421634, 3869766, -4067334, 766652, - -19327, 225486, -1756642, 255551, -1108102, 1007170, 143881, 176094, -1254131, -238371, - -2585570, -893353, -161061, 543313, 184684, -964220, -3268470, -34190088, 10825465, -7007239, - -476741, -1434519, 2128156, -5909875, 405874, 1864016, 1539746, -2072322, 1157494, -2643552, - -4335770, -1698660, 530428, -2598455, 9051644, 236223, -2529736, -837519, -3045132, -1432372, - 2755222, 1644973, 3577708, -339302, 1586990, -2040110, 818191, -1846836, -639950, -1086627, - 588411, 1108102, -590558, -1752347, 414464, 642098, 2471754, -446677, -929860, -3251290, - -2662880, -1273458, -528281, 597000, 423054, -1337882, -564788, 229781, 1172526, 605590, - 191126, -592706, 1191853, -32916630, 15425375, -7292855, 6876243, -3607773, 4067334, 2007897, - 1232656, -3758097, 442382, -1921998, 545461, -4915590, 1827509, 3053722, 979253, -5231270, - -2600603, -2639258, -2746632, -1806034, 3723737, 882616, 2617783, 2095944, -938450, -227633, - -3955665, 5070209, -1462436, -528281, 311385, -1103807, -1576253, -1857573, -433792, -4157528, - 1215476, -2211908, 1642825, 1432372, 2364380, -657130, 249108, -2703682, 1005022, 1971390, - 461709, -453119, 388695, 1539746, 2306398, 996432, 2143189, 88047, 322123, 10683731, - 13217762, -5970005, 3541201, -1836099, 1329292, -1419487, 762357, 1166084, 6472516, -2289218, - 2669322, 6083821, -1655710, -244813, -1024350, 1479616, 3141769, 3223373, 4187593, 1133871, - 3564823, -906238, -2104534, -7125351, 1503239, -1078037, -3577708, -2549063, -120259, -672162, - 2302103, -326418, -4136054, -4267050, 1151051, -3706557, 500364, 2261300, -3332895, -2229088, - -1415192, 1662152, 1505386, -105227, -438087, 2499671, 534723, -959925, 1005022, -2149631, - 274878, -1131724, -1619203, -1090922, 1700807, -863288, 1284195, -955630, -2078764, 571231, - 1155346, -727997, 38029788, -13234942, 7181186, -4960687, 7138236, -5029407, 4378719, -1625645, - 4447439, 1082332, 3131031, -3635690, 3734474, -1273458, -3098819, -317828, -3328600, -5312875, - -2804614, -575526, 2699387, -3637837, -4868346, -5963562, -1069447, -519691, 4776004, 2617783, - 3068754, -2093797, 2482491, -1891933, -1859721, -1022202, 3150359, 2720862, 850404, -17180, - -111669, 90194, -880468, -493921, 2181844, 427349, 5364414, -2052994, -644245, -4466766, - 2929168, -1163936, -693637, -1050120, -277025, 264141, -743029, 818191, -1196148, 19327, - -1696512, -745177, 380105, 1752347, -908386, 10683731, -16320876, 9569187, -6105296, 7432441, - -83752, 4614943, 1303523, -7155416, -3393024, -2411624, 876173, 1793149, 1002875, 8078834, - -4541928, 6455336, 1125281, 820339, -4415227, -957778, 5581310, -367220, -4737349, 5394479, - 4121021, 912681, -2220498, -1754494, -470299, -375810, 2501819, -1226213, 1116692, -3021510, - -667867, 1741609, -4355097, 1666447, -1687922, 1559073, -1260573, -386547, 5141076, 2218351, - 2931315, -227633, 1213328, 1883343, -384400, -1417339, -2265595, 775242, 1039382, 1825361, - 2211908, 517544, -493921, -2274185, -1028645, -2299955, -2048699, 264141, -40583144, -8274255, - -1183264, -6852621, -2899103, 5963562, 2491081, -1859721, -1666447, -4954245, -3324305, -4037269, - -4518306, -3762391, -2433099, -3412352, -5744519, -4924180, 1767379, -4997195, 1541893, -6691559, - 124554, -2819646, -2274185, 5665062, -680752, -2881923, 3624953, -4254165, 3837553, 1095217, - 4054449, 2742337, -169651, -2065879, 4271345, -139586, -753767, 3891240, -1735167, -5476084, - -6189048, -1644973, 1945620, 1219771, -1898376, -255551, -1763084, 313533, 6442, 240518, - 3747359, 1428077, -2841121, -1114544, 420907, 2351495, 483184, 3547643, 916976, -375810, - -1930588, -47629040, 41452876, -16889958, 11501922, -10823318, 2645700, -5317170, 7009387, 1327145, - 811749, -3393024, 4745939, 966368, -8566312, 869731, 1254131, -4303557, -6605660, 6521908, - 8076686, -2609193, -2147484, 1352915, 3712999, -2183991, 7352984, -229781, 1848983, -5347235, - -1917703, -3184718, 4784594, -1065152, 1026497, 1041530, -2776696, 4657892, 4443144, 1224066, - 1511829, 5461051, -3352222, -878321, -721555, -3959960, 826781, -2581275, 940598, -118112, - 326418, 4464619, -199716, -1007170, 957778, 240518, 2884071, -2701535, 992137, -169651, - 5680094, -1696512, -261993, -2239826, 31845036, -3779571, -6586333, -1524713, 4327180, 2259153, - 1984275, -180389, -4365835, 1146756, 2740189, 3094524, -1964948, -1848983, 6468221, 2246268, - -4958540, 1129576, 8353712, -10314364, 6983617, 893353, 8916352, -532576, 564788, 1795296, - 1848983, 4715874, -3377992, -1243393, 1808181, 3405909, -1258425, -30065, 496069, 843961, - 2171106, -4191888, -30065, 2544768, 773094, -2278480, -657130, 5551245, 4110284, 1990717, - -2027225, -1466731, 1649268, -633508, -1275605, 1039382, -1614908, -2564096, 5714454, 2289218, - 3700114, 648540, 2811056, 2299955, 2510409, 350040, 3023657, 1552631, 2173254, -1625645, - 474594, 869731, -2426657, 985695, -1129576, -161061, 15116137, 4400194, 3655017, -2196876, - -1468879, -4084514, -2920578, 766652, -1597728, -1999307, -5869073, 5027259, 3474629, -3639985, - 6266358, -5871221, -1778117, 2652142, -4363687, 2561948, 4069482, 6234145, 5482526, 5250598, - 2714419, -11014444, 2147, -2287070, 2211908, -1032940, 4318590, 2959233, -1425929, -2652142, - 2832531, -1939178, 7284265, 34360, 2405182, 7423851, 7067369, -5302137, 440234, -3481071, - -6365142, -646393, 1183264, -768799, -1316408, -635655, 534723, -2933463, 380105, -3427384, - -987843, -362925, 906238, 73014, -2046552, -2113124, 4410932, -1511829, 657130, 2031520, - 2426657, -1299228, -1404454, -592706, -3526168, -2325725, 352187, 820339, 35689032, -25095494, - 9148280, -9526237, -725850, -6655052, 6038724, 6000070, 1939178, 1228361, 5673652, 15582141, - -13677323, -1891933, -3549791, -5514738, 12088185, 9109626, -1853278, -8267812, 3362960, -6751689, - -5398774, -9463960, 1219771, -9691594, -3197603, 5727339, 833224, -2963528, -7999377, 25770, - -1926293, 4876936, 4481799, 2076617, -3631395, 558346, -223338, 1979980, 3867618, -2441689, - -1232656, -4329327, 6586333, -805306, 977105, 5881958, -1206886, -523986, 2349347, -2939905, - -302795, 2557653, -4359392, 1002875, -807454, -371515, -4546223, 2220498, -972810, 401579, - 1118839, -1670742, 2982855, -2336462, -607738, -4857608, 438087, -665720, 2025077, 2147484, - -55624120, 7627862, 717260, 3843996, -4329327, -6994354, -90194, 4593468, 7331509, -508954, - 11179800, 6204081, -7657927, -6837588, 5196911, 891206, -5469641, -10114648, -11594264, -7451769, - -8568460, -9584220, 1675037, 2989297, 2493229, -7103876, -6828998, 989990, -1829656, -1202591, - -949188, -5675800, 4726612, -9740986, -3667902, -1520418, -392990, 3060164, 1054415, -708670, - 4443144, -1402307, 4430259, 2527588, -3472481, 513249, 7221988, -2935610, -2933463, 150324, - 4215511, 1063004, -3045132, -3910568, 3521873, 152471, -5117454, 6953552, 7853348, 916976, - -2274185, 904091, -169651, 1636383, 3457449, -375810, 4597763, 2903398, 2622078, 2282775, - 1178969, 1896228, -2332167, -206158, -34029024, 29091960, -9728101, 6216965, -158914, 4846871, - -11778948, 4559108, -8029442, 40802, -5433134, 10922102, 9292162, 3513283, 755914, -8972187, - -5952825, -923418, -3607773, 10365904, -8469676, -335007, -4194036, 15180562, -4823249, 1359357, - -423054, 2617783, 1198296, 2607045, 1919850, -2510409, 1374390, -609885, 5308580, 818191, - 10056666, 5214091, -3231963, -680752, -1241246, 184684, -3824669, -2705830, -949188, 1793149, - 12262132, 1112397, 833224, -3367254, 5012227, -1857573, -2602750, 1612760, -2527588, 1507534, - -3141769, -6863358, 3418794, 3030100, -936303, 7157563, 1544041, 1694365, 2594160, -1930588, - 869731, 2312840, -5909875, -2796024, -433792, -2714419, 2753074, 4219806, -1584843, 7241315, - 4799626, -191126, -1962800, -1490354, -532576, 22187802, -517544, 4988605, -15109695, -2525441, - 1887638, -12193412, 953483, 16853452, -2959233, 1196148, -7630010, -10445360, 2632815, -9545565, - 14845554, -10340134, 3545496, 3498251, 7939247, 6171868, -1644973, -9227737, -1090922, -867583, - 4692252, -6474663, -1273458, -1913408, -3096672, -2207613, 4483946, 2753074, 12032351, 4073777, - -4514011, 4982162, -3307125, -3476776, 3682935, 10303627, -1509681, -5349382, -5014375, 5467494, - -161061, -7496866, -6914898, 3506841, 3255585, -3124589, -5720897, -9470403, 2583423, 3496104, - 2336462, -5357972, 3977140, 2441689, 1638530, -1917703, -614180, 2901251, -7129646, -949188, - 3090229, 3659312, -710817, 1769527, 113817, 75634376, -4754529, 3103114, 6979322, -6560563, - -2763812, -2207613, -17746804, 12019466, -1876901, -10986526, 2443837, -5607080, 6549825, 5194763, - 8308614, -2881923, 11257109, 9650792, 6193343, -9824738, 7640747, -13496935, -7939247, -9167608, - 3704409, -7030862, -1226213, -2362232, -8974334, -4851166, 7679402, -5617817, -4232691, -8568460, - 2856153, 2836826, 6513318, -3592740, 11169062, 2830384, 12725988, -1400159, 2360085, 2607045, - -6938520, 5044439, 13026636, -4413079, -300648, 3579855, -3710852, -5177583, 3137474, -5160403, - -2750927, -6760279, -4406637, 5104569, 4571993, 3088082, 4904853, 6139656, 5860483, 8778913, - 1490354, -2531883, 4589173, 3126736, 25770, -811749, 442382, -3208341, -618475, 745177, - 878321, -128849, -33474976, -65624952, 24305220, 208306, 1314260, -6582038, -7039452, -1604170, - 2222646, -4275640, 17100412, -7960722, -15008763, 850404, 906238, -2016487, -5319317, 11632919, - 2076617, -5295695, 5392332, -10419591, 13095355, -7408819, -3880503, -9012989, 14624364, -6399502, - -2175401, -8935679, -4161823, 7902740, -3773129, 8562017, -11203422, -13093208, 1013612, 2199023, - 2201171, -414464, -6805376, 1178969, 3420942, 1660005, 6743099, -111669, 10606422, 1406602, - 9936407, 13013751, 2665027, -1065152, 2407329, -7413114, -1941325, -12330851, -10977936, 3124589, - 3180423, 2063732, -824634, -3575560, -1896228, -3070902, -1737314, -3066607, -8590, -356482, - 2220498, -833224, -1501091, -4271345, -395137, -4945655, -659278, -6539088, -923418, -2486786, - -788127, -21996676, 64048700, -29231548, 13335873, -6231998, 20315196, -3246995, -9032316, -9421011, - 5304285, -2834679, -1251983, 427349, 3940633, -21577916, -10559177, -5592048, 8523363, 7164006, - 12521977, 2265595, -1954210, -2018635, 15034533, -19617264, 11306501, -9453223, -2005750, -9955734, - 15530602, 6227703, -10168335, 1322850, -4481799, 1657857, 6562710, -28138478, -11787538, 2297808, - 9839770, -5800354, 2040110, 7200513, -2969970, -3186866, -1067299, 10874857, 4256313, 1857573, - 1178969, 4189741, 12743168, -7763154, 5806796, -17952964, -3139621, 4043712, 8619999, 1623498, - 1215476, 418759, 4651450, -3511136, 502511, -1260573, -4264903, -3682935, 6674379, 6534793, - -2501819, -3388729, -11203422, -4720169, -2536178, -1995012, 8108899, -3100967, -3081639, -5458904, - -4969277, -390842, -57526792, -12431783, 5602785, -13662291, 3410204, 2480344, 8403104, -66572, - 16039555, 10462540, 5785321, -4428112, -7904888, -433792, 16971564, -14557792, -5572720, -11287174, - -268435, -30807800, -24290188, 1503239, 15045270, 20708184, 4769561, -7569880, 7054484, -6723772, - -4490389, -4587025, 2035815, 5405217, 1309965, 8044474, -6137509, -10973641, 9049496, 5937793, - 19022410, -2357937, 3088082, -2753074, 15341623, -15998753, -8033737, -3803194, -12135430, 7696582, - -5012227, 6459631, -12998719, 12932147, 12558484, 11547020, -4722317, 10234907, 545461, 3560528, - 6006512, 4267050, -5435281, 936303, -1694365, -309238, 11804718, 4400194, -5192616, 9552007, - -1552631, -8280697, -2740189, -603443, -11641509, -472446, 4859756, 6335077, 1011465, -244813, - -4808216, 1765232, 2823941, 41764260, 27180700, -8469676, 12363063, -27648852, 19542102, 7206955, - 14723148, -4960687, -3631395, -15107547, -7728794, -25868588, -4432406, -20583630, -6214818, -12659416, - -12968654, -17480516, 7015829, -23905788, 3274913, 10415296, -4556961, 3320010, -10269267, -83752, - -3171833, -3367254, -14014478, -1846836, 1666447, -912681, -2123861, -7316477, -6356552, 4380867, - 4657892, 6122476, 30492120, -12236362, -665720, 12373801, -2916283, -5029407, -11645804, 3646427, - 10378788, 17136920, 5804649, 14293651, -13896367, -20905754, 2035815, 13765370, 7720204, -11269994, - 13172665, -9869835, 6365142, 2654290, 11976516, 6779606, 4419522, 8117488, -8031589, 5188321, - 4331475, 2480344, 11763915, 2731599, 9513353, -1380832, -3758097, 1539746, 2287070, 2005750, - 11420318, -1786706, -6375879, -575526, 84140560, -54520316, -2995740, 6277095, 1657857, 6594923, - 11495480, -2364380, -1889786, 6429566, -9760313, -9330816, -1561221, 7421704, 30260192, 1232656, - 10432476, -9798968, 577673, -29996052, 18474802, -18159122, -25840670, 5963562, 7213398, -9616432, - 8585640, 3575560, 19973746, 22104050, -3710852, -8400956, -6339372, -33135672, -18068928, 25900800, - 8527658, 9504763, -14959371, -15360951, 4509716, -3012920, -13213467, 11456825, -2536178, -8289287, - -9556302, 6472516, -8564165, -4604205, 30384746, -18580028, 5598490, -6693707, 7017977, -8385924, - -3459596, -22733262, 3788161, -8443906, -5690832, 18090402, 4337917, 5016522, 10932839, 13110388, - 3876208, 9062381, -4097399, -1118839, -14950781, 6775311, 12257837, -2851858, 760209, -1406602, - -3148211, -3876208, 1329292, -3983582, -1844689, -52585432, -25993142, 9517648, -3442416, 18809810, - -2886218, -5186173, -15330886, -17145510, 8770323, -17914308, -6335077, -10243497, -2186138, -10797548, - -7475391, -8708046, -4582730, -10752451, -20255066, 11323681, -39975408, -607738, 35394824, 8499740, - -399432, -9919227, 2310693, -36172216, 14641544, 8860518, 2267743, 12820477, 19112604, -15429670, - -8248485, -16048145, 2110977, 384400, -9631464, -10924249, -12139725, -7245610, -775242, 7728794, - 420907, 6309307, 3440269, 633508, 24468428, 5774584, -4213363, 19421842, -9807558, -22411140, - -7080254, -2765959, -3440269, -1589138, -7943542, -1872606, -9846213, -2448131, -10009421, 854699, - 5014375, -10808285, -3283503, -6012954, 197569, -10954314, -13997298, -6070937, 5317170, 9614284, - 3674345, -3330747, -624918, 3622805, -2029372, -2370822, -5072357, 2104534, 4876936, 959925, - -485331, -6156836, -32371168, 43340516, -21565030, -10763188, -35631048, 27580132, -9899900, 16192027, - 895501, 854699, -10894185, 21580064, -5544803, 6927782, 5272073, -10101763, -3500398, -3373697, - -18930068, 3597035, 3302830, -14708116, -24528558, -15324443, -22574348, -5622112, 12079596, 6223408, - -13327284, -13316546, 19546396, 13363791, -17083232, 15461882, -8559870, 13660143, -21623012, -17179870, - -16503412, 5673652, -14624364, 9040906, -6648610, 3730179, -4086662, -2239826, 3304977, 15524159, - -34383360, -4501126, 6768869, -3292093, -10505490, -24910810, -2278480, 22559316, -133144, 19527068, - 14439680, 4045859, -2875481, 14869177, -14974403, -12388833, 9528385, -3760244, -9320079, 6189048, - 1797444, -7421704, -10696616, 17845590, -16836272, -9313637, -10080288, 10052371, 474594, -7402376, - -4121021, 5149666, -15539192, -141734, 4121021, 2976412, 335007, -5471789, -7567733, -74390984, - 27635968, 11678016, -18758270, 9165460, -21212844, 18985902, 16357383, 13926431, -38156488, 22988812, - 40269612, -5639292, 13636521, 573378, -12644384, -16503412, 44362716, -663572, -4009352, -24522116, - -48419312, -26248692, 2357937, -21461952, 17731772, -31748398, -10627897, -18777598, 5022965, -7391639, - -23740432, 3878356, -5568425, 15436112, -5347235, -18659486, -7252053, -56957708, 10063108, -1859721, - 26158498, -16194174, -17972290, 24421184, 5014375, 3925600, -9968619, -15339476, 5276368, 11055246, - 7941395, -4112431, 8443906, 4559108, 837519, -5102421, -5536213, -18887118, 1301375, -7584912, - -11113228, 9721658, 5360119, 27547920, 5609228, -18788334, -18932216, 3985730, -12337294, -9062381, - 2909840, -9320079, -622770, -4370129, -5656472, 5138929, -7578470, 2568391, -1133871, -1623498, - -2961380, -4217658, -9262097, -11111080, -3633542, -9594957, 62038656, -24431922, 427349, 3481071, - 25956634, -3285650, -4997195, 17815524, 30584462, -20564304, -23740432, 18590766, -3491809, 16176994, - 23435490, 19514184, 16849156, 13501230, 15923591, 60243360, -5037997, 4473209, 11778948, 33251636, - -6809671, -12135430, 12863427, -861141, -10765336, -13331578, -11609297, 350040, -15111842, 22995254, - 34688304, -1765232, -8510478, 14516989, -8332237, 20764020, 14948634, 569083, -17779018, 13668733, - -1267015, -5789616, 2924873, -2392297, 40374840, -3335042, 17641578, -8796093, 35991824, -3272765, - 3354370, -12388833, -21644488, 18388902, -10685879, 36266704, 8104604, 17231408, 300648, 268435, - 10657961, 2911988, 26040386, 14574972, 4887673, 13144747, -14991583, 5875516, 12094628, 1458141, - -4116726, 21399674, 5463199, -6809671, -6777459, 8688719, -3730179, 221191, 12195560, -3515431, - 7511898, 3135326, -6425271, 80257904, -23149874, 7524783, -7683697, 3562675, 10344429, 26970248, - -20925080, 11293617, -438087, 1445257, 14641544, -11980811, 15655156, -42292544, -19168440, 7073811, - 15747498, 11141145, 33633888, -33479270, 5226975, -5022965, -45865956, 19512036, -17841294, -11662984, - -6689412, -37673304, 12221329, 13209172, 5858336, -19668802, -32920924, 12874164, -20398948, 17798344, - -31542240, 403727, -37737732, -9302899, -25209310, -21904334, 22299470, 34699040, 4821101, 12741020, - -16039555, 6433861, -26899380, 11364483, -17671642, 4849018, 25733296, 13065291, -9081708, 15569256, - 2570538, 13475460, -11617887, 22606560, 38706244, 2044404, -23435490, -16232829, -10488310, -4329327, - 2461016, 17355962, 3416647, 28211492, -133144, 10773925, -25694642, -3826816, -18562848, -3556233, - -2798171, 5765994, -23302346, 3141769, -1816771, 6955700, 2486786, 4331475, 2317135, 1806034, - -81836304, -68650760, 29006062, -8611409, 33730524, -2624225, 11038066, -41016936, -38480760, -23401130, - 12861280, -31752694, -21906480, -9386651, 6380174, 23227184, 8293582, -46553152, 12554189, 26044682, - -66037268, -7870528, 3191161, -70104600, -24051816, 31228708, -64942052, 31825708, 33492154, 429497, - -9367324, -2647847, -15625091, -17237852, 11658689, 14347338, 48719960, -28784870, -15109695, -12098923, - -22606560, 1335735, -38596724, -9622874, 2948495, -1088774, -12554189, -1960653, -21255794, -4312147, - 11875585, -5308580, -13853417, 16114717, -7541963, -15773267, -22531398, 47972636, -1999307, 29229400, - 3861176, 10969346, 31625992, 4574140, 21545704, -14338748, 23942296, 17379586, 5207648, 6285685, - 5871221, 20869246, 9513353, 3882651, 20154134, -8557722, 2937758, -2334315, -31479962, 14733885, - 7477538, 4310000, -19275814, -5484673, 3575560, 6122476, -5546951, -132785360, 50072876, -14671608, - -59566900, -14538464, 1498944, -15406048, 22997402, -51571820, 24831354, -4161823, -59302760, -40881648, - 8113193, 23542864, 22237194, 16320876, 34911640, 9970767, 57423712, 31439160, 67306432, 8744553, - 54672788, -42127188, -33191508, 11310796, 4743792, -33416994, 9335111, 7073811, -4668630, -12745315, - 32394790, 6195491, -71526240, -31892280, 23953032, 8248485, -15189152, 20444044, 20845624, 32482838, - 6968585, 9633612, 6051609, 9427453, 11841225, -24854976, 3758097, 4561256, -52907556, 24917252, - 18326626, 22432614, -36273148, -21049634, 26416196, 25770, -7056632, -5476084, -15532749, -13711683, - 60130, -18245022, -40684076, 13825500, 43327632, -30494268, 4198331, -17336636, -7067369, -12637941, - -3968550, 22344568, 5327907, 18461916, 5345087, -19660212, -14008036, -15968688, -9597104, -13060996, - 3088082, -8282845, -1823214, -12500502, 3944928, 6468221, 7069516, -3796751, -12530567, 208306, - 55727200, 37671160, 26046830, 14158360, 1724429, -12987981, -19789062, 17467632, -55602648, 58662812, - -36359044, 9429601, -60359324, -2233383, 56760140, 22269406, -20115480, 35985384, -57342108, 22877144, - 10677289, 3979287, -70609264, -21208548, 4314295, 11325829, 45339824, -69496864, -9397388, -23113366, - -65408056, -14388140, 15665893, 32628866, 49007724, 38044820, 37900940, -3287798, -24391120, 24919400, - 7529078, -15034533, 8931384, -32003948, 50772956, 23712514, 17166984, -26555782, -58123792, -15603616, - 1307818, -70499744, -56972740, -15058155, -51105816, 32736240, 12678743, 10118943, -23551454, -25372520, - 9801115, 7028714, 4256313, 15674483, -9859097, 11815455, 33565168, 15159087, 5662915, 4443144, - -22174916, -18683108, -16700980, 9652939, -5972152, -45221712, -36120676, -3749507, -29098404, -25879326, - -7451769, -37366216, -23444078, -6008659, 1952063, -5493263, -2493229, 8727374, -7183333, -2875481, - 1943473, 1151051, -10902774, 64126008, -50034220, 13462575, -7075959, -6493991, 1174674, 17742510, - -31166430, 41717016, -12036646, 28610924, -2785286, -23214298, 44377748, 43785044, 31331786, -14654428, - 67248448, 24906516, -75183400, 77549928, 7082401, -204011, 56049324, 2493229, -24305220, -32502166, - 55323472, -34634616, -46209552, 44781476, 39049844, -25409026, -61456688, 24131274, -21086142, 8566312, - -43226700, -35414152, -14675903, 41938208, 37645388, 5005785, 34548716, -50124416, 16192027, -13149042, - -18672370, 24084030, 3395172, 7425999, -70199096, -19159850, 39092792, -50126564, -13037373, -62895500, - -11705933, -23439784, 10640781, -15129022, 7142531, 6579890, -2130304, 6418829, -16810502, -55841016, - -10520522, 28638842, -3770981, 19900730, -21509196, -48977660, -8677981, 10965052, 31260920, 7748121, - 17121888, -1681480, 7052337, 11942157, 7219840, -16922172, 4361540, -6839736, 7402376, -13441100, - 8115341, 3463891, 977105, -1367947, -11729556, -5727339, 58100172, 4460324, -16915728, -41641856, - -1421634, -19909320, 15468325, -34398392, 21852794, 13913547, -30077656, -30850750, 46512348, -54868208, - -2164664, 35403416, -39730596, 12783970, 45457932, -36193688, 31172872, 22892176, 33365454, -54949812, - 47431472, -55177444, 16608639, -42006928, 5226975, -21494164, 37342592, 1127429, 22849226, 11776800, - -39208756, -23916526, -54196044, 31587336, -36717676, 31763430, -44150116, -50266148, -84174920, 8196945, - 44160852, -6758131, -1316408, 13952201, 38059852, -12919262, 10202695, -46497316, 11798275, 61725124, - -6259915, 55963424, 73209864, -481036, 12238509, 15053860, -31312460, 16243566, -37931004, -1902671, - -38933880, -37718404, 2179696, -14287209, -63952064, 43323336, 987843, 32231582, -37761352, -19250044, - -14471892, 16533477, -410169, -9964324, -9987946, -6429566, -2501819, 3693672, 4078072, -7574175, - 8630737, -8688719, -8701604, -4801774, 12204150, 9154723, 10136123, -4956393, 7625715, -131593504, - 33462090, 49362060, 13741748, -56981332, -8289287, 92913024, -106629008, -2622078, -17931488, -69694432, - -17527762, -47195248, 17398912, 17328046, 40873056, 16632261, -55710020, -19703162, 40291088, -63552632, - -18010946, -67972152, 58177480, 17549236, 45524504, 77560664, -27204322, -16230681, -12687333, -38680476, - 37245956, -18079664, -46130096, -51709260, -8985072, 20010252, -1348620, 10713796, 12745315, 30283814, - -13146895, -1275605, 22466974, -21421150, 43958992, 50038516, 47180216, -38001872, 5231270, -11740293, - 22640920, 94263792, 70708048, 134879152, 10823318, 53429392, 43233140, -20298016, -4496831, -6878390, - -12429635, 17190606, 4110284, 48681308, 36672580, -16254304, -4814659, -28619514, -56403660, 22913650, - -665720, 19520626, -3959960, -38895224, -5574868, 6092411, -21670258, 13417478, -13763223, -18775450, - 689342, -18814104, 66572, -5065914, -4550518, 350040, 3062312, -11669426, 1827509, 977105, - 90194, 4980015, 204264352, 98490040, 35010424, 31533650, -48687748, 31220118, -39356932, 46812996, - 38306812, 35914516, 9079561, -67033704, -37595996, 72855528, 12466143, -4355097, -15637976, 81570016, - -88701816, -37364068, -22411140, -6734509, -62895500, 14804752, -54385024, -30399778, 8748848, -34477848, - 50435800, -48960480, -21296596, -12154757, 53916872, -90067608, -17538498, -67072356, -2149631, -496069, - -58995672, 9466108, 45947560, 24874304, -1324997, -27781996, 2229088, 27601608, -37220188, 74152608, - 100785704, -6549825, -63071596, -59365036, 41394896, -15206332, -13900662, 86745456, -18762564, 27550068, - -2649995, 54470924, -11227045, 6929930, -10765336, -34832184, -96855808, -57921928, -9341554, -26134876, - -66849020, -44012676, 24779814, 55877524, -4900558, -7406671, -6262063, -9219147, 30444876, 19228568, - 4114579, -19061064, 21270826, -12646531, -44424996, -42498700, 5214091, 28834262, -34694744, 22466974, - -2478196, -13411035, -11759620, 695785, -19512036, -15088220, 590558, -5950677, -3139621, }, + -40802, -150324, 8590, -96637, 221191, 146029, -695785, 8590, -453119, -541166, + 143881, 450972, 440234, 158914, -994285, -609885, 199716, -311385, 53687, 199716, + 259846, 412317, -300648, -335007, -616328, -360777, 0, -1402307, -25770, -139586, + -401579, 285615, -796716, -697932, -1406602, -197569, -1234803, -382252, -25770, 979253, + 274878, 743029, -375810, 783832, -201863, 154619, 685047, 4189741, -3266323, 2046552, + -2579128, 1329292, -1254131, -1236951, -740882, -700080, 764504, 874026, -3195456, -167504, + 481036, -313533, -528281, -1868311, -674310, 1344325, 2035815, 1022202, 3204046, 654983, + -558346, 661425, 562641, -319975, 1054415, 2278480, -861141, -17180, 979253, -23622, + -208306, -1619203, -51540, 831076, 672162, 139586, 57982, -534723, 586263, -53687, + 83752, 38655, -543313, 15180562, -979253, 1331440, -951335, 987843, -1142461, 251256, + -272730, -259846, 880468, -792421, -2744484, 803159, 294205, 861141, 1872606, 1005022, + 678605, -240518, -1586990, -539018, 743029, -208306, -249108, 1565516, -1964948, -618475, + -23622, -328565, -478889, 758062, 831076, 1024350, 296353, 371515, -405874, 1417339, + -53687, 1090922, 770947, -242666, -130997, 521839, 21475, -294205, -135291, 25770, + 11151883, -10651519, 1672890, -2877628, 1544041, -193274, 1114544, -1020055, 2005750, -850404, + 1215476, -2542621, 100932, -1475321, 423054, -231928, -347892, -682900, -1872606, -188979, + 221191, -921271, 1533303, -691490, -1114544, -1406602, 841814, -899796, 2179696, -227633, + 6442, 644245, 8590, 49392, -972810, -816044, -227633, 223338, -373662, -936303, + 831076, 599148, 1496796, -345745, 491774, -206158, 277025, -26160646, 3068754, -1962800, + 55835, -304943, -2194728, 2370822, -586263, 210453, 1002875, 302795, 2748779, -137439, + -1123134, 3296388, 1331440, 2974265, -62277, -3947075, -2362232, -1904818, 1627793, -2059437, + 171799, -751619, -697932, 236223, 612033, -601295, -1239098, -923418, 796716, 897648, + 1720134, -141734, -240518, -111669, 1065152, -1198296, 309238, 468151, 788127, -977105, + 1017907, -1185411, -210453, 390842, -33039036, 11974369, -4825396, 5538361, -3846143, 2542621, + -4168266, 2370822, -3094524, 1198296, 2304250, 118112, 884763, 2113124, -1357210, 1520418, + -1741609, -1282048, -3843996, 3508988, -2257005, 2353642, 178241, -6442, -3687230, -126702, + 715112, -517544, -118112, -128849, 1544041, -221191, -1078037, 1172526, 358630, -461709, + 81604, 60130, 137439, 680752, -992137, 2572686, -201863, -1597728, -161061, -865436, + -85899, 1662152, 15060303, -3195456, 5735929, -2581275, 1990717, -2087354, 7138236, -1333587, + 3822521, -399432, -246961, 996432, 27917, -4846871, 1140314, -403727, -2171106, -496069, + 113817, -6105296, -139586, 545461, 1973538, -8590, -1138166, -197569, 2134599, 427349, + -1013612, -2025077, 3191161, -1919850, -47245, -2879776, -294205, 51540, 536871, -665720, + 803159, 1307818, -1211181, 1047972, -19327, 846109, -17180, 1494649, -704375, -392990, + 1331440, 39653284, -11557757, 1728724, -1956358, 2611340, 32212, -25770, -5327907, 2394444, + -2325725, 1638530, 575526, 843961, 1724429, 2686502, 418759, 940598, -4481799, 1655710, + 1664300, -2879776, -556198, 3047279, 1971390, 1949915, 4316442, 2424509, 633508, 1155346, + -1610613, 1380832, -382252, 2493229, 3227668, -442382, 1090922, 2040110, -850404, 712965, + -2804614, -743029, 2808909, 60130, -1969243, -661425, 848256, 2093797, -146029, 1191853, + -15032, 2811056, -21210696, 8916352, -6191196, 4028679, -3685082, 4756677, -3111704, 188979, + -2649995, -3262028, -4556961, 304943, -2710124, 1297080, 1509681, 3418794, -5622112, 3446711, + -1352915, 4791036, 1043677, -298500, 367220, 354335, -1146756, -977105, 717260, -2304250, + 1492501, 2701535, -3704409, -831076, -234076, 1466731, -1421634, 3869766, -4067334, 766652, + -19327, 225486, -1756642, 255551, -1108102, 1007170, 143881, 176094, -1254131, -238371, + -2585570, -893353, -161061, 543313, 184684, -964220, -3268470, -34190088, 10825465, -7007239, + -476741, -1434519, 2128156, -5909875, 405874, 1864016, 1539746, -2072322, 1157494, -2643552, + -4335770, -1698660, 530428, -2598455, 9051644, 236223, -2529736, -837519, -3045132, -1432372, + 2755222, 1644973, 3577708, -339302, 1586990, -2040110, 818191, -1846836, -639950, -1086627, + 588411, 1108102, -590558, -1752347, 414464, 642098, 2471754, -446677, -929860, -3251290, + -2662880, -1273458, -528281, 597000, 423054, -1337882, -564788, 229781, 1172526, 605590, + 191126, -592706, 1191853, -32916630, 15425375, -7292855, 6876243, -3607773, 4067334, 2007897, + 1232656, -3758097, 442382, -1921998, 545461, -4915590, 1827509, 3053722, 979253, -5231270, + -2600603, -2639258, -2746632, -1806034, 3723737, 882616, 2617783, 2095944, -938450, -227633, + -3955665, 5070209, -1462436, -528281, 311385, -1103807, -1576253, -1857573, -433792, -4157528, + 1215476, -2211908, 1642825, 1432372, 2364380, -657130, 249108, -2703682, 1005022, 1971390, + 461709, -453119, 388695, 1539746, 2306398, 996432, 2143189, 88047, 322123, 10683731, + 13217762, -5970005, 3541201, -1836099, 1329292, -1419487, 762357, 1166084, 6472516, -2289218, + 2669322, 6083821, -1655710, -244813, -1024350, 1479616, 3141769, 3223373, 4187593, 1133871, + 3564823, -906238, -2104534, -7125351, 1503239, -1078037, -3577708, -2549063, -120259, -672162, + 2302103, -326418, -4136054, -4267050, 1151051, -3706557, 500364, 2261300, -3332895, -2229088, + -1415192, 1662152, 1505386, -105227, -438087, 2499671, 534723, -959925, 1005022, -2149631, + 274878, -1131724, -1619203, -1090922, 1700807, -863288, 1284195, -955630, -2078764, 571231, + 1155346, -727997, 38029788, -13234942, 7181186, -4960687, 7138236, -5029407, 4378719, -1625645, + 4447439, 1082332, 3131031, -3635690, 3734474, -1273458, -3098819, -317828, -3328600, -5312875, + -2804614, -575526, 2699387, -3637837, -4868346, -5963562, -1069447, -519691, 4776004, 2617783, + 3068754, -2093797, 2482491, -1891933, -1859721, -1022202, 3150359, 2720862, 850404, -17180, + -111669, 90194, -880468, -493921, 2181844, 427349, 5364414, -2052994, -644245, -4466766, + 2929168, -1163936, -693637, -1050120, -277025, 264141, -743029, 818191, -1196148, 19327, + -1696512, -745177, 380105, 1752347, -908386, 10683731, -16320876, 9569187, -6105296, 7432441, + -83752, 4614943, 1303523, -7155416, -3393024, -2411624, 876173, 1793149, 1002875, 8078834, + -4541928, 6455336, 1125281, 820339, -4415227, -957778, 5581310, -367220, -4737349, 5394479, + 4121021, 912681, -2220498, -1754494, -470299, -375810, 2501819, -1226213, 1116692, -3021510, + -667867, 1741609, -4355097, 1666447, -1687922, 1559073, -1260573, -386547, 5141076, 2218351, + 2931315, -227633, 1213328, 1883343, -384400, -1417339, -2265595, 775242, 1039382, 1825361, + 2211908, 517544, -493921, -2274185, -1028645, -2299955, -2048699, 264141, -40583144, -8274255, + -1183264, -6852621, -2899103, 5963562, 2491081, -1859721, -1666447, -4954245, -3324305, -4037269, + -4518306, -3762391, -2433099, -3412352, -5744519, -4924180, 1767379, -4997195, 1541893, -6691559, + 124554, -2819646, -2274185, 5665062, -680752, -2881923, 3624953, -4254165, 3837553, 1095217, + 4054449, 2742337, -169651, -2065879, 4271345, -139586, -753767, 3891240, -1735167, -5476084, + -6189048, -1644973, 1945620, 1219771, -1898376, -255551, -1763084, 313533, 6442, 240518, + 3747359, 1428077, -2841121, -1114544, 420907, 2351495, 483184, 3547643, 916976, -375810, + -1930588, -47629040, 41452876, -16889958, 11501922, -10823318, 2645700, -5317170, 7009387, 1327145, + 811749, -3393024, 4745939, 966368, -8566312, 869731, 1254131, -4303557, -6605660, 6521908, + 8076686, -2609193, -2147484, 1352915, 3712999, -2183991, 7352984, -229781, 1848983, -5347235, + -1917703, -3184718, 4784594, -1065152, 1026497, 1041530, -2776696, 4657892, 4443144, 1224066, + 1511829, 5461051, -3352222, -878321, -721555, -3959960, 826781, -2581275, 940598, -118112, + 326418, 4464619, -199716, -1007170, 957778, 240518, 2884071, -2701535, 992137, -169651, + 5680094, -1696512, -261993, -2239826, 31845036, -3779571, -6586333, -1524713, 4327180, 2259153, + 1984275, -180389, -4365835, 1146756, 2740189, 3094524, -1964948, -1848983, 6468221, 2246268, + -4958540, 1129576, 8353712, -10314364, 6983617, 893353, 8916352, -532576, 564788, 1795296, + 1848983, 4715874, -3377992, -1243393, 1808181, 3405909, -1258425, -30065, 496069, 843961, + 2171106, -4191888, -30065, 2544768, 773094, -2278480, -657130, 5551245, 4110284, 1990717, + -2027225, -1466731, 1649268, -633508, -1275605, 1039382, -1614908, -2564096, 5714454, 2289218, + 3700114, 648540, 2811056, 2299955, 2510409, 350040, 3023657, 1552631, 2173254, -1625645, + 474594, 869731, -2426657, 985695, -1129576, -161061, 15116137, 4400194, 3655017, -2196876, + -1468879, -4084514, -2920578, 766652, -1597728, -1999307, -5869073, 5027259, 3474629, -3639985, + 6266358, -5871221, -1778117, 2652142, -4363687, 2561948, 4069482, 6234145, 5482526, 5250598, + 2714419, -11014444, 2147, -2287070, 2211908, -1032940, 4318590, 2959233, -1425929, -2652142, + 2832531, -1939178, 7284265, 34360, 2405182, 7423851, 7067369, -5302137, 440234, -3481071, + -6365142, -646393, 1183264, -768799, -1316408, -635655, 534723, -2933463, 380105, -3427384, + -987843, -362925, 906238, 73014, -2046552, -2113124, 4410932, -1511829, 657130, 2031520, + 2426657, -1299228, -1404454, -592706, -3526168, -2325725, 352187, 820339, 35689032, -25095494, + 9148280, -9526237, -725850, -6655052, 6038724, 6000070, 1939178, 1228361, 5673652, 15582141, + -13677323, -1891933, -3549791, -5514738, 12088185, 9109626, -1853278, -8267812, 3362960, -6751689, + -5398774, -9463960, 1219771, -9691594, -3197603, 5727339, 833224, -2963528, -7999377, 25770, + -1926293, 4876936, 4481799, 2076617, -3631395, 558346, -223338, 1979980, 3867618, -2441689, + -1232656, -4329327, 6586333, -805306, 977105, 5881958, -1206886, -523986, 2349347, -2939905, + -302795, 2557653, -4359392, 1002875, -807454, -371515, -4546223, 2220498, -972810, 401579, + 1118839, -1670742, 2982855, -2336462, -607738, -4857608, 438087, -665720, 2025077, 2147484, + -55624120, 7627862, 717260, 3843996, -4329327, -6994354, -90194, 4593468, 7331509, -508954, + 11179800, 6204081, -7657927, -6837588, 5196911, 891206, -5469641, -10114648, -11594264, -7451769, + -8568460, -9584220, 1675037, 2989297, 2493229, -7103876, -6828998, 989990, -1829656, -1202591, + -949188, -5675800, 4726612, -9740986, -3667902, -1520418, -392990, 3060164, 1054415, -708670, + 4443144, -1402307, 4430259, 2527588, -3472481, 513249, 7221988, -2935610, -2933463, 150324, + 4215511, 1063004, -3045132, -3910568, 3521873, 152471, -5117454, 6953552, 7853348, 916976, + -2274185, 904091, -169651, 1636383, 3457449, -375810, 4597763, 2903398, 2622078, 2282775, + 1178969, 1896228, -2332167, -206158, -34029024, 29091960, -9728101, 6216965, -158914, 4846871, + -11778948, 4559108, -8029442, 40802, -5433134, 10922102, 9292162, 3513283, 755914, -8972187, + -5952825, -923418, -3607773, 10365904, -8469676, -335007, -4194036, 15180562, -4823249, 1359357, + -423054, 2617783, 1198296, 2607045, 1919850, -2510409, 1374390, -609885, 5308580, 818191, + 10056666, 5214091, -3231963, -680752, -1241246, 184684, -3824669, -2705830, -949188, 1793149, + 12262132, 1112397, 833224, -3367254, 5012227, -1857573, -2602750, 1612760, -2527588, 1507534, + -3141769, -6863358, 3418794, 3030100, -936303, 7157563, 1544041, 1694365, 2594160, -1930588, + 869731, 2312840, -5909875, -2796024, -433792, -2714419, 2753074, 4219806, -1584843, 7241315, + 4799626, -191126, -1962800, -1490354, -532576, 22187802, -517544, 4988605, -15109695, -2525441, + 1887638, -12193412, 953483, 16853452, -2959233, 1196148, -7630010, -10445360, 2632815, -9545565, + 14845554, -10340134, 3545496, 3498251, 7939247, 6171868, -1644973, -9227737, -1090922, -867583, + 4692252, -6474663, -1273458, -1913408, -3096672, -2207613, 4483946, 2753074, 12032351, 4073777, + -4514011, 4982162, -3307125, -3476776, 3682935, 10303627, -1509681, -5349382, -5014375, 5467494, + -161061, -7496866, -6914898, 3506841, 3255585, -3124589, -5720897, -9470403, 2583423, 3496104, + 2336462, -5357972, 3977140, 2441689, 1638530, -1917703, -614180, 2901251, -7129646, -949188, + 3090229, 3659312, -710817, 1769527, 113817, 75634376, -4754529, 3103114, 6979322, -6560563, + -2763812, -2207613, -17746804, 12019466, -1876901, -10986526, 2443837, -5607080, 6549825, 5194763, + 8308614, -2881923, 11257109, 9650792, 6193343, -9824738, 7640747, -13496935, -7939247, -9167608, + 3704409, -7030862, -1226213, -2362232, -8974334, -4851166, 7679402, -5617817, -4232691, -8568460, + 2856153, 2836826, 6513318, -3592740, 11169062, 2830384, 12725988, -1400159, 2360085, 2607045, + -6938520, 5044439, 13026636, -4413079, -300648, 3579855, -3710852, -5177583, 3137474, -5160403, + -2750927, -6760279, -4406637, 5104569, 4571993, 3088082, 4904853, 6139656, 5860483, 8778913, + 1490354, -2531883, 4589173, 3126736, 25770, -811749, 442382, -3208341, -618475, 745177, + 878321, -128849, -33474976, -65624952, 24305220, 208306, 1314260, -6582038, -7039452, -1604170, + 2222646, -4275640, 17100412, -7960722, -15008763, 850404, 906238, -2016487, -5319317, 11632919, + 2076617, -5295695, 5392332, -10419591, 13095355, -7408819, -3880503, -9012989, 14624364, -6399502, + -2175401, -8935679, -4161823, 7902740, -3773129, 8562017, -11203422, -13093208, 1013612, 2199023, + 2201171, -414464, -6805376, 1178969, 3420942, 1660005, 6743099, -111669, 10606422, 1406602, + 9936407, 13013751, 2665027, -1065152, 2407329, -7413114, -1941325, -12330851, -10977936, 3124589, + 3180423, 2063732, -824634, -3575560, -1896228, -3070902, -1737314, -3066607, -8590, -356482, + 2220498, -833224, -1501091, -4271345, -395137, -4945655, -659278, -6539088, -923418, -2486786, + -788127, -21996676, 64048700, -29231548, 13335873, -6231998, 20315196, -3246995, -9032316, -9421011, + 5304285, -2834679, -1251983, 427349, 3940633, -21577916, -10559177, -5592048, 8523363, 7164006, + 12521977, 2265595, -1954210, -2018635, 15034533, -19617264, 11306501, -9453223, -2005750, -9955734, + 15530602, 6227703, -10168335, 1322850, -4481799, 1657857, 6562710, -28138478, -11787538, 2297808, + 9839770, -5800354, 2040110, 7200513, -2969970, -3186866, -1067299, 10874857, 4256313, 1857573, + 1178969, 4189741, 12743168, -7763154, 5806796, -17952964, -3139621, 4043712, 8619999, 1623498, + 1215476, 418759, 4651450, -3511136, 502511, -1260573, -4264903, -3682935, 6674379, 6534793, + -2501819, -3388729, -11203422, -4720169, -2536178, -1995012, 8108899, -3100967, -3081639, -5458904, + -4969277, -390842, -57526792, -12431783, 5602785, -13662291, 3410204, 2480344, 8403104, -66572, + 16039555, 10462540, 5785321, -4428112, -7904888, -433792, 16971564, -14557792, -5572720, -11287174, + -268435, -30807800, -24290188, 1503239, 15045270, 20708184, 4769561, -7569880, 7054484, -6723772, + -4490389, -4587025, 2035815, 5405217, 1309965, 8044474, -6137509, -10973641, 9049496, 5937793, + 19022410, -2357937, 3088082, -2753074, 15341623, -15998753, -8033737, -3803194, -12135430, 7696582, + -5012227, 6459631, -12998719, 12932147, 12558484, 11547020, -4722317, 10234907, 545461, 3560528, + 6006512, 4267050, -5435281, 936303, -1694365, -309238, 11804718, 4400194, -5192616, 9552007, + -1552631, -8280697, -2740189, -603443, -11641509, -472446, 4859756, 6335077, 1011465, -244813, + -4808216, 1765232, 2823941, 41764260, 27180700, -8469676, 12363063, -27648852, 19542102, 7206955, + 14723148, -4960687, -3631395, -15107547, -7728794, -25868588, -4432406, -20583630, -6214818, -12659416, + -12968654, -17480516, 7015829, -23905788, 3274913, 10415296, -4556961, 3320010, -10269267, -83752, + -3171833, -3367254, -14014478, -1846836, 1666447, -912681, -2123861, -7316477, -6356552, 4380867, + 4657892, 6122476, 30492120, -12236362, -665720, 12373801, -2916283, -5029407, -11645804, 3646427, + 10378788, 17136920, 5804649, 14293651, -13896367, -20905754, 2035815, 13765370, 7720204, -11269994, + 13172665, -9869835, 6365142, 2654290, 11976516, 6779606, 4419522, 8117488, -8031589, 5188321, + 4331475, 2480344, 11763915, 2731599, 9513353, -1380832, -3758097, 1539746, 2287070, 2005750, + 11420318, -1786706, -6375879, -575526, 84140560, -54520316, -2995740, 6277095, 1657857, 6594923, + 11495480, -2364380, -1889786, 6429566, -9760313, -9330816, -1561221, 7421704, 30260192, 1232656, + 10432476, -9798968, 577673, -29996052, 18474802, -18159122, -25840670, 5963562, 7213398, -9616432, + 8585640, 3575560, 19973746, 22104050, -3710852, -8400956, -6339372, -33135672, -18068928, 25900800, + 8527658, 9504763, -14959371, -15360951, 4509716, -3012920, -13213467, 11456825, -2536178, -8289287, + -9556302, 6472516, -8564165, -4604205, 30384746, -18580028, 5598490, -6693707, 7017977, -8385924, + -3459596, -22733262, 3788161, -8443906, -5690832, 18090402, 4337917, 5016522, 10932839, 13110388, + 3876208, 9062381, -4097399, -1118839, -14950781, 6775311, 12257837, -2851858, 760209, -1406602, + -3148211, -3876208, 1329292, -3983582, -1844689, -52585432, -25993142, 9517648, -3442416, 18809810, + -2886218, -5186173, -15330886, -17145510, 8770323, -17914308, -6335077, -10243497, -2186138, -10797548, + -7475391, -8708046, -4582730, -10752451, -20255066, 11323681, -39975408, -607738, 35394824, 8499740, + -399432, -9919227, 2310693, -36172216, 14641544, 8860518, 2267743, 12820477, 19112604, -15429670, + -8248485, -16048145, 2110977, 384400, -9631464, -10924249, -12139725, -7245610, -775242, 7728794, + 420907, 6309307, 3440269, 633508, 24468428, 5774584, -4213363, 19421842, -9807558, -22411140, + -7080254, -2765959, -3440269, -1589138, -7943542, -1872606, -9846213, -2448131, -10009421, 854699, + 5014375, -10808285, -3283503, -6012954, 197569, -10954314, -13997298, -6070937, 5317170, 9614284, + 3674345, -3330747, -624918, 3622805, -2029372, -2370822, -5072357, 2104534, 4876936, 959925, + -485331, -6156836, -32371168, 43340516, -21565030, -10763188, -35631048, 27580132, -9899900, 16192027, + 895501, 854699, -10894185, 21580064, -5544803, 6927782, 5272073, -10101763, -3500398, -3373697, + -18930068, 3597035, 3302830, -14708116, -24528558, -15324443, -22574348, -5622112, 12079596, 6223408, + -13327284, -13316546, 19546396, 13363791, -17083232, 15461882, -8559870, 13660143, -21623012, -17179870, + -16503412, 5673652, -14624364, 9040906, -6648610, 3730179, -4086662, -2239826, 3304977, 15524159, + -34383360, -4501126, 6768869, -3292093, -10505490, -24910810, -2278480, 22559316, -133144, 19527068, + 14439680, 4045859, -2875481, 14869177, -14974403, -12388833, 9528385, -3760244, -9320079, 6189048, + 1797444, -7421704, -10696616, 17845590, -16836272, -9313637, -10080288, 10052371, 474594, -7402376, + -4121021, 5149666, -15539192, -141734, 4121021, 2976412, 335007, -5471789, -7567733, -74390984, + 27635968, 11678016, -18758270, 9165460, -21212844, 18985902, 16357383, 13926431, -38156488, 22988812, + 40269612, -5639292, 13636521, 573378, -12644384, -16503412, 44362716, -663572, -4009352, -24522116, + -48419312, -26248692, 2357937, -21461952, 17731772, -31748398, -10627897, -18777598, 5022965, -7391639, + -23740432, 3878356, -5568425, 15436112, -5347235, -18659486, -7252053, -56957708, 10063108, -1859721, + 26158498, -16194174, -17972290, 24421184, 5014375, 3925600, -9968619, -15339476, 5276368, 11055246, + 7941395, -4112431, 8443906, 4559108, 837519, -5102421, -5536213, -18887118, 1301375, -7584912, + -11113228, 9721658, 5360119, 27547920, 5609228, -18788334, -18932216, 3985730, -12337294, -9062381, + 2909840, -9320079, -622770, -4370129, -5656472, 5138929, -7578470, 2568391, -1133871, -1623498, + -2961380, -4217658, -9262097, -11111080, -3633542, -9594957, 62038656, -24431922, 427349, 3481071, + 25956634, -3285650, -4997195, 17815524, 30584462, -20564304, -23740432, 18590766, -3491809, 16176994, + 23435490, 19514184, 16849156, 13501230, 15923591, 60243360, -5037997, 4473209, 11778948, 33251636, + -6809671, -12135430, 12863427, -861141, -10765336, -13331578, -11609297, 350040, -15111842, 22995254, + 34688304, -1765232, -8510478, 14516989, -8332237, 20764020, 14948634, 569083, -17779018, 13668733, + -1267015, -5789616, 2924873, -2392297, 40374840, -3335042, 17641578, -8796093, 35991824, -3272765, + 3354370, -12388833, -21644488, 18388902, -10685879, 36266704, 8104604, 17231408, 300648, 268435, + 10657961, 2911988, 26040386, 14574972, 4887673, 13144747, -14991583, 5875516, 12094628, 1458141, + -4116726, 21399674, 5463199, -6809671, -6777459, 8688719, -3730179, 221191, 12195560, -3515431, + 7511898, 3135326, -6425271, 80257904, -23149874, 7524783, -7683697, 3562675, 10344429, 26970248, + -20925080, 11293617, -438087, 1445257, 14641544, -11980811, 15655156, -42292544, -19168440, 7073811, + 15747498, 11141145, 33633888, -33479270, 5226975, -5022965, -45865956, 19512036, -17841294, -11662984, + -6689412, -37673304, 12221329, 13209172, 5858336, -19668802, -32920924, 12874164, -20398948, 17798344, + -31542240, 403727, -37737732, -9302899, -25209310, -21904334, 22299470, 34699040, 4821101, 12741020, + -16039555, 6433861, -26899380, 11364483, -17671642, 4849018, 25733296, 13065291, -9081708, 15569256, + 2570538, 13475460, -11617887, 22606560, 38706244, 2044404, -23435490, -16232829, -10488310, -4329327, + 2461016, 17355962, 3416647, 28211492, -133144, 10773925, -25694642, -3826816, -18562848, -3556233, + -2798171, 5765994, -23302346, 3141769, -1816771, 6955700, 2486786, 4331475, 2317135, 1806034, + -81836304, -68650760, 29006062, -8611409, 33730524, -2624225, 11038066, -41016936, -38480760, -23401130, + 12861280, -31752694, -21906480, -9386651, 6380174, 23227184, 8293582, -46553152, 12554189, 26044682, + -66037268, -7870528, 3191161, -70104600, -24051816, 31228708, -64942052, 31825708, 33492154, 429497, + -9367324, -2647847, -15625091, -17237852, 11658689, 14347338, 48719960, -28784870, -15109695, -12098923, + -22606560, 1335735, -38596724, -9622874, 2948495, -1088774, -12554189, -1960653, -21255794, -4312147, + 11875585, -5308580, -13853417, 16114717, -7541963, -15773267, -22531398, 47972636, -1999307, 29229400, + 3861176, 10969346, 31625992, 4574140, 21545704, -14338748, 23942296, 17379586, 5207648, 6285685, + 5871221, 20869246, 9513353, 3882651, 20154134, -8557722, 2937758, -2334315, -31479962, 14733885, + 7477538, 4310000, -19275814, -5484673, 3575560, 6122476, -5546951, -132785360, 50072876, -14671608, + -59566900, -14538464, 1498944, -15406048, 22997402, -51571820, 24831354, -4161823, -59302760, -40881648, + 8113193, 23542864, 22237194, 16320876, 34911640, 9970767, 57423712, 31439160, 67306432, 8744553, + 54672788, -42127188, -33191508, 11310796, 4743792, -33416994, 9335111, 7073811, -4668630, -12745315, + 32394790, 6195491, -71526240, -31892280, 23953032, 8248485, -15189152, 20444044, 20845624, 32482838, + 6968585, 9633612, 6051609, 9427453, 11841225, -24854976, 3758097, 4561256, -52907556, 24917252, + 18326626, 22432614, -36273148, -21049634, 26416196, 25770, -7056632, -5476084, -15532749, -13711683, + 60130, -18245022, -40684076, 13825500, 43327632, -30494268, 4198331, -17336636, -7067369, -12637941, + -3968550, 22344568, 5327907, 18461916, 5345087, -19660212, -14008036, -15968688, -9597104, -13060996, + 3088082, -8282845, -1823214, -12500502, 3944928, 6468221, 7069516, -3796751, -12530567, 208306, + 55727200, 37671160, 26046830, 14158360, 1724429, -12987981, -19789062, 17467632, -55602648, 58662812, + -36359044, 9429601, -60359324, -2233383, 56760140, 22269406, -20115480, 35985384, -57342108, 22877144, + 10677289, 3979287, -70609264, -21208548, 4314295, 11325829, 45339824, -69496864, -9397388, -23113366, + -65408056, -14388140, 15665893, 32628866, 49007724, 38044820, 37900940, -3287798, -24391120, 24919400, + 7529078, -15034533, 8931384, -32003948, 50772956, 23712514, 17166984, -26555782, -58123792, -15603616, + 1307818, -70499744, -56972740, -15058155, -51105816, 32736240, 12678743, 10118943, -23551454, -25372520, + 9801115, 7028714, 4256313, 15674483, -9859097, 11815455, 33565168, 15159087, 5662915, 4443144, + -22174916, -18683108, -16700980, 9652939, -5972152, -45221712, -36120676, -3749507, -29098404, -25879326, + -7451769, -37366216, -23444078, -6008659, 1952063, -5493263, -2493229, 8727374, -7183333, -2875481, + 1943473, 1151051, -10902774, 64126008, -50034220, 13462575, -7075959, -6493991, 1174674, 17742510, + -31166430, 41717016, -12036646, 28610924, -2785286, -23214298, 44377748, 43785044, 31331786, -14654428, + 67248448, 24906516, -75183400, 77549928, 7082401, -204011, 56049324, 2493229, -24305220, -32502166, + 55323472, -34634616, -46209552, 44781476, 39049844, -25409026, -61456688, 24131274, -21086142, 8566312, + -43226700, -35414152, -14675903, 41938208, 37645388, 5005785, 34548716, -50124416, 16192027, -13149042, + -18672370, 24084030, 3395172, 7425999, -70199096, -19159850, 39092792, -50126564, -13037373, -62895500, + -11705933, -23439784, 10640781, -15129022, 7142531, 6579890, -2130304, 6418829, -16810502, -55841016, + -10520522, 28638842, -3770981, 19900730, -21509196, -48977660, -8677981, 10965052, 31260920, 7748121, + 17121888, -1681480, 7052337, 11942157, 7219840, -16922172, 4361540, -6839736, 7402376, -13441100, + 8115341, 3463891, 977105, -1367947, -11729556, -5727339, 58100172, 4460324, -16915728, -41641856, + -1421634, -19909320, 15468325, -34398392, 21852794, 13913547, -30077656, -30850750, 46512348, -54868208, + -2164664, 35403416, -39730596, 12783970, 45457932, -36193688, 31172872, 22892176, 33365454, -54949812, + 47431472, -55177444, 16608639, -42006928, 5226975, -21494164, 37342592, 1127429, 22849226, 11776800, + -39208756, -23916526, -54196044, 31587336, -36717676, 31763430, -44150116, -50266148, -84174920, 8196945, + 44160852, -6758131, -1316408, 13952201, 38059852, -12919262, 10202695, -46497316, 11798275, 61725124, + -6259915, 55963424, 73209864, -481036, 12238509, 15053860, -31312460, 16243566, -37931004, -1902671, + -38933880, -37718404, 2179696, -14287209, -63952064, 43323336, 987843, 32231582, -37761352, -19250044, + -14471892, 16533477, -410169, -9964324, -9987946, -6429566, -2501819, 3693672, 4078072, -7574175, + 8630737, -8688719, -8701604, -4801774, 12204150, 9154723, 10136123, -4956393, 7625715, -131593504, + 33462090, 49362060, 13741748, -56981332, -8289287, 92913024, -106629008, -2622078, -17931488, -69694432, + -17527762, -47195248, 17398912, 17328046, 40873056, 16632261, -55710020, -19703162, 40291088, -63552632, + -18010946, -67972152, 58177480, 17549236, 45524504, 77560664, -27204322, -16230681, -12687333, -38680476, + 37245956, -18079664, -46130096, -51709260, -8985072, 20010252, -1348620, 10713796, 12745315, 30283814, + -13146895, -1275605, 22466974, -21421150, 43958992, 50038516, 47180216, -38001872, 5231270, -11740293, + 22640920, 94263792, 70708048, 134879152, 10823318, 53429392, 43233140, -20298016, -4496831, -6878390, + -12429635, 17190606, 4110284, 48681308, 36672580, -16254304, -4814659, -28619514, -56403660, 22913650, + -665720, 19520626, -3959960, -38895224, -5574868, 6092411, -21670258, 13417478, -13763223, -18775450, + 689342, -18814104, 66572, -5065914, -4550518, 350040, 3062312, -11669426, 1827509, 977105, + 90194, 4980015, 204264352, 98490040, 35010424, 31533650, -48687748, 31220118, -39356932, 46812996, + 38306812, 35914516, 9079561, -67033704, -37595996, 72855528, 12466143, -4355097, -15637976, 81570016, + -88701816, -37364068, -22411140, -6734509, -62895500, 14804752, -54385024, -30399778, 8748848, -34477848, + 50435800, -48960480, -21296596, -12154757, 53916872, -90067608, -17538498, -67072356, -2149631, -496069, + -58995672, 9466108, 45947560, 24874304, -1324997, -27781996, 2229088, 27601608, -37220188, 74152608, + 100785704, -6549825, -63071596, -59365036, 41394896, -15206332, -13900662, 86745456, -18762564, 27550068, + -2649995, 54470924, -11227045, 6929930, -10765336, -34832184, -96855808, -57921928, -9341554, -26134876, + -66849020, -44012676, 24779814, 55877524, -4900558, -7406671, -6262063, -9219147, 30444876, 19228568, + 4114579, -19061064, 21270826, -12646531, -44424996, -42498700, 5214091, 28834262, -34694744, 22466974, + -2478196, -13411035, -11759620, 695785, -19512036, -15088220, 590558, -5950677, -3139621, }, }; const Word32 CRendBin_Combined_BRIR_coeff_diffuse_im_32kHz_fx[BINAURAL_CHANNELS][2870] ={ { -9622874, - 5398774, -3060164, 1363652, -1702955, 433792, -1239098, -309238, 92342, 2585570, -1634235, - 1140314, -2660732, 2018635, -2989297, -4069482, -3554086, 854699, -343597, 588411, 113817, - -1788854, 1082332, 1831804, -974958, 1453846, -184684, -586263, -1198296, -195421, 395137, - 983548, -657130, 1434519, -532576, 906238, 1309965, -899796, -846109, 77309, -867583, - 259846, 53687, -377957, 878321, 152471, -354335, 3665755, -3788161, -702227, -794569, - -882616, -268435, -62277, -717260, -523986, 10737, 154619, -523986, 304943, -1172526, - -350040, -186831, 710817, -4028679, -382252, 837519, -386547, -485331, 350040, 81604, - 283468, 1861868, -897648, -590558, -994285, -180389, 545461, 839666, -852551, -633508, - 989990, -904091, -1352915, -143881, -369367, 476741, -401579, -380105, 223338, 420907, - -833224, 279173, 315680, -12934294, -8804683, -3560528, -4093104, -2267743, -2145336, -2010045, - -925565, -2426657, -1932735, -826781, -1507534, -184684, -549756, -1292785, -1778117, -1967095, - -788127, -1133871, -2003602, -246961, -2503966, 23622, -197569, -330712, -1518271, -244813, - -1151051, 23622, -1481764, -925565, 502511, -1069447, 184684, -2503966, -470299, 1245541, - 749472, -30065, -371515, -708670, 199716, 246961, 1163936, -682900, -120259, -343597, - -17012366, -938450, 2201171, -47245, 663572, -128849, 27917, -1374390, 1462436, 560493, - 1758789, 1234803, 3594888, 2622078, 212601, -1428077, -805306, -345745, 680752, -491774, - -3154654, -2854006, -1462436, -450972, 148176, 390842, 594853, -124554, 109522, 337155, - -654983, -100932, -81604, -1960653, 1157494, 461709, -206158, -32212, -736587, -1093069, - 682900, 246961, -697932, 665720, 584116, 813896, -358630, 19078244, 13406740, 2628520, - 5192616, 1069447, 1720134, 4226248, 2181844, 667867, 2549063, 1030792, -1116692, -560493, - 886911, 1468879, -2585570, -352187, -1550483, 3440269, 1713692, 876173, 1713692, 869731, - 886911, 38655, -167504, -850404, 1348620, 1627793, 1391569, 1733019, 2100239, 1251983, - 3068754, 689342, -173946, 1088774, 201863, -539018, -242666, -481036, -607738, 10737, - 1423782, 337155, 234076, 824634, 28469190, 12107513, 3657165, 3332895, 2327872, 1443109, - 457414, 111669, 3120294, 633508, 1728724, 2355790, 1241246, -163209, -869731, 4977867, - -453119, -2718714, -1561221, 1239098, 66572, 2662880, 869731, 330712, -493921, -1234803, - -354335, -564788, 1163936, -197569, 481036, 122407, 178241, -633508, 942745, 3459596, - 2181844, 2299955, 2063732, 1713692, 929860, 672162, 388695, 1136019, -959925, 697932, - -455267, 9350144, -9854802, -3015067, -4239133, -3719442, -1984275, -620623, 1402307, -1400159, - 173946, -3682935, 1275605, -1357210, -3289945, 852551, -2345052, -3186866, -2237678, 3002182, - 2304250, -1088774, 1183264, -2117419, 837519, -3835406, 221191, 607738, -627065, -914828, - 818191, -3038689, -1350767, 369367, -1035087, -910533, -667867, 227633, 339302, 1505386, - 107374, 2609193, -998580, -738734, -809601, -1316408, -386547, -667867, 386547, -1136019, - -1711545, -33797096, -17166984, -6131066, -4840428, -5231270, -3313567, -4520453, -2976412, -4924180, - -919123, -2218351, -594853, 236223, -2074469, -554051, 300648, 34360, -3141769, -2061584, - -1434519, 300648, -4228396, 425202, -1930588, -3732327, 300648, -45097, 238371, -90194, - -1340030, -1007170, 23622, -281320, -66572, -1393717, 25770, 380105, 1110249, 431644, - -1473174, 833224, -1471026, 985695, -2516851, -1702955, 358630, -1380832, 51540, -521839, - -2025077, -19986630, 10479720, 4413079, 1623498, 2716567, 491774, 734439, 2368675, 2669322, - 1428077, 1780264, -1359357, -562641, -2113124, 2561948, 521839, 468151, 3474629, 120259, - -2349347, 4151086, -2761664, 341450, 3412352, -1028645, 886911, 448824, -90194, -1713692, - -420907, 953483, 977105, 171799, -622770, 73014, -1221918, 3917010, 322123, -55835, - -1550483, -768799, -1007170, -925565, 2104534, 2031520, -536871, 206158, -146029, 616328, - 135291, -128849, -429497, 485331, 304943, -588411, -564788, 30094836, 12783970, 3416647, - 6902013, 4007205, 1715839, 3004330, 2587718, 2147, 1887638, 2982855, 689342, 2147, - 1526861, 4202626, -1423782, -777389, -3326452, 841814, 3835406, 1617055, 178241, -2171106, - -1163936, -936303, 4039417, 1247688, 2113124, 1174674, -1917703, -3094524, 3502546, 1913408, - -2151779, -1037235, 3403762, 2856153, -143881, 702227, -356482, 1486059, 955630, -343597, - 693637, -1213328, -562641, 1821066, -966368, -762357, 1958505, 1660005, 929860, 319975, - 408022, 397284, 1398012, 35592392, 7743826, 5922760, 2637110, 2710124, 1172526, 2789581, - 3332895, 5261335, 3262028, -1011465, 4179003, -816044, 1142461, 910533, 3541201, 5175436, - 3367254, -914828, 5826123, -1118839, -571231, -3070902, 852551, -927713, 979253, 1544041, - -1726577, -2454574, -981400, 457414, -1926293, -663572, 923418, 1269163, -2263448, -1977833, - -785979, 730144, 17180, 584116, -801011, -40802, -530428, -798864, 964220, -1346472, - 1294933, -1443109, -461709, -1105954, 266288, -416612, 1453846, 609885, -77309, 4093104, - -15760382, -5095979, -5611375, -3663607, 1007170, -927713, -3354370, 1909113, 176094, 2353642, - -231928, 223338, -3657165, -2630668, -1681480, -2705830, 266288, -2877628, -5469641, 1067299, - 682900, -2579128, -519691, -2342905, 528281, 758062, -410169, -5703717, -1569811, 337155, - -592706, 463856, 1569811, -4065187, -1172526, -2549063, 1352915, -335007, -173946, 2626373, - -2641405, -201863, 869731, -360777, -841814, 1260573, 719407, -1625645, -1928440, -3156801, - -435939, -2415919, -1900523, -1041530, -1301375, -818191, -328565, -753767, -1168231, -1640678, - -884763, 566936, -36975372, -12594992, -7537668, -1956358, -3884798, -178241, -2085207, -2780991, - -3356517, 4181151, 135291, -1640678, -360777, -6176163, -3459596, -3025805, 5059472, -4249870, - -8890582, 719407, 1136019, 680752, -3242700, -889058, 1924145, -4123169, -382252, -4204773, - -1206886, 2325725, -1969243, 558346, 4606353, 485331, -897648, -1118839, 1286343, 1404454, - 1191853, -1370095, -204011, 1460289, 2059437, 1202591, 730144, -3854733, 779537, -193274, - -1896228, -734439, 431644, -526134, -1917703, -1309965, -1990717, -592706, 161061, 283468, - -253403, -1432372, -201863, -1114544, -34360, -24556476, 5686537, 373662, -3000035, 4410932, - -2785286, -2143189, 1108102, -4140349, -2480344, -874026, 1722282, -3264175, 4471061, 105227, - -122407, 2100239, 2083059, 3287798, -352187, 4524748, 6485401, 4696547, 1479616, 4020090, - -1303523, 2557653, -2961380, -3008625, -1264868, 384400, 1962800, -1576253, -2843268, -1522566, - -73014, 1767379, -2748779, 1995012, 676457, 1541893, -704375, -2491081, -3380139, -4000762, - 1045825, -2040110, 1088774, -4243428, -1239098, 1928440, -2692945, 457414, -1894081, 1301375, - -614180, 1264868, 287763, -743029, -75162, -1698660, 3193308, 1363652, 16428250, 27124866, - 7870528, 7054484, 9792525, 7939247, 1567663, 6300717, 5607080, 3058017, 11871290, 2836826, - 2025077, 5147519, 4765266, 2514703, 2121714, 1262720, 1992865, -1516124, 6008659, -1589138, - 599148, -1868311, 3813931, 206158, -957778, 3154654, 3760244, 1335735, 4984310, -3496104, - -5789616, -1294933, -315680, 1277753, -377957, 2523293, -2302103, 2297808, 5022965, 2168959, - -4425964, -904091, 2293513, 904091, -2156074, 3163244, 1260573, 1879048, 2091649, 2826089, - 944893, -768799, 710817, -2525441, -648540, 2385854, 2190433, -1211181, -15032, 597000, - -1054415, 62281320, 6448894, -627065, 3895535, -118112, 5364414, 60130, 1473174, 672162, - 5652177, 2619930, -2267743, 1881196, 2733747, 1440962, -3345780, -7045894, -3186866, -2961380, - 1292785, -4327180, -715112, -277025, 1206886, 7745974, 4350802, 1458141, 3152506, -4825396, - -246961, -2529736, -919123, -1992865, 2957085, -1114544, 4919885, -2239826, -828929, -2499671, - -1063004, -3609920, -1627793, 828929, 839666, -188979, 96637, -1979980, 1178969, 3356517, - 328565, -1806034, 2164664, -2965675, 1357210, 1305670, -231928, -921271, -569083, -128849, - -496069, 150324, 2074469, -221191, -18129056, -21573620, -4009352, -1202591, -882616, -3429532, - -1417339, 6545530, 3876208, 1380832, 1786706, -2856153, -571231, 4915590, -1808181, 7999377, - -6208375, -1694365, 6524056, -1256278, -727997, -3790309, 4473209, 4943508, 96637, 4872641, - -1769527, 2162516, -96637, -2723009, -425202, -2153926, -895501, -1395864, 2695092, -1977833, - -466004, -3045132, 2068027, -1580548, 4509716, -7106024, 2993592, 2482491, -4290673, 94489, - -2832531, 768799, -3223373, 1030792, 1355062, -4097399, -612033, -1488206, -6098854, -3532611, - -1685775, -3030100, -652835, -504659, 341450, -2476049, 360777, -4793184, 1352915, 597000, - -1644973, 609885, -1642825, -435939, -1065152, -491774, -15934329, -9137543, -12360916, -6345814, - -8257075, -934155, 7969312, -8325794, 6405944, 4086662, -4537633, 9083856, -1436667, 1767379, - -5931350, -639950, -2637110, -380105, 38655, 2237678, 1095217, 4739497, 9092446, -2463164, - 1254131, -4350802, -4541928, -4037269, 919123, 3777424, -1331440, -1324997, -1206886, -2813204, - 3152506, -994285, -210453, -2755222, -2164664, -1836099, -2836826, -244813, -124554, -2405182, - 1571958, -3678640, 1357210, -2138894, -382252, 1324997, -2712272, 3345780, -5830418, -1821066, - 549756, -1735167, -3111704, 1518271, -858993, -3508988, 5746666, 3242700, 794569, 1088774, - 1153199, 1402307, -2905546, -1913408, 738734, -1041530, -2014340, 2162516, -44373456, -5072357, - 3592740, -3244848, 7372312, 3408057, -8974334, 1224066, 1520418, -2886218, -7514046, -2776696, - -1823214, 2158221, 549756, -6947110, -2617783, -3700114, -6687264, -5630702, -13118978, -6820408, - -7657927, -9292162, 7402376, -4932770, 2714419, 5557688, -3998615, -6294275, -2420214, -1342177, - 1522566, 4179003, 2430952, -5209796, -6478958, 5136781, 3214783, 4067334, 5710159, 846109, - -10737, 2259153, -257698, -2497524, 1458141, -1337882, -852551, 3369402, 8544837, -2806761, - -4252018, 2010045, -2703682, -234076, 4410932, -8411693, -100932, -2757369, -444529, -152471, - 68719, -977105, 1702955, -2484639, 3077344, 3352222, 1421634, -169651, -4295, -2817499, - 35553740, 31005368, 8398809, 18852758, 5216238, 10857677, -1760937, -1722282, 5276368, 7133941, - 3788161, -12311524, -4082367, 7675107, 8669391, -3197603, -4179003, 1406602, 3609920, 4099546, - 609885, -6405944, -13758928, -5171141, 7509751, -667867, 7718056, -1829656, -2456721, 1559073, - -6397354, -3708704, -3721589, 7067369, -8813273, -6081674, 1582696, 1473174, -2269890, -283468, - -2527588, 2643552, 3603478, 3090229, 6981470, 4063039, 118112, -5718749, 5377299, -513249, - 2978560, -2798171, 2078764, 4249870, -648540, -1144609, -2662880, -3161096, 1934883, 427349, - 2735894, -2735894, 2284923, 5519033, -1161789, -3034395, 3848291, 4999342, -2033667, 2226941, - 2506114, 1999307, 4778151, 4075924, 43115028, 8046621, -8452496, 7013682, 4524748, -8162586, - -1864016, 4181151, 210453, 1346472, -710817, -1700807, -9075266, -8817568, 3865471, 8347269, - 8551280, -8489003, -17278654, 2415919, -337155, -6899865, -8877697, -1552631, 4320737, -3036542, - 6448894, 10488310, -4015795, -3425237, -1496796, -1554778, -2130304, -16041703, 8291435, 7636452, - -384400, 4922033, -4954245, -1548336, -4516158, 6466074, 6822556, 766652, -1821066, -2527588, - 3760244, 923418, -2351495, -4071629, -83752, 3414499, -5297842, -3234110, -2929168, 874026, - 1563368, -6554120, 3238405, 7221988, -5997922, -83752, -1520418, -1022202, -146029, 715112, - 304943, -425202, 1194001, -1958505, -3964255, -4563403, -2106682, -1120987, -2426657, -4576288, - -3444564, -1101659, 3193308, -1541893, -11821897, -7793218, 1112397, 10692321, -10767483, 7645042, - 3489661, 1662152, 2173254, 1833951, 6968585, 11291469, 294205, 3390877, 1239098, -9738838, - -8845485, 8607114, 1155346, -10063108, 5912023, -8594230, 1398012, 10526965, -689342, -2899103, - 12023761, 1857573, 805306, 970663, 341450, 1065152, -5312875, 3154654, 4836133, 7924215, - -6324340, -3146064, 1217623, 1084479, -2909840, -5716602, 3624953, -2098092, 2534031, 1331440, - -1999307, -1861868, 798864, 3594888, -2757369, -1228361, -629213, 2057289, -5787469, -2712272, - 2665027, 558346, -1962800, -1022202, 2409477, -2452426, 747324, -1664300, -416612, 1941325, - 558346, 1129576, -4995047, -3562675, 1322850, -46364172, -42567420, -9519795, -19722490, -17319456, - -9809705, -2978560, -7365869, -8871255, 6027987, 1608465, -2059437, 10112500, 3712999, 12150462, - 9414568, 2703682, 3770981, 4428112, -18631568, 8778913, -1438814, -3951370, -3489661, -11029476, - -3412352, -3833258, 10589242, -3547643, -6324340, -3158949, 1685775, -1389422, -2113124, 2325725, - -2800319, -1825361, 6478958, -6360847, -554051, -2063732, 11654394, 4617090, 4660040, -8974334, - 691490, 7971460, -4191888, 1896228, 38655, 1930588, 51540, 661425, -612033, 5078799, - -663572, -1666447, 3704409, -2639258, 2076617, 4425964, -2074469, -3088082, 1372242, 1687922, - -3330747, -1370095, -6146098, -4872641, 1612760, -562641, -1082332, -115964, 809601, -397284, - -3899830, -1838246, -29038274, 61319248, 38461432, 12375948, 3734474, 4234838, 4316442, 6902013, - 6012954, 13000866, 25909390, 1501091, 2922725, 5671505, 5284958, 6700149, -4872641, 25209310, - 17914308, -16688095, 12317966, 2312840, -2720862, 6075231, 15184857, -14248554, -4093104, 1185411, - -11879880, -8057359, -8495445, 17323750, -785979, -3058017, 2282775, 972810, -5188321, -13879187, - 9620727, 7885560, -2372970, 4307852, 9865540, -6560563, 5368709, 569083, -2585570, 7812546, - 6646462, 1563368, 891206, 805306, 5353677, 7580618, 55835, -1363652, -81604, -2394444, - 5306432, 1116692, -2160369, -2649995, -1943473, 4039417, 1864016, 9176198, -2774549, 3281355, - -2042257, 2289218, -3745212, -1329292, 1127429, -2035815, -2619930, 231928, 444529, 1176821, - 2482491, 66413080, -23407572, -22993108, 10413148, 2559801, -8701604, -7662222, -12169790, -12062416, - -8821863, -7475391, 10997264, 2564096, 1329292, -6236293, -5443871, -19441170, -19327, -7683697, - -13361643, 11134703, 7406671, 2297808, 6884833, 1934883, -2342905, -4305705, -362925, -3637837, - 5634997, 9543417, -10129680, -3728032, 148176, 5214091, 13228499, 3983582, 17742510, -9096741, - 5600638, 14796162, 8718784, -7361574, -2192581, 1741609, -3749507, 6412386, -992137, 386547, - 9448928, 5214091, 1516124, 942745, -229781, -3910568, -109522, 1200443, -4239133, -2332167, - 4194036, -1561221, -8040179, -1093069, 244813, -1312113, -8373039, 2269890, 1728724, 2190433, - 2345052, -1651415, -3472481, -1086627, -1750199, 6912750, 2918430, -2553358, 1902671, -521839, - 1443109, 210453, 21324512, 40516572, 15921444, 10861972, 12704513, -3682935, 4097399, -11547020, - 20158430, 7952132, 19366008, 5806796, 7395934, -17637284, 22078280, 32708324, 4179003, 21214990, - -4221953, -17173426, -16995186, 15571404, -4973572, 12438225, 2334315, 4999342, -9494025, 9633612, - -3302830, -3408057, 15908559, 11053098, -8276402, 14854144, 1717987, 2733747, -2933463, -11160473, - 3167539, 856846, -6167573, -7022272, 6618545, 9238475, 3085934, -3225521, 4413079, 375810, - 9874130, -5894843, -796716, -9734543, 1206886, 9564892, 6489696, -4413079, 34360, 3369402, - -8596377, -637803, -5847598, -3283503, 1874753, 2295660, 5892695, -6831146, 3032247, -7859790, - 758062, 9760313, 3498251, 1928440, -6107444, 919123, 807454, -10176925, -2630668, 1185411, - 1806034, 4032974, 1711545, -219043, -47324096, -2581275, -10690174, 13432510, -10234907, 11048803, - 332860, 8856223, -1232656, 7638600, -23650238, 6949257, -2778844, -8534100, 4155381, -10393821, - 6371584, -10492605, -5538361, -23179938, 13185550, 27754078, -10896332, -3695819, -3176128, -4561256, - 4228396, 5493263, 8046621, -20620138, 6154688, -12852690, -3676492, -740882, 10567767, 3987877, - -5312875, 2188286, 2250563, 7511898, 7713762, -12899934, -4236985, 1808181, -9373766, -8409546, - -1584843, -6023692, 2542621, 7136088, 964220, 1191853, -1694365, 6650757, 18107582, 10161893, - -11113228, 2190433, 4112431, -5564130, 6386617, 1606318, -7112466, -730144, 8160438, 818191, - 7812546, -10554882, -2439542, 6251325, 313533, -3504693, -7292855, -605590, -3863323, 5982890, - -1698660, 3719442, -1788854, -822486, -86872160, -32600950, 17639430, 6358699, -11158325, 12345883, - 10176925, 16299401, -3938485, -7112466, 14239964, 631360, -9590662, 19393924, -21706764, -28245852, - -13344463, -15141907, 9910637, 14280766, -322123, 3715147, 22486302, 9940702, -22771916, -10249939, - -14005888, 4239133, -21144124, -18406082, -1112397, 2905546, -8083129, -8800388, -12882754, -6644315, - -11785390, -11506217, -4327180, 1050120, -4198331, -622770, -7941395, -1166084, -6079526, -13380971, - 29066192, 2422362, 6895570, -11781095, 7720204, -691490, 3964255, -9444633, -354335, -1471026, - -7876970, -4881231, -3571265, 9513353, 6927782, 7462506, 4632122, 5804649, -1301375, 165356, - -6811818, -1172526, -294205, -453119, 8961449, 2508261, 5272073, 5544803, -3992172, -9560597, - 4172561, -3620658, -1677185, 4024384, 11478300, -1166084, 45567456, 16728898, 36717676, 5774584, - 2501819, -14693083, 5677947, 21960168, 8306467, 1597728, 14798310, -13198435, -5849746, 12004434, - -9083856, 4187593, 21165598, 6801081, 2944200, 6743099, -3777424, 9195525, -6906308, 255551, - 3657165, 1247688, -5310727, -5785321, 2362232, 21751862, -6949257, 5403069, -19945828, -10690174, - 9255655, 22917946, -17506286, 165356, 11128260, 2802466, 4297115, -14532022, -4986457, -12556337, - -21906480, -5787469, -12135430, -12902082, 10546292, 4200478, 3715147, -7533373, -4522601, -1479616, - -21036750, -1960653, 11963631, -8358007, 9622874, 19552838, 3081639, 12955769, 8643622, 751619, - -3788161, 11244224, -14072460, -648540, -734439, 8948564, 4438849, 8246337, 435939, 9143985, - -450972, 1909113, 1513976, 9732396, 188979, 118112, 8828305, -4679367, 5546951, 1939178, - 1589138, -2798171, 55334212, -12141873, -17001628, 2725157, 12721693, 10357314, 10587094, -3079492, - 11420318, 3592740, -13587129, -27174258, 18193482, 4898410, 13159780, 7872675, -7243463, 3210488, - -10417443, -17768280, 18457622, -11544872, -22125524, 2368675, -3635690, 2750927, -2209761, -2214056, - -5626407, -8742406, 6506876, 14940044, -21569326, 21109764, -18251464, -23776938, 2302103, 6414534, - -13449690, 10617159, -1915555, 6749541, -11583527, -5697274, 19666656, 8098161, 19913616, 5349382, - 1498944, 6401649, -70867, 811749, 10426033, -839666, 1829656, -9242770, -6362994, -5441724, - 7337952, -7168301, -6197638, 11944304, -362925, 13368086, 2014340, -9627169, 15893526, 12455405, - -1030792, 8147553, -8166881, -13320841, 5138929, -4833986, -9663676, 904091, 8482560, 11626476, - -4374424, 3678640, 5581310, -695785, 2381559, -11504070, 4425964, 4082367, -5798206, 46366320, - 56493852, -8665097, 345745, -28428388, -3214783, -20746840, -15513422, -4958540, -10608569, 15992311, - 8590, 12403866, -26530012, 22043920, -16707423, 22512072, 801011, 17873506, -6459631, 22529250, - 7410966, -10735271, 4754529, -16020228, 10625749, -8931384, 25372520, 7554848, 16677358, -27758374, - -15893526, -6818261, -14061723, -5896990, -9622874, 893353, 34297460, -15861314, 17246442, 29059748, - 4121021, 12773233, 171799, -6526203, -13569949, -10359461, 1445257, -7479686, 17549236, -11381663, - 8046621, 21221434, -2793876, -1763084, -1700807, 17353816, 18769008, 5869073, -8714489, -7649337, - -4602058, 7327214, -17194902, 3219078, -3083787, -4743792, 242666, 11340861, 1013612, 16063178, - 14718853, 2905546, 3532611, -7002944, -350040, 16514149, -2132451, 968515, 6932077, -8834748, - 169651, -10110353, -10995116, 1584843, 1586990, -2214056, -44027708, -39451424, 17572858, -5233418, - 21738976, -12369506, -10211285, -14763950, -12116103, -5602785, -34744136, -12738873, 13380971, 18683108, - 7715909, -24208584, -6871948, -11617887, 10275709, 35031900, 19621558, 8568460, 1382980, 2665027, - 1831804, 6165426, 18129056, 1483911, 4778151, -10295037, 867583, -14761803, 5804649, 7241315, - 13123273, 1722282, -8924942, -4468914, 17295834, -8003672, 6551973, 3566970, 6298570, 22091164, - -12236362, -18610094, 7048042, 15760382, 4198331, 15751793, 18895708, 9141838, 13114683, 5085242, - 2856153, 10404558, 31469226, -17452600, 23622, 5207648, 2832531, -13526999, -2362232, 10499048, - -137439, -12131135, 4881231, 22851374, -18522046, 6088116, -17540646, 10204842, 6938520, 2845416, - 715112, -8257075, -8229158, 16084653, 8699456, 3309272, -4870493, 11280732, -1580548, 70867, - -7786776, 8321499, 3109556, -88624504, -30934502, -1988570, -8843338, -21854942, 13350906, 17828410, - 30077656, 9884867, 18910742, -17559974, -37054832, 17257178, -8757438, 927713, -19952270, 19628000, - -11787538, -932008, 18240726, -50549616, 4870493, 26289494, -49063560, -12970801, -17390322, 2372970, - 1816771, 12000139, -13653701, 15906411, 2254858, -25722560, -13269301, 3038689, -3315715, -12745315, - 11196980, 29903710, 6371584, 8269960, -4818954, -7449621, 17426830, 3180423, -8787503, -42964704, - -6869800, 5413807, -21809844, 10337986, 8770323, 1735167, -16864190, -15062450, -17978734, 38558068, - 10198400, -5886253, 7430294, -32789928, 3811784, -15354508, -17673790, 17061758, -2957085, 212601, - -11162620, -41023380, 5486821, 12457553, 7159711, -3000035, 24212878, 803159, -10222022, -1629940, - -15981573, 25132002, 13640816, 7028714, -4209068, 1707250, 8044474, -7483981, 3115999, 3463891, - 1144609, 94038312, 23684598, 24270860, 20620138, -6004365, 811749, 96705480, 27930172, -8001524, - 59075128, -33137820, 24646670, 5179731, 15064598, 24144158, -7464653, -16855600, 18204218, -3311420, - -58407260, 14933601, 15146202, 12363063, 27805618, 17613660, 18161270, -16454020, 3627100, -15889232, - -8289287, 17310866, 5746666, -34095596, -20358144, -28576564, -42543800, -6515466, 8776766, 20781200, - 17940078, 15455440, 12962211, -6300717, 22254374, 12380243, -27081916, -10361609, 7224135, 20396800, - 489626, 4398047, 35912368, -6431714, -3040837, -9305047, -1872606, 18300856, -15629386, 270583, - -22106196, -19643032, -12586402, 23008140, 31621696, -9176198, 2555506, -6094559, -19630148, -13305809, - 5100274, -22739704, -6045167, -6077379, -14699526, 40282500, 8826158, 13475460, 11744588, -1168231, - 51540, 6959995, 2115272, 12668006, 7984344, 225486, -1282048, 95657512, 56566868, 4024384, - 35931696, 27376122, 7872675, 41424960, 11731703, -186831, -12839805, -9603547, -26989574, -73398840, - -5390184, 7078106, -24983824, -14323716, -2765959, 51150912, 16823386, -13346611, 586263, 3498251, - -7271380, 21532818, -3575560, -13365938, -9010841, -12603582, 8158291, -18491982, -44959716, 955630, - -23435490, -36494336, 7209103, 15644418, 22874996, 12771085, 20255066, -13831942, -38716984, -25374666, - -34819300, 13623636, 32772748, 26862872, 17486960, 32575180, 904091, 20330228, 44397076, -36758476, - 6680822, -16634408, 236223, 12668006, 13284334, 21479132, -1879048, -44914620, -34574488, 7383049, - -9728101, -12818330, -8486855, -9861245, -30633854, 2647847, 20869246, -2291365, 15915001, -9590662, - -753767, -1784559, 7990787, 30404074, 21545704, 18509162, -17538498, 968515, -10526965, 1202591, - -28144920, 5626407, 4715874, 3027952, -526134, -3485366, -8074539, 7011534, 360777, 12691628, - 23295902, -47794396, 5918465, -36582384, 16361678, -69844760, -1891933, -23173496, -36024040, 64488932, - 36483600, -23008140, -57917632, -14660871, -21124796, -50626928, 39397736, 2100239, -34980360, -13015898, - 20244328, -33133526, -22529250, -17409650, -39247412, -15068893, -783832, -31767726, -28797756, 40441412, - -15088220, -12625056, -3719442, -9040906, 34400540, -38102804, -17787608, 8046621, -10136123, -42950, - -8630737, 19834158, -36105644, 12867722, -57735096, 5877663, -16499117, -23059680, 60662120, 6302865, - -22400402, 11566347, 12689481, -48960480, 33986076, -8284992, -10526965, -3706557, 19441170, -8096014, - 880468, -23444078, 12773233, 15891379, 27309550, -23570780, -60438780, 42215232, -4818954, 17433272, - 20684562, -12517682, 11942157, 31215822, -39844412, 2145336, -14027363, -4333622, -41360536, 14124000, - -6418829, 1670742, -1020055, 5486821, -6949257, -6249178, 11405286, -10471130, 8265665, 2433099, - -7756711, 4683662, 1286343, -91293824, -50906100, 11433203, -32469952, 3936338, -23474144, -12146168, - -34415572, -23673860, 17315160, 51292648, 53873924, 8579197, 38008312, -26252988, 66413080, 48773648, - -38871600, -34948148, 10986526, 10971494, 56130928, 20383914, 35933844, -12955769, 14390288, -7290707, - -6045167, -11894912, 52478056, 23504208, 50264004, 45674828, 8755291, -2692945, -22254374, 22050362, - -2656437, -45977624, -30683246, -8740258, -23789824, -5304285, -24449102, -21431886, 14484777, -6489696, - -15485505, 38394860, 45221712, -26031796, -8729521, 61725124, 25144886, -42142220, -41472204, -14929306, - 15567109, -1956358, -7748121, -29983166, 25297358, 7825431, -9803263, 7052337, 6925635, -37175088, - -16421807, 3560528, -14070313, -18036716, -19557134, 50502372, -39593156, -35407712, 14510547, 25933012, - 36855116, -18674518, -6032282, 3607773, -17038136, 17686676, -2695092, 13297219, -11138998, -4511863, - 3380139, 5211943, -6416681, -5497558, -539018, -6730214, -34724812, -51017768, -43802224, -380105, - -34462816, -44362716, 11463268, -3824669, -61757336, 44122200, 7939247, -3777424, 22073984, 68012952, - 65107408, 28011776, -79499848, 29545080, 21234318, -78024520, -966368, -37679748, -18156974, 40155796, - -47042776, 27376122, 135291, -8136816, -16716013, 8083129, -3768834, 13496935, -8920647, -41790032, - 40733468, 19179176, 48756468, -5076652, -16194174, -23510650, 19859928, -21189222, 57569740, 12068858, - 34662532, -44719200, 35815732, 1374390, 12816182, -29029684, 9962177, -34475704, -5218386, -35362612, - 14682346, 24451248, -46724948, 1902671, -38454988, 18116172, 23098334, 22262962, -2800319, -66363688, - 388695, 17534204, -5454609, 29512868, -63226212, 16297253, -26143466, 8540542, -22104050, 4638565, - 16700980, -7125351, 53687, -6880538, -7958575, 2568391, -16814796, 21554294, 5156108, -508954, - -26972394, -2484639, 3184718, -1909113, 11766063, -11725261, 2944200, -1191853, -5690832, 95575904, - 115749368, 48541720, 40306120, -66685808, 64156072, 93355408, -102114992, 12309376, 66108136, 11622182, - -121777352, -12045236, -66138200, 21436182, 24144158, -30655330, -12105365, 22308060, -55941948, -4346507, - -21951578, -27339614, 10853382, -42264624, 45610404, 32669668, 59002112, -29124174, 9607842, -6249178, - -24122684, 74683040, -1509681, -34183644, -16254304, 16241419, -16101832, -19391778, -22952306, 38062000, - 14046691, 52862456, -3779571, 19469086, 69164008, -43770012, 9143985, -29676076, 54874648, -21434034, - 25649544, 11035918, -2229088, -20669530, -39157216, -26310970, 10988674, 49770080, -46733540, 42015516, - 49484464, 25033216, 57840324, -28138478, -23053236, 37847252, -6564858, -6867653, -53422952, -3231963, - -44081396, 9199820, 55778740, 27526446, 14027363, 25733296, 15197742, -23830626, -10838350, -41725608, - 47341276, 2136746, -18848464, 12668006, 4243428, -21859236, 11493332, -3000035, 13565654, -2119566, - 20596516, 10018011, -44154412, -151910848, -63211180, -109354160, -58510340, -46986944, 25456272, -70362304, - -71182640, -34628172, -95236608, -31501438, 72271416, -2652142, 3096672, -19935090, -16685948, -9504763, - 6762426, -1649268, -63748052, -10653666, -12438225, 92204360, -11839077, 81915760, 6856916, -22701050, - 21601538, 67330056, -3371549, 154619, -27180700, -8540542, -28544352, 15564961, -11993696, -24970940, - 12436078, -33539400, 26890790, 26605174, 5373004, 58826020, -26817776, 29676076, -25071872, 32804960, - 22694608, 61978524, 8641474, -26167088, 33730524, -4952098, -20920786, 78855600, -5881958, -5480379, - 45853072, 13434658, 61710092, -48741436, -46849504, -7859790, -20287278, -7191923, -75831944, -17987324, - 26332444, -11042361, -32637456, -54123032, 3620658, 15539192, -26686780, -26345330, -46409268, -17332340, - 19709604, 19522774, 41089952, -7419556, -3794604, -2302103, 13700946, 15556372, 2772402, 25159918, - 7146826, 1917703, -3517578, -3377992, 18616536, -8875550, 18393198, 19823422, -925565, }, + 5398774, -3060164, 1363652, -1702955, 433792, -1239098, -309238, 92342, 2585570, -1634235, + 1140314, -2660732, 2018635, -2989297, -4069482, -3554086, 854699, -343597, 588411, 113817, + -1788854, 1082332, 1831804, -974958, 1453846, -184684, -586263, -1198296, -195421, 395137, + 983548, -657130, 1434519, -532576, 906238, 1309965, -899796, -846109, 77309, -867583, + 259846, 53687, -377957, 878321, 152471, -354335, 3665755, -3788161, -702227, -794569, + -882616, -268435, -62277, -717260, -523986, 10737, 154619, -523986, 304943, -1172526, + -350040, -186831, 710817, -4028679, -382252, 837519, -386547, -485331, 350040, 81604, + 283468, 1861868, -897648, -590558, -994285, -180389, 545461, 839666, -852551, -633508, + 989990, -904091, -1352915, -143881, -369367, 476741, -401579, -380105, 223338, 420907, + -833224, 279173, 315680, -12934294, -8804683, -3560528, -4093104, -2267743, -2145336, -2010045, + -925565, -2426657, -1932735, -826781, -1507534, -184684, -549756, -1292785, -1778117, -1967095, + -788127, -1133871, -2003602, -246961, -2503966, 23622, -197569, -330712, -1518271, -244813, + -1151051, 23622, -1481764, -925565, 502511, -1069447, 184684, -2503966, -470299, 1245541, + 749472, -30065, -371515, -708670, 199716, 246961, 1163936, -682900, -120259, -343597, + -17012366, -938450, 2201171, -47245, 663572, -128849, 27917, -1374390, 1462436, 560493, + 1758789, 1234803, 3594888, 2622078, 212601, -1428077, -805306, -345745, 680752, -491774, + -3154654, -2854006, -1462436, -450972, 148176, 390842, 594853, -124554, 109522, 337155, + -654983, -100932, -81604, -1960653, 1157494, 461709, -206158, -32212, -736587, -1093069, + 682900, 246961, -697932, 665720, 584116, 813896, -358630, 19078244, 13406740, 2628520, + 5192616, 1069447, 1720134, 4226248, 2181844, 667867, 2549063, 1030792, -1116692, -560493, + 886911, 1468879, -2585570, -352187, -1550483, 3440269, 1713692, 876173, 1713692, 869731, + 886911, 38655, -167504, -850404, 1348620, 1627793, 1391569, 1733019, 2100239, 1251983, + 3068754, 689342, -173946, 1088774, 201863, -539018, -242666, -481036, -607738, 10737, + 1423782, 337155, 234076, 824634, 28469190, 12107513, 3657165, 3332895, 2327872, 1443109, + 457414, 111669, 3120294, 633508, 1728724, 2355790, 1241246, -163209, -869731, 4977867, + -453119, -2718714, -1561221, 1239098, 66572, 2662880, 869731, 330712, -493921, -1234803, + -354335, -564788, 1163936, -197569, 481036, 122407, 178241, -633508, 942745, 3459596, + 2181844, 2299955, 2063732, 1713692, 929860, 672162, 388695, 1136019, -959925, 697932, + -455267, 9350144, -9854802, -3015067, -4239133, -3719442, -1984275, -620623, 1402307, -1400159, + 173946, -3682935, 1275605, -1357210, -3289945, 852551, -2345052, -3186866, -2237678, 3002182, + 2304250, -1088774, 1183264, -2117419, 837519, -3835406, 221191, 607738, -627065, -914828, + 818191, -3038689, -1350767, 369367, -1035087, -910533, -667867, 227633, 339302, 1505386, + 107374, 2609193, -998580, -738734, -809601, -1316408, -386547, -667867, 386547, -1136019, + -1711545, -33797096, -17166984, -6131066, -4840428, -5231270, -3313567, -4520453, -2976412, -4924180, + -919123, -2218351, -594853, 236223, -2074469, -554051, 300648, 34360, -3141769, -2061584, + -1434519, 300648, -4228396, 425202, -1930588, -3732327, 300648, -45097, 238371, -90194, + -1340030, -1007170, 23622, -281320, -66572, -1393717, 25770, 380105, 1110249, 431644, + -1473174, 833224, -1471026, 985695, -2516851, -1702955, 358630, -1380832, 51540, -521839, + -2025077, -19986630, 10479720, 4413079, 1623498, 2716567, 491774, 734439, 2368675, 2669322, + 1428077, 1780264, -1359357, -562641, -2113124, 2561948, 521839, 468151, 3474629, 120259, + -2349347, 4151086, -2761664, 341450, 3412352, -1028645, 886911, 448824, -90194, -1713692, + -420907, 953483, 977105, 171799, -622770, 73014, -1221918, 3917010, 322123, -55835, + -1550483, -768799, -1007170, -925565, 2104534, 2031520, -536871, 206158, -146029, 616328, + 135291, -128849, -429497, 485331, 304943, -588411, -564788, 30094836, 12783970, 3416647, + 6902013, 4007205, 1715839, 3004330, 2587718, 2147, 1887638, 2982855, 689342, 2147, + 1526861, 4202626, -1423782, -777389, -3326452, 841814, 3835406, 1617055, 178241, -2171106, + -1163936, -936303, 4039417, 1247688, 2113124, 1174674, -1917703, -3094524, 3502546, 1913408, + -2151779, -1037235, 3403762, 2856153, -143881, 702227, -356482, 1486059, 955630, -343597, + 693637, -1213328, -562641, 1821066, -966368, -762357, 1958505, 1660005, 929860, 319975, + 408022, 397284, 1398012, 35592392, 7743826, 5922760, 2637110, 2710124, 1172526, 2789581, + 3332895, 5261335, 3262028, -1011465, 4179003, -816044, 1142461, 910533, 3541201, 5175436, + 3367254, -914828, 5826123, -1118839, -571231, -3070902, 852551, -927713, 979253, 1544041, + -1726577, -2454574, -981400, 457414, -1926293, -663572, 923418, 1269163, -2263448, -1977833, + -785979, 730144, 17180, 584116, -801011, -40802, -530428, -798864, 964220, -1346472, + 1294933, -1443109, -461709, -1105954, 266288, -416612, 1453846, 609885, -77309, 4093104, + -15760382, -5095979, -5611375, -3663607, 1007170, -927713, -3354370, 1909113, 176094, 2353642, + -231928, 223338, -3657165, -2630668, -1681480, -2705830, 266288, -2877628, -5469641, 1067299, + 682900, -2579128, -519691, -2342905, 528281, 758062, -410169, -5703717, -1569811, 337155, + -592706, 463856, 1569811, -4065187, -1172526, -2549063, 1352915, -335007, -173946, 2626373, + -2641405, -201863, 869731, -360777, -841814, 1260573, 719407, -1625645, -1928440, -3156801, + -435939, -2415919, -1900523, -1041530, -1301375, -818191, -328565, -753767, -1168231, -1640678, + -884763, 566936, -36975372, -12594992, -7537668, -1956358, -3884798, -178241, -2085207, -2780991, + -3356517, 4181151, 135291, -1640678, -360777, -6176163, -3459596, -3025805, 5059472, -4249870, + -8890582, 719407, 1136019, 680752, -3242700, -889058, 1924145, -4123169, -382252, -4204773, + -1206886, 2325725, -1969243, 558346, 4606353, 485331, -897648, -1118839, 1286343, 1404454, + 1191853, -1370095, -204011, 1460289, 2059437, 1202591, 730144, -3854733, 779537, -193274, + -1896228, -734439, 431644, -526134, -1917703, -1309965, -1990717, -592706, 161061, 283468, + -253403, -1432372, -201863, -1114544, -34360, -24556476, 5686537, 373662, -3000035, 4410932, + -2785286, -2143189, 1108102, -4140349, -2480344, -874026, 1722282, -3264175, 4471061, 105227, + -122407, 2100239, 2083059, 3287798, -352187, 4524748, 6485401, 4696547, 1479616, 4020090, + -1303523, 2557653, -2961380, -3008625, -1264868, 384400, 1962800, -1576253, -2843268, -1522566, + -73014, 1767379, -2748779, 1995012, 676457, 1541893, -704375, -2491081, -3380139, -4000762, + 1045825, -2040110, 1088774, -4243428, -1239098, 1928440, -2692945, 457414, -1894081, 1301375, + -614180, 1264868, 287763, -743029, -75162, -1698660, 3193308, 1363652, 16428250, 27124866, + 7870528, 7054484, 9792525, 7939247, 1567663, 6300717, 5607080, 3058017, 11871290, 2836826, + 2025077, 5147519, 4765266, 2514703, 2121714, 1262720, 1992865, -1516124, 6008659, -1589138, + 599148, -1868311, 3813931, 206158, -957778, 3154654, 3760244, 1335735, 4984310, -3496104, + -5789616, -1294933, -315680, 1277753, -377957, 2523293, -2302103, 2297808, 5022965, 2168959, + -4425964, -904091, 2293513, 904091, -2156074, 3163244, 1260573, 1879048, 2091649, 2826089, + 944893, -768799, 710817, -2525441, -648540, 2385854, 2190433, -1211181, -15032, 597000, + -1054415, 62281320, 6448894, -627065, 3895535, -118112, 5364414, 60130, 1473174, 672162, + 5652177, 2619930, -2267743, 1881196, 2733747, 1440962, -3345780, -7045894, -3186866, -2961380, + 1292785, -4327180, -715112, -277025, 1206886, 7745974, 4350802, 1458141, 3152506, -4825396, + -246961, -2529736, -919123, -1992865, 2957085, -1114544, 4919885, -2239826, -828929, -2499671, + -1063004, -3609920, -1627793, 828929, 839666, -188979, 96637, -1979980, 1178969, 3356517, + 328565, -1806034, 2164664, -2965675, 1357210, 1305670, -231928, -921271, -569083, -128849, + -496069, 150324, 2074469, -221191, -18129056, -21573620, -4009352, -1202591, -882616, -3429532, + -1417339, 6545530, 3876208, 1380832, 1786706, -2856153, -571231, 4915590, -1808181, 7999377, + -6208375, -1694365, 6524056, -1256278, -727997, -3790309, 4473209, 4943508, 96637, 4872641, + -1769527, 2162516, -96637, -2723009, -425202, -2153926, -895501, -1395864, 2695092, -1977833, + -466004, -3045132, 2068027, -1580548, 4509716, -7106024, 2993592, 2482491, -4290673, 94489, + -2832531, 768799, -3223373, 1030792, 1355062, -4097399, -612033, -1488206, -6098854, -3532611, + -1685775, -3030100, -652835, -504659, 341450, -2476049, 360777, -4793184, 1352915, 597000, + -1644973, 609885, -1642825, -435939, -1065152, -491774, -15934329, -9137543, -12360916, -6345814, + -8257075, -934155, 7969312, -8325794, 6405944, 4086662, -4537633, 9083856, -1436667, 1767379, + -5931350, -639950, -2637110, -380105, 38655, 2237678, 1095217, 4739497, 9092446, -2463164, + 1254131, -4350802, -4541928, -4037269, 919123, 3777424, -1331440, -1324997, -1206886, -2813204, + 3152506, -994285, -210453, -2755222, -2164664, -1836099, -2836826, -244813, -124554, -2405182, + 1571958, -3678640, 1357210, -2138894, -382252, 1324997, -2712272, 3345780, -5830418, -1821066, + 549756, -1735167, -3111704, 1518271, -858993, -3508988, 5746666, 3242700, 794569, 1088774, + 1153199, 1402307, -2905546, -1913408, 738734, -1041530, -2014340, 2162516, -44373456, -5072357, + 3592740, -3244848, 7372312, 3408057, -8974334, 1224066, 1520418, -2886218, -7514046, -2776696, + -1823214, 2158221, 549756, -6947110, -2617783, -3700114, -6687264, -5630702, -13118978, -6820408, + -7657927, -9292162, 7402376, -4932770, 2714419, 5557688, -3998615, -6294275, -2420214, -1342177, + 1522566, 4179003, 2430952, -5209796, -6478958, 5136781, 3214783, 4067334, 5710159, 846109, + -10737, 2259153, -257698, -2497524, 1458141, -1337882, -852551, 3369402, 8544837, -2806761, + -4252018, 2010045, -2703682, -234076, 4410932, -8411693, -100932, -2757369, -444529, -152471, + 68719, -977105, 1702955, -2484639, 3077344, 3352222, 1421634, -169651, -4295, -2817499, + 35553740, 31005368, 8398809, 18852758, 5216238, 10857677, -1760937, -1722282, 5276368, 7133941, + 3788161, -12311524, -4082367, 7675107, 8669391, -3197603, -4179003, 1406602, 3609920, 4099546, + 609885, -6405944, -13758928, -5171141, 7509751, -667867, 7718056, -1829656, -2456721, 1559073, + -6397354, -3708704, -3721589, 7067369, -8813273, -6081674, 1582696, 1473174, -2269890, -283468, + -2527588, 2643552, 3603478, 3090229, 6981470, 4063039, 118112, -5718749, 5377299, -513249, + 2978560, -2798171, 2078764, 4249870, -648540, -1144609, -2662880, -3161096, 1934883, 427349, + 2735894, -2735894, 2284923, 5519033, -1161789, -3034395, 3848291, 4999342, -2033667, 2226941, + 2506114, 1999307, 4778151, 4075924, 43115028, 8046621, -8452496, 7013682, 4524748, -8162586, + -1864016, 4181151, 210453, 1346472, -710817, -1700807, -9075266, -8817568, 3865471, 8347269, + 8551280, -8489003, -17278654, 2415919, -337155, -6899865, -8877697, -1552631, 4320737, -3036542, + 6448894, 10488310, -4015795, -3425237, -1496796, -1554778, -2130304, -16041703, 8291435, 7636452, + -384400, 4922033, -4954245, -1548336, -4516158, 6466074, 6822556, 766652, -1821066, -2527588, + 3760244, 923418, -2351495, -4071629, -83752, 3414499, -5297842, -3234110, -2929168, 874026, + 1563368, -6554120, 3238405, 7221988, -5997922, -83752, -1520418, -1022202, -146029, 715112, + 304943, -425202, 1194001, -1958505, -3964255, -4563403, -2106682, -1120987, -2426657, -4576288, + -3444564, -1101659, 3193308, -1541893, -11821897, -7793218, 1112397, 10692321, -10767483, 7645042, + 3489661, 1662152, 2173254, 1833951, 6968585, 11291469, 294205, 3390877, 1239098, -9738838, + -8845485, 8607114, 1155346, -10063108, 5912023, -8594230, 1398012, 10526965, -689342, -2899103, + 12023761, 1857573, 805306, 970663, 341450, 1065152, -5312875, 3154654, 4836133, 7924215, + -6324340, -3146064, 1217623, 1084479, -2909840, -5716602, 3624953, -2098092, 2534031, 1331440, + -1999307, -1861868, 798864, 3594888, -2757369, -1228361, -629213, 2057289, -5787469, -2712272, + 2665027, 558346, -1962800, -1022202, 2409477, -2452426, 747324, -1664300, -416612, 1941325, + 558346, 1129576, -4995047, -3562675, 1322850, -46364172, -42567420, -9519795, -19722490, -17319456, + -9809705, -2978560, -7365869, -8871255, 6027987, 1608465, -2059437, 10112500, 3712999, 12150462, + 9414568, 2703682, 3770981, 4428112, -18631568, 8778913, -1438814, -3951370, -3489661, -11029476, + -3412352, -3833258, 10589242, -3547643, -6324340, -3158949, 1685775, -1389422, -2113124, 2325725, + -2800319, -1825361, 6478958, -6360847, -554051, -2063732, 11654394, 4617090, 4660040, -8974334, + 691490, 7971460, -4191888, 1896228, 38655, 1930588, 51540, 661425, -612033, 5078799, + -663572, -1666447, 3704409, -2639258, 2076617, 4425964, -2074469, -3088082, 1372242, 1687922, + -3330747, -1370095, -6146098, -4872641, 1612760, -562641, -1082332, -115964, 809601, -397284, + -3899830, -1838246, -29038274, 61319248, 38461432, 12375948, 3734474, 4234838, 4316442, 6902013, + 6012954, 13000866, 25909390, 1501091, 2922725, 5671505, 5284958, 6700149, -4872641, 25209310, + 17914308, -16688095, 12317966, 2312840, -2720862, 6075231, 15184857, -14248554, -4093104, 1185411, + -11879880, -8057359, -8495445, 17323750, -785979, -3058017, 2282775, 972810, -5188321, -13879187, + 9620727, 7885560, -2372970, 4307852, 9865540, -6560563, 5368709, 569083, -2585570, 7812546, + 6646462, 1563368, 891206, 805306, 5353677, 7580618, 55835, -1363652, -81604, -2394444, + 5306432, 1116692, -2160369, -2649995, -1943473, 4039417, 1864016, 9176198, -2774549, 3281355, + -2042257, 2289218, -3745212, -1329292, 1127429, -2035815, -2619930, 231928, 444529, 1176821, + 2482491, 66413080, -23407572, -22993108, 10413148, 2559801, -8701604, -7662222, -12169790, -12062416, + -8821863, -7475391, 10997264, 2564096, 1329292, -6236293, -5443871, -19441170, -19327, -7683697, + -13361643, 11134703, 7406671, 2297808, 6884833, 1934883, -2342905, -4305705, -362925, -3637837, + 5634997, 9543417, -10129680, -3728032, 148176, 5214091, 13228499, 3983582, 17742510, -9096741, + 5600638, 14796162, 8718784, -7361574, -2192581, 1741609, -3749507, 6412386, -992137, 386547, + 9448928, 5214091, 1516124, 942745, -229781, -3910568, -109522, 1200443, -4239133, -2332167, + 4194036, -1561221, -8040179, -1093069, 244813, -1312113, -8373039, 2269890, 1728724, 2190433, + 2345052, -1651415, -3472481, -1086627, -1750199, 6912750, 2918430, -2553358, 1902671, -521839, + 1443109, 210453, 21324512, 40516572, 15921444, 10861972, 12704513, -3682935, 4097399, -11547020, + 20158430, 7952132, 19366008, 5806796, 7395934, -17637284, 22078280, 32708324, 4179003, 21214990, + -4221953, -17173426, -16995186, 15571404, -4973572, 12438225, 2334315, 4999342, -9494025, 9633612, + -3302830, -3408057, 15908559, 11053098, -8276402, 14854144, 1717987, 2733747, -2933463, -11160473, + 3167539, 856846, -6167573, -7022272, 6618545, 9238475, 3085934, -3225521, 4413079, 375810, + 9874130, -5894843, -796716, -9734543, 1206886, 9564892, 6489696, -4413079, 34360, 3369402, + -8596377, -637803, -5847598, -3283503, 1874753, 2295660, 5892695, -6831146, 3032247, -7859790, + 758062, 9760313, 3498251, 1928440, -6107444, 919123, 807454, -10176925, -2630668, 1185411, + 1806034, 4032974, 1711545, -219043, -47324096, -2581275, -10690174, 13432510, -10234907, 11048803, + 332860, 8856223, -1232656, 7638600, -23650238, 6949257, -2778844, -8534100, 4155381, -10393821, + 6371584, -10492605, -5538361, -23179938, 13185550, 27754078, -10896332, -3695819, -3176128, -4561256, + 4228396, 5493263, 8046621, -20620138, 6154688, -12852690, -3676492, -740882, 10567767, 3987877, + -5312875, 2188286, 2250563, 7511898, 7713762, -12899934, -4236985, 1808181, -9373766, -8409546, + -1584843, -6023692, 2542621, 7136088, 964220, 1191853, -1694365, 6650757, 18107582, 10161893, + -11113228, 2190433, 4112431, -5564130, 6386617, 1606318, -7112466, -730144, 8160438, 818191, + 7812546, -10554882, -2439542, 6251325, 313533, -3504693, -7292855, -605590, -3863323, 5982890, + -1698660, 3719442, -1788854, -822486, -86872160, -32600950, 17639430, 6358699, -11158325, 12345883, + 10176925, 16299401, -3938485, -7112466, 14239964, 631360, -9590662, 19393924, -21706764, -28245852, + -13344463, -15141907, 9910637, 14280766, -322123, 3715147, 22486302, 9940702, -22771916, -10249939, + -14005888, 4239133, -21144124, -18406082, -1112397, 2905546, -8083129, -8800388, -12882754, -6644315, + -11785390, -11506217, -4327180, 1050120, -4198331, -622770, -7941395, -1166084, -6079526, -13380971, + 29066192, 2422362, 6895570, -11781095, 7720204, -691490, 3964255, -9444633, -354335, -1471026, + -7876970, -4881231, -3571265, 9513353, 6927782, 7462506, 4632122, 5804649, -1301375, 165356, + -6811818, -1172526, -294205, -453119, 8961449, 2508261, 5272073, 5544803, -3992172, -9560597, + 4172561, -3620658, -1677185, 4024384, 11478300, -1166084, 45567456, 16728898, 36717676, 5774584, + 2501819, -14693083, 5677947, 21960168, 8306467, 1597728, 14798310, -13198435, -5849746, 12004434, + -9083856, 4187593, 21165598, 6801081, 2944200, 6743099, -3777424, 9195525, -6906308, 255551, + 3657165, 1247688, -5310727, -5785321, 2362232, 21751862, -6949257, 5403069, -19945828, -10690174, + 9255655, 22917946, -17506286, 165356, 11128260, 2802466, 4297115, -14532022, -4986457, -12556337, + -21906480, -5787469, -12135430, -12902082, 10546292, 4200478, 3715147, -7533373, -4522601, -1479616, + -21036750, -1960653, 11963631, -8358007, 9622874, 19552838, 3081639, 12955769, 8643622, 751619, + -3788161, 11244224, -14072460, -648540, -734439, 8948564, 4438849, 8246337, 435939, 9143985, + -450972, 1909113, 1513976, 9732396, 188979, 118112, 8828305, -4679367, 5546951, 1939178, + 1589138, -2798171, 55334212, -12141873, -17001628, 2725157, 12721693, 10357314, 10587094, -3079492, + 11420318, 3592740, -13587129, -27174258, 18193482, 4898410, 13159780, 7872675, -7243463, 3210488, + -10417443, -17768280, 18457622, -11544872, -22125524, 2368675, -3635690, 2750927, -2209761, -2214056, + -5626407, -8742406, 6506876, 14940044, -21569326, 21109764, -18251464, -23776938, 2302103, 6414534, + -13449690, 10617159, -1915555, 6749541, -11583527, -5697274, 19666656, 8098161, 19913616, 5349382, + 1498944, 6401649, -70867, 811749, 10426033, -839666, 1829656, -9242770, -6362994, -5441724, + 7337952, -7168301, -6197638, 11944304, -362925, 13368086, 2014340, -9627169, 15893526, 12455405, + -1030792, 8147553, -8166881, -13320841, 5138929, -4833986, -9663676, 904091, 8482560, 11626476, + -4374424, 3678640, 5581310, -695785, 2381559, -11504070, 4425964, 4082367, -5798206, 46366320, + 56493852, -8665097, 345745, -28428388, -3214783, -20746840, -15513422, -4958540, -10608569, 15992311, + 8590, 12403866, -26530012, 22043920, -16707423, 22512072, 801011, 17873506, -6459631, 22529250, + 7410966, -10735271, 4754529, -16020228, 10625749, -8931384, 25372520, 7554848, 16677358, -27758374, + -15893526, -6818261, -14061723, -5896990, -9622874, 893353, 34297460, -15861314, 17246442, 29059748, + 4121021, 12773233, 171799, -6526203, -13569949, -10359461, 1445257, -7479686, 17549236, -11381663, + 8046621, 21221434, -2793876, -1763084, -1700807, 17353816, 18769008, 5869073, -8714489, -7649337, + -4602058, 7327214, -17194902, 3219078, -3083787, -4743792, 242666, 11340861, 1013612, 16063178, + 14718853, 2905546, 3532611, -7002944, -350040, 16514149, -2132451, 968515, 6932077, -8834748, + 169651, -10110353, -10995116, 1584843, 1586990, -2214056, -44027708, -39451424, 17572858, -5233418, + 21738976, -12369506, -10211285, -14763950, -12116103, -5602785, -34744136, -12738873, 13380971, 18683108, + 7715909, -24208584, -6871948, -11617887, 10275709, 35031900, 19621558, 8568460, 1382980, 2665027, + 1831804, 6165426, 18129056, 1483911, 4778151, -10295037, 867583, -14761803, 5804649, 7241315, + 13123273, 1722282, -8924942, -4468914, 17295834, -8003672, 6551973, 3566970, 6298570, 22091164, + -12236362, -18610094, 7048042, 15760382, 4198331, 15751793, 18895708, 9141838, 13114683, 5085242, + 2856153, 10404558, 31469226, -17452600, 23622, 5207648, 2832531, -13526999, -2362232, 10499048, + -137439, -12131135, 4881231, 22851374, -18522046, 6088116, -17540646, 10204842, 6938520, 2845416, + 715112, -8257075, -8229158, 16084653, 8699456, 3309272, -4870493, 11280732, -1580548, 70867, + -7786776, 8321499, 3109556, -88624504, -30934502, -1988570, -8843338, -21854942, 13350906, 17828410, + 30077656, 9884867, 18910742, -17559974, -37054832, 17257178, -8757438, 927713, -19952270, 19628000, + -11787538, -932008, 18240726, -50549616, 4870493, 26289494, -49063560, -12970801, -17390322, 2372970, + 1816771, 12000139, -13653701, 15906411, 2254858, -25722560, -13269301, 3038689, -3315715, -12745315, + 11196980, 29903710, 6371584, 8269960, -4818954, -7449621, 17426830, 3180423, -8787503, -42964704, + -6869800, 5413807, -21809844, 10337986, 8770323, 1735167, -16864190, -15062450, -17978734, 38558068, + 10198400, -5886253, 7430294, -32789928, 3811784, -15354508, -17673790, 17061758, -2957085, 212601, + -11162620, -41023380, 5486821, 12457553, 7159711, -3000035, 24212878, 803159, -10222022, -1629940, + -15981573, 25132002, 13640816, 7028714, -4209068, 1707250, 8044474, -7483981, 3115999, 3463891, + 1144609, 94038312, 23684598, 24270860, 20620138, -6004365, 811749, 96705480, 27930172, -8001524, + 59075128, -33137820, 24646670, 5179731, 15064598, 24144158, -7464653, -16855600, 18204218, -3311420, + -58407260, 14933601, 15146202, 12363063, 27805618, 17613660, 18161270, -16454020, 3627100, -15889232, + -8289287, 17310866, 5746666, -34095596, -20358144, -28576564, -42543800, -6515466, 8776766, 20781200, + 17940078, 15455440, 12962211, -6300717, 22254374, 12380243, -27081916, -10361609, 7224135, 20396800, + 489626, 4398047, 35912368, -6431714, -3040837, -9305047, -1872606, 18300856, -15629386, 270583, + -22106196, -19643032, -12586402, 23008140, 31621696, -9176198, 2555506, -6094559, -19630148, -13305809, + 5100274, -22739704, -6045167, -6077379, -14699526, 40282500, 8826158, 13475460, 11744588, -1168231, + 51540, 6959995, 2115272, 12668006, 7984344, 225486, -1282048, 95657512, 56566868, 4024384, + 35931696, 27376122, 7872675, 41424960, 11731703, -186831, -12839805, -9603547, -26989574, -73398840, + -5390184, 7078106, -24983824, -14323716, -2765959, 51150912, 16823386, -13346611, 586263, 3498251, + -7271380, 21532818, -3575560, -13365938, -9010841, -12603582, 8158291, -18491982, -44959716, 955630, + -23435490, -36494336, 7209103, 15644418, 22874996, 12771085, 20255066, -13831942, -38716984, -25374666, + -34819300, 13623636, 32772748, 26862872, 17486960, 32575180, 904091, 20330228, 44397076, -36758476, + 6680822, -16634408, 236223, 12668006, 13284334, 21479132, -1879048, -44914620, -34574488, 7383049, + -9728101, -12818330, -8486855, -9861245, -30633854, 2647847, 20869246, -2291365, 15915001, -9590662, + -753767, -1784559, 7990787, 30404074, 21545704, 18509162, -17538498, 968515, -10526965, 1202591, + -28144920, 5626407, 4715874, 3027952, -526134, -3485366, -8074539, 7011534, 360777, 12691628, + 23295902, -47794396, 5918465, -36582384, 16361678, -69844760, -1891933, -23173496, -36024040, 64488932, + 36483600, -23008140, -57917632, -14660871, -21124796, -50626928, 39397736, 2100239, -34980360, -13015898, + 20244328, -33133526, -22529250, -17409650, -39247412, -15068893, -783832, -31767726, -28797756, 40441412, + -15088220, -12625056, -3719442, -9040906, 34400540, -38102804, -17787608, 8046621, -10136123, -42950, + -8630737, 19834158, -36105644, 12867722, -57735096, 5877663, -16499117, -23059680, 60662120, 6302865, + -22400402, 11566347, 12689481, -48960480, 33986076, -8284992, -10526965, -3706557, 19441170, -8096014, + 880468, -23444078, 12773233, 15891379, 27309550, -23570780, -60438780, 42215232, -4818954, 17433272, + 20684562, -12517682, 11942157, 31215822, -39844412, 2145336, -14027363, -4333622, -41360536, 14124000, + -6418829, 1670742, -1020055, 5486821, -6949257, -6249178, 11405286, -10471130, 8265665, 2433099, + -7756711, 4683662, 1286343, -91293824, -50906100, 11433203, -32469952, 3936338, -23474144, -12146168, + -34415572, -23673860, 17315160, 51292648, 53873924, 8579197, 38008312, -26252988, 66413080, 48773648, + -38871600, -34948148, 10986526, 10971494, 56130928, 20383914, 35933844, -12955769, 14390288, -7290707, + -6045167, -11894912, 52478056, 23504208, 50264004, 45674828, 8755291, -2692945, -22254374, 22050362, + -2656437, -45977624, -30683246, -8740258, -23789824, -5304285, -24449102, -21431886, 14484777, -6489696, + -15485505, 38394860, 45221712, -26031796, -8729521, 61725124, 25144886, -42142220, -41472204, -14929306, + 15567109, -1956358, -7748121, -29983166, 25297358, 7825431, -9803263, 7052337, 6925635, -37175088, + -16421807, 3560528, -14070313, -18036716, -19557134, 50502372, -39593156, -35407712, 14510547, 25933012, + 36855116, -18674518, -6032282, 3607773, -17038136, 17686676, -2695092, 13297219, -11138998, -4511863, + 3380139, 5211943, -6416681, -5497558, -539018, -6730214, -34724812, -51017768, -43802224, -380105, + -34462816, -44362716, 11463268, -3824669, -61757336, 44122200, 7939247, -3777424, 22073984, 68012952, + 65107408, 28011776, -79499848, 29545080, 21234318, -78024520, -966368, -37679748, -18156974, 40155796, + -47042776, 27376122, 135291, -8136816, -16716013, 8083129, -3768834, 13496935, -8920647, -41790032, + 40733468, 19179176, 48756468, -5076652, -16194174, -23510650, 19859928, -21189222, 57569740, 12068858, + 34662532, -44719200, 35815732, 1374390, 12816182, -29029684, 9962177, -34475704, -5218386, -35362612, + 14682346, 24451248, -46724948, 1902671, -38454988, 18116172, 23098334, 22262962, -2800319, -66363688, + 388695, 17534204, -5454609, 29512868, -63226212, 16297253, -26143466, 8540542, -22104050, 4638565, + 16700980, -7125351, 53687, -6880538, -7958575, 2568391, -16814796, 21554294, 5156108, -508954, + -26972394, -2484639, 3184718, -1909113, 11766063, -11725261, 2944200, -1191853, -5690832, 95575904, + 115749368, 48541720, 40306120, -66685808, 64156072, 93355408, -102114992, 12309376, 66108136, 11622182, + -121777352, -12045236, -66138200, 21436182, 24144158, -30655330, -12105365, 22308060, -55941948, -4346507, + -21951578, -27339614, 10853382, -42264624, 45610404, 32669668, 59002112, -29124174, 9607842, -6249178, + -24122684, 74683040, -1509681, -34183644, -16254304, 16241419, -16101832, -19391778, -22952306, 38062000, + 14046691, 52862456, -3779571, 19469086, 69164008, -43770012, 9143985, -29676076, 54874648, -21434034, + 25649544, 11035918, -2229088, -20669530, -39157216, -26310970, 10988674, 49770080, -46733540, 42015516, + 49484464, 25033216, 57840324, -28138478, -23053236, 37847252, -6564858, -6867653, -53422952, -3231963, + -44081396, 9199820, 55778740, 27526446, 14027363, 25733296, 15197742, -23830626, -10838350, -41725608, + 47341276, 2136746, -18848464, 12668006, 4243428, -21859236, 11493332, -3000035, 13565654, -2119566, + 20596516, 10018011, -44154412, -151910848, -63211180, -109354160, -58510340, -46986944, 25456272, -70362304, + -71182640, -34628172, -95236608, -31501438, 72271416, -2652142, 3096672, -19935090, -16685948, -9504763, + 6762426, -1649268, -63748052, -10653666, -12438225, 92204360, -11839077, 81915760, 6856916, -22701050, + 21601538, 67330056, -3371549, 154619, -27180700, -8540542, -28544352, 15564961, -11993696, -24970940, + 12436078, -33539400, 26890790, 26605174, 5373004, 58826020, -26817776, 29676076, -25071872, 32804960, + 22694608, 61978524, 8641474, -26167088, 33730524, -4952098, -20920786, 78855600, -5881958, -5480379, + 45853072, 13434658, 61710092, -48741436, -46849504, -7859790, -20287278, -7191923, -75831944, -17987324, + 26332444, -11042361, -32637456, -54123032, 3620658, 15539192, -26686780, -26345330, -46409268, -17332340, + 19709604, 19522774, 41089952, -7419556, -3794604, -2302103, 13700946, 15556372, 2772402, 25159918, + 7146826, 1917703, -3517578, -3377992, 18616536, -8875550, 18393198, 19823422, -925565, }, { -11068131, - 5985037, -3105261, 3661460, -2151779, 3077344, -6393059, 304943, -238371, -708670, 1481764, - 3173981, -96637, -281320, -3433826, -1352915, 1486059, 861141, -386547, 1350767, -397284, - 478889, -1490354, -1000727, -1000727, -326418, 150324, -730144, -508954, 1717987, -974958, - 1037235, -942745, -146029, -723702, 916976, 339302, 743029, 1243393, 1544041, 577673, - 416612, -122407, 176094, 231928, -279173, 283468, 3914863, -4479651, -601295, -824634, - -1114544, 725850, -2224793, 755914, -51540, 1013612, 889058, -1765232, -627065, 2692945, - -283468, 575526, -500364, 1170379, 2469606, 2856153, 485331, 1230508, -42950, -2254858, - -68719, 244813, -489626, 8590, 1241246, -1294933, -1741609, 758062, -841814, -777389, - -1221918, -53687, 1282048, 322123, -380105, -466004, -513249, -8590, 283468, -687195, - 251256, -785979, 472446, -11248519, -7962870, -3914863, -2918430, -2267743, -2299955, -816044, - -1696512, -547608, -1063004, -2796024, 545461, 1404454, -223338, 794569, -528281, -1458141, - -1438814, -2194728, -738734, 506806, 66572, -1243393, 828929, -1498944, -1458141, 942745, - 0, 30065, 770947, 854699, 231928, -356482, -435939, -594853, 296353, 133144, - -768799, 390842, -1526861, -678605, -382252, -180389, -1090922, -240518, -405874, -45097, - -16003048, -2106682, 1196148, 277025, 1127429, 165356, -914828, 618475, -712965, -710817, - -1466731, -1168231, 545461, -410169, 983548, -942745, -17180, -910533, 266288, 1662152, - -457414, 1245541, 34360, -1069447, -255551, 1509681, 706522, 996432, 1052267, -1490354, - 1000727, -584116, -156766, -785979, -427349, 487479, 631360, 397284, -401579, 1226213, - 992137, 657130, -386547, -723702, 77309, -588411, 98784, 18839874, 14955076, 3573413, - 6680822, 1644973, 5162551, 3674345, 1095217, 3700114, 1449552, 2813204, 1185411, -979253, - 2772402, 2001455, -783832, -219043, -5211943, -523986, 246961, 3204046, 343597, 158914, - 1599875, 167504, 1447404, 1382980, 204011, -68719, 504659, 2201171, 1647120, 1436667, - -146029, -513249, 83752, 1045825, -382252, -62277, 1116692, 414464, -556198, 17180, - 240518, -1058710, 1378685, -758062, 33174328, 12034498, 5942088, 3393024, 2205466, 2057289, - 2113124, 3298535, 916976, 5433134, 846109, 420907, 2461016, -1374390, 665720, -659278, - -496069, -1002875, 3644280, 1872606, -186831, 2617783, -1750199, -556198, -545461, 4088809, - -279173, 1417339, 446677, 1964948, 472446, -687195, 1196148, 1322850, -521839, 420907, - 697932, 298500, 977105, -350040, 1103807, 807454, -2549063, 513249, 448824, 440234, - 1973538, 12805445, -9502615, -3182571, -4458176, -2596308, -2699387, 1846836, -1593433, -3816079, - -1103807, -5108864, -1344325, -2171106, -5119601, -1174674, 996432, -3068754, -1187559, 575526, - -3659312, -75162, 3923453, 992137, 442382, -1782411, -68719, 1496796, -118112, -1636383, - -1964948, 1943473, -319975, -2340757, 68719, -951335, 2793876, -10737, 1166084, -403727, - 2388002, -1608465, 852551, 412317, 425202, 100932, 478889, -4295, -998580, 1625645, - 1024350, -34965328, -19630148, -4129611, -4827543, -3481071, -4213363, -6169721, -476741, 51540, - -1702955, 1402307, -1578401, 137439, -105227, -2108829, -2132451, -3588445, -1155346, 3294240, - -3195456, -491774, 3141769, 1846836, -450972, 1007170, -418759, -3489661, -1642825, -2892661, - -912681, -6442, -674310, 1462436, -2933463, -2467459, -85899, -3002182, -2209761, -2166811, - -2351495, 2327872, -736587, -3163244, -972810, 678605, 923418, -1172526, -1563368, -848256, - -2896956, -21653078, 12543452, 4337917, 2278480, 1844689, 2141041, 678605, -2022930, 350040, - -1093069, -644245, 4097399, 2098092, 3569118, 3135326, 3755949, -3148211, 1748052, 3513283, - 880468, 3032247, -3582003, 496069, -695785, -493921, -1163936, 1153199, -216896, -169651, - 3691525, -3738769, -775242, 1116692, 2250563, -1138166, 1926293, -1610613, -2014340, 2525441, - -1073742, -332860, -468151, 820339, -49392, 1050120, -1060857, -732292, -929860, -549756, - -770947, 1833951, 504659, 448824, -949188, -1733019, 420907, 31952410, 12897787, 2896956, - 7123204, 5823976, 970663, 2684355, 6732361, 3279208, -294205, 1619203, 727997, -858993, - 1840394, 6053757, 1260573, 7196218, 3298535, -5643587, 968515, 365072, 1078037, 5360119, - 2813204, 2254858, -569083, -648540, -813896, -715112, 702227, -974958, 1627793, 689342, - 2257005, -311385, -704375, 1035087, 1829656, 1219771, -304943, -2375117, -1166084, -1241246, - 2186138, 1823214, 2482491, 1597728, 302795, 547608, 2115272, 1917703, 1367947, 414464, - 257698, 1279900, 1099512, 35661112, 10078141, 4559108, 5439576, 1032940, 5252745, -751619, - -2168959, 4295, 1262720, 691490, -279173, 1140314, 5364414, -685047, -3536906, -2276333, - 2544768, 798864, 2985002, 5022965, 4189741, -169651, 2759517, -2993592, 242666, -2297808, - 3199751, 2012192, -3816079, 2291365, -1861868, 384400, -1518271, 2321430, -1464584, 2879776, - 2115272, 1902671, 3481071, 1286343, -150324, -753767, -66572, 601295, 3871913, 12885, - 34360, 399432, 1844689, 1391569, 85899, -369367, -633508, -1964948, -414464, 5042292, - -15257871, -6010807, -2585570, -3326452, -1707250, -1170379, 96637, 2302103, -2345052, -3955665, - 3682935, -4780299, -4818954, -725850, -1224066, 2269890, -1466731, 32212, -4664335, -2568391, - -5600638, -5866926, -6816113, -792421, 1413044, -4531191, -1398012, 798864, 358630, 335007, - -745177, -4490389, -3019362, 2143189, 631360, -944893, 4232691, -2798171, -1462436, 1226213, - 2538326, 2325725, -526134, -530428, 908386, 781684, -2985002, 395137, -1814624, -620623, - 73014, -1015760, 10737, 2070174, 281320, -264141, 341450, -2005750, 1159641, 1891933, - -519691, 51540, -38695508, -12116103, -7350837, -2978560, -5302137, -4146791, -1284195, -2946348, - -1297080, -3949223, -5448166, -3813931, -1370095, -7945690, -1962800, -3206193, -4896263, -551903, - 783832, 2649995, -2886218, -3949223, -1526861, 3324305, 4157528, 5207648, 2718714, -98784, - -2600603, -1116692, -19327, -3103114, 1267015, 2177549, 2645700, -1791001, -1612760, -1421634, - -766652, -577673, -1144609, 2126009, -648540, 1391569, -2707977, -4584878, -1982127, -137439, - 2280628, -3964255, 1288490, -1881196, 1844689, -1915555, 1086627, -1595580, -124554, -1024350, - -148176, 717260, 1440962, -966368, -1376537, -22194244, 5916318, 1640678, 21475, 3884798, - -3732327, 989990, -8585640, -2800319, 2978560, 2104534, 5527623, -416612, 6027987, -3534758, - -899796, 2873333, -5265630, -1945620, -3105261, 5866926, -390842, -4898410, 2435247, 4670777, - -4194036, -3204046, -3779571, 1063004, -901943, 1999307, -1466731, -1219771, -1039382, -2308545, - 3289945, -2705830, 609885, 2145336, -309238, 2482491, -1498944, 5471789, 783832, -588411, - -1971390, -1949915, 36507, -2239826, -2738042, -1709397, 377957, 1842541, -315680, 478889, - -2400887, -2388002, -3399467, -1372242, -1127429, -919123, 891206, 1331440, 19166292, 27584428, - 9463960, 9609989, 13022341, 9496173, -1359357, 1956358, -1054415, 1848983, 1574106, 2499671, - 1745904, 4810364, 1780264, 3062312, 899796, 9408126, 2158221, 4683662, 2682207, 2527588, - 7310035, 1876901, 9165460, 4889821, -1868311, 6624987, 1694365, 3350075, 6470368, 1481764, - 3854733, -1797444, -670015, 1999307, 2911988, -3775276, 3384434, -2102387, -4294968, -2345052, - 3562675, 5527623, 4052302, -581968, 1314260, 1432372, 2003602, 3008625, 1619203, 3377992, - 1930588, -2830384, -83752, 2435247, 3077344, 1127429, 1000727, 751619, -3049427, -1032940, - -1885491, 66346508, 4833986, -3197603, 5164698, -3429532, 7331509, 2426657, 7707319, -3710852, - 592706, 208306, 4574140, -8175470, 1490354, 5544803, -1277753, -1054415, 6768869, 11042361, - -4660040, -2336462, 1189706, 5557688, -2523293, 3678640, 47245, -3307125, -3045132, -2596308, - 2177549, 3500398, 3685082, -2538326, 4082367, -2506114, 3964255, 3884798, -1052267, -2224793, - 1294933, -3702262, -5643587, 1462436, -3889093, 1791001, 292058, 846109, 2267743, 208306, - 2776696, 446677, -3850438, 1754494, -1065152, 2050847, -2830384, -285615, 354335, 2166811, - -1574106, -4496831, -876173, -1801739, -22552874, -21930104, -4952098, 1679332, -966368, -3330747, - -3569118, -4922033, -1307818, 3594888, -1187559, -1269163, -5053029, 5280663, -324270, -4408784, - -3786014, 9174050, -8358007, 822486, 6085969, -764504, 985695, -8091719, 2546916, -3498251, - 1902671, -5641440, -3682935, 869731, 1462436, -2665027, -2954938, 227633, -1226213, 347892, - -3451006, -1990717, 3558381, -444529, -1705102, -1069447, 4529043, 1958505, -2619930, -4015795, - -3539053, 1129576, -562641, -1726577, 362925, 695785, -1956358, 5351530, 2914135, -622770, - -440234, -1464584, 631360, -1636383, -1591285, -1685775, -335007, -3115999, -2443837, -4163971, - 936303, -4451734, -178241, -1166084, -1086627, -292058, -8907762, -7494718, -9167608, -6442451, - -4849018, -3081639, 618475, 6442, -2392297, -813896, 2070174, 7967165, -6959995, 3545496, - -2398739, -4226248, 5446019, -371515, 1000727, 7395934, 974958, 3173981, -4670777, -977105, - -13406740, -1410897, 2428804, 1758789, 1060857, 1462436, 1784559, -2838974, -4075924, 3161096, - -435939, 2993592, 1365800, -3397319, 2815351, -176094, -9521942, -7653632, -1385127, -7239168, - 878321, 2413772, -579821, -1773822, -921271, 444529, -2244121, -569083, -502511, -1168231, - 2209761, 719407, 682900, -1213328, -1028645, 3732327, 876173, -2248416, 2441689, -481036, - -1756642, -3730179, 30065, -1990717, -717260, 2789581, 2102387, 2961380, -43074228, -9820443, - 637803, -8568460, 3461744, 856846, 10335839, -4836133, 618475, -2841121, 6929930, -14128295, - -13550622, 5710159, -6564858, 10189810, 3691525, -8192650, -14351633, -328565, -4058744, -6966437, - -2851858, 1638530, 2327872, -3365107, 12292196, 657130, -1219771, -5141076, 4187593, 4655745, - 5018670, 5390184, -665720, -3191161, -1204738, 3186866, -246961, 3846143, -3614215, -1423782, - -1241246, 4456029, 3582003, -3904125, 5070209, -2823941, -3524021, 433792, -1597728, -3354370, - 3463891, -3970697, -521839, 1009317, -955630, -1617055, 914828, 3324305, -2055142, 3186866, - -2628520, 2138894, -1455994, -1647120, -1024350, 642098, 4123169, 745177, 3863323, -2450279, - 39507256, 34709780, 7264937, 9279277, -1840394, 11345156, 9101036, 11428908, -461709, 4597763, - 2765959, -10709501, -9066676, 4999342, 987843, -7662222, -8102456, -4514011, 534723, 4629975, - 1363652, 10872710, 9921374, 4372277, -2274185, -2372970, 6575595, 6176163, 502511, 5418101, - -1722282, 6919193, 403727, -1436667, 9579925, 5027259, 7859790, 5117454, 1743757, 5557688, - 2787434, 1969243, 5113159, -2729452, 1041530, 6831146, -49392, -4290673, 4039417, 4060892, - 2879776, -2991445, -53687, 4015795, 5961415, -2896956, 7204808, 8282845, -1400159, -4361540, - 788127, 1964948, 1301375, 3682935, 10737, 1372242, 2808909, -1911261, 229781, -2750927, - -691490, -3738769, -2160369, -382252, 47916804, 3914863, -1359357, 3393024, 2310693, -7846905, - 2055142, 2149631, 6442, 5119601, 7325067, 10971494, -4885526, -4937065, -7741679, -6247030, - 7073811, -534723, 10213432, -2433099, -2473901, 4234838, 8875550, 3551938, -8905615, 7080254, - -2596308, 5669357, -2935610, 4406637, -5360119, 3322157, -423054, 5168993, 633508, 2959233, - 1586990, -9008694, -4960687, -813896, -1816771, -818191, -2806761, 4389457, 1668595, 9345849, - -1430224, -6345814, -3704409, -609885, 569083, -7060926, 2403034, -2383707, -304943, -657130, - -4129611, 3803194, 7224135, -2239826, 3723737, 891206, -4037269, -354335, -3841848, -3180423, - 657130, -5615670, -4000762, 2388002, -277025, 1294933, 3886946, -5315022, 6470368, 663572, - -2622078, -6431714, 1879048, -2362232, 13840532, -3304977, -13211319, -8935679, -11909944, 11016591, - -8798241, 2441689, 13462575, -594853, -13653701, 936303, -14332306, 11946452, -4153234, 11907797, - 90194, -4533338, 10256382, 384400, 2145336, -7705172, -9715216, -1563368, 3444564, 2093797, - -1879048, -4490389, 4552666, -1387274, 3408057, 5207648, 6347962, 2927020, 3524021, -12826920, - 1097364, -2907693, -4357245, 1758789, 6386617, -5357972, -9822590, -4350802, 2916283, 1123134, - -8626442, -3528316, 4067334, 5905580, -5171141, -3386582, -3972845, 6040872, 8053064, 1621350, - -2667175, 908386, 5781026, -2755222, -193274, -3777424, 4065187, -4726612, -519691, 5607080, - 3390877, -1634235, -816044, -139586, -1771674, -48348448, -48984104, -7939247, -24011014, -14903537, - -8523363, -13327284, -1623498, 10050223, -21960168, 8018704, -4498978, 7314330, 1262720, 4481799, - -9111773, 2308545, -1144609, -4754529, -20145544, -4110284, -10477573, -12811887, -1340030, 3231963, - 676457, -4361540, 2785286, -4140349, -1228361, 10692321, -231928, -3566970, 661425, 6994354, - 9401683, 6298570, 0, 5029407, 5813238, -571231, 51540, -10464688, 3839701, -8647917, - 1614908, 8338679, -5746666, -10471130, 3021510, -5873368, -5619965, 1159641, -88047, -4960687, - 2407329, -1176821, 11280732, 6339372, 3451006, 1398012, 4136054, -408022, 1243393, -4443144, - -8003672, -1316408, 689342, -5708012, -3966402, -3131031, -2675765, -3229816, 1786706, -1653562, - -489626, -3582003, -28658170, 53322020, 41987600, 2540473, 8602819, 3315715, 9371619, 14106820, - 3322157, 13698798, 2557653, -14568529, 9723806, 11540577, 3519726, 3403762, 8759586, 11370926, - -11375221, 9474698, -5970005, 8315057, 1324997, -7007239, 1410897, 9414568, 5441724, -11315091, - 5512591, -4655745, 16415365, -1413044, 3874061, -2555506, -10509785, 10610717, 10625749, 5018670, - 2738042, -498216, 3846143, 11267847, 2660732, 8053064, 1045825, 5592048, 3090229, -762357, - 6139656, -7404524, -11467563, -5065914, -8740258, -7438884, -3783866, -7638600, 10288594, 7290707, - 910533, -1840394, -3644280, -1209033, -251256, 77309, 521839, 1428077, 2160369, 1185411, - -201863, -2710124, -2295660, -384400, -204011, -983548, 1168231, -1189706, 6204081, -1391569, - 8143258, 71541272, -28011776, -15176267, 2598455, -148176, -3539053, -19849192, -8478265, 5089536, - -957778, -2826089, -3878356, 3081639, -16323023, -4640712, 8497593, 15934329, 8686571, 7166153, - -5085242, -4803921, -9390946, 11003706, -15466177, -2673617, 3850438, -10170483, 3358665, 4417374, - 12479027, -19026706, -1589138, -307090, -3925600, 5093831, -17628694, -9178345, 19443316, 12818330, - 2680060, -3304977, 11620034, -3369402, -1488206, 2194728, 9090298, 5259188, -5596343, 1224066, - -3262028, 7468948, -11879880, -5327907, -7189776, -7546258, 14566382, 4022237, 1818919, -6397354, - -526134, -2149631, -2555506, -6708739, 1095217, -6358699, -261993, 2229088, 5617817, -9663676, - -6702297, -8538395, -2604898, 4647155, 824634, 6161131, -813896, -7934952, -833224, -3569118, - 3715147, -330712, 21251498, 48943300, 8035884, 18678812, 16870632, 16194174, 5407364, 12109660, - 7456063, -3500398, -9932112, -6296422, -2864743, 13870597, -11834782, -13097503, -893353, -581968, - -5357972, -10020159, 29673930, 27885076, 20980916, 1050120, -11963631, 2145336, 1997160, -5946382, - 6837588, 4400194, 11980811, 1421634, 4898410, -541166, -8229158, 13600014, 11257109, 8143258, - -1932735, -10722386, 672162, -790274, -2991445, -21934398, 15841987, -9972914, 18268644, 1080184, - 9884867, -2055142, 10898480, 16580721, 3313567, -7441031, -547608, 3077344, -5446019, 2952790, - -2110977, -6979322, -3837553, 2345052, -1700807, 6977175, 2461016, -11688753, 749472, -1567663, - -12620761, -2927020, 2576981, -4763119, 1391569, 10756746, 4406637, -581968, -3704409, -2802466, - 231928, 4715874, -1286343, 5095979, -51391432, -6824703, -32034014, 360777, 5637145, -10874857, - -18734648, -21668110, -20544976, -12163347, -16756815, -4108136, -1140314, -4329327, 5377299, -3341485, - 1086627, 13151190, 5901285, -1301375, 31110596, -6831146, 6227703, -4550518, 2607045, 4516158, - 1651415, -1748052, 4565550, 14570677, 4380867, 5158256, 1629940, 5828271, 12300786, 16958678, - 5325760, 20577188, -5512591, -17740362, 17916456, -5682242, -3775276, -3612068, 10127533, 15721728, - 11847667, -302795, -4086662, -8995809, -22939420, 14130442, 16050293, 11362336, -13700946, 8291435, - 2136746, -1378685, 12996571, 2196876, 8727374, -7260642, 4256313, -9051644, -874026, 7853348, - -2293513, 5907728, -1249836, -3304977, -3234110, -11025181, 1110249, 826781, -94489, 2121714, - -2448131, -13600014, 1030792, 712965, -89930176, -40374840, 18309446, -3515431, -3079492, 3189013, - -11265699, -9904195, -3386582, -4479651, -15751793, 11100343, 1211181, 23489176, -13146895, -11306501, - -19235012, -10782515, -19810536, 1589138, 7232725, -29590178, 19048180, 16378858, -2368675, 3242700, - 12401718, 1808181, 10909217, -22434762, -22570054, -12543452, -14813342, -11420318, 36507224, 11875585, - -8076686, -13151190, -18741090, 8832600, 4992900, -8918500, 7260642, 7164006, -13230647, 1191853, - 2911988, 10346576, -12292196, 30043296, -13219909, -10563472, 4657892, -3296388, -206158, -9118216, - -3461744, 878321, 19076098, -6000070, 27507118, 5811091, 1750199, 3010772, 7312182, -8336532, - -3021510, -10941429, -8836895, -8403104, -85899, 14772540, -9721658, -7181186, -4142496, -5624260, - -5220533, -712965, -3470334, -5201206, -4554813, 14134737, 45541684, 23310934, 14583561, 9790378, - -15925739, 1552631, -12869870, 20154134, -2121714, -2750927, 6947110, 4389457, 4769561, -665720, - 7196218, 2514703, 7593502, -6268505, 19829864, 2611340, -1728724, 59201828, 3298535, -4578435, - -15101105, 8770323, -14042396, 13174812, 31986768, -2553358, 7881265, 7818988, -16370268, -18429704, - 609885, 341450, 14083198, -9139690, 564788, -1017907, 10387378, 10595684, 17832704, 6637872, - 6219113, 7318625, 801011, 11680164, 5514738, -21633750, 4670777, -11175505, -27668180, -2441689, - 7844758, 100932, 2366527, -3725884, 584116, -934155, -96637, 3446711, 657130, 12584254, - -7516193, -1219771, 2510409, 2611340, 416612, -4891968, 8783208, 14798310, 14592151, 3010772, - -3023657, -1529008, 5231270, -727997, -1769527, -337155, 2920578, 6818261, -1140314, -2677912, - -4842576, -3064459, 66640712, -19428284, -7363722, -18073222, 33537252, 12339441, 2763812, 6790344, - -4907000, -7844758, 11798275, 1078037, -11645804, 2995740, -15356656, -11632919, 751619, -15567109, - 2104534, 5059472, -11499775, -20227148, 1915555, 1069447, 13673028, 22449794, 15650861, -10552735, - -171799, 13935021, 25477746, -26706106, 10063108, -5027259, -448824, -12195560, -17126182, 1440962, - 15356656, 4494684, 6869800, 9689446, -1075889, 6466074, -1550483, 4619238, 9848360, -17832704, - -12494060, 27670326, -2218351, -878321, -6285685, 11040213, 35824324, 8952859, 5383742, 11607149, - -9455371, -10675141, -15032, -7973607, -20560008, 13200582, 1675037, -10260677, 5617817, 3060164, - -5841156, -9665824, 13045963, -4520453, -15622944, 7275675, 7209103, 11012296, -10896332, 989990, - 4737349, -1926293, -4176856, 16516297, -1352915, 3027952, -7374459, -981400, -229781, 56899728, - 53912576, -17547088, 14710263, 4443144, 11431055, 28926604, -3556233, -15094663, -5284958, 55875376, - -31387620, -5963562, -15547782, -12461848, -25428354, 27951648, -8044474, -37967512, -28286654, -34638912, - -13269301, 30709016, -3620658, 14508400, -5392332, -15655156, 13718126, 4067334, 17364552, -16664473, - 15457587, 12287901, 6369437, 7157563, -27240830, 7907035, -22728966, 19318762, 40830108, 11856257, - 12320114, -25890062, 36571648, 9814000, -3721589, -5604933, -7329362, 11482595, 18328772, 4486094, - -4168266, -1015760, 5018670, -8778913, -6229850, -8446053, -6483253, -648540, 13445395, -8907762, - 20055350, 7230578, 12300786, -4110284, -28567974, -19170586, 7372312, 1979980, -8478265, 10715943, - -468151, -955630, 5826123, -4002910, 8448201, -1406602, -916976, 4099546, -4900558, -852551, - -5306432, -3225521, -6674379, 4406637, 382252, 1425929, -53541064, -31915902, 7666517, 4185446, - -319975, -23555748, 13924284, 7853348, -14231374, -38534448, 31372588, 7668664, 11620034, 17736068, - 10419591, -5102421, 5677947, -9756018, 26031796, -21786222, -37690484, -1288490, -1973538, -17879948, - -40965400, 1234803, -8516920, -21522082, -11970074, -6771016, 9006546, 1494649, 14867029, 30017526, - -12936441, -24882894, 7664369, -2952790, 133144, 12270722, -17781164, -16121160, -2349347, 14484777, - -19224274, 15814070, -5656472, 30528628, -4531191, -9605694, -3766686, 139586, 5948530, -34976068, - 4881231, -30266634, 30769146, 105227, 19247896, 11542725, -12013024, -1561221, -15869904, 7670812, - -1876901, 6083821, 5617817, -20834886, -3339337, -20098300, -9038759, 8942122, -6272800, -12335146, - 5718749, -188979, -20983062, -10269267, 2044404, 712965, -8763881, 9083856, -4836133, -5334350, - 4260608, -12509092, 6369437, -74120400, -34222300, -12446815, -8349417, -2257005, 7705172, -25765508, - -18601504, 6867653, -21726092, 6859063, -24124832, -7479686, -23330262, -28039694, 29624536, 12363063, - 4383014, -1737314, -24605868, -41517300, 20654498, -54462332, 19681688, 856846, -17557826, 2916283, - -10926397, 4217658, 37879464, -19065360, -2123861, -40913860, 32117766, -9470403, 14568529, -14383845, - -4915590, -3292093, -1644973, 19110456, 6457484, 39760660, 47637628, -4973572, 597000, -15753940, - 1657857, -6116034, 7344394, 15251429, 1775969, 34589520, 9676561, -12809740, 5411659, 7204808, - 94489, -2396592, 972810, 26306674, -19707458, -39479340, -16335908, 627065, 9214852, 6906308, - 19758998, -1958505, 8377334, -9975062, -16007343, -21977348, -17706002, 1533303, -5753109, 10771778, - 2733747, -6027987, -2881923, 18981608, -420907, 10559177, -4660040, 3639985, -4724464, -4322885, - -7264937, 94493576, 42183020, 29152090, 12092480, -10758893, -17186312, -29493540, 16353088, 28271622, - 11678016, -13234942, 33363306, 18784040, 33354716, 2265595, -24142012, -9369471, 50085760, -52293376, - -10752451, 34574488, -20493436, -11491185, 80889264, -10151155, 23115514, 73349448, -11781095, -4827543, - -2153926, 9113921, -4078072, 31799938, 20444044, 26210038, -18567144, -43334072, 17306570, -17100412, - 20802674, -8123931, 7544110, 30880814, 17877802, 1806034, 13572097, 6257768, 13067438, 29854318, - 16816944, -3189013, 29014652, 12165495, 4125316, 6899865, 53455164, 32070520, 49392, 29132764, - -12869870, 36831492, -9193377, 8117488, -10475425, 4406637, 21092584, -11714523, -858993, -2093797, - 7312182, 813896, -13844827, 551903, -11860552, -21174188, 3532611, -28187870, 10943577, 17282948, - -7088844, -12071006, -8121783, 15139760, 4464619, 809601, -6345814, 121951304, 55115168, -24700356, - 10657961, 63011464, 1486059, 45505180, -13368086, 18000208, 37937448, -28580860, 3457449, 66196184, - 59463824, 48399988, 17102560, 41568840, 7002944, 36440652, 12717398, 11027329, -22780506, -26751204, - -38044820, -75387416, 24032490, 893353, -20463372, -7213398, 26087632, -17134772, -2589865, 2944200, - 14669461, -66799628, -10803990, 48475148, 37327560, -13488345, 24663850, 21062520, 13662291, -8188355, - -15524159, -6743099, -10443213, -6764574, -24672440, -20965882, 17109002, -41620380, 13780403, 34149284, - -10123238, -24363202, -37958920, 35613868, -1110249, -17987324, -11753178, -8211978, -13024488, 7501161, - -6012954, -13239237, 13531294, 55437292, -27702540, -16662326, 7084549, -10771778, 12801150, 508954, - 28589450, 5523328, -2776696, -2396592, -29686814, -14014478, -4610648, 2529736, 2295660, 10625749, - 6569153, 1236951, 4776004, 5523328, 17517024, 1447404, 485331, -11373073, 5746666, 8463233, - 3508988, -48185240, -13445395, -57921928, -12599287, -57887568, 27818504, -55155972, 29665340, -9579925, - -31933082, -9683004, -14952929, 67422400, 10456098, -49166640, 938450, -32119912, -25305948, 33195802, - -37510096, -34716220, -39150776, 58800248, -7928510, 38805028, -59869696, -31956704, 23813446, -27940910, - 22711788, 65088080, 42775728, 40261024, 6899865, -6953552, -31621696, -44998372, -2409477, 9962177, - -41661184, 874026, -24554328, 12017318, 18393198, -47699908, -40486508, -74728136, -11684459, 5108864, - -32115618, -46224584, 45513768, 2297808, 46748572, 45848776, -5643587, -6509023, -18640158, 26441966, - 22917946, 3285650, 11323681, -3775276, -2353642, 22361748, -5912023, -26231512, -20143396, -33021856, - -27721866, -10269267, -1288490, -4552666, -41723460, -24210730, 13580687, 3143916, -14847702, 17940078, - -3665755, 910533, 28205050, 23293756, 15002321, 5935645, 18056042, 2662880, 470299, 8353712, - 5931350, -3985730, 1713692, -82304456, -14184129, 7241315, -7593502, 113817, 22282290, -18234284, - 19814832, 18749680, -12992276, 25383256, -35281008, 44216688, 30335354, 1505386, -32497870, 2609193, - 21584358, -96170760, 19950124, 39206608, -68867656, 28333900, -35259536, -50530292, -46050640, 23383950, - -11512660, -71807560, 38588132, 20637318, -43471512, -72651520, 14699526, 8557722, -22872848, -5293547, - -37329708, 35081292, 28980292, 51047832, -40868760, 6644315, -54279796, -20544976, 9363029, -34735548, - 14437533, -4320737, -27251568, -40980432, -44283260, 64753076, -43658344, -20656646, -16432545, 2703682, - 29751238, 17630840, 21700322, 210453, 25391846, -8557722, 4060892, -10788958, -26847840, 5282810, - 57498876, 8907762, 1322850, -236223, -37041944, 24084030, 38684772, 40359808, 8068096, 2993592, - -1767379, -3238405, 5836861, 779537, -18429704, -418759, 3706557, 2695092, 274878, 362925, - 14276471, -4964982, 1823214, -3618510, 753767, 24878598, -54651312, -29038274, -57711476, 16432545, - -10249939, 22909356, -15726023, 10855530, 18893562, -19320910, -32953136, 49173080, -12902082, -21923660, - 57129508, -11763915, -13314399, 65294240, -37776384, 9607842, 15983721, 5087389, -57582628, 184684, - -8403104, -34619584, 19789062, -27197880, 36631776, -6459631, 40774272, -44631152, 27741194, -79018808, - 871878, -43119324, 48105780, -7425999, 6573448, -8297877, -43851616, -3199751, 38201588, 100815768, - 7438884, 6322192, 21421150, 34443492, -5854041, -9732396, 3146064, -1752347, 88669600, -8061654, - 13653701, 35581656, -34565896, -59100896, 178241, -62461708, -7672959, -32085554, -23001698, -12562779, - -26371100, 14794015, 21962316, -36399848, 45883136, 38089916, -5469641, -9487583, -37516540, 26145614, - 9274982, 24796994, -21043192, 10222022, -4110284, 18738942, 2136746, 18129056, -9274982, 13277891, - -2282775, 270583, 4406637, 20562156, 9846213, 6255620, -6822556, 461709, 1853278, 95008968, - 103543072, 721555, -31769874, -25548612, 86719688, -57058640, -65002184, 67555544, -61407296, 39440684, - 12000139, 54640572, 50410032, 33988224, 5446019, -34559456, -29802778, 70929240, -30189326, -3143916, - 17289390, 60410864, 87535728, -2763812, 59788092, -49089328, -51200304, 5682242, -18942954, 28162100, - 17871358, -43785044, 5912023, 27674622, 71977208, 24472724, 29469918, 26993870, 32167158, 8209830, - -2581275, 45621144, 7990787, 36468568, 58488864, 12137578, -24131274, -20525648, 52714280, 13750338, - 108194520, 25196426, 42610372, -44225280, -69477536, -6751689, -81110456, -52014200, -18539226, -27790586, - 2987150, -4198331, 592706, 1047972, -60672856, -50259708, -26566520, -51896088, 18889266, 20534238, - -15743203, -4075924, -48157320, -7610682, 14130442, -13758928, -4183298, 4866198, -30414810, 12644384, - -9384504, 3586298, 5334350, 139586, 2027225, 6556268, -7303592, 1101659, 7015829, -304943, - 1638530, 2029372, -45176612, -158969632, -65601332, -129744520, -29098404, -45382772, -18326626, 11789685, - -42539504, -51552492, -82388208, -65539052, 58536108, -10462540, -52424372, -55744380, 12594992, -74167640, - -104593192, 17207786, -24367496, -22469122, -22505628, 20057498, -62360776, 65534760, -38173668, 44489420, - -31065498, -29854318, 678605, 35916664, -50873888, -48619028, 26006026, -9257802, 71734544, -31533650, - 41087804, 61804580, 29360396, -22623740, -10350871, -6547678, 50702088, -17897128, 34016140, 68423120, - -57632020, -100506528, -39618924, 33973192, 41704132, -47474420, 77876344, -25194278, -28271622, -9517648, - -8630737, -24245090, -63219772, -26789858, -65322156, -62569084, -38798588, 45988364, 10780368, -11199127, - 4112431, 71161168, 66846872, 4621385, -31074088, 12655121, -7118909, 29231548, 9103183, -12904229, - -29605210, -2768107, -6019397, -46954728, -12227772, 17708150, 48507360, -21872120, -53687, 18427558, - -27416924, -983548, -2001455, 695785, -14336601, 18094698, 977105, 4617090, -2375117, }, + 5985037, -3105261, 3661460, -2151779, 3077344, -6393059, 304943, -238371, -708670, 1481764, + 3173981, -96637, -281320, -3433826, -1352915, 1486059, 861141, -386547, 1350767, -397284, + 478889, -1490354, -1000727, -1000727, -326418, 150324, -730144, -508954, 1717987, -974958, + 1037235, -942745, -146029, -723702, 916976, 339302, 743029, 1243393, 1544041, 577673, + 416612, -122407, 176094, 231928, -279173, 283468, 3914863, -4479651, -601295, -824634, + -1114544, 725850, -2224793, 755914, -51540, 1013612, 889058, -1765232, -627065, 2692945, + -283468, 575526, -500364, 1170379, 2469606, 2856153, 485331, 1230508, -42950, -2254858, + -68719, 244813, -489626, 8590, 1241246, -1294933, -1741609, 758062, -841814, -777389, + -1221918, -53687, 1282048, 322123, -380105, -466004, -513249, -8590, 283468, -687195, + 251256, -785979, 472446, -11248519, -7962870, -3914863, -2918430, -2267743, -2299955, -816044, + -1696512, -547608, -1063004, -2796024, 545461, 1404454, -223338, 794569, -528281, -1458141, + -1438814, -2194728, -738734, 506806, 66572, -1243393, 828929, -1498944, -1458141, 942745, + 0, 30065, 770947, 854699, 231928, -356482, -435939, -594853, 296353, 133144, + -768799, 390842, -1526861, -678605, -382252, -180389, -1090922, -240518, -405874, -45097, + -16003048, -2106682, 1196148, 277025, 1127429, 165356, -914828, 618475, -712965, -710817, + -1466731, -1168231, 545461, -410169, 983548, -942745, -17180, -910533, 266288, 1662152, + -457414, 1245541, 34360, -1069447, -255551, 1509681, 706522, 996432, 1052267, -1490354, + 1000727, -584116, -156766, -785979, -427349, 487479, 631360, 397284, -401579, 1226213, + 992137, 657130, -386547, -723702, 77309, -588411, 98784, 18839874, 14955076, 3573413, + 6680822, 1644973, 5162551, 3674345, 1095217, 3700114, 1449552, 2813204, 1185411, -979253, + 2772402, 2001455, -783832, -219043, -5211943, -523986, 246961, 3204046, 343597, 158914, + 1599875, 167504, 1447404, 1382980, 204011, -68719, 504659, 2201171, 1647120, 1436667, + -146029, -513249, 83752, 1045825, -382252, -62277, 1116692, 414464, -556198, 17180, + 240518, -1058710, 1378685, -758062, 33174328, 12034498, 5942088, 3393024, 2205466, 2057289, + 2113124, 3298535, 916976, 5433134, 846109, 420907, 2461016, -1374390, 665720, -659278, + -496069, -1002875, 3644280, 1872606, -186831, 2617783, -1750199, -556198, -545461, 4088809, + -279173, 1417339, 446677, 1964948, 472446, -687195, 1196148, 1322850, -521839, 420907, + 697932, 298500, 977105, -350040, 1103807, 807454, -2549063, 513249, 448824, 440234, + 1973538, 12805445, -9502615, -3182571, -4458176, -2596308, -2699387, 1846836, -1593433, -3816079, + -1103807, -5108864, -1344325, -2171106, -5119601, -1174674, 996432, -3068754, -1187559, 575526, + -3659312, -75162, 3923453, 992137, 442382, -1782411, -68719, 1496796, -118112, -1636383, + -1964948, 1943473, -319975, -2340757, 68719, -951335, 2793876, -10737, 1166084, -403727, + 2388002, -1608465, 852551, 412317, 425202, 100932, 478889, -4295, -998580, 1625645, + 1024350, -34965328, -19630148, -4129611, -4827543, -3481071, -4213363, -6169721, -476741, 51540, + -1702955, 1402307, -1578401, 137439, -105227, -2108829, -2132451, -3588445, -1155346, 3294240, + -3195456, -491774, 3141769, 1846836, -450972, 1007170, -418759, -3489661, -1642825, -2892661, + -912681, -6442, -674310, 1462436, -2933463, -2467459, -85899, -3002182, -2209761, -2166811, + -2351495, 2327872, -736587, -3163244, -972810, 678605, 923418, -1172526, -1563368, -848256, + -2896956, -21653078, 12543452, 4337917, 2278480, 1844689, 2141041, 678605, -2022930, 350040, + -1093069, -644245, 4097399, 2098092, 3569118, 3135326, 3755949, -3148211, 1748052, 3513283, + 880468, 3032247, -3582003, 496069, -695785, -493921, -1163936, 1153199, -216896, -169651, + 3691525, -3738769, -775242, 1116692, 2250563, -1138166, 1926293, -1610613, -2014340, 2525441, + -1073742, -332860, -468151, 820339, -49392, 1050120, -1060857, -732292, -929860, -549756, + -770947, 1833951, 504659, 448824, -949188, -1733019, 420907, 31952410, 12897787, 2896956, + 7123204, 5823976, 970663, 2684355, 6732361, 3279208, -294205, 1619203, 727997, -858993, + 1840394, 6053757, 1260573, 7196218, 3298535, -5643587, 968515, 365072, 1078037, 5360119, + 2813204, 2254858, -569083, -648540, -813896, -715112, 702227, -974958, 1627793, 689342, + 2257005, -311385, -704375, 1035087, 1829656, 1219771, -304943, -2375117, -1166084, -1241246, + 2186138, 1823214, 2482491, 1597728, 302795, 547608, 2115272, 1917703, 1367947, 414464, + 257698, 1279900, 1099512, 35661112, 10078141, 4559108, 5439576, 1032940, 5252745, -751619, + -2168959, 4295, 1262720, 691490, -279173, 1140314, 5364414, -685047, -3536906, -2276333, + 2544768, 798864, 2985002, 5022965, 4189741, -169651, 2759517, -2993592, 242666, -2297808, + 3199751, 2012192, -3816079, 2291365, -1861868, 384400, -1518271, 2321430, -1464584, 2879776, + 2115272, 1902671, 3481071, 1286343, -150324, -753767, -66572, 601295, 3871913, 12885, + 34360, 399432, 1844689, 1391569, 85899, -369367, -633508, -1964948, -414464, 5042292, + -15257871, -6010807, -2585570, -3326452, -1707250, -1170379, 96637, 2302103, -2345052, -3955665, + 3682935, -4780299, -4818954, -725850, -1224066, 2269890, -1466731, 32212, -4664335, -2568391, + -5600638, -5866926, -6816113, -792421, 1413044, -4531191, -1398012, 798864, 358630, 335007, + -745177, -4490389, -3019362, 2143189, 631360, -944893, 4232691, -2798171, -1462436, 1226213, + 2538326, 2325725, -526134, -530428, 908386, 781684, -2985002, 395137, -1814624, -620623, + 73014, -1015760, 10737, 2070174, 281320, -264141, 341450, -2005750, 1159641, 1891933, + -519691, 51540, -38695508, -12116103, -7350837, -2978560, -5302137, -4146791, -1284195, -2946348, + -1297080, -3949223, -5448166, -3813931, -1370095, -7945690, -1962800, -3206193, -4896263, -551903, + 783832, 2649995, -2886218, -3949223, -1526861, 3324305, 4157528, 5207648, 2718714, -98784, + -2600603, -1116692, -19327, -3103114, 1267015, 2177549, 2645700, -1791001, -1612760, -1421634, + -766652, -577673, -1144609, 2126009, -648540, 1391569, -2707977, -4584878, -1982127, -137439, + 2280628, -3964255, 1288490, -1881196, 1844689, -1915555, 1086627, -1595580, -124554, -1024350, + -148176, 717260, 1440962, -966368, -1376537, -22194244, 5916318, 1640678, 21475, 3884798, + -3732327, 989990, -8585640, -2800319, 2978560, 2104534, 5527623, -416612, 6027987, -3534758, + -899796, 2873333, -5265630, -1945620, -3105261, 5866926, -390842, -4898410, 2435247, 4670777, + -4194036, -3204046, -3779571, 1063004, -901943, 1999307, -1466731, -1219771, -1039382, -2308545, + 3289945, -2705830, 609885, 2145336, -309238, 2482491, -1498944, 5471789, 783832, -588411, + -1971390, -1949915, 36507, -2239826, -2738042, -1709397, 377957, 1842541, -315680, 478889, + -2400887, -2388002, -3399467, -1372242, -1127429, -919123, 891206, 1331440, 19166292, 27584428, + 9463960, 9609989, 13022341, 9496173, -1359357, 1956358, -1054415, 1848983, 1574106, 2499671, + 1745904, 4810364, 1780264, 3062312, 899796, 9408126, 2158221, 4683662, 2682207, 2527588, + 7310035, 1876901, 9165460, 4889821, -1868311, 6624987, 1694365, 3350075, 6470368, 1481764, + 3854733, -1797444, -670015, 1999307, 2911988, -3775276, 3384434, -2102387, -4294968, -2345052, + 3562675, 5527623, 4052302, -581968, 1314260, 1432372, 2003602, 3008625, 1619203, 3377992, + 1930588, -2830384, -83752, 2435247, 3077344, 1127429, 1000727, 751619, -3049427, -1032940, + -1885491, 66346508, 4833986, -3197603, 5164698, -3429532, 7331509, 2426657, 7707319, -3710852, + 592706, 208306, 4574140, -8175470, 1490354, 5544803, -1277753, -1054415, 6768869, 11042361, + -4660040, -2336462, 1189706, 5557688, -2523293, 3678640, 47245, -3307125, -3045132, -2596308, + 2177549, 3500398, 3685082, -2538326, 4082367, -2506114, 3964255, 3884798, -1052267, -2224793, + 1294933, -3702262, -5643587, 1462436, -3889093, 1791001, 292058, 846109, 2267743, 208306, + 2776696, 446677, -3850438, 1754494, -1065152, 2050847, -2830384, -285615, 354335, 2166811, + -1574106, -4496831, -876173, -1801739, -22552874, -21930104, -4952098, 1679332, -966368, -3330747, + -3569118, -4922033, -1307818, 3594888, -1187559, -1269163, -5053029, 5280663, -324270, -4408784, + -3786014, 9174050, -8358007, 822486, 6085969, -764504, 985695, -8091719, 2546916, -3498251, + 1902671, -5641440, -3682935, 869731, 1462436, -2665027, -2954938, 227633, -1226213, 347892, + -3451006, -1990717, 3558381, -444529, -1705102, -1069447, 4529043, 1958505, -2619930, -4015795, + -3539053, 1129576, -562641, -1726577, 362925, 695785, -1956358, 5351530, 2914135, -622770, + -440234, -1464584, 631360, -1636383, -1591285, -1685775, -335007, -3115999, -2443837, -4163971, + 936303, -4451734, -178241, -1166084, -1086627, -292058, -8907762, -7494718, -9167608, -6442451, + -4849018, -3081639, 618475, 6442, -2392297, -813896, 2070174, 7967165, -6959995, 3545496, + -2398739, -4226248, 5446019, -371515, 1000727, 7395934, 974958, 3173981, -4670777, -977105, + -13406740, -1410897, 2428804, 1758789, 1060857, 1462436, 1784559, -2838974, -4075924, 3161096, + -435939, 2993592, 1365800, -3397319, 2815351, -176094, -9521942, -7653632, -1385127, -7239168, + 878321, 2413772, -579821, -1773822, -921271, 444529, -2244121, -569083, -502511, -1168231, + 2209761, 719407, 682900, -1213328, -1028645, 3732327, 876173, -2248416, 2441689, -481036, + -1756642, -3730179, 30065, -1990717, -717260, 2789581, 2102387, 2961380, -43074228, -9820443, + 637803, -8568460, 3461744, 856846, 10335839, -4836133, 618475, -2841121, 6929930, -14128295, + -13550622, 5710159, -6564858, 10189810, 3691525, -8192650, -14351633, -328565, -4058744, -6966437, + -2851858, 1638530, 2327872, -3365107, 12292196, 657130, -1219771, -5141076, 4187593, 4655745, + 5018670, 5390184, -665720, -3191161, -1204738, 3186866, -246961, 3846143, -3614215, -1423782, + -1241246, 4456029, 3582003, -3904125, 5070209, -2823941, -3524021, 433792, -1597728, -3354370, + 3463891, -3970697, -521839, 1009317, -955630, -1617055, 914828, 3324305, -2055142, 3186866, + -2628520, 2138894, -1455994, -1647120, -1024350, 642098, 4123169, 745177, 3863323, -2450279, + 39507256, 34709780, 7264937, 9279277, -1840394, 11345156, 9101036, 11428908, -461709, 4597763, + 2765959, -10709501, -9066676, 4999342, 987843, -7662222, -8102456, -4514011, 534723, 4629975, + 1363652, 10872710, 9921374, 4372277, -2274185, -2372970, 6575595, 6176163, 502511, 5418101, + -1722282, 6919193, 403727, -1436667, 9579925, 5027259, 7859790, 5117454, 1743757, 5557688, + 2787434, 1969243, 5113159, -2729452, 1041530, 6831146, -49392, -4290673, 4039417, 4060892, + 2879776, -2991445, -53687, 4015795, 5961415, -2896956, 7204808, 8282845, -1400159, -4361540, + 788127, 1964948, 1301375, 3682935, 10737, 1372242, 2808909, -1911261, 229781, -2750927, + -691490, -3738769, -2160369, -382252, 47916804, 3914863, -1359357, 3393024, 2310693, -7846905, + 2055142, 2149631, 6442, 5119601, 7325067, 10971494, -4885526, -4937065, -7741679, -6247030, + 7073811, -534723, 10213432, -2433099, -2473901, 4234838, 8875550, 3551938, -8905615, 7080254, + -2596308, 5669357, -2935610, 4406637, -5360119, 3322157, -423054, 5168993, 633508, 2959233, + 1586990, -9008694, -4960687, -813896, -1816771, -818191, -2806761, 4389457, 1668595, 9345849, + -1430224, -6345814, -3704409, -609885, 569083, -7060926, 2403034, -2383707, -304943, -657130, + -4129611, 3803194, 7224135, -2239826, 3723737, 891206, -4037269, -354335, -3841848, -3180423, + 657130, -5615670, -4000762, 2388002, -277025, 1294933, 3886946, -5315022, 6470368, 663572, + -2622078, -6431714, 1879048, -2362232, 13840532, -3304977, -13211319, -8935679, -11909944, 11016591, + -8798241, 2441689, 13462575, -594853, -13653701, 936303, -14332306, 11946452, -4153234, 11907797, + 90194, -4533338, 10256382, 384400, 2145336, -7705172, -9715216, -1563368, 3444564, 2093797, + -1879048, -4490389, 4552666, -1387274, 3408057, 5207648, 6347962, 2927020, 3524021, -12826920, + 1097364, -2907693, -4357245, 1758789, 6386617, -5357972, -9822590, -4350802, 2916283, 1123134, + -8626442, -3528316, 4067334, 5905580, -5171141, -3386582, -3972845, 6040872, 8053064, 1621350, + -2667175, 908386, 5781026, -2755222, -193274, -3777424, 4065187, -4726612, -519691, 5607080, + 3390877, -1634235, -816044, -139586, -1771674, -48348448, -48984104, -7939247, -24011014, -14903537, + -8523363, -13327284, -1623498, 10050223, -21960168, 8018704, -4498978, 7314330, 1262720, 4481799, + -9111773, 2308545, -1144609, -4754529, -20145544, -4110284, -10477573, -12811887, -1340030, 3231963, + 676457, -4361540, 2785286, -4140349, -1228361, 10692321, -231928, -3566970, 661425, 6994354, + 9401683, 6298570, 0, 5029407, 5813238, -571231, 51540, -10464688, 3839701, -8647917, + 1614908, 8338679, -5746666, -10471130, 3021510, -5873368, -5619965, 1159641, -88047, -4960687, + 2407329, -1176821, 11280732, 6339372, 3451006, 1398012, 4136054, -408022, 1243393, -4443144, + -8003672, -1316408, 689342, -5708012, -3966402, -3131031, -2675765, -3229816, 1786706, -1653562, + -489626, -3582003, -28658170, 53322020, 41987600, 2540473, 8602819, 3315715, 9371619, 14106820, + 3322157, 13698798, 2557653, -14568529, 9723806, 11540577, 3519726, 3403762, 8759586, 11370926, + -11375221, 9474698, -5970005, 8315057, 1324997, -7007239, 1410897, 9414568, 5441724, -11315091, + 5512591, -4655745, 16415365, -1413044, 3874061, -2555506, -10509785, 10610717, 10625749, 5018670, + 2738042, -498216, 3846143, 11267847, 2660732, 8053064, 1045825, 5592048, 3090229, -762357, + 6139656, -7404524, -11467563, -5065914, -8740258, -7438884, -3783866, -7638600, 10288594, 7290707, + 910533, -1840394, -3644280, -1209033, -251256, 77309, 521839, 1428077, 2160369, 1185411, + -201863, -2710124, -2295660, -384400, -204011, -983548, 1168231, -1189706, 6204081, -1391569, + 8143258, 71541272, -28011776, -15176267, 2598455, -148176, -3539053, -19849192, -8478265, 5089536, + -957778, -2826089, -3878356, 3081639, -16323023, -4640712, 8497593, 15934329, 8686571, 7166153, + -5085242, -4803921, -9390946, 11003706, -15466177, -2673617, 3850438, -10170483, 3358665, 4417374, + 12479027, -19026706, -1589138, -307090, -3925600, 5093831, -17628694, -9178345, 19443316, 12818330, + 2680060, -3304977, 11620034, -3369402, -1488206, 2194728, 9090298, 5259188, -5596343, 1224066, + -3262028, 7468948, -11879880, -5327907, -7189776, -7546258, 14566382, 4022237, 1818919, -6397354, + -526134, -2149631, -2555506, -6708739, 1095217, -6358699, -261993, 2229088, 5617817, -9663676, + -6702297, -8538395, -2604898, 4647155, 824634, 6161131, -813896, -7934952, -833224, -3569118, + 3715147, -330712, 21251498, 48943300, 8035884, 18678812, 16870632, 16194174, 5407364, 12109660, + 7456063, -3500398, -9932112, -6296422, -2864743, 13870597, -11834782, -13097503, -893353, -581968, + -5357972, -10020159, 29673930, 27885076, 20980916, 1050120, -11963631, 2145336, 1997160, -5946382, + 6837588, 4400194, 11980811, 1421634, 4898410, -541166, -8229158, 13600014, 11257109, 8143258, + -1932735, -10722386, 672162, -790274, -2991445, -21934398, 15841987, -9972914, 18268644, 1080184, + 9884867, -2055142, 10898480, 16580721, 3313567, -7441031, -547608, 3077344, -5446019, 2952790, + -2110977, -6979322, -3837553, 2345052, -1700807, 6977175, 2461016, -11688753, 749472, -1567663, + -12620761, -2927020, 2576981, -4763119, 1391569, 10756746, 4406637, -581968, -3704409, -2802466, + 231928, 4715874, -1286343, 5095979, -51391432, -6824703, -32034014, 360777, 5637145, -10874857, + -18734648, -21668110, -20544976, -12163347, -16756815, -4108136, -1140314, -4329327, 5377299, -3341485, + 1086627, 13151190, 5901285, -1301375, 31110596, -6831146, 6227703, -4550518, 2607045, 4516158, + 1651415, -1748052, 4565550, 14570677, 4380867, 5158256, 1629940, 5828271, 12300786, 16958678, + 5325760, 20577188, -5512591, -17740362, 17916456, -5682242, -3775276, -3612068, 10127533, 15721728, + 11847667, -302795, -4086662, -8995809, -22939420, 14130442, 16050293, 11362336, -13700946, 8291435, + 2136746, -1378685, 12996571, 2196876, 8727374, -7260642, 4256313, -9051644, -874026, 7853348, + -2293513, 5907728, -1249836, -3304977, -3234110, -11025181, 1110249, 826781, -94489, 2121714, + -2448131, -13600014, 1030792, 712965, -89930176, -40374840, 18309446, -3515431, -3079492, 3189013, + -11265699, -9904195, -3386582, -4479651, -15751793, 11100343, 1211181, 23489176, -13146895, -11306501, + -19235012, -10782515, -19810536, 1589138, 7232725, -29590178, 19048180, 16378858, -2368675, 3242700, + 12401718, 1808181, 10909217, -22434762, -22570054, -12543452, -14813342, -11420318, 36507224, 11875585, + -8076686, -13151190, -18741090, 8832600, 4992900, -8918500, 7260642, 7164006, -13230647, 1191853, + 2911988, 10346576, -12292196, 30043296, -13219909, -10563472, 4657892, -3296388, -206158, -9118216, + -3461744, 878321, 19076098, -6000070, 27507118, 5811091, 1750199, 3010772, 7312182, -8336532, + -3021510, -10941429, -8836895, -8403104, -85899, 14772540, -9721658, -7181186, -4142496, -5624260, + -5220533, -712965, -3470334, -5201206, -4554813, 14134737, 45541684, 23310934, 14583561, 9790378, + -15925739, 1552631, -12869870, 20154134, -2121714, -2750927, 6947110, 4389457, 4769561, -665720, + 7196218, 2514703, 7593502, -6268505, 19829864, 2611340, -1728724, 59201828, 3298535, -4578435, + -15101105, 8770323, -14042396, 13174812, 31986768, -2553358, 7881265, 7818988, -16370268, -18429704, + 609885, 341450, 14083198, -9139690, 564788, -1017907, 10387378, 10595684, 17832704, 6637872, + 6219113, 7318625, 801011, 11680164, 5514738, -21633750, 4670777, -11175505, -27668180, -2441689, + 7844758, 100932, 2366527, -3725884, 584116, -934155, -96637, 3446711, 657130, 12584254, + -7516193, -1219771, 2510409, 2611340, 416612, -4891968, 8783208, 14798310, 14592151, 3010772, + -3023657, -1529008, 5231270, -727997, -1769527, -337155, 2920578, 6818261, -1140314, -2677912, + -4842576, -3064459, 66640712, -19428284, -7363722, -18073222, 33537252, 12339441, 2763812, 6790344, + -4907000, -7844758, 11798275, 1078037, -11645804, 2995740, -15356656, -11632919, 751619, -15567109, + 2104534, 5059472, -11499775, -20227148, 1915555, 1069447, 13673028, 22449794, 15650861, -10552735, + -171799, 13935021, 25477746, -26706106, 10063108, -5027259, -448824, -12195560, -17126182, 1440962, + 15356656, 4494684, 6869800, 9689446, -1075889, 6466074, -1550483, 4619238, 9848360, -17832704, + -12494060, 27670326, -2218351, -878321, -6285685, 11040213, 35824324, 8952859, 5383742, 11607149, + -9455371, -10675141, -15032, -7973607, -20560008, 13200582, 1675037, -10260677, 5617817, 3060164, + -5841156, -9665824, 13045963, -4520453, -15622944, 7275675, 7209103, 11012296, -10896332, 989990, + 4737349, -1926293, -4176856, 16516297, -1352915, 3027952, -7374459, -981400, -229781, 56899728, + 53912576, -17547088, 14710263, 4443144, 11431055, 28926604, -3556233, -15094663, -5284958, 55875376, + -31387620, -5963562, -15547782, -12461848, -25428354, 27951648, -8044474, -37967512, -28286654, -34638912, + -13269301, 30709016, -3620658, 14508400, -5392332, -15655156, 13718126, 4067334, 17364552, -16664473, + 15457587, 12287901, 6369437, 7157563, -27240830, 7907035, -22728966, 19318762, 40830108, 11856257, + 12320114, -25890062, 36571648, 9814000, -3721589, -5604933, -7329362, 11482595, 18328772, 4486094, + -4168266, -1015760, 5018670, -8778913, -6229850, -8446053, -6483253, -648540, 13445395, -8907762, + 20055350, 7230578, 12300786, -4110284, -28567974, -19170586, 7372312, 1979980, -8478265, 10715943, + -468151, -955630, 5826123, -4002910, 8448201, -1406602, -916976, 4099546, -4900558, -852551, + -5306432, -3225521, -6674379, 4406637, 382252, 1425929, -53541064, -31915902, 7666517, 4185446, + -319975, -23555748, 13924284, 7853348, -14231374, -38534448, 31372588, 7668664, 11620034, 17736068, + 10419591, -5102421, 5677947, -9756018, 26031796, -21786222, -37690484, -1288490, -1973538, -17879948, + -40965400, 1234803, -8516920, -21522082, -11970074, -6771016, 9006546, 1494649, 14867029, 30017526, + -12936441, -24882894, 7664369, -2952790, 133144, 12270722, -17781164, -16121160, -2349347, 14484777, + -19224274, 15814070, -5656472, 30528628, -4531191, -9605694, -3766686, 139586, 5948530, -34976068, + 4881231, -30266634, 30769146, 105227, 19247896, 11542725, -12013024, -1561221, -15869904, 7670812, + -1876901, 6083821, 5617817, -20834886, -3339337, -20098300, -9038759, 8942122, -6272800, -12335146, + 5718749, -188979, -20983062, -10269267, 2044404, 712965, -8763881, 9083856, -4836133, -5334350, + 4260608, -12509092, 6369437, -74120400, -34222300, -12446815, -8349417, -2257005, 7705172, -25765508, + -18601504, 6867653, -21726092, 6859063, -24124832, -7479686, -23330262, -28039694, 29624536, 12363063, + 4383014, -1737314, -24605868, -41517300, 20654498, -54462332, 19681688, 856846, -17557826, 2916283, + -10926397, 4217658, 37879464, -19065360, -2123861, -40913860, 32117766, -9470403, 14568529, -14383845, + -4915590, -3292093, -1644973, 19110456, 6457484, 39760660, 47637628, -4973572, 597000, -15753940, + 1657857, -6116034, 7344394, 15251429, 1775969, 34589520, 9676561, -12809740, 5411659, 7204808, + 94489, -2396592, 972810, 26306674, -19707458, -39479340, -16335908, 627065, 9214852, 6906308, + 19758998, -1958505, 8377334, -9975062, -16007343, -21977348, -17706002, 1533303, -5753109, 10771778, + 2733747, -6027987, -2881923, 18981608, -420907, 10559177, -4660040, 3639985, -4724464, -4322885, + -7264937, 94493576, 42183020, 29152090, 12092480, -10758893, -17186312, -29493540, 16353088, 28271622, + 11678016, -13234942, 33363306, 18784040, 33354716, 2265595, -24142012, -9369471, 50085760, -52293376, + -10752451, 34574488, -20493436, -11491185, 80889264, -10151155, 23115514, 73349448, -11781095, -4827543, + -2153926, 9113921, -4078072, 31799938, 20444044, 26210038, -18567144, -43334072, 17306570, -17100412, + 20802674, -8123931, 7544110, 30880814, 17877802, 1806034, 13572097, 6257768, 13067438, 29854318, + 16816944, -3189013, 29014652, 12165495, 4125316, 6899865, 53455164, 32070520, 49392, 29132764, + -12869870, 36831492, -9193377, 8117488, -10475425, 4406637, 21092584, -11714523, -858993, -2093797, + 7312182, 813896, -13844827, 551903, -11860552, -21174188, 3532611, -28187870, 10943577, 17282948, + -7088844, -12071006, -8121783, 15139760, 4464619, 809601, -6345814, 121951304, 55115168, -24700356, + 10657961, 63011464, 1486059, 45505180, -13368086, 18000208, 37937448, -28580860, 3457449, 66196184, + 59463824, 48399988, 17102560, 41568840, 7002944, 36440652, 12717398, 11027329, -22780506, -26751204, + -38044820, -75387416, 24032490, 893353, -20463372, -7213398, 26087632, -17134772, -2589865, 2944200, + 14669461, -66799628, -10803990, 48475148, 37327560, -13488345, 24663850, 21062520, 13662291, -8188355, + -15524159, -6743099, -10443213, -6764574, -24672440, -20965882, 17109002, -41620380, 13780403, 34149284, + -10123238, -24363202, -37958920, 35613868, -1110249, -17987324, -11753178, -8211978, -13024488, 7501161, + -6012954, -13239237, 13531294, 55437292, -27702540, -16662326, 7084549, -10771778, 12801150, 508954, + 28589450, 5523328, -2776696, -2396592, -29686814, -14014478, -4610648, 2529736, 2295660, 10625749, + 6569153, 1236951, 4776004, 5523328, 17517024, 1447404, 485331, -11373073, 5746666, 8463233, + 3508988, -48185240, -13445395, -57921928, -12599287, -57887568, 27818504, -55155972, 29665340, -9579925, + -31933082, -9683004, -14952929, 67422400, 10456098, -49166640, 938450, -32119912, -25305948, 33195802, + -37510096, -34716220, -39150776, 58800248, -7928510, 38805028, -59869696, -31956704, 23813446, -27940910, + 22711788, 65088080, 42775728, 40261024, 6899865, -6953552, -31621696, -44998372, -2409477, 9962177, + -41661184, 874026, -24554328, 12017318, 18393198, -47699908, -40486508, -74728136, -11684459, 5108864, + -32115618, -46224584, 45513768, 2297808, 46748572, 45848776, -5643587, -6509023, -18640158, 26441966, + 22917946, 3285650, 11323681, -3775276, -2353642, 22361748, -5912023, -26231512, -20143396, -33021856, + -27721866, -10269267, -1288490, -4552666, -41723460, -24210730, 13580687, 3143916, -14847702, 17940078, + -3665755, 910533, 28205050, 23293756, 15002321, 5935645, 18056042, 2662880, 470299, 8353712, + 5931350, -3985730, 1713692, -82304456, -14184129, 7241315, -7593502, 113817, 22282290, -18234284, + 19814832, 18749680, -12992276, 25383256, -35281008, 44216688, 30335354, 1505386, -32497870, 2609193, + 21584358, -96170760, 19950124, 39206608, -68867656, 28333900, -35259536, -50530292, -46050640, 23383950, + -11512660, -71807560, 38588132, 20637318, -43471512, -72651520, 14699526, 8557722, -22872848, -5293547, + -37329708, 35081292, 28980292, 51047832, -40868760, 6644315, -54279796, -20544976, 9363029, -34735548, + 14437533, -4320737, -27251568, -40980432, -44283260, 64753076, -43658344, -20656646, -16432545, 2703682, + 29751238, 17630840, 21700322, 210453, 25391846, -8557722, 4060892, -10788958, -26847840, 5282810, + 57498876, 8907762, 1322850, -236223, -37041944, 24084030, 38684772, 40359808, 8068096, 2993592, + -1767379, -3238405, 5836861, 779537, -18429704, -418759, 3706557, 2695092, 274878, 362925, + 14276471, -4964982, 1823214, -3618510, 753767, 24878598, -54651312, -29038274, -57711476, 16432545, + -10249939, 22909356, -15726023, 10855530, 18893562, -19320910, -32953136, 49173080, -12902082, -21923660, + 57129508, -11763915, -13314399, 65294240, -37776384, 9607842, 15983721, 5087389, -57582628, 184684, + -8403104, -34619584, 19789062, -27197880, 36631776, -6459631, 40774272, -44631152, 27741194, -79018808, + 871878, -43119324, 48105780, -7425999, 6573448, -8297877, -43851616, -3199751, 38201588, 100815768, + 7438884, 6322192, 21421150, 34443492, -5854041, -9732396, 3146064, -1752347, 88669600, -8061654, + 13653701, 35581656, -34565896, -59100896, 178241, -62461708, -7672959, -32085554, -23001698, -12562779, + -26371100, 14794015, 21962316, -36399848, 45883136, 38089916, -5469641, -9487583, -37516540, 26145614, + 9274982, 24796994, -21043192, 10222022, -4110284, 18738942, 2136746, 18129056, -9274982, 13277891, + -2282775, 270583, 4406637, 20562156, 9846213, 6255620, -6822556, 461709, 1853278, 95008968, + 103543072, 721555, -31769874, -25548612, 86719688, -57058640, -65002184, 67555544, -61407296, 39440684, + 12000139, 54640572, 50410032, 33988224, 5446019, -34559456, -29802778, 70929240, -30189326, -3143916, + 17289390, 60410864, 87535728, -2763812, 59788092, -49089328, -51200304, 5682242, -18942954, 28162100, + 17871358, -43785044, 5912023, 27674622, 71977208, 24472724, 29469918, 26993870, 32167158, 8209830, + -2581275, 45621144, 7990787, 36468568, 58488864, 12137578, -24131274, -20525648, 52714280, 13750338, + 108194520, 25196426, 42610372, -44225280, -69477536, -6751689, -81110456, -52014200, -18539226, -27790586, + 2987150, -4198331, 592706, 1047972, -60672856, -50259708, -26566520, -51896088, 18889266, 20534238, + -15743203, -4075924, -48157320, -7610682, 14130442, -13758928, -4183298, 4866198, -30414810, 12644384, + -9384504, 3586298, 5334350, 139586, 2027225, 6556268, -7303592, 1101659, 7015829, -304943, + 1638530, 2029372, -45176612, -158969632, -65601332, -129744520, -29098404, -45382772, -18326626, 11789685, + -42539504, -51552492, -82388208, -65539052, 58536108, -10462540, -52424372, -55744380, 12594992, -74167640, + -104593192, 17207786, -24367496, -22469122, -22505628, 20057498, -62360776, 65534760, -38173668, 44489420, + -31065498, -29854318, 678605, 35916664, -50873888, -48619028, 26006026, -9257802, 71734544, -31533650, + 41087804, 61804580, 29360396, -22623740, -10350871, -6547678, 50702088, -17897128, 34016140, 68423120, + -57632020, -100506528, -39618924, 33973192, 41704132, -47474420, 77876344, -25194278, -28271622, -9517648, + -8630737, -24245090, -63219772, -26789858, -65322156, -62569084, -38798588, 45988364, 10780368, -11199127, + 4112431, 71161168, 66846872, 4621385, -31074088, 12655121, -7118909, 29231548, 9103183, -12904229, + -29605210, -2768107, -6019397, -46954728, -12227772, 17708150, 48507360, -21872120, -53687, 18427558, + -27416924, -983548, -2001455, 695785, -14336601, 18094698, 977105, 4617090, -2375117, }, }; const Word32 CRendBin_Combined_BRIR_coeff_diffuse_re_16kHz_fx[BINAURAL_CHANNELS][2522] ={ { -154619, - -186831, -354335, -231928, -195421, -302795, -255551, -139586, -156766, 88047, 347892, - -710817, 8590, -49392, -223338, -341450, -1176821, -1245541, -1842541, 2450279, -165356, - -944893, -646393, 803159, -1430224, -251256, -532576, -322123, -446677, 2136746, 959925, - -1288490, -676457, -586263, 118112, 25770, -350040, -893353, -1471026, 1803886, -901943, - 1157494, 788127, 1047972, -418759, 1404454, -8549132, 743029, -985695, 326418, -848256, - 40802, -947040, 100932, -2246268, -1413044, -176094, -1194001, -283468, -498216, 2327872, - 173946, -2561948, 2261300, -788127, 1217623, 109522, 878321, -2549063, -762357, -629213, - 313533, 517544, -259846, -723702, 936303, -1340030, -255551, -781684, 347892, 201863, - 1103807, 998580, -1157494, -639950, -23622, -408022, 886911, 49392, 758062, -700080, - -732292, 1088774, 4417374, -1859721, 1979980, -779537, 732292, 17180, 1052267, -395137, - 287763, 481036, 554051, 605590, 996432, -186831, 143881, 1814624, 1350767, -3416647, - 719407, -392990, 204011, -1127429, 807454, -1432372, 1509681, 1288490, 633508, -133144, - -444529, -485331, 1073742, 1028645, -416612, 283468, 1836099, -616328, -21475, -554051, - 227633, 345745, -38655, -446677, 865436, 199716, -253403, 17663054, -1191853, 2525441, - 34360, 852551, 418759, 667867, 483184, 1756642, -886911, 781684, -261993, 360777, - 1009317, 1511829, 659278, 347892, -605590, 1378685, -863288, 564788, -354335, -1318555, - 231928, 543313, 139586, -369367, 210453, -423054, 998580, -1806034, 526134, -373662, - 586263, 36507, -2523293, -852551, 360777, 468151, 397284, -401579, -496069, -461709, - 468151, 1063004, -322123, 10552735, -12588549, 2450279, -3062312, 1595580, -1999307, 1468879, - -2714419, -858993, -1690070, -360777, -1413044, 57982, 2422362, 3517578, 1462436, 732292, - 30065, 1058710, 2527588, 1793149, -1198296, -1473174, -1904818, -962073, -1110249, 27917, - -201863, -238371, 27917, 470299, -893353, 1030792, -1168231, -1606318, 539018, -103079, - 94489, 236223, -1078037, -1290638, 350040, -820339, -1000727, -277025, 126702, -24412594, - 4733054, -1333587, 502511, 414464, -2149631, -1024350, 1816771, -423054, 49392, 2063732, - 586263, -932008, -1627793, 1406602, 12885, -1937030, -2744484, -3901978, 1105954, -1791001, - 270583, -646393, 590558, -487479, 146029, -2070174, -2070174, -1309965, -644245, -1322850, - 242666, -687195, 566936, 2188286, 266288, 307090, 1382980, 328565, 223338, -137439, - -425202, -1591285, -485331, 266288, -408022, -29152090, 10771778, -2808909, 3388729, -1799591, - 2411624, -1479616, -500364, -2566243, 1795296, -3017215, 1840394, -584116, 2617783, -3790309, - 848256, 3384434, 901943, -2989297, -1146756, -1825361, -843961, 1037235, 446677, 753767, - -577673, -1054415, -1524713, -1428077, -238371, -1625645, -399432, -1511829, -1159641, -4105989, - -1262720, -614180, 94489, 51540, 1279900, 564788, 1256278, -178241, 1481764, 352187, - 8590, 3775276, 12799003, -3339337, 5757404, -3253438, 1608465, -3519726, 3030100, -107374, - 3287798, -90194, -182536, 3262028, -380105, -264141, 2838974, -1155346, -2360085, -3792456, - 3646427, -111669, 2531883, 457414, 1829656, 1007170, -2183991, 1161789, 1047972, 30065, - 1299228, 2003602, -2175401, 493921, 38655, 0, -1206886, -392990, -1181116, 551903, - -165356, 1196148, 3064459, 324270, 1599875, -55835, 382252, -103079, 545461, 1419487, - 38317552, -9300752, 3745212, -1702955, 3324305, -1279900, 2574833, -1245541, 953483, -3588445, - 1829656, -3418794, 2817499, -949188, 899796, -895501, 3921305, 665720, 1054415, -1694365, - 2589865, -79457, -1067299, 2276333, -1567663, -2413772, 146029, -648540, 1299228, 141734, - -311385, -680752, 442382, 75162, 547608, -1602023, 476741, -616328, 2811056, -347892, - 1372242, 416612, 1157494, 2231236, -1370095, 283468, 521839, -526134, 1655710, 3094524, - -19939386, 7696582, -6234145, 3474629, -3163244, 914828, -4127464, 2469606, -1715839, 3502546, - -515396, 1447404, -3307125, -1496796, -311385, -1312113, -1187559, 4050154, -3193308, 380105, - 1861868, -3994320, 895501, 1198296, -1050120, 1159641, 356482, 597000, -2527588, -382252, - -863288, 1337882, -1292785, 652835, -2954938, -758062, 2042257, 841814, 605590, -914828, - -493921, -2383707, -2398739, 1086627, 420907, -294205, -390842, -395137, 165356, 10737, - -530428, -676457, -32205812, 10316511, -5843303, 1275605, -695785, 1608465, -2564096, 2409477, - -1221918, -1088774, -474594, 1685775, -1168231, -1692217, 944893, 3414499, -644245, -47245, - -6195491, 319975, -45097, 2746632, -1097364, -659278, -4760971, -1791001, -77309, -124554, - 1477469, 1995012, -3620658, -3423089, 1947768, 302795, -3721589, -2987150, 1239098, 556198, - -324270, -335007, -1490354, 1183264, -539018, 281320, 83752, -2126009, -893353, 768799, - -3006477, -1702955, -670015, 367220, -667867, -32100586, 14020921, -7941395, 5804649, -5572720, - 2570538, -6322192, 1290638, -4157528, 6247030, -3339337, 2106682, -498216, -107374, -3027952, - -992137, -1305670, 5624260, -1191853, 2787434, 4602058, 2521146, 609885, -801011, 1045825, - -1202591, 2549063, 2353642, 289910, -1464584, 380105, 292058, -1810329, -983548, 1269163, - 1705102, -1492501, -1617055, -1507534, -115964, -650688, 597000, -1447404, 781684, -2248416, - 423054, -1245541, -315680, 197569, -1120987, -1226213, -1775969, -1455994, 12083890, 12545599, - -4352950, 4312147, -4795331, 974958, 1735167, 332860, -1784559, 2499671, 807454, 5085242, - 2772402, 5714454, -618475, 3448859, -659278, 2272038, 3137474, -204011, -3796751, 4028679, - -184684, 1799591, -663572, 176094, 790274, 4879083, 940598, -2377265, -622770, 794569, - -1159641, 3715147, 1760937, -386547, -672162, -1842541, 1831804, -1806034, 2272038, 2276333, - -1307818, 1372242, 1357210, 719407, 103079, 3590593, 2390149, 2665027, 165356, 448824, - 1395864, -592706, -17180, 36290328, -12700218, 4660040, -5830418, 4286378, -3770981, 5456756, - -1608465, 416612, -3755949, 8096014, -929860, 7307887, 661425, 1380832, -4569845, 1864016, - 7408819, -2059437, -5819681, 1039382, 489626, 2946348, -4123169, 3708704, 206158, 446677, - -133144, -4080219, -983548, 826781, -4801774, 962073, 2319282, 1810329, -1157494, -289910, - 81604, 2480344, 989990, -298500, -758062, 1949915, 1561221, 4687957, 1475321, -588411, - 2858301, 1116692, 36507, 934155, 2250563, 1365800, 577673, 388695, 12008729, -17538498, - 10378788, -7838316, 3178276, 1110249, -880468, -725850, 1984275, -4458176, -2892661, -2336462, - -1872606, -6066642, 2942053, -5634997, -330712, -4516158, 1531156, -3408057, -2763812, -1380832, - 4960687, 674310, 4821101, 2561948, 3262028, 4861903, 126702, -648540, -880468, 1355062, - 3624953, -335007, -412317, -2527588, 1767379, -319975, -1644973, 1382980, 1011465, 3919158, - 1449552, 1848983, -2935610, -1292785, -319975, -508954, 1754494, -5607080, 1050120, -1365800, - -1114544, -1722282, -2141041, -642098, -2121714, 820339, -1535451, -191126, -3135326, -37192268, - -8231305, 1569811, -7164006, -3032247, 163209, -347892, -6128919, 1589138, -6105296, 49392, - 4660040, -1017907, -940598, 2514703, 1584843, 2564096, 12885, 3128884, -1943473, 805306, - 3618510, -371515, -382252, -2579128, 3435974, -2886218, -1672890, 831076, 1301375, 2630668, - 8293582, -2415919, -1524713, -3738769, 53687, -2778844, 487479, -1166084, -4125316, -339302, - 4928475, 1342177, -3579855, -1788854, 1533303, -2160369, -2753074, 408022, -1380832, 223338, - 382252, 3131031, 300648, 1503239, 687195, -2755222, -1535451, 1632088, 1428077, -1136019, - -45475112, 37445672, -13149042, 11087458, -8248485, 6219113, -2418067, 3938485, -4389457, 2619930, - 3096672, 4460324, -2974265, 5409512, 2682207, 9249212, -1483911, 712965, -4954245, 1172526, - -1748052, -3163244, -3837553, -4479651, -4063039, 5954972, -283468, 7164006, 1874753, 1236951, - -128849, 826781, -3204046, 414464, -1168231, 1406602, 4299263, 661425, 1421634, 141734, - 455267, -3384434, -1782411, -246961, -240518, 311385, -985695, -3139621, 85899, 3096672, - -1024350, 813896, 955630, -2811056, 1853278, 639950, 1028645, -702227, 324270, -448824, - -811749, 26598732, -3944928, -8413841, -2841121, -1672890, -1247688, -7393786, -3828963, 2226941, - 1413044, 2278480, 2800319, -4926328, 2164664, -861141, 1939178, 8244190, -8078834, 2967823, - 2959233, 2340757, -1995012, -4608500, 3818226, 1236951, 2765959, 5134634, 126702, 7026567, - 717260, 3341485, 388695, 2312840, -1775969, 2746632, 1995012, 2628520, -846109, 968515, - -85899, 3330747, 4043712, -5686537, 7969312, 813896, 2302103, 491774, 1471026, 1675037, - -1559073, 4866198, 2641405, 335007, 4408784, 1990717, -2287070, -40802, -1505386, -1552631, - -1213328, 947040, -264141, 433792, -38655, -4647155, 21120502, 1979980, 4413079, -5280663, - -891206, -13333726, 3358665, -493921, -9032316, 7840463, -4112431, 431644, 5763846, 2697240, - 4357245, -3081639, 1988570, -4086662, 199716, -3468186, 1475321, -5357972, 8033737, 5888400, - 4786741, 5626407, 1316408, -1627793, -3324305, 1720134, 4447439, 191126, 3060164, -1962800, - 693637, 3066607, 2121714, 2778844, 266288, 1118839, -249108, -1662152, 1913408, -1093069, - 929860, 947040, -1827509, 2765959, -3433826, 3313567, -1582696, 2396592, 3420942, -3927748, - 457414, 661425, -1642825, -3062312, 2323577, -5085242, -4039417, 2690797, 1080184, 1331440, - 1028645, 3416647, 3148211, 33006824, -27597312, 9244917, -6927782, 2330020, 8519068, 6895570, - -4687957, 8282845, 4647155, 4962835, -3539053, 2254858, -1838246, 9844065, 2699387, 2701535, - 3790309, 4099546, 2609193, 2761664, -8233453, 1189706, -14832670, -5265630, -1423782, -8594230, - 2076617, 4406637, -3242700, -4728759, -5448166, -5325760, -2811056, 2834679, 2308545, -7675107, - -8748848, -822486, -4479651, 2216203, 1896228, 665720, -657130, 3951370, -2196876, 34360, - -605590, -2025077, -5622112, 4148939, 7331509, -1187559, -949188, 3262028, -5214091, 6090264, - 1597728, -3405909, -143881, -3186866, -1273458, -981400, -2145336, -811749, -1460289, -4599910, - -51460152, 4840428, -4810364, 1632088, 4980015, 3496104, 10211285, -4546223, -599148, 586263, - 12272869, 4086662, -10028749, -6661495, 5289252, 7136088, -2083059, -3060164, -429497, 3146064, - 7423851, 7501161, -330712, -14179835, -4239133, -1711545, -1883343, 7793218, -3917010, 4432406, - 257698, -1168231, -7419556, 283468, 5549098, -9519795, -5604933, -2463164, -1806034, -4672925, - -3843996, -8927090, -1773822, -6152541, -118112, 962073, 6053757, -4550518, -2952790, 221191, - -777389, 652835, -5506148, 1784559, 1902671, 345745, 182536, -4385162, -3788161, -2383707, - -1247688, -659278, -7005092, 1063004, 1971390, -3345780, -6395207, -29828548, 32169306, -4303557, - 2257005, 7784628, 9255655, -6528351, 4571993, 1988570, 5796059, 4052302, 8083129, 4726612, - -5113159, -8562017, 1466731, 9661529, 18912888, -4224101, -6158983, 5201206, 3229816, -3268470, - -9032316, -1565516, -1675037, -8022999, 7477538, 9021579, 304943, 2349347, -10737, 7170448, - -5181878, -16200617, 7125351, -1642825, 5677947, 2997887, 371515, -3743064, -6225555, 4760971, - 5336497, 4168266, -620623, 27917, 5843303, 3590593, 1872606, -3034395, 4924180, 4410932, - -575526, -865436, -2710124, 3697967, 186831, -7765301, 6790344, 4417374, -1451699, 2325725, - -953483, 616328, -96637, 2388002, 5815386, 2388002, -974958, -1627793, -186831, 9120363, - 461709, -6790344, -14093935, 3569118, -657130, -11557757, 4030827, -3725884, 618475, -4277788, - -3390877, 3848291, 8967892, 1264868, 11854110, 5527623, -5894843, -7630010, 12953621, -5418101, - -380105, 1342177, -12094628, 100932, 6431714, -6835441, -1855426, 8319352, 517544, 4447439, - 122407, 5557688, -914828, -3408057, -506806, 7320772, 9554155, -2911988, 1906966, 1900523, - 6343667, -3566970, -725850, 1488206, -1683627, 4395899, 1795296, 597000, -2267743, 3573413, - 3584150, 453119, 64425, 3021510, 4179003, -4915590, -169651, 1711545, 2201171, -2388002, - 1956358, 67632848, -5948530, 1617055, 4694400, -5525476, -9891310, -5553393, -2068027, -11345156, - -12189117, 1466731, -10730976, -4458176, -2716567, -2282775, 7462506, 8555575, 3098819, 17373142, - 3616363, -7876970, 15105400, -972810, 10866267, -2808909, -508954, -9098888, 942745, 8961449, - 296353, -3650722, -1047972, 1346472, -1522566, -1309965, 3884798, -7148973, 3715147, 1627793, - -2989297, -6753836, -4269198, 6066642, 6146098, 7043747, -10402411, 6706592, 2383707, 231928, - 1194001, 1597728, 1928440, 1941325, -219043, 1103807, 6594923, -1127429, 3068754, 3274913, - -1644973, 5400922, 6382322, 1492501, 360777, 5723044, 4563403, 3453154, -39795020, -66496832, - 23562190, -2035815, 9571335, -11924977, 148176, -13750338, -2145336, -19666656, 7939247, 8589935, - -854699, -1825361, -672162, 1488206, -5065914, -16784732, 29897268, 1808181, -4348655, 10118943, - 1382980, -5763846, 14093935, 15921444, -7441031, 9292162, 1361505, -2314987, -15687368, -8555575, - 11353746, -6337224, 1153199, -1041530, 7535520, -12597139, -14465450, 1767379, -350040, -9605694, - 5117454, 972810, -6448894, 3985730, -7056632, -5551245, 1971390, 2323577, -266288, -1868311, - -3672197, 3736622, 5854041, 837519, 1393717, -1958505, -2525441, 5587753, 2147, 1204738, - -6468221, -1380832, -4563403, 3152506, 4017942, 23622, 3165391, -21440476, 63735168, -28552942, - 4599910, 4028679, 15835544, -2177549, 10033044, -10245644, 418759, -19514184, -3923453, -21475, - 7593502, 1187559, 7816841, -5658620, -12008729, 1430224, -17952964, -18745384, 294205, -6204081, - -599148, 1535451, 2413772, -4679367, -3362960, -6704444, -10378788, 4037269, 4612795, -13176960, - -6244883, -16546362, -36507, -7301445, 5639292, 6970732, -13939316, 2177549, 10926397, 10166188, - -5579163, 3743064, -4217658, -1853278, 2821794, -6083821, -1681480, 5845451, 4116726, 4054449, - 4447439, 2716567, -1823214, 3947075, 2098092, -2660732, -564788, 7937100, -1245541, -3335042, - -1584843, 3448859, -3788161, -7621420, -1073742, -2428804, 1488206, 2070174, -1730872, -53369264, - -16930762, 5381594, -8927090, 6977175, -4069482, -478889, -16155519, -19245748, -3139621, -7086696, - 7221988, 1692217, -2888366, -39178692, 18779744, 850404, 16280074, 20504174, 13911399, -20723218, - -5574868, -2469606, -5695127, 3848291, 4138201, -852551, -8027294, 7672959, -14340896, -7803956, - 11448235, 130997, -5916318, 13707388, -384400, 14405320, -5860483, -2864743, 1047972, 4185446, - -11398843, -8351564, -2624225, 7915625, -3816079, 891206, -4133906, 5136781, 6242735, 895501, - -431644, -12837657, -2115272, 5585605, 5942088, -4342212, 6734509, 2031520, -2997887, 1507534, - -8647917, -2901251, -6126771, 4597763, -197569, -2323577, 794569, -13737453, -1022202, 1932735, - 5134634, 34452080, 12047383, -19662360, -2832531, -8080981, 7709467, -11585674, 10881300, -1591285, - 12545599, 8995809, 15092515, -18764712, 24019604, -13642964, 14304389, -7125351, 8815420, 2293513, - 7569880, -11699491, -27975270, 11862700, 20489142, -6433861, 8757438, -9320079, 2976412, -5832566, - 21494164, 629213, -1486059, 5834713, -9582072, -6210523, -5385889, 10048076, 654983, -2488934, - 564788, -901943, 14907831, 10557030, -4831838, 5598490, 5997922, -5001490, -2931315, -4389457, - -10363756, -496069, 734439, -448824, -3500398, -9990094, 38655, 17935784, 9633612, -5942088, - 9889162, 122407, 307090, 9064528, 4591320, -6844031, 3491809, 3027952, 8753143, 11229192, - -7462506, 4909148, 6255620, 71146136, -58815284, -10249939, 2488934, -1597728, -16557099, 4930623, - 3811784, 22370338, -7889855, 3990025, 18393198, -6442, 10913512, 36612448, -8450348, -2957085, - -19701014, -18627274, 468151, 5581310, -8506183, 2948495, 32403380, 18356690, 2385854, 635655, - 2340757, 17510582, -15436112, -7314330, -1146756, 8708046, -1750199, 1591285, -7958575, 2224793, - -13907104, -8699456, -10574209, -534723, -9491878, 1490354, -16690243, 6844031, -33084134, -9159018, - 4260608, 5289252, -1466731, -8364449, 2308545, 152471, 3708704, -9824738, 3770981, -6126771, - -6163278, -15386720, -11025181, -4116726, -2040110, -253403, 2216203, 3637837, 622770, 1163936, - -8939974, -1172526, -10896332, -2778844, -1153199, -1005022, -46145128, -32396938, -3197603, -7284265, - 22879290, -135291, 3547643, -30629560, 710817, 3146064, 889058, 1344325, 17121888, -23293756, - 3936338, -5738077, -16172699, -8446053, 13443248, -5961415, 10816875, -4952098, 5965710, 2619930, - -3118146, -2783139, 6882685, -2059437, -807454, -20169166, 8781061, 7511898, 7432441, 8252780, - -17817672, -18784040, 9678709, 14259291, -19069654, 5690832, 2061584, 14830522, 8613557, 395137, - 10185515, -6796786, -11652246, -2843268, -21960168, -16866336, -2207613, -1990717, 2987150, -11454678, - 3186866, -9442486, -27844272, -9311489, -7705172, -28402618, -180389, -5708012, -3326452, 1814624, - 8379481, -9283572, 5242008, 2156074, -12105365, -9107478, -9113921, -3231963, -2282775, -28630252, - 42610372, -22943716, -10054518, -13552769, 2965675, 3373697, 5886253, -3032247, 18300856, 13868449, - -13975824, -24202140, 8452496, -9229885, 21492016, 1586990, 8856223, 11360188, -8901320, -8265665, - 28673202, -16924318, -4651450, -8647917, 403727, -3620658, 3240553, -5042292, -2611340, -22632330, - 19228568, -6990060, -2480344, 23553600, -16870632, -20332376, 1093069, -9186935, -14164802, -6442, - -7662222, 5446019, -30189326, -9616432, -8059506, -523986, 9463960, 347892, 1153199, 5602785, - -5976447, 4378719, 5942088, 6300717, 5555540, -3384434, -7262790, -5022965, 6382322, -17304424, - -5001490, -3672197, -5553393, 12191265, -9088151, -11811160, 11327976, 4520453, 6242735, 15680926, - -6912750, -4191888, 5808944, -7239168, -60080152, 28559386, 30872224, 15300821, 13853417, -11602854, - 14108968, -26575110, -103079, -31056908, -4876936, -14173392, 13005161, -15438260, -12822625, -4372277, - -22905060, 5332202, -10952167, 8566312, -21534966, 33266670, -12199855, 15081778, -15013058, 178241, - -15028091, -5761699, 6947110, 20800526, 23888608, -13664438, -738734, -8617852, -13885629, -11297911, - -36129264, -2205466, 5117454, -34608848, 12167642, 5134634, 8323647, 14450417, 9259949, 3846143, - -11912092, -5175436, -13183402, -7885560, 5939940, -28179280, 9775346, 3539053, 1015760, -14272176, - -8070244, 5046587, 20776904, 7164006, 4926328, -10372346, 8351564, -777389, -10711648, 612033, - -7851200, -13853417, -6478958, -5164698, -10857677, 9313637, 6549825, 6790344, 5400922, 48462264, - -34196528, -14613626, -4827543, -639950, 23280870, -4986457, 7226283, -14199162, 6786049, -8980777, - -39313984, -27028230, -10548440, 13464722, -2308545, -21773336, -20714628, -42576012, -14304389, 5048734, - 5010080, 1617055, -5059472, -2800319, -13816910, 3135326, 4750234, 6902013, 886911, -2175401, - -5828271, -20349556, -5920613, -4771709, 9328669, -2274185, -16879222, -6448894, 3824669, -18159122, - 2257005, -18691698, 9513353, 14510547, -14693083, -26944478, -6088116, -8437463, -13228499, 1372242, - 1535451, 2774549, 5699422, 506806, -11506217, 17117592, 25301652, -12375948, 9932112, 4739497, - 11474005, -18580028, 6195491, 2920578, 5791764, -26718992, 20605106, 3365107, 1400159, -2409477, - -16698833, 5229123, 798864, 5446019, 79901424, -44201656, 4389457, -4211216, -9143985, -32948842, - -1436667, -1619203, 27382564, 12547747, 54956256, -21519934, 2510409, 6128919, 13501230, -5441724, - -2068027, 22241488, -13415330, 31937376, 19791210, -44171592, 42691976, 14931454, -14693083, -10954314, - -16054588, -8637179, 3599183, 1939178, -11343009, 28011776, 4206921, -13471165, -11257109, 2675765, - -14063870, -26089778, 934155, 15429670, 6884833, 18766860, -8038032, 5740224, 20989506, 28941638, - 7653632, -30283814, 10703059, -9880572, -15745350, 4183298, 13627931, 7106024, -2746632, -27556510, - -22954452, 33479270, -3425237, 25814900, 4069482, -10499048, 13926431, -22817014, -8768176, 10700911, - -1576253, 22265110, -16537772, -35742716, -8360154, -1629940, -9030169, -8074539, 24567212, -91016800, - -59569048, 20192788, -31535798, 8446053, -16363825, -55568288, -41414224, 71290016, -34591668, 31507880, - 17295834, -20194936, 15695958, -12006581, 21638046, 24051816, -2830384, -8450348, 42277512, -15395310, - -50304804, -466004, -21754010, 3743064, 3470334, 28138478, 14416058, 4844723, 13230647, -14510547, - -1161789, 30930206, 19432580, -7084549, 7142531, -29719026, -45118632, -33685428, -23807004, -7632157, - -7391639, 6871948, -5229123, -13516262, 27066884, 6156836, -22295176, -21071110, -6807523, 6951405, - -22428320, 7299297, 25230786, -1745904, 8802535, -19262928, 12998719, 9036611, 2241973, 9270687, - -16857746, -25675314, -35512936, 16331613, 12783970, 221191, 12777528, 1690070, -16484084, -4069482, - 843961, -28177132, -2435247, -43115028, -108757160, 35147864, -9927817, -8497593, 17813376, 3229816, - 9350144, 45268956, 26590142, 33797096, 16458315, 46684148, -9764608, -48556752, 5654325, -6882685, - -21386790, -43250320, -19393924, 34733400, 7033009, -4202626, 6388764, -4486094, -672162, 28924458, - 2725157, 9603547, -5793911, 5783174, 29411936, -10286447, -21674552, 13655849, -37602440, -38570952, - -24670292, -6575595, -68719, 13219909, 34735548, -1455994, -13413183, -37735584, -59526100, -22664542, - -9564892, -5615670, -1413044, 19428284, -27812060, 46076408, 24084030, -6822556, 12899934, -21283710, - 2478196, -1911261, 21354578, 40789304, 28129888, -27751932, -11626476, 4829691, -5046587, -7795366, - 1277753, -15476915, -42726336, -5465346, -8628589, -5145371, 5656472, -18083960, -6317897, 46284716, - 46795816, 17667348, 32152126, 24017458, 48930416, -38049116, 50745040, -56081536, -7803956, 57793080, - 77951512, 18558554, -2302103, 30313880, -20716774, -24152748, 57022132, 11716671, -5980742, 16237124, - 46282568, -8553427, 29298120, -5800354, -8624294, -2214056, 22151294, -47729972, -3871913, 27812060, - -8965744, 5757404, -15693810, 13746043, 42507292, -33874408, 14237817, -7705172, 15380278, -16071768, - 29237990, 5699422, 11952894, 14416058, -42840152, 25505664, -60518236, -9174050, 37626060, 7481833, - -20295868, 42973296, -11491185, -19855634, 30492120, -7801808, -6152541, -472446, 19138374, 1565516, - 6429566, -29910152, 14261439, 7655779, 68661496, -45606112, -20298016, 10986526, -11491185, 20523502, - 20046760, -18141942, 47437912, 24715390, 89990304, -55656332, 2463164, -8531953, -14716705, 2332167, - -20282984, -8117488, -66163972, -54911156, -55177444, 19151260, -11480448, 18983756, -12627204, -39449276, - 64063732, 45466524, -29886530, -24174224, -35317516, -6468221, 13516262, 22093312, 25679610, -839666, - 19758998, -4728759, -25739740, -29847876, 18904298, -12936441, 58037892, 37892348, 53429392, 8875550, - 19005230, 54511724, 36161476, -10267119, 8948564, -897648, -169651, 7176891, -25692494, -16226386, - 8564165, -29300266, -33002528, 32695438, 34009700, -36687612, -2512556, 70461088, 46366320, -382252, - -24096914, -2804614, 12627204, 15182709, -10956462, -23061826, 28787018, 556198, 5516886, 24726126, - 25679610, -26115548, 10153303, -1479616, 8967892, -41661184, 5471789, 44957572, -43971876, 71509056, - 26852136, -10821170, -3444564, 21646636, -28284508, -36500780, 29233694, -43396348, -55787332, 13372381, - -30438434, -39011188, -20822002, 34954592, 87578680, 35493608, -49334140, 89590872, 9457518, -15470472, - 15277199, -54284092, 12393128, 6045167, -39114268, 31574452, -11334419, 5160403, -28490666, 14016626, - -26149908, 44568876, -55583320, -21466246, -19978040, 24472724, 28726888, 25172804, -30148522, 6923488, - -31494996, -10260677, 14832670, 36786396, 16406775, -19327352, 36045512, 17349520, 28759102, 225486, - 33696164, -17255032, 17892834, -55508156, 58536108, -7252053, 6629282, -18079664, -33253784, -622770, - 18075370, 45730664, 11918534, -59987808, 22061100, -25909390, 44588204, 1264868, -21311628, 6124624, - -19518478, 6541235, -38442104, 9674414, -146872848, 8398809, 26753352, 60275572, 21081846, -89661736, - 123768072, 46514496, -53901840, 21908628, 123147448, 29072634, -27496380, -1836099, -71487584, 39573828, - 5488968, -16945794, 12601434, 26989574, -45584636, 27311698, -57610544, 8156143, -52289080, -47053516, - -18668076, 24861418, 37185828, -24867860, 32839320, -51163796, -5336497, 61482456, 7849053, -19580756, - -4602058, 13569949, -11343009, -37400576, -41382008, -3850438, -17555678, 45030584, -57741540, 66024384, - 23160612, 10247792, -18562848, -4945655, 32594506, -21863532, 43057048, 12071006, 39361228, -11126113, - -17549236, -61018600, 25209310, -4099546, -61403000, 21900038, -358630, 42073500, 68266360, -24575802, - 19235012, 33992520, 38785704, 9386651, -13743895, -1318555, -72357312, -1451699, 15056008, 21627308, - 10587094, }, + -186831, -354335, -231928, -195421, -302795, -255551, -139586, -156766, 88047, 347892, + -710817, 8590, -49392, -223338, -341450, -1176821, -1245541, -1842541, 2450279, -165356, + -944893, -646393, 803159, -1430224, -251256, -532576, -322123, -446677, 2136746, 959925, + -1288490, -676457, -586263, 118112, 25770, -350040, -893353, -1471026, 1803886, -901943, + 1157494, 788127, 1047972, -418759, 1404454, -8549132, 743029, -985695, 326418, -848256, + 40802, -947040, 100932, -2246268, -1413044, -176094, -1194001, -283468, -498216, 2327872, + 173946, -2561948, 2261300, -788127, 1217623, 109522, 878321, -2549063, -762357, -629213, + 313533, 517544, -259846, -723702, 936303, -1340030, -255551, -781684, 347892, 201863, + 1103807, 998580, -1157494, -639950, -23622, -408022, 886911, 49392, 758062, -700080, + -732292, 1088774, 4417374, -1859721, 1979980, -779537, 732292, 17180, 1052267, -395137, + 287763, 481036, 554051, 605590, 996432, -186831, 143881, 1814624, 1350767, -3416647, + 719407, -392990, 204011, -1127429, 807454, -1432372, 1509681, 1288490, 633508, -133144, + -444529, -485331, 1073742, 1028645, -416612, 283468, 1836099, -616328, -21475, -554051, + 227633, 345745, -38655, -446677, 865436, 199716, -253403, 17663054, -1191853, 2525441, + 34360, 852551, 418759, 667867, 483184, 1756642, -886911, 781684, -261993, 360777, + 1009317, 1511829, 659278, 347892, -605590, 1378685, -863288, 564788, -354335, -1318555, + 231928, 543313, 139586, -369367, 210453, -423054, 998580, -1806034, 526134, -373662, + 586263, 36507, -2523293, -852551, 360777, 468151, 397284, -401579, -496069, -461709, + 468151, 1063004, -322123, 10552735, -12588549, 2450279, -3062312, 1595580, -1999307, 1468879, + -2714419, -858993, -1690070, -360777, -1413044, 57982, 2422362, 3517578, 1462436, 732292, + 30065, 1058710, 2527588, 1793149, -1198296, -1473174, -1904818, -962073, -1110249, 27917, + -201863, -238371, 27917, 470299, -893353, 1030792, -1168231, -1606318, 539018, -103079, + 94489, 236223, -1078037, -1290638, 350040, -820339, -1000727, -277025, 126702, -24412594, + 4733054, -1333587, 502511, 414464, -2149631, -1024350, 1816771, -423054, 49392, 2063732, + 586263, -932008, -1627793, 1406602, 12885, -1937030, -2744484, -3901978, 1105954, -1791001, + 270583, -646393, 590558, -487479, 146029, -2070174, -2070174, -1309965, -644245, -1322850, + 242666, -687195, 566936, 2188286, 266288, 307090, 1382980, 328565, 223338, -137439, + -425202, -1591285, -485331, 266288, -408022, -29152090, 10771778, -2808909, 3388729, -1799591, + 2411624, -1479616, -500364, -2566243, 1795296, -3017215, 1840394, -584116, 2617783, -3790309, + 848256, 3384434, 901943, -2989297, -1146756, -1825361, -843961, 1037235, 446677, 753767, + -577673, -1054415, -1524713, -1428077, -238371, -1625645, -399432, -1511829, -1159641, -4105989, + -1262720, -614180, 94489, 51540, 1279900, 564788, 1256278, -178241, 1481764, 352187, + 8590, 3775276, 12799003, -3339337, 5757404, -3253438, 1608465, -3519726, 3030100, -107374, + 3287798, -90194, -182536, 3262028, -380105, -264141, 2838974, -1155346, -2360085, -3792456, + 3646427, -111669, 2531883, 457414, 1829656, 1007170, -2183991, 1161789, 1047972, 30065, + 1299228, 2003602, -2175401, 493921, 38655, 0, -1206886, -392990, -1181116, 551903, + -165356, 1196148, 3064459, 324270, 1599875, -55835, 382252, -103079, 545461, 1419487, + 38317552, -9300752, 3745212, -1702955, 3324305, -1279900, 2574833, -1245541, 953483, -3588445, + 1829656, -3418794, 2817499, -949188, 899796, -895501, 3921305, 665720, 1054415, -1694365, + 2589865, -79457, -1067299, 2276333, -1567663, -2413772, 146029, -648540, 1299228, 141734, + -311385, -680752, 442382, 75162, 547608, -1602023, 476741, -616328, 2811056, -347892, + 1372242, 416612, 1157494, 2231236, -1370095, 283468, 521839, -526134, 1655710, 3094524, + -19939386, 7696582, -6234145, 3474629, -3163244, 914828, -4127464, 2469606, -1715839, 3502546, + -515396, 1447404, -3307125, -1496796, -311385, -1312113, -1187559, 4050154, -3193308, 380105, + 1861868, -3994320, 895501, 1198296, -1050120, 1159641, 356482, 597000, -2527588, -382252, + -863288, 1337882, -1292785, 652835, -2954938, -758062, 2042257, 841814, 605590, -914828, + -493921, -2383707, -2398739, 1086627, 420907, -294205, -390842, -395137, 165356, 10737, + -530428, -676457, -32205812, 10316511, -5843303, 1275605, -695785, 1608465, -2564096, 2409477, + -1221918, -1088774, -474594, 1685775, -1168231, -1692217, 944893, 3414499, -644245, -47245, + -6195491, 319975, -45097, 2746632, -1097364, -659278, -4760971, -1791001, -77309, -124554, + 1477469, 1995012, -3620658, -3423089, 1947768, 302795, -3721589, -2987150, 1239098, 556198, + -324270, -335007, -1490354, 1183264, -539018, 281320, 83752, -2126009, -893353, 768799, + -3006477, -1702955, -670015, 367220, -667867, -32100586, 14020921, -7941395, 5804649, -5572720, + 2570538, -6322192, 1290638, -4157528, 6247030, -3339337, 2106682, -498216, -107374, -3027952, + -992137, -1305670, 5624260, -1191853, 2787434, 4602058, 2521146, 609885, -801011, 1045825, + -1202591, 2549063, 2353642, 289910, -1464584, 380105, 292058, -1810329, -983548, 1269163, + 1705102, -1492501, -1617055, -1507534, -115964, -650688, 597000, -1447404, 781684, -2248416, + 423054, -1245541, -315680, 197569, -1120987, -1226213, -1775969, -1455994, 12083890, 12545599, + -4352950, 4312147, -4795331, 974958, 1735167, 332860, -1784559, 2499671, 807454, 5085242, + 2772402, 5714454, -618475, 3448859, -659278, 2272038, 3137474, -204011, -3796751, 4028679, + -184684, 1799591, -663572, 176094, 790274, 4879083, 940598, -2377265, -622770, 794569, + -1159641, 3715147, 1760937, -386547, -672162, -1842541, 1831804, -1806034, 2272038, 2276333, + -1307818, 1372242, 1357210, 719407, 103079, 3590593, 2390149, 2665027, 165356, 448824, + 1395864, -592706, -17180, 36290328, -12700218, 4660040, -5830418, 4286378, -3770981, 5456756, + -1608465, 416612, -3755949, 8096014, -929860, 7307887, 661425, 1380832, -4569845, 1864016, + 7408819, -2059437, -5819681, 1039382, 489626, 2946348, -4123169, 3708704, 206158, 446677, + -133144, -4080219, -983548, 826781, -4801774, 962073, 2319282, 1810329, -1157494, -289910, + 81604, 2480344, 989990, -298500, -758062, 1949915, 1561221, 4687957, 1475321, -588411, + 2858301, 1116692, 36507, 934155, 2250563, 1365800, 577673, 388695, 12008729, -17538498, + 10378788, -7838316, 3178276, 1110249, -880468, -725850, 1984275, -4458176, -2892661, -2336462, + -1872606, -6066642, 2942053, -5634997, -330712, -4516158, 1531156, -3408057, -2763812, -1380832, + 4960687, 674310, 4821101, 2561948, 3262028, 4861903, 126702, -648540, -880468, 1355062, + 3624953, -335007, -412317, -2527588, 1767379, -319975, -1644973, 1382980, 1011465, 3919158, + 1449552, 1848983, -2935610, -1292785, -319975, -508954, 1754494, -5607080, 1050120, -1365800, + -1114544, -1722282, -2141041, -642098, -2121714, 820339, -1535451, -191126, -3135326, -37192268, + -8231305, 1569811, -7164006, -3032247, 163209, -347892, -6128919, 1589138, -6105296, 49392, + 4660040, -1017907, -940598, 2514703, 1584843, 2564096, 12885, 3128884, -1943473, 805306, + 3618510, -371515, -382252, -2579128, 3435974, -2886218, -1672890, 831076, 1301375, 2630668, + 8293582, -2415919, -1524713, -3738769, 53687, -2778844, 487479, -1166084, -4125316, -339302, + 4928475, 1342177, -3579855, -1788854, 1533303, -2160369, -2753074, 408022, -1380832, 223338, + 382252, 3131031, 300648, 1503239, 687195, -2755222, -1535451, 1632088, 1428077, -1136019, + -45475112, 37445672, -13149042, 11087458, -8248485, 6219113, -2418067, 3938485, -4389457, 2619930, + 3096672, 4460324, -2974265, 5409512, 2682207, 9249212, -1483911, 712965, -4954245, 1172526, + -1748052, -3163244, -3837553, -4479651, -4063039, 5954972, -283468, 7164006, 1874753, 1236951, + -128849, 826781, -3204046, 414464, -1168231, 1406602, 4299263, 661425, 1421634, 141734, + 455267, -3384434, -1782411, -246961, -240518, 311385, -985695, -3139621, 85899, 3096672, + -1024350, 813896, 955630, -2811056, 1853278, 639950, 1028645, -702227, 324270, -448824, + -811749, 26598732, -3944928, -8413841, -2841121, -1672890, -1247688, -7393786, -3828963, 2226941, + 1413044, 2278480, 2800319, -4926328, 2164664, -861141, 1939178, 8244190, -8078834, 2967823, + 2959233, 2340757, -1995012, -4608500, 3818226, 1236951, 2765959, 5134634, 126702, 7026567, + 717260, 3341485, 388695, 2312840, -1775969, 2746632, 1995012, 2628520, -846109, 968515, + -85899, 3330747, 4043712, -5686537, 7969312, 813896, 2302103, 491774, 1471026, 1675037, + -1559073, 4866198, 2641405, 335007, 4408784, 1990717, -2287070, -40802, -1505386, -1552631, + -1213328, 947040, -264141, 433792, -38655, -4647155, 21120502, 1979980, 4413079, -5280663, + -891206, -13333726, 3358665, -493921, -9032316, 7840463, -4112431, 431644, 5763846, 2697240, + 4357245, -3081639, 1988570, -4086662, 199716, -3468186, 1475321, -5357972, 8033737, 5888400, + 4786741, 5626407, 1316408, -1627793, -3324305, 1720134, 4447439, 191126, 3060164, -1962800, + 693637, 3066607, 2121714, 2778844, 266288, 1118839, -249108, -1662152, 1913408, -1093069, + 929860, 947040, -1827509, 2765959, -3433826, 3313567, -1582696, 2396592, 3420942, -3927748, + 457414, 661425, -1642825, -3062312, 2323577, -5085242, -4039417, 2690797, 1080184, 1331440, + 1028645, 3416647, 3148211, 33006824, -27597312, 9244917, -6927782, 2330020, 8519068, 6895570, + -4687957, 8282845, 4647155, 4962835, -3539053, 2254858, -1838246, 9844065, 2699387, 2701535, + 3790309, 4099546, 2609193, 2761664, -8233453, 1189706, -14832670, -5265630, -1423782, -8594230, + 2076617, 4406637, -3242700, -4728759, -5448166, -5325760, -2811056, 2834679, 2308545, -7675107, + -8748848, -822486, -4479651, 2216203, 1896228, 665720, -657130, 3951370, -2196876, 34360, + -605590, -2025077, -5622112, 4148939, 7331509, -1187559, -949188, 3262028, -5214091, 6090264, + 1597728, -3405909, -143881, -3186866, -1273458, -981400, -2145336, -811749, -1460289, -4599910, + -51460152, 4840428, -4810364, 1632088, 4980015, 3496104, 10211285, -4546223, -599148, 586263, + 12272869, 4086662, -10028749, -6661495, 5289252, 7136088, -2083059, -3060164, -429497, 3146064, + 7423851, 7501161, -330712, -14179835, -4239133, -1711545, -1883343, 7793218, -3917010, 4432406, + 257698, -1168231, -7419556, 283468, 5549098, -9519795, -5604933, -2463164, -1806034, -4672925, + -3843996, -8927090, -1773822, -6152541, -118112, 962073, 6053757, -4550518, -2952790, 221191, + -777389, 652835, -5506148, 1784559, 1902671, 345745, 182536, -4385162, -3788161, -2383707, + -1247688, -659278, -7005092, 1063004, 1971390, -3345780, -6395207, -29828548, 32169306, -4303557, + 2257005, 7784628, 9255655, -6528351, 4571993, 1988570, 5796059, 4052302, 8083129, 4726612, + -5113159, -8562017, 1466731, 9661529, 18912888, -4224101, -6158983, 5201206, 3229816, -3268470, + -9032316, -1565516, -1675037, -8022999, 7477538, 9021579, 304943, 2349347, -10737, 7170448, + -5181878, -16200617, 7125351, -1642825, 5677947, 2997887, 371515, -3743064, -6225555, 4760971, + 5336497, 4168266, -620623, 27917, 5843303, 3590593, 1872606, -3034395, 4924180, 4410932, + -575526, -865436, -2710124, 3697967, 186831, -7765301, 6790344, 4417374, -1451699, 2325725, + -953483, 616328, -96637, 2388002, 5815386, 2388002, -974958, -1627793, -186831, 9120363, + 461709, -6790344, -14093935, 3569118, -657130, -11557757, 4030827, -3725884, 618475, -4277788, + -3390877, 3848291, 8967892, 1264868, 11854110, 5527623, -5894843, -7630010, 12953621, -5418101, + -380105, 1342177, -12094628, 100932, 6431714, -6835441, -1855426, 8319352, 517544, 4447439, + 122407, 5557688, -914828, -3408057, -506806, 7320772, 9554155, -2911988, 1906966, 1900523, + 6343667, -3566970, -725850, 1488206, -1683627, 4395899, 1795296, 597000, -2267743, 3573413, + 3584150, 453119, 64425, 3021510, 4179003, -4915590, -169651, 1711545, 2201171, -2388002, + 1956358, 67632848, -5948530, 1617055, 4694400, -5525476, -9891310, -5553393, -2068027, -11345156, + -12189117, 1466731, -10730976, -4458176, -2716567, -2282775, 7462506, 8555575, 3098819, 17373142, + 3616363, -7876970, 15105400, -972810, 10866267, -2808909, -508954, -9098888, 942745, 8961449, + 296353, -3650722, -1047972, 1346472, -1522566, -1309965, 3884798, -7148973, 3715147, 1627793, + -2989297, -6753836, -4269198, 6066642, 6146098, 7043747, -10402411, 6706592, 2383707, 231928, + 1194001, 1597728, 1928440, 1941325, -219043, 1103807, 6594923, -1127429, 3068754, 3274913, + -1644973, 5400922, 6382322, 1492501, 360777, 5723044, 4563403, 3453154, -39795020, -66496832, + 23562190, -2035815, 9571335, -11924977, 148176, -13750338, -2145336, -19666656, 7939247, 8589935, + -854699, -1825361, -672162, 1488206, -5065914, -16784732, 29897268, 1808181, -4348655, 10118943, + 1382980, -5763846, 14093935, 15921444, -7441031, 9292162, 1361505, -2314987, -15687368, -8555575, + 11353746, -6337224, 1153199, -1041530, 7535520, -12597139, -14465450, 1767379, -350040, -9605694, + 5117454, 972810, -6448894, 3985730, -7056632, -5551245, 1971390, 2323577, -266288, -1868311, + -3672197, 3736622, 5854041, 837519, 1393717, -1958505, -2525441, 5587753, 2147, 1204738, + -6468221, -1380832, -4563403, 3152506, 4017942, 23622, 3165391, -21440476, 63735168, -28552942, + 4599910, 4028679, 15835544, -2177549, 10033044, -10245644, 418759, -19514184, -3923453, -21475, + 7593502, 1187559, 7816841, -5658620, -12008729, 1430224, -17952964, -18745384, 294205, -6204081, + -599148, 1535451, 2413772, -4679367, -3362960, -6704444, -10378788, 4037269, 4612795, -13176960, + -6244883, -16546362, -36507, -7301445, 5639292, 6970732, -13939316, 2177549, 10926397, 10166188, + -5579163, 3743064, -4217658, -1853278, 2821794, -6083821, -1681480, 5845451, 4116726, 4054449, + 4447439, 2716567, -1823214, 3947075, 2098092, -2660732, -564788, 7937100, -1245541, -3335042, + -1584843, 3448859, -3788161, -7621420, -1073742, -2428804, 1488206, 2070174, -1730872, -53369264, + -16930762, 5381594, -8927090, 6977175, -4069482, -478889, -16155519, -19245748, -3139621, -7086696, + 7221988, 1692217, -2888366, -39178692, 18779744, 850404, 16280074, 20504174, 13911399, -20723218, + -5574868, -2469606, -5695127, 3848291, 4138201, -852551, -8027294, 7672959, -14340896, -7803956, + 11448235, 130997, -5916318, 13707388, -384400, 14405320, -5860483, -2864743, 1047972, 4185446, + -11398843, -8351564, -2624225, 7915625, -3816079, 891206, -4133906, 5136781, 6242735, 895501, + -431644, -12837657, -2115272, 5585605, 5942088, -4342212, 6734509, 2031520, -2997887, 1507534, + -8647917, -2901251, -6126771, 4597763, -197569, -2323577, 794569, -13737453, -1022202, 1932735, + 5134634, 34452080, 12047383, -19662360, -2832531, -8080981, 7709467, -11585674, 10881300, -1591285, + 12545599, 8995809, 15092515, -18764712, 24019604, -13642964, 14304389, -7125351, 8815420, 2293513, + 7569880, -11699491, -27975270, 11862700, 20489142, -6433861, 8757438, -9320079, 2976412, -5832566, + 21494164, 629213, -1486059, 5834713, -9582072, -6210523, -5385889, 10048076, 654983, -2488934, + 564788, -901943, 14907831, 10557030, -4831838, 5598490, 5997922, -5001490, -2931315, -4389457, + -10363756, -496069, 734439, -448824, -3500398, -9990094, 38655, 17935784, 9633612, -5942088, + 9889162, 122407, 307090, 9064528, 4591320, -6844031, 3491809, 3027952, 8753143, 11229192, + -7462506, 4909148, 6255620, 71146136, -58815284, -10249939, 2488934, -1597728, -16557099, 4930623, + 3811784, 22370338, -7889855, 3990025, 18393198, -6442, 10913512, 36612448, -8450348, -2957085, + -19701014, -18627274, 468151, 5581310, -8506183, 2948495, 32403380, 18356690, 2385854, 635655, + 2340757, 17510582, -15436112, -7314330, -1146756, 8708046, -1750199, 1591285, -7958575, 2224793, + -13907104, -8699456, -10574209, -534723, -9491878, 1490354, -16690243, 6844031, -33084134, -9159018, + 4260608, 5289252, -1466731, -8364449, 2308545, 152471, 3708704, -9824738, 3770981, -6126771, + -6163278, -15386720, -11025181, -4116726, -2040110, -253403, 2216203, 3637837, 622770, 1163936, + -8939974, -1172526, -10896332, -2778844, -1153199, -1005022, -46145128, -32396938, -3197603, -7284265, + 22879290, -135291, 3547643, -30629560, 710817, 3146064, 889058, 1344325, 17121888, -23293756, + 3936338, -5738077, -16172699, -8446053, 13443248, -5961415, 10816875, -4952098, 5965710, 2619930, + -3118146, -2783139, 6882685, -2059437, -807454, -20169166, 8781061, 7511898, 7432441, 8252780, + -17817672, -18784040, 9678709, 14259291, -19069654, 5690832, 2061584, 14830522, 8613557, 395137, + 10185515, -6796786, -11652246, -2843268, -21960168, -16866336, -2207613, -1990717, 2987150, -11454678, + 3186866, -9442486, -27844272, -9311489, -7705172, -28402618, -180389, -5708012, -3326452, 1814624, + 8379481, -9283572, 5242008, 2156074, -12105365, -9107478, -9113921, -3231963, -2282775, -28630252, + 42610372, -22943716, -10054518, -13552769, 2965675, 3373697, 5886253, -3032247, 18300856, 13868449, + -13975824, -24202140, 8452496, -9229885, 21492016, 1586990, 8856223, 11360188, -8901320, -8265665, + 28673202, -16924318, -4651450, -8647917, 403727, -3620658, 3240553, -5042292, -2611340, -22632330, + 19228568, -6990060, -2480344, 23553600, -16870632, -20332376, 1093069, -9186935, -14164802, -6442, + -7662222, 5446019, -30189326, -9616432, -8059506, -523986, 9463960, 347892, 1153199, 5602785, + -5976447, 4378719, 5942088, 6300717, 5555540, -3384434, -7262790, -5022965, 6382322, -17304424, + -5001490, -3672197, -5553393, 12191265, -9088151, -11811160, 11327976, 4520453, 6242735, 15680926, + -6912750, -4191888, 5808944, -7239168, -60080152, 28559386, 30872224, 15300821, 13853417, -11602854, + 14108968, -26575110, -103079, -31056908, -4876936, -14173392, 13005161, -15438260, -12822625, -4372277, + -22905060, 5332202, -10952167, 8566312, -21534966, 33266670, -12199855, 15081778, -15013058, 178241, + -15028091, -5761699, 6947110, 20800526, 23888608, -13664438, -738734, -8617852, -13885629, -11297911, + -36129264, -2205466, 5117454, -34608848, 12167642, 5134634, 8323647, 14450417, 9259949, 3846143, + -11912092, -5175436, -13183402, -7885560, 5939940, -28179280, 9775346, 3539053, 1015760, -14272176, + -8070244, 5046587, 20776904, 7164006, 4926328, -10372346, 8351564, -777389, -10711648, 612033, + -7851200, -13853417, -6478958, -5164698, -10857677, 9313637, 6549825, 6790344, 5400922, 48462264, + -34196528, -14613626, -4827543, -639950, 23280870, -4986457, 7226283, -14199162, 6786049, -8980777, + -39313984, -27028230, -10548440, 13464722, -2308545, -21773336, -20714628, -42576012, -14304389, 5048734, + 5010080, 1617055, -5059472, -2800319, -13816910, 3135326, 4750234, 6902013, 886911, -2175401, + -5828271, -20349556, -5920613, -4771709, 9328669, -2274185, -16879222, -6448894, 3824669, -18159122, + 2257005, -18691698, 9513353, 14510547, -14693083, -26944478, -6088116, -8437463, -13228499, 1372242, + 1535451, 2774549, 5699422, 506806, -11506217, 17117592, 25301652, -12375948, 9932112, 4739497, + 11474005, -18580028, 6195491, 2920578, 5791764, -26718992, 20605106, 3365107, 1400159, -2409477, + -16698833, 5229123, 798864, 5446019, 79901424, -44201656, 4389457, -4211216, -9143985, -32948842, + -1436667, -1619203, 27382564, 12547747, 54956256, -21519934, 2510409, 6128919, 13501230, -5441724, + -2068027, 22241488, -13415330, 31937376, 19791210, -44171592, 42691976, 14931454, -14693083, -10954314, + -16054588, -8637179, 3599183, 1939178, -11343009, 28011776, 4206921, -13471165, -11257109, 2675765, + -14063870, -26089778, 934155, 15429670, 6884833, 18766860, -8038032, 5740224, 20989506, 28941638, + 7653632, -30283814, 10703059, -9880572, -15745350, 4183298, 13627931, 7106024, -2746632, -27556510, + -22954452, 33479270, -3425237, 25814900, 4069482, -10499048, 13926431, -22817014, -8768176, 10700911, + -1576253, 22265110, -16537772, -35742716, -8360154, -1629940, -9030169, -8074539, 24567212, -91016800, + -59569048, 20192788, -31535798, 8446053, -16363825, -55568288, -41414224, 71290016, -34591668, 31507880, + 17295834, -20194936, 15695958, -12006581, 21638046, 24051816, -2830384, -8450348, 42277512, -15395310, + -50304804, -466004, -21754010, 3743064, 3470334, 28138478, 14416058, 4844723, 13230647, -14510547, + -1161789, 30930206, 19432580, -7084549, 7142531, -29719026, -45118632, -33685428, -23807004, -7632157, + -7391639, 6871948, -5229123, -13516262, 27066884, 6156836, -22295176, -21071110, -6807523, 6951405, + -22428320, 7299297, 25230786, -1745904, 8802535, -19262928, 12998719, 9036611, 2241973, 9270687, + -16857746, -25675314, -35512936, 16331613, 12783970, 221191, 12777528, 1690070, -16484084, -4069482, + 843961, -28177132, -2435247, -43115028, -108757160, 35147864, -9927817, -8497593, 17813376, 3229816, + 9350144, 45268956, 26590142, 33797096, 16458315, 46684148, -9764608, -48556752, 5654325, -6882685, + -21386790, -43250320, -19393924, 34733400, 7033009, -4202626, 6388764, -4486094, -672162, 28924458, + 2725157, 9603547, -5793911, 5783174, 29411936, -10286447, -21674552, 13655849, -37602440, -38570952, + -24670292, -6575595, -68719, 13219909, 34735548, -1455994, -13413183, -37735584, -59526100, -22664542, + -9564892, -5615670, -1413044, 19428284, -27812060, 46076408, 24084030, -6822556, 12899934, -21283710, + 2478196, -1911261, 21354578, 40789304, 28129888, -27751932, -11626476, 4829691, -5046587, -7795366, + 1277753, -15476915, -42726336, -5465346, -8628589, -5145371, 5656472, -18083960, -6317897, 46284716, + 46795816, 17667348, 32152126, 24017458, 48930416, -38049116, 50745040, -56081536, -7803956, 57793080, + 77951512, 18558554, -2302103, 30313880, -20716774, -24152748, 57022132, 11716671, -5980742, 16237124, + 46282568, -8553427, 29298120, -5800354, -8624294, -2214056, 22151294, -47729972, -3871913, 27812060, + -8965744, 5757404, -15693810, 13746043, 42507292, -33874408, 14237817, -7705172, 15380278, -16071768, + 29237990, 5699422, 11952894, 14416058, -42840152, 25505664, -60518236, -9174050, 37626060, 7481833, + -20295868, 42973296, -11491185, -19855634, 30492120, -7801808, -6152541, -472446, 19138374, 1565516, + 6429566, -29910152, 14261439, 7655779, 68661496, -45606112, -20298016, 10986526, -11491185, 20523502, + 20046760, -18141942, 47437912, 24715390, 89990304, -55656332, 2463164, -8531953, -14716705, 2332167, + -20282984, -8117488, -66163972, -54911156, -55177444, 19151260, -11480448, 18983756, -12627204, -39449276, + 64063732, 45466524, -29886530, -24174224, -35317516, -6468221, 13516262, 22093312, 25679610, -839666, + 19758998, -4728759, -25739740, -29847876, 18904298, -12936441, 58037892, 37892348, 53429392, 8875550, + 19005230, 54511724, 36161476, -10267119, 8948564, -897648, -169651, 7176891, -25692494, -16226386, + 8564165, -29300266, -33002528, 32695438, 34009700, -36687612, -2512556, 70461088, 46366320, -382252, + -24096914, -2804614, 12627204, 15182709, -10956462, -23061826, 28787018, 556198, 5516886, 24726126, + 25679610, -26115548, 10153303, -1479616, 8967892, -41661184, 5471789, 44957572, -43971876, 71509056, + 26852136, -10821170, -3444564, 21646636, -28284508, -36500780, 29233694, -43396348, -55787332, 13372381, + -30438434, -39011188, -20822002, 34954592, 87578680, 35493608, -49334140, 89590872, 9457518, -15470472, + 15277199, -54284092, 12393128, 6045167, -39114268, 31574452, -11334419, 5160403, -28490666, 14016626, + -26149908, 44568876, -55583320, -21466246, -19978040, 24472724, 28726888, 25172804, -30148522, 6923488, + -31494996, -10260677, 14832670, 36786396, 16406775, -19327352, 36045512, 17349520, 28759102, 225486, + 33696164, -17255032, 17892834, -55508156, 58536108, -7252053, 6629282, -18079664, -33253784, -622770, + 18075370, 45730664, 11918534, -59987808, 22061100, -25909390, 44588204, 1264868, -21311628, 6124624, + -19518478, 6541235, -38442104, 9674414, -146872848, 8398809, 26753352, 60275572, 21081846, -89661736, + 123768072, 46514496, -53901840, 21908628, 123147448, 29072634, -27496380, -1836099, -71487584, 39573828, + 5488968, -16945794, 12601434, 26989574, -45584636, 27311698, -57610544, 8156143, -52289080, -47053516, + -18668076, 24861418, 37185828, -24867860, 32839320, -51163796, -5336497, 61482456, 7849053, -19580756, + -4602058, 13569949, -11343009, -37400576, -41382008, -3850438, -17555678, 45030584, -57741540, 66024384, + 23160612, 10247792, -18562848, -4945655, 32594506, -21863532, 43057048, 12071006, 39361228, -11126113, + -17549236, -61018600, 25209310, -4099546, -61403000, 21900038, -358630, 42073500, 68266360, -24575802, + 19235012, 33992520, 38785704, 9386651, -13743895, -1318555, -72357312, -1451699, 15056008, 21627308, + 10587094, }, { -182536, - -236223, -500364, -326418, -137439, -575526, -801011, -73014, -431644, -382252, 109522, - 214748, 113817, 68719, -304943, 766652, -88047, 429497, -1116692, -1288490, -15032, - -2291365, -904091, 942745, 92342, 277025, 184684, 1599875, 23622, 682900, 120259, - 1043677, 66572, -809601, -1120987, -1318555, -2293513, 165356, -223338, 81604, -940598, - -156766, 646393, 790274, -530428, -622770, -9895605, 953483, -2156074, -103079, -783832, - -1453846, 805306, 3341485, 40802, 1715839, -1864016, -468151, 1314260, -1198296, 405874, - 2334315, -1348620, -429497, -614180, -113817, 367220, -463856, 691490, 463856, -502511, - 893353, -502511, -17180, -1857573, 15032, -161061, 470299, 354335, 901943, -770947, - 1529008, -195421, 1277753, -375810, 4295, 987843, -289910, 730144, 328565, 745177, - 158914, 708670, 4215511, -3240553, 2072322, -2553358, 1352915, -1228361, -1213328, -715112, - -676457, 790274, 897648, -3169686, -143881, 506806, -289910, -500364, -1846836, -646393, - 1365800, 2061584, 1043677, 3229816, 678605, -530428, 685047, 590558, -298500, 1082332, - 2299955, -833224, 4295, 1007170, -2147, -180389, -1599875, -23622, 850404, 702227, - 158914, 85899, -515396, 616328, -34360, 111669, 57982, 15255724, -904091, 1406602, - -874026, 1060857, -1067299, 326418, -195421, -186831, 957778, -719407, -2667175, 876173, - 371515, 932008, 1952063, 1075889, 758062, -169651, -1507534, -468151, 824634, -137439, - -167504, 1634235, -1883343, -549756, 57982, -259846, -397284, 824634, 912681, 1090922, - 380105, 438087, -322123, 1483911, 30065, 1155346, 854699, -178241, -47245, 586263, - 107374, -229781, -49392, 11108933, -10692321, 1627793, -2916283, 1498944, -231928, 1067299, - -1056562, 1958505, -886911, 1166084, -2576981, 49392, -1507534, 369367, -264141, -403727, - -712965, -1928440, -219043, 165356, -949188, 1475321, -717260, -1174674, -1432372, 779537, - -923418, 2117419, -249108, -57982, 622770, -57982, 27917, -1039382, -833224, -296353, - 208306, -444529, -953483, 760209, 584116, 1423782, -358630, 414464, -216896, -26268020, - 2959233, -2070174, -53687, -410169, -2304250, 2265595, -695785, 105227, 891206, 197569, - 2639258, -240518, -1234803, 3191161, 1219771, 2871186, -176094, -4050154, -2476049, -2005750, - 1513976, -2162516, 57982, -852551, -811749, 135291, 496069, -700080, -1355062, -1022202, - 680752, 798864, 1604170, -238371, -356482, -208306, 949188, -1294933, 193274, 373662, - 672162, -1071594, 899796, -1277753, -326418, -33159296, 11849815, -4945655, 5413807, -3962107, - 2413772, -4284230, 2241973, -3208341, 1065152, 2192581, -15032, 775242, 1975685, -1464584, - 1380832, -1846836, -1423782, -3949223, 3365107, -2357937, 2207613, 79457, -154619, -3783866, - -277025, 620623, -670015, -212601, -283468, 1451699, -377957, -1166084, 1013612, 272730, - -624918, -4295, -105227, 55835, 513249, -1071594, 2403034, -281320, -1769527, -238371, - -1041530, 1760937, 15156940, -3096672, 5828271, -2480344, 2083059, -1982127, 7226283, -1226213, - 3910568, -292058, -161061, 1108102, 111669, -4735202, 1219771, -289910, -2093797, -377957, - 188979, -5987185, -66572, 667867, 2044404, 115964, -1069447, -73014, 2201171, 554051, - -949188, -1896228, 3251290, -1786706, 10737, -2746632, -240518, 186831, 588411, -528281, - 852551, 1449552, -1163936, 1189706, 21475, 989990, 21475, 1640678, -670015, -244813, - 39917428, -11291469, 1990717, -1687922, 2871186, 304943, 231928, -5055177, 2649995, -2050847, - 1894081, 852551, 1095217, 2005750, 2935610, 702227, 1187559, -4196183, 1902671, 1952063, - -2637110, -264141, 3287798, 2265595, 2190433, 4612795, 2660732, 932008, 1391569, -1307818, - 1614908, -77309, 2725157, 3536906, -212601, 1400159, 2267743, -534723, 938450, -2486786, - -519691, 3131031, 281320, -1644973, -442382, 1178969, 2312840, 186831, 1408749, 2669322, - -21348134, 8770323, -6322192, 3878356, -3813931, 4602058, -3234110, 27917, -2765959, -3427384, - -4670777, 135291, -2817499, 1120987, 1406602, 3240553, -5718749, 3262028, -1445257, 4602058, - 955630, -491774, 285615, 156766, -1226213, -1181116, 644245, -2512556, 1423782, 2486786, - -3766686, -1050120, -289910, 1243393, -1473174, 3639985, -4112431, 534723, -60130, -12885, - -1791001, 12885, -1136019, 760209, 122407, -77309, -1269163, -498216, -2594160, -1157494, - -163209, 274878, -34308200, 10703059, -7123204, -601295, -1548336, 2001455, -6021544, 274878, - 1756642, 1406602, -2175401, 1022202, -2744484, -4475356, -1795296, 388695, -2692945, 8907762, - 146029, -2677912, -925565, -3195456, -1518271, 2602750, 1565516, 3423089, -416612, 1428077, - -2113124, 657130, -1917703, -803159, -1153199, 420907, 1045825, -758062, -1812476, 242666, - 588411, 2297808, -496069, -1105954, -3296388, -2841121, -1314260, -710817, 560493, 238371, - -1370095, -751619, 204011, 983548, 586263, -33077690, 15260019, -7451769, 6708739, -3764539, - 3897683, 1855426, 1058710, -3908420, 264141, -2070174, 365072, -5061619, 1644973, 2909840, - 792421, -5370857, -2789581, -2776696, -2939905, -1941325, 3528316, 749472, 2418067, 1967095, - -1140314, -354335, -4161823, 4945655, -1672890, -652835, 96637, -1224066, -1795296, -1975685, - -654983, -4273493, 989990, -2325725, 1413044, 1320703, 2130304, -766652, 10737, -2811056, - 760209, 1866163, 210453, -556198, 135291, 1436667, 2044404, 895501, 10788958, 13318694, - -5862631, 3639985, -1726577, 1425929, -1305670, 856846, 1282048, 6564858, -2171106, 2757369, - 6204081, -1569811, -120259, -940598, 1604170, 3223373, 3352222, 4267050, 1267015, 3639985, - -770947, -2031520, -6987912, 1574106, -938450, -3508988, -2405182, -55835, -526134, 2366527, - -176094, -4075924, -4112431, 1209033, -3549791, 556198, 2422362, -3279208, -2065879, -1365800, - 1829656, 1552631, 64425, -392990, 2673617, 577673, -781684, 1045825, -1967095, 313533, - -944893, -1584843, -901943, 38031936, -13230647, 7181186, -4956393, 7138236, -5022965, 4376572, - -1621350, 4445291, 1090922, 3126736, -3627100, 3730179, -1264868, -3103114, -307090, -3335042, - -5304285, -2813204, -564788, 2688650, -3627100, -4879083, -5952825, -1082332, -508954, 4760971, - 2628520, 3053722, -2083059, 2465311, -1879048, -1876901, -1009317, 3131031, 2731599, 828929, - -6442, -135291, 100932, -906238, -485331, 2156074, 435939, 5338645, -2046552, -672162, - -4460324, 2899103, -1159641, -725850, -1047972, -309238, 264141, -777389, 10803990, -16200617, - 9691594, -5985037, 7554848, 38655, 4735202, 1425929, -7035157, -3270618, -2291365, 998580, - 1913408, 1125281, 8199093, -4419522, 6575595, 1247688, 940598, -4292820, -835371, 5703717, - -246961, -4614943, 5514738, 4243428, 1032940, -2098092, -1632088, -345745, -253403, 2624225, - -1103807, 1239098, -2899103, -543313, 1866163, -4230543, 1791001, -1565516, 1685775, -1136019, - -257698, 5265630, 2347200, 3053722, -96637, 1337882, 2016487, -259846, -1282048, -2141041, - 912681, 1163936, 1967095, 2334315, 661425, -373662, -2123861, -908386, -2145336, -41004052, - -8693014, -1606318, -7267085, -3324305, 5551245, 2063732, -2269890, -2095944, -5362267, -3758097, - -4443144, -4954245, -4166118, -2871186, -3811784, -6184753, -5321465, 1324997, -5392332, 1097364, - -7084549, -324270, -3208341, -2725157, 5278515, -1133871, -3266323, 3169686, -4634270, 3377992, - 717260, 3592740, 2368675, -633508, -2437394, 3803194, -506806, -1224066, 3526168, -2209761, - -5836861, -6665789, -2001455, 1464584, 867583, -2383707, -605590, -2252710, -32212, -487479, - -100932, 3246995, 1093069, -3343632, -1445257, -88047, 2027225, -30065, 3229816, 395137, - -47652664, 41418516, -16904992, 11458973, -10829760, 2594160, -5312875, 6947110, 1340030, 740882, - -3371549, 4666482, 998580, -8654359, 910533, 1157494, -4254165, -6713034, 6579890, 7958575, - -2540473, -2274185, 1430224, 3577708, -2095944, 7206955, -130997, 1694365, -5239860, -2085207, - -3066607, 4608500, -936303, 839666, 1181116, -2974265, 4808216, 4232691, 1382980, 1290638, - 5632850, -3582003, -697932, -964220, -3766686, 571231, -2377265, 674310, 98784, 45097, - 4692252, -493921, -766652, 648540, 493921, 2559801, -2435247, 652835, 109522, 5325760, - -1404454, 32190780, -3435974, -6240588, -1183264, 4675072, 2598455, 2334315, 156766, -4013647, - 1483911, 3092377, 3429532, -1610613, -1516124, 6824703, 2576981, -4599910, 1458141, 8714489, - -9985799, 7346542, 1219771, 9279277, -210453, 929860, 2115272, 2216203, 5035849, -3008625, - -927713, 2177549, 3719442, -886911, 279173, 869731, 1151051, 2546916, -3889093, 347892, - 2845416, 1155346, -1982127, -274878, 5845451, 4496831, 2280628, -1638530, -1183264, 2040110, - -354335, -882616, 1312113, -1217623, -2295660, 6116034, 2549063, 4105989, 899796, 3221226, - 2544768, 2922725, 584116, 3442416, 1773822, 2596308, 15152645, 4445291, 3685082, -2145336, - -1447404, -4024384, -2905546, 833224, -1591285, -1924145, -5869073, 5108864, 3466039, -3549791, - 6249178, -5776731, -1801739, 2755222, -4395899, 2673617, 4028679, 6352257, 5433134, 5377299, - 2654290, -10881300, -64425, -2147484, 2136746, -886911, 4234838, 3113851, -1520418, -2491081, - 2727304, -1769527, 7170448, 212601, 2280628, 7610682, 6932077, -5108864, 294205, -3281355, - -6524056, -438087, 1015760, -551903, -1496796, -410169, 341450, -2699387, 171799, -3186866, - -1209033, -113817, 670015, 330712, -2299955, -1848983, 4140349, -1241246, 369367, 2310693, - 2117419, -1011465, -1735167, 35766340, -25016038, 9223442, -9446781, -652835, -6573448, 6109591, - 6081674, 2010045, 1312113, 5742372, 15665893, -13608604, -1806034, -3483219, -5426691, 12154757, - 9197672, -1791001, -8175470, 3427384, -6659347, -5336497, -9369471, 1279900, -9594957, -3137474, - 5826123, 891206, -2864743, -7943542, 128849, -1868311, 4980015, 4535486, 2181844, -3577708, - 665720, -169651, 2089502, 3921305, -2330020, -1181116, -4217658, 6637872, -691490, 1026497, - 5995775, -1157494, -408022, 2400887, -2819646, -253403, 2677912, -4310000, 1123134, -758062, - -249108, -4496831, 2342905, -923418, 523986, 1172526, -1550483, 3036542, -2220498, -551903, - -55843164, 7410966, 498216, 3627100, -4548371, -7211250, -309238, 4378719, 7112466, -721555, - 10958609, 5993627, -7879118, -7048042, 4975720, 682900, -5690832, -10320806, -11815455, -7657927, - -8789651, -9788230, 1451699, 2785286, 2269890, -7303592, -7052337, 792421, -2050847, -1398012, - -1170379, -5871221, 4505421, -9932112, -3886946, -1709397, -612033, 2873333, 835371, -893353, - 4224101, -1584843, 4211216, 2349347, -3689377, 339302, 7005092, -3107409, -3148211, -17180, - 4002910, 897648, -3257733, -4069482, 3311420, -2147, -5327907, 6803228, 7642895, 773094, - -2482491, 766652, -377957, 1505386, 3249143, -498216, 4389457, -34022584, 29091960, -9717364, - 6212670, -141734, 4836133, -11755325, 4541928, -8001524, 17180, -5398774, 10894185, 9332964, - 3478924, 801011, -9012989, -5901285, -970663, -3551938, 10314364, -8407398, -392990, -4127464, - 15116137, -4752382, 1288490, -345745, 2540473, 1279900, 2523293, 2005750, -2600603, 1466731, - -706522, 5407364, 715112, 10159745, 5104569, -3124589, -798864, -1127429, 60130, -3706557, - -2838974, -826781, 1653562, 12390981, 962073, 966368, -3524021, 5147519, -2022930, -2461016, - 1436667, -2383707, 1322850, -2993592, -7056632, 3569118, 2823941, -783832, 6940667, 1698660, - 1464584, 2750927, -2171106, 1026497, -1829656, 6994354, 4554813, -438087, -2207613, -1737314, - -779537, 21938692, -762357, 4739497, -15354508, -2776696, 1642825, -12446815, 708670, 16597901, - -3206193, 940598, -7876970, -10703059, 2383707, -9803263, 14598594, -10602127, 3296388, 3234110, - 7690139, 5905580, -1896228, -9498320, -1342177, -1140314, 4438849, -6751689, -1526861, -2194728, - -3352222, -2491081, 4228396, 2465311, 11774653, 3779571, -4771709, 4683662, -3566970, -3781719, - 3420942, 9992241, -1773822, -5667210, -5278515, 5141076, -427349, -7831873, -7181186, 3163244, - 2989297, -3478924, -5985037, -9837623, 2319282, 3115999, 2074469, -5753109, 3719442, 2029372, - 1387274, 75975824, -4415227, 3444564, 7316477, -6216965, -2428804, -1861868, -17413944, 12365211, - -1546188, -10638634, 2772402, -5259188, 6876243, 5544803, 8632884, -2529736, 11577084, 10005126, - 6511171, -9470403, 7956427, -13140452, -7625715, -8811125, 4017942, -6674379, -916976, -2001455, - -8667244, -4490389, 7982197, -5257040, -3932043, -8207683, 3152506, 3199751, 6807523, -3231963, - 11458973, 3191161, 13011603, -1037235, 2641405, 2967823, -6661495, 5405217, 13297219, -4054449, - -36507, 3936338, -3451006, -4823249, 3388729, -4808216, -2506114, -6412386, -4172561, 5446019, - 4793184, 3423089, 5113159, 6463926, 6053757, 9092446, 1660005, -2235531, -34218004, -66363688, - 23553600, -521839, 554051, -7305740, -7806103, -2319282, 1449552, -4984310, 16316581, -8662949, - -15801185, 154619, 107374, -2705830, -6126771, 10950019, 1258425, -5972152, 4567698, -11087458, - 12259984, -8072391, -4724464, -9670119, 13769665, -7050189, -3040837, -9579925, -5035849, 7264937, - -4657892, 7930657, -12098923, -13720273, 107374, 1578401, 1282048, -1030792, -7737384, 571231, - 2478196, 1056562, 5787469, -708670, 9637907, 813896, 8955007, 12427488, 1666447, -1647120, - 1393717, -7988639, -2969970, -12902082, -12023761, 2559801, 2117419, 1503239, -1904818, -4129611, - -2997887, -3618510, -2858301, -3605625, -1151051, -882616, 1056562, -22316650, 63715840, -29540786, - 12990129, -6528351, 19956566, -3530463, -9403831, -9691594, 4919885, -3094524, -1651415, 178241, - 3528316, -21816286, -10988674, -5819681, 8078834, 6947110, 12064563, 2061584, -2428804, -2214056, - 14542759, -19801946, 10799695, -9627169, -2531883, -10118943, 14987288, 6073084, -10730976, 1178969, - -5063767, 1522566, 5961415, -28265180, -12410308, 2179696, 9195525, -5909875, 1374390, 7097434, - -3659312, -3283503, -1782411, 10786810, 3513283, 1775969, 405874, 4114579, 11940009, -7834021, - 4971425, -18019536, -4011500, 3977140, 7709467, 1559073, 261993, 354335, 3650722, -3577708, - -551903, -1333587, -5381594, -3764539, 5484673, 6440304, -3779571, -3502546, -12597139, -57833884, - -12741020, 5299990, -13975824, 3113851, 2162516, 8111046, -388695, 15749645, 10136123, 5499706, - -4758824, -8186208, -768799, 16694538, -14897094, -5845451, -11632919, -539018, -31155692, -24556476, - 1148904, 14781130, 20349556, 4509716, -7934952, 6798933, -7095286, -4741644, -4964982, 1786706, - 5022965, 1065152, 7655779, -6380174, -11368778, 8811125, 5536213, 18788334, -2768107, 2856153, - -3171833, 15113990, -16423955, -8259222, -4236985, -12358768, 7252053, -5231270, 6008659, -13215614, - 12468290, 12343736, 11074573, -4934918, 9749576, 332860, 3062312, 5793911, 3758097, -5647882, - 412317, -1911261, -848256, 11581379, 3848291, -5424544, 8985072, -1801739, -8860518, -3021510, - -1189706, 42247444, 27657442, -7982197, 12835510, -27154930, 20008106, 7707319, 15184857, -4453881, - -3173981, -14594299, -7275675, -25348896, -3983582, -20057498, -5770289, -12124693, -12528420, -16937204, - 7451769, -23356032, 3708704, 10971494, -4127464, 3884798, -9844065, 491774, -2750927, -2783139, - -13595719, -1251983, 2083059, -309238, -1711545, -6702297, -5946382, 5005785, 5063767, 6760279, - 30895848, -11587822, -264141, 13033078, -2516851, -4357245, -11250667, 4333622, 10769630, 17839146, - 6193343, 15010911, -13511967, -20173462, 2415919, 14514842, 8093866, -10499048, 13537737, -9081708, - 6721624, 3463891, 12322261, 7614977, 4745939, 8976482, -7724499, 6077379, 4604205, 3401614, - 11987254, 3695819, 9655086, 84174920, -54479512, -2967823, 6326487, 1677185, 6652905, 11506217, - -2299955, -1887638, 6500433, -9766756, -9253507, -1576253, 7505456, 30236570, 1322850, 10398116, - -9700184, 532576, -29890824, 18421114, -18047452, -25907242, 6079526, 7136088, -9494025, 8495445, - 3704409, 19872814, 22239340, -3824669, -8259222, -6468221, -32987496, -18212808, 26057566, 8368744, - 9667971, -15135465, -15191299, 4314295, -2834679, -13428215, 11639361, -2772402, -8096014, -9816148, - 6672232, -8847633, -4395899, 30071214, -18365280, 5257040, -6468221, 6640020, -8151848, -3874061, - -22488448, 3328600, -8188355, -6199786, 18358838, 3770981, 5297842, 10295037, 13406740, 3154654, - 9375914, -4926328, -790274, -15915001, 7123204, 11111080, -54286240, -27687506, 7808251, -5128191, - 17091822, -4567698, -6910603, -17005924, -18878528, 7101729, -19655918, -7997229, -11993696, -3841848, - -12558484, -9126806, -10479720, -6227703, -12534862, -21895744, 9528385, -41611792, -2413772, 33762736, - 6678674, -2027225, -11753178, 687195, -38021196, 13022341, 6996502, 652835, 10941429, 17499844, - -17328046, -9856950, -17965848, 506806, -1552631, -11233487, -12884902, -13737453, -9229885, -2370822, - 5716602, -1170379, 4269198, 1851131, -1436667, 22883586, 3667902, -5791764, 17276506, -11383811, - -24599426, -8652212, -5003637, -5007932, -3880503, -9504763, -4230543, -11398843, -4881231, -11555610, - -1664300, 3478924, -13436805, -4806069, -8776766, -1307818, -13892072, -15479062, -9244917, -32813550, - 42868068, -21977348, -11267847, -36013300, 27045410, -10249939, 15627239, 575526, 259846, -11181947, - 20955146, -5800354, 6272800, 5046587, -10786810, -3693672, -4090956, -19091130, 2847563, 3173981, - -15487652, -24623048, -16134045, -22634478, -6466074, 12055973, 5347235, -13316546, -14224932, 19591494, - 12423193, -17001628, 14489072, -8439611, 12652974, -21464100, -18221398, -16303696, 4597763, -14381698, - 7930657, -6365142, 2583423, -3758097, -3423089, 3678640, 14304389, -33960308, -5759551, 7243463, - -4589173, -9977209, -26246546, -1694365, 21184926, 511101, 18114024, 15150497, 2592013, -2093797, - 13376676, -14115410, -13922136, 10475425, -5327907, -8272107, 4589173, 2961380, -9043054, -9388799, - 16217797, -15341623, -10900627, -8302172, -75301512, 26718992, 10773925, -19681688, 8267812, -22142704, - 18092550, 15418933, 13041668, -39101384, 22108344, 39318280, -6513318, 12676596, -296353, -13612899, - -17366700, 43387760, -1522566, -4992900, -25376814, -49411452, -27099096, 1359357, -22310208, 16724603, - -32592360, -11641509, -19619410, 3998615, -8231305, -24773372, 3040837, -6609955, 14600741, -6395207, - -19494856, -8310762, -57793080, 8995809, -2697240, 25082610, -17033840, -19056770, 23577222, 3919158, - 3077344, -11072426, -16196322, 4161823, 10189810, 6818261, -4992900, 7312182, 3663607, -304943, - -6019397, -6687264, -19832012, 139586, -8564165, -12283606, 8699456, 4183298, 26467736, 4423817, - -19945828, -20121922, 2723009, -13529147, -10477573, 1726577, -10969346, -1773822, -6433861, 65075196, - -21414706, 3478924, 6483253, 29027536, -298500, -1911261, 20787642, 33691872, -17605070, -20615844, - 21537114, -345745, 19108310, 26600880, 22434762, 20038170, 16408923, 19134080, 63138168, -1803886, - 7359427, 15036681, 36124968, -3526168, -9268539, 16172699, 1997160, -7428146, -10481868, -8244190, - 3193308, -11716671, 25832080, 38115688, 1067299, -5050882, 17343078, -4838281, 23590108, 18479096, - 3393024, -14209899, 16492674, 2340757, -2963528, 6575595, 438087, 44070660, -496069, 21386790, - -5948530, 39788576, -410169, 7206955, -9506910, -17729624, 21294448, -6706592, 39202312, 12156905, - 20207822, 4436701, 3296388, 14884209, 6008659, 30371862, 17761838, 9341554, 16456167, -10387378, - 9369471, 16892106, 5239860, 951335, 79392472, -23957328, 6599218, -8431021, 2576981, 9657234, - 25924422, -21556440, 10183367, -1009317, 274878, 14128295, -13215614, 15197742, -43589624, -19565724, - 5710159, 15408195, 9710921, 33352568, -34978212, 5005785, -6590628, -46027016, 17871358, -17944374, - -13374528, -6732361, -39462160, 12238509, 11343009, 5935645, -21614422, -32779190, 10844792, -20194936, - 15685221, -31275952, -1799591, -37407016, -11598559, -24809878, -24294482, 22765474, 32205812, 5355824, - 10140418, -15433965, 3719442, -26225070, 8531953, -16922172, 1887638, 26557930, 9966472, -8179765, - 12320114, 3549791, 10065256, -10557030, 19018116, 39848708, -1743757, -22209276, -20246476, -9178345, - -8602819, 3848291, 12771085, 4876936, 23237920, 1370095, 5278515, -24215026, -10131828, -82693152, - -69518344, 28162100, -9491878, 32899450, -3515431, 10219875, -41918880, -39286064, -24315958, 12068858, - -32678258, -22683870, -10322954, 5617817, 22280142, 7546258, -47508780, 11819750, 25076166, -66756676, - -8849780, 2488934, -71092448, -24736864, 30227980, -65609920, 30814242, 32841468, -590558, -9998684, - -3678640, -16234976, -18279380, 11065983, 13295071, 48148732, -29850022, -15659451, -13174812, -23134842, - 246961, -39101384, -10726681, 2469606, -2205466, -13009456, -3094524, -21683142, -5463199, 11474005, - -6481106, -14227079, 14920716, -7885560, -16993038, -22844932, 46720656, -2282775, 27940910, 3612068, - 9635759, 31406948, 3184718, 21356724, -15803332, 23783382, 15818365, 5065914, 4597763, 5731634, - 19000936, 9326521, 1758789, 19748260, -133412424, 49426484, -15277199, -60234768, -15124727, 809601, - -15970836, 22286586, -52117280, 24096914, -4685810, -60058676, -41386304, 7335804, 23057532, 21438330, - 15854872, 34089156, 9524090, 56577604, 31009664, 66436700, 8332237, 53779432, -42520176, -34108484, - 10937134, 3803194, -33775624, 8370892, 6734509, -5660767, -13069585, 31379032, 5888400, -72567768, - -32184338, 22885734, 7969312, -16282221, 20177756, 19726784, 32231582, 5823976, 9393093, 4879083, - 9195525, 10642929, -25078314, 2531883, 4344360, -54159536, 24704652, 17046726, 22217866, -37580964, - -21266530, 25082610, -201863, -8415988, -5718749, -16917876, -13980119, -1348620, -18549964, -42116448, - 13460428, 41871636, -30949534, 2718714, -17937930, -8579197, -13507672, -5542656, 20862804, 54090820, - 36028332, 24414742, 12506945, 98784, -14647986, -21412560, 15801185, -57221848, 56985628, -37978248, - 7739531, -61976380, -3934190, 55143084, 20555714, -21734682, 34256660, -58963460, 21133386, 9049496, - 2218351, -72239200, -22986664, 2675765, 9528385, 43692704, -71313640, -11055246, -24951612, -67076652, - -16247861, 13984414, 30743376, 47309064, 36135708, 36185100, -5224828, -26128434, 22952306, 5768141, - -17033840, 7142531, -34035468, 48954036, 21644488, 15311558, -28660316, -60022168, -17748952, -637803, - -72690176, -58972048, -17295834, -53167400, 30449170, 10544145, 7778186, -25769804, -27769112, 7481833, - 4567698, 1816771, 13146895, -12444668, 9219147, 30799210, 12487617, 2671470, 1696512, -25467008, - -21507048, -20409684, 6751689, -10312216, 62865436, -51316268, 12219182, -8377334, -7718056, -146029, - 16537772, -32508608, 40531608, -13398150, 27442694, -4170413, -24365350, 42971148, 42653320, 29903710, - -15768972, 65798900, 23809152, -76656576, 76469744, 5585605, -1269163, 54526756, 1447404, -25853556, - -33532958, 53747220, -35648228, -47811576, 43785044, 37419904, -26390426, -63114544, 23164906, -22771916, - 7617125, -44944684, -36350456, -16426102, 41019084, 35865124, 4099546, 32736240, -51017768, 14345191, - -14027363, -20553566, 23218594, 1475321, 6573448, -72153304, -20001662, 37102076, -50957640, -15064598, - -63722284, -13769665, -24262270, 8542690, -15951509, 5012227, 5753109, -4284230, 5574868, -18979460, - -56717192, -12678743, 27702540, -5888400, 18854906, -23506356, -50242528, -10387378, 9204115, 58134528, - 4462471, -16849156, -41669772, -1322850, -19969450, 15601469, -34488588, 22020298, 13793287, -29875792, - -31001074, 46750720, -55048596, -1889786, 35192964, -39417064, 12543452, 45810120, -36464272, 31565862, - 22591528, 33799244, -55280524, 47908212, -55538224, 17132624, -42399916, 5798206, -21917218, 37965364, - 672162, 23523536, 11289322, -38478612, -24436216, -53407920, 31033286, -35867272, 31177168, -43233140, - -50886772, -83187072, 7539815, 45226004, -7449621, -169651, 13224204, 39294656, -13683766, 11536282, - -47300476, 13239237, 60883308, -4700842, 55080808, 74902080, -1402307, 14078903, 14093935, -29302414, - 15247134, -35723392, -2935610, -36494336, -38781408, 4898410, -15373835, -60883308, 42232412, 4526896, - 31157840, -33543694, -20250770, -9081708, -131915624, 33137820, 49042084, 13411035, -57299160, -8626442, - 92595200, -106970456, -2939905, -18281528, -70014408, -17884244, -47517372, 17031692, 17003776, 40495100, - 16301548, -56100864, -20038170, 39889508, -63898376, -18427558, -68326488, 57747984, 17184164, 45075680, - 77184856, -27668180, -16621523, -13172665, -39086348, 36739152, -18504866, -46660524, -52155936, -9539122, - 19542102, -1930588, 10217727, 12133283, 29757680, -13791140, -1838246, 21786222, -22022444, 43241732, - 49392124, 46420008, -38697656, 4423817, -12494060, 21784074, 93445600, 69795368, 133983656, 9850507, - 52445844, 42191612, -21384642, -5611375, -8087424, -13625784, 15835544, 2828236, 47150152, 35298188, - -18004502, -6281390, -30651034, -57956288, 20508468, -2261300, 16578574, -5486821, -42722040, -6655052, - 118112, }, + -236223, -500364, -326418, -137439, -575526, -801011, -73014, -431644, -382252, 109522, + 214748, 113817, 68719, -304943, 766652, -88047, 429497, -1116692, -1288490, -15032, + -2291365, -904091, 942745, 92342, 277025, 184684, 1599875, 23622, 682900, 120259, + 1043677, 66572, -809601, -1120987, -1318555, -2293513, 165356, -223338, 81604, -940598, + -156766, 646393, 790274, -530428, -622770, -9895605, 953483, -2156074, -103079, -783832, + -1453846, 805306, 3341485, 40802, 1715839, -1864016, -468151, 1314260, -1198296, 405874, + 2334315, -1348620, -429497, -614180, -113817, 367220, -463856, 691490, 463856, -502511, + 893353, -502511, -17180, -1857573, 15032, -161061, 470299, 354335, 901943, -770947, + 1529008, -195421, 1277753, -375810, 4295, 987843, -289910, 730144, 328565, 745177, + 158914, 708670, 4215511, -3240553, 2072322, -2553358, 1352915, -1228361, -1213328, -715112, + -676457, 790274, 897648, -3169686, -143881, 506806, -289910, -500364, -1846836, -646393, + 1365800, 2061584, 1043677, 3229816, 678605, -530428, 685047, 590558, -298500, 1082332, + 2299955, -833224, 4295, 1007170, -2147, -180389, -1599875, -23622, 850404, 702227, + 158914, 85899, -515396, 616328, -34360, 111669, 57982, 15255724, -904091, 1406602, + -874026, 1060857, -1067299, 326418, -195421, -186831, 957778, -719407, -2667175, 876173, + 371515, 932008, 1952063, 1075889, 758062, -169651, -1507534, -468151, 824634, -137439, + -167504, 1634235, -1883343, -549756, 57982, -259846, -397284, 824634, 912681, 1090922, + 380105, 438087, -322123, 1483911, 30065, 1155346, 854699, -178241, -47245, 586263, + 107374, -229781, -49392, 11108933, -10692321, 1627793, -2916283, 1498944, -231928, 1067299, + -1056562, 1958505, -886911, 1166084, -2576981, 49392, -1507534, 369367, -264141, -403727, + -712965, -1928440, -219043, 165356, -949188, 1475321, -717260, -1174674, -1432372, 779537, + -923418, 2117419, -249108, -57982, 622770, -57982, 27917, -1039382, -833224, -296353, + 208306, -444529, -953483, 760209, 584116, 1423782, -358630, 414464, -216896, -26268020, + 2959233, -2070174, -53687, -410169, -2304250, 2265595, -695785, 105227, 891206, 197569, + 2639258, -240518, -1234803, 3191161, 1219771, 2871186, -176094, -4050154, -2476049, -2005750, + 1513976, -2162516, 57982, -852551, -811749, 135291, 496069, -700080, -1355062, -1022202, + 680752, 798864, 1604170, -238371, -356482, -208306, 949188, -1294933, 193274, 373662, + 672162, -1071594, 899796, -1277753, -326418, -33159296, 11849815, -4945655, 5413807, -3962107, + 2413772, -4284230, 2241973, -3208341, 1065152, 2192581, -15032, 775242, 1975685, -1464584, + 1380832, -1846836, -1423782, -3949223, 3365107, -2357937, 2207613, 79457, -154619, -3783866, + -277025, 620623, -670015, -212601, -283468, 1451699, -377957, -1166084, 1013612, 272730, + -624918, -4295, -105227, 55835, 513249, -1071594, 2403034, -281320, -1769527, -238371, + -1041530, 1760937, 15156940, -3096672, 5828271, -2480344, 2083059, -1982127, 7226283, -1226213, + 3910568, -292058, -161061, 1108102, 111669, -4735202, 1219771, -289910, -2093797, -377957, + 188979, -5987185, -66572, 667867, 2044404, 115964, -1069447, -73014, 2201171, 554051, + -949188, -1896228, 3251290, -1786706, 10737, -2746632, -240518, 186831, 588411, -528281, + 852551, 1449552, -1163936, 1189706, 21475, 989990, 21475, 1640678, -670015, -244813, + 39917428, -11291469, 1990717, -1687922, 2871186, 304943, 231928, -5055177, 2649995, -2050847, + 1894081, 852551, 1095217, 2005750, 2935610, 702227, 1187559, -4196183, 1902671, 1952063, + -2637110, -264141, 3287798, 2265595, 2190433, 4612795, 2660732, 932008, 1391569, -1307818, + 1614908, -77309, 2725157, 3536906, -212601, 1400159, 2267743, -534723, 938450, -2486786, + -519691, 3131031, 281320, -1644973, -442382, 1178969, 2312840, 186831, 1408749, 2669322, + -21348134, 8770323, -6322192, 3878356, -3813931, 4602058, -3234110, 27917, -2765959, -3427384, + -4670777, 135291, -2817499, 1120987, 1406602, 3240553, -5718749, 3262028, -1445257, 4602058, + 955630, -491774, 285615, 156766, -1226213, -1181116, 644245, -2512556, 1423782, 2486786, + -3766686, -1050120, -289910, 1243393, -1473174, 3639985, -4112431, 534723, -60130, -12885, + -1791001, 12885, -1136019, 760209, 122407, -77309, -1269163, -498216, -2594160, -1157494, + -163209, 274878, -34308200, 10703059, -7123204, -601295, -1548336, 2001455, -6021544, 274878, + 1756642, 1406602, -2175401, 1022202, -2744484, -4475356, -1795296, 388695, -2692945, 8907762, + 146029, -2677912, -925565, -3195456, -1518271, 2602750, 1565516, 3423089, -416612, 1428077, + -2113124, 657130, -1917703, -803159, -1153199, 420907, 1045825, -758062, -1812476, 242666, + 588411, 2297808, -496069, -1105954, -3296388, -2841121, -1314260, -710817, 560493, 238371, + -1370095, -751619, 204011, 983548, 586263, -33077690, 15260019, -7451769, 6708739, -3764539, + 3897683, 1855426, 1058710, -3908420, 264141, -2070174, 365072, -5061619, 1644973, 2909840, + 792421, -5370857, -2789581, -2776696, -2939905, -1941325, 3528316, 749472, 2418067, 1967095, + -1140314, -354335, -4161823, 4945655, -1672890, -652835, 96637, -1224066, -1795296, -1975685, + -654983, -4273493, 989990, -2325725, 1413044, 1320703, 2130304, -766652, 10737, -2811056, + 760209, 1866163, 210453, -556198, 135291, 1436667, 2044404, 895501, 10788958, 13318694, + -5862631, 3639985, -1726577, 1425929, -1305670, 856846, 1282048, 6564858, -2171106, 2757369, + 6204081, -1569811, -120259, -940598, 1604170, 3223373, 3352222, 4267050, 1267015, 3639985, + -770947, -2031520, -6987912, 1574106, -938450, -3508988, -2405182, -55835, -526134, 2366527, + -176094, -4075924, -4112431, 1209033, -3549791, 556198, 2422362, -3279208, -2065879, -1365800, + 1829656, 1552631, 64425, -392990, 2673617, 577673, -781684, 1045825, -1967095, 313533, + -944893, -1584843, -901943, 38031936, -13230647, 7181186, -4956393, 7138236, -5022965, 4376572, + -1621350, 4445291, 1090922, 3126736, -3627100, 3730179, -1264868, -3103114, -307090, -3335042, + -5304285, -2813204, -564788, 2688650, -3627100, -4879083, -5952825, -1082332, -508954, 4760971, + 2628520, 3053722, -2083059, 2465311, -1879048, -1876901, -1009317, 3131031, 2731599, 828929, + -6442, -135291, 100932, -906238, -485331, 2156074, 435939, 5338645, -2046552, -672162, + -4460324, 2899103, -1159641, -725850, -1047972, -309238, 264141, -777389, 10803990, -16200617, + 9691594, -5985037, 7554848, 38655, 4735202, 1425929, -7035157, -3270618, -2291365, 998580, + 1913408, 1125281, 8199093, -4419522, 6575595, 1247688, 940598, -4292820, -835371, 5703717, + -246961, -4614943, 5514738, 4243428, 1032940, -2098092, -1632088, -345745, -253403, 2624225, + -1103807, 1239098, -2899103, -543313, 1866163, -4230543, 1791001, -1565516, 1685775, -1136019, + -257698, 5265630, 2347200, 3053722, -96637, 1337882, 2016487, -259846, -1282048, -2141041, + 912681, 1163936, 1967095, 2334315, 661425, -373662, -2123861, -908386, -2145336, -41004052, + -8693014, -1606318, -7267085, -3324305, 5551245, 2063732, -2269890, -2095944, -5362267, -3758097, + -4443144, -4954245, -4166118, -2871186, -3811784, -6184753, -5321465, 1324997, -5392332, 1097364, + -7084549, -324270, -3208341, -2725157, 5278515, -1133871, -3266323, 3169686, -4634270, 3377992, + 717260, 3592740, 2368675, -633508, -2437394, 3803194, -506806, -1224066, 3526168, -2209761, + -5836861, -6665789, -2001455, 1464584, 867583, -2383707, -605590, -2252710, -32212, -487479, + -100932, 3246995, 1093069, -3343632, -1445257, -88047, 2027225, -30065, 3229816, 395137, + -47652664, 41418516, -16904992, 11458973, -10829760, 2594160, -5312875, 6947110, 1340030, 740882, + -3371549, 4666482, 998580, -8654359, 910533, 1157494, -4254165, -6713034, 6579890, 7958575, + -2540473, -2274185, 1430224, 3577708, -2095944, 7206955, -130997, 1694365, -5239860, -2085207, + -3066607, 4608500, -936303, 839666, 1181116, -2974265, 4808216, 4232691, 1382980, 1290638, + 5632850, -3582003, -697932, -964220, -3766686, 571231, -2377265, 674310, 98784, 45097, + 4692252, -493921, -766652, 648540, 493921, 2559801, -2435247, 652835, 109522, 5325760, + -1404454, 32190780, -3435974, -6240588, -1183264, 4675072, 2598455, 2334315, 156766, -4013647, + 1483911, 3092377, 3429532, -1610613, -1516124, 6824703, 2576981, -4599910, 1458141, 8714489, + -9985799, 7346542, 1219771, 9279277, -210453, 929860, 2115272, 2216203, 5035849, -3008625, + -927713, 2177549, 3719442, -886911, 279173, 869731, 1151051, 2546916, -3889093, 347892, + 2845416, 1155346, -1982127, -274878, 5845451, 4496831, 2280628, -1638530, -1183264, 2040110, + -354335, -882616, 1312113, -1217623, -2295660, 6116034, 2549063, 4105989, 899796, 3221226, + 2544768, 2922725, 584116, 3442416, 1773822, 2596308, 15152645, 4445291, 3685082, -2145336, + -1447404, -4024384, -2905546, 833224, -1591285, -1924145, -5869073, 5108864, 3466039, -3549791, + 6249178, -5776731, -1801739, 2755222, -4395899, 2673617, 4028679, 6352257, 5433134, 5377299, + 2654290, -10881300, -64425, -2147484, 2136746, -886911, 4234838, 3113851, -1520418, -2491081, + 2727304, -1769527, 7170448, 212601, 2280628, 7610682, 6932077, -5108864, 294205, -3281355, + -6524056, -438087, 1015760, -551903, -1496796, -410169, 341450, -2699387, 171799, -3186866, + -1209033, -113817, 670015, 330712, -2299955, -1848983, 4140349, -1241246, 369367, 2310693, + 2117419, -1011465, -1735167, 35766340, -25016038, 9223442, -9446781, -652835, -6573448, 6109591, + 6081674, 2010045, 1312113, 5742372, 15665893, -13608604, -1806034, -3483219, -5426691, 12154757, + 9197672, -1791001, -8175470, 3427384, -6659347, -5336497, -9369471, 1279900, -9594957, -3137474, + 5826123, 891206, -2864743, -7943542, 128849, -1868311, 4980015, 4535486, 2181844, -3577708, + 665720, -169651, 2089502, 3921305, -2330020, -1181116, -4217658, 6637872, -691490, 1026497, + 5995775, -1157494, -408022, 2400887, -2819646, -253403, 2677912, -4310000, 1123134, -758062, + -249108, -4496831, 2342905, -923418, 523986, 1172526, -1550483, 3036542, -2220498, -551903, + -55843164, 7410966, 498216, 3627100, -4548371, -7211250, -309238, 4378719, 7112466, -721555, + 10958609, 5993627, -7879118, -7048042, 4975720, 682900, -5690832, -10320806, -11815455, -7657927, + -8789651, -9788230, 1451699, 2785286, 2269890, -7303592, -7052337, 792421, -2050847, -1398012, + -1170379, -5871221, 4505421, -9932112, -3886946, -1709397, -612033, 2873333, 835371, -893353, + 4224101, -1584843, 4211216, 2349347, -3689377, 339302, 7005092, -3107409, -3148211, -17180, + 4002910, 897648, -3257733, -4069482, 3311420, -2147, -5327907, 6803228, 7642895, 773094, + -2482491, 766652, -377957, 1505386, 3249143, -498216, 4389457, -34022584, 29091960, -9717364, + 6212670, -141734, 4836133, -11755325, 4541928, -8001524, 17180, -5398774, 10894185, 9332964, + 3478924, 801011, -9012989, -5901285, -970663, -3551938, 10314364, -8407398, -392990, -4127464, + 15116137, -4752382, 1288490, -345745, 2540473, 1279900, 2523293, 2005750, -2600603, 1466731, + -706522, 5407364, 715112, 10159745, 5104569, -3124589, -798864, -1127429, 60130, -3706557, + -2838974, -826781, 1653562, 12390981, 962073, 966368, -3524021, 5147519, -2022930, -2461016, + 1436667, -2383707, 1322850, -2993592, -7056632, 3569118, 2823941, -783832, 6940667, 1698660, + 1464584, 2750927, -2171106, 1026497, -1829656, 6994354, 4554813, -438087, -2207613, -1737314, + -779537, 21938692, -762357, 4739497, -15354508, -2776696, 1642825, -12446815, 708670, 16597901, + -3206193, 940598, -7876970, -10703059, 2383707, -9803263, 14598594, -10602127, 3296388, 3234110, + 7690139, 5905580, -1896228, -9498320, -1342177, -1140314, 4438849, -6751689, -1526861, -2194728, + -3352222, -2491081, 4228396, 2465311, 11774653, 3779571, -4771709, 4683662, -3566970, -3781719, + 3420942, 9992241, -1773822, -5667210, -5278515, 5141076, -427349, -7831873, -7181186, 3163244, + 2989297, -3478924, -5985037, -9837623, 2319282, 3115999, 2074469, -5753109, 3719442, 2029372, + 1387274, 75975824, -4415227, 3444564, 7316477, -6216965, -2428804, -1861868, -17413944, 12365211, + -1546188, -10638634, 2772402, -5259188, 6876243, 5544803, 8632884, -2529736, 11577084, 10005126, + 6511171, -9470403, 7956427, -13140452, -7625715, -8811125, 4017942, -6674379, -916976, -2001455, + -8667244, -4490389, 7982197, -5257040, -3932043, -8207683, 3152506, 3199751, 6807523, -3231963, + 11458973, 3191161, 13011603, -1037235, 2641405, 2967823, -6661495, 5405217, 13297219, -4054449, + -36507, 3936338, -3451006, -4823249, 3388729, -4808216, -2506114, -6412386, -4172561, 5446019, + 4793184, 3423089, 5113159, 6463926, 6053757, 9092446, 1660005, -2235531, -34218004, -66363688, + 23553600, -521839, 554051, -7305740, -7806103, -2319282, 1449552, -4984310, 16316581, -8662949, + -15801185, 154619, 107374, -2705830, -6126771, 10950019, 1258425, -5972152, 4567698, -11087458, + 12259984, -8072391, -4724464, -9670119, 13769665, -7050189, -3040837, -9579925, -5035849, 7264937, + -4657892, 7930657, -12098923, -13720273, 107374, 1578401, 1282048, -1030792, -7737384, 571231, + 2478196, 1056562, 5787469, -708670, 9637907, 813896, 8955007, 12427488, 1666447, -1647120, + 1393717, -7988639, -2969970, -12902082, -12023761, 2559801, 2117419, 1503239, -1904818, -4129611, + -2997887, -3618510, -2858301, -3605625, -1151051, -882616, 1056562, -22316650, 63715840, -29540786, + 12990129, -6528351, 19956566, -3530463, -9403831, -9691594, 4919885, -3094524, -1651415, 178241, + 3528316, -21816286, -10988674, -5819681, 8078834, 6947110, 12064563, 2061584, -2428804, -2214056, + 14542759, -19801946, 10799695, -9627169, -2531883, -10118943, 14987288, 6073084, -10730976, 1178969, + -5063767, 1522566, 5961415, -28265180, -12410308, 2179696, 9195525, -5909875, 1374390, 7097434, + -3659312, -3283503, -1782411, 10786810, 3513283, 1775969, 405874, 4114579, 11940009, -7834021, + 4971425, -18019536, -4011500, 3977140, 7709467, 1559073, 261993, 354335, 3650722, -3577708, + -551903, -1333587, -5381594, -3764539, 5484673, 6440304, -3779571, -3502546, -12597139, -57833884, + -12741020, 5299990, -13975824, 3113851, 2162516, 8111046, -388695, 15749645, 10136123, 5499706, + -4758824, -8186208, -768799, 16694538, -14897094, -5845451, -11632919, -539018, -31155692, -24556476, + 1148904, 14781130, 20349556, 4509716, -7934952, 6798933, -7095286, -4741644, -4964982, 1786706, + 5022965, 1065152, 7655779, -6380174, -11368778, 8811125, 5536213, 18788334, -2768107, 2856153, + -3171833, 15113990, -16423955, -8259222, -4236985, -12358768, 7252053, -5231270, 6008659, -13215614, + 12468290, 12343736, 11074573, -4934918, 9749576, 332860, 3062312, 5793911, 3758097, -5647882, + 412317, -1911261, -848256, 11581379, 3848291, -5424544, 8985072, -1801739, -8860518, -3021510, + -1189706, 42247444, 27657442, -7982197, 12835510, -27154930, 20008106, 7707319, 15184857, -4453881, + -3173981, -14594299, -7275675, -25348896, -3983582, -20057498, -5770289, -12124693, -12528420, -16937204, + 7451769, -23356032, 3708704, 10971494, -4127464, 3884798, -9844065, 491774, -2750927, -2783139, + -13595719, -1251983, 2083059, -309238, -1711545, -6702297, -5946382, 5005785, 5063767, 6760279, + 30895848, -11587822, -264141, 13033078, -2516851, -4357245, -11250667, 4333622, 10769630, 17839146, + 6193343, 15010911, -13511967, -20173462, 2415919, 14514842, 8093866, -10499048, 13537737, -9081708, + 6721624, 3463891, 12322261, 7614977, 4745939, 8976482, -7724499, 6077379, 4604205, 3401614, + 11987254, 3695819, 9655086, 84174920, -54479512, -2967823, 6326487, 1677185, 6652905, 11506217, + -2299955, -1887638, 6500433, -9766756, -9253507, -1576253, 7505456, 30236570, 1322850, 10398116, + -9700184, 532576, -29890824, 18421114, -18047452, -25907242, 6079526, 7136088, -9494025, 8495445, + 3704409, 19872814, 22239340, -3824669, -8259222, -6468221, -32987496, -18212808, 26057566, 8368744, + 9667971, -15135465, -15191299, 4314295, -2834679, -13428215, 11639361, -2772402, -8096014, -9816148, + 6672232, -8847633, -4395899, 30071214, -18365280, 5257040, -6468221, 6640020, -8151848, -3874061, + -22488448, 3328600, -8188355, -6199786, 18358838, 3770981, 5297842, 10295037, 13406740, 3154654, + 9375914, -4926328, -790274, -15915001, 7123204, 11111080, -54286240, -27687506, 7808251, -5128191, + 17091822, -4567698, -6910603, -17005924, -18878528, 7101729, -19655918, -7997229, -11993696, -3841848, + -12558484, -9126806, -10479720, -6227703, -12534862, -21895744, 9528385, -41611792, -2413772, 33762736, + 6678674, -2027225, -11753178, 687195, -38021196, 13022341, 6996502, 652835, 10941429, 17499844, + -17328046, -9856950, -17965848, 506806, -1552631, -11233487, -12884902, -13737453, -9229885, -2370822, + 5716602, -1170379, 4269198, 1851131, -1436667, 22883586, 3667902, -5791764, 17276506, -11383811, + -24599426, -8652212, -5003637, -5007932, -3880503, -9504763, -4230543, -11398843, -4881231, -11555610, + -1664300, 3478924, -13436805, -4806069, -8776766, -1307818, -13892072, -15479062, -9244917, -32813550, + 42868068, -21977348, -11267847, -36013300, 27045410, -10249939, 15627239, 575526, 259846, -11181947, + 20955146, -5800354, 6272800, 5046587, -10786810, -3693672, -4090956, -19091130, 2847563, 3173981, + -15487652, -24623048, -16134045, -22634478, -6466074, 12055973, 5347235, -13316546, -14224932, 19591494, + 12423193, -17001628, 14489072, -8439611, 12652974, -21464100, -18221398, -16303696, 4597763, -14381698, + 7930657, -6365142, 2583423, -3758097, -3423089, 3678640, 14304389, -33960308, -5759551, 7243463, + -4589173, -9977209, -26246546, -1694365, 21184926, 511101, 18114024, 15150497, 2592013, -2093797, + 13376676, -14115410, -13922136, 10475425, -5327907, -8272107, 4589173, 2961380, -9043054, -9388799, + 16217797, -15341623, -10900627, -8302172, -75301512, 26718992, 10773925, -19681688, 8267812, -22142704, + 18092550, 15418933, 13041668, -39101384, 22108344, 39318280, -6513318, 12676596, -296353, -13612899, + -17366700, 43387760, -1522566, -4992900, -25376814, -49411452, -27099096, 1359357, -22310208, 16724603, + -32592360, -11641509, -19619410, 3998615, -8231305, -24773372, 3040837, -6609955, 14600741, -6395207, + -19494856, -8310762, -57793080, 8995809, -2697240, 25082610, -17033840, -19056770, 23577222, 3919158, + 3077344, -11072426, -16196322, 4161823, 10189810, 6818261, -4992900, 7312182, 3663607, -304943, + -6019397, -6687264, -19832012, 139586, -8564165, -12283606, 8699456, 4183298, 26467736, 4423817, + -19945828, -20121922, 2723009, -13529147, -10477573, 1726577, -10969346, -1773822, -6433861, 65075196, + -21414706, 3478924, 6483253, 29027536, -298500, -1911261, 20787642, 33691872, -17605070, -20615844, + 21537114, -345745, 19108310, 26600880, 22434762, 20038170, 16408923, 19134080, 63138168, -1803886, + 7359427, 15036681, 36124968, -3526168, -9268539, 16172699, 1997160, -7428146, -10481868, -8244190, + 3193308, -11716671, 25832080, 38115688, 1067299, -5050882, 17343078, -4838281, 23590108, 18479096, + 3393024, -14209899, 16492674, 2340757, -2963528, 6575595, 438087, 44070660, -496069, 21386790, + -5948530, 39788576, -410169, 7206955, -9506910, -17729624, 21294448, -6706592, 39202312, 12156905, + 20207822, 4436701, 3296388, 14884209, 6008659, 30371862, 17761838, 9341554, 16456167, -10387378, + 9369471, 16892106, 5239860, 951335, 79392472, -23957328, 6599218, -8431021, 2576981, 9657234, + 25924422, -21556440, 10183367, -1009317, 274878, 14128295, -13215614, 15197742, -43589624, -19565724, + 5710159, 15408195, 9710921, 33352568, -34978212, 5005785, -6590628, -46027016, 17871358, -17944374, + -13374528, -6732361, -39462160, 12238509, 11343009, 5935645, -21614422, -32779190, 10844792, -20194936, + 15685221, -31275952, -1799591, -37407016, -11598559, -24809878, -24294482, 22765474, 32205812, 5355824, + 10140418, -15433965, 3719442, -26225070, 8531953, -16922172, 1887638, 26557930, 9966472, -8179765, + 12320114, 3549791, 10065256, -10557030, 19018116, 39848708, -1743757, -22209276, -20246476, -9178345, + -8602819, 3848291, 12771085, 4876936, 23237920, 1370095, 5278515, -24215026, -10131828, -82693152, + -69518344, 28162100, -9491878, 32899450, -3515431, 10219875, -41918880, -39286064, -24315958, 12068858, + -32678258, -22683870, -10322954, 5617817, 22280142, 7546258, -47508780, 11819750, 25076166, -66756676, + -8849780, 2488934, -71092448, -24736864, 30227980, -65609920, 30814242, 32841468, -590558, -9998684, + -3678640, -16234976, -18279380, 11065983, 13295071, 48148732, -29850022, -15659451, -13174812, -23134842, + 246961, -39101384, -10726681, 2469606, -2205466, -13009456, -3094524, -21683142, -5463199, 11474005, + -6481106, -14227079, 14920716, -7885560, -16993038, -22844932, 46720656, -2282775, 27940910, 3612068, + 9635759, 31406948, 3184718, 21356724, -15803332, 23783382, 15818365, 5065914, 4597763, 5731634, + 19000936, 9326521, 1758789, 19748260, -133412424, 49426484, -15277199, -60234768, -15124727, 809601, + -15970836, 22286586, -52117280, 24096914, -4685810, -60058676, -41386304, 7335804, 23057532, 21438330, + 15854872, 34089156, 9524090, 56577604, 31009664, 66436700, 8332237, 53779432, -42520176, -34108484, + 10937134, 3803194, -33775624, 8370892, 6734509, -5660767, -13069585, 31379032, 5888400, -72567768, + -32184338, 22885734, 7969312, -16282221, 20177756, 19726784, 32231582, 5823976, 9393093, 4879083, + 9195525, 10642929, -25078314, 2531883, 4344360, -54159536, 24704652, 17046726, 22217866, -37580964, + -21266530, 25082610, -201863, -8415988, -5718749, -16917876, -13980119, -1348620, -18549964, -42116448, + 13460428, 41871636, -30949534, 2718714, -17937930, -8579197, -13507672, -5542656, 20862804, 54090820, + 36028332, 24414742, 12506945, 98784, -14647986, -21412560, 15801185, -57221848, 56985628, -37978248, + 7739531, -61976380, -3934190, 55143084, 20555714, -21734682, 34256660, -58963460, 21133386, 9049496, + 2218351, -72239200, -22986664, 2675765, 9528385, 43692704, -71313640, -11055246, -24951612, -67076652, + -16247861, 13984414, 30743376, 47309064, 36135708, 36185100, -5224828, -26128434, 22952306, 5768141, + -17033840, 7142531, -34035468, 48954036, 21644488, 15311558, -28660316, -60022168, -17748952, -637803, + -72690176, -58972048, -17295834, -53167400, 30449170, 10544145, 7778186, -25769804, -27769112, 7481833, + 4567698, 1816771, 13146895, -12444668, 9219147, 30799210, 12487617, 2671470, 1696512, -25467008, + -21507048, -20409684, 6751689, -10312216, 62865436, -51316268, 12219182, -8377334, -7718056, -146029, + 16537772, -32508608, 40531608, -13398150, 27442694, -4170413, -24365350, 42971148, 42653320, 29903710, + -15768972, 65798900, 23809152, -76656576, 76469744, 5585605, -1269163, 54526756, 1447404, -25853556, + -33532958, 53747220, -35648228, -47811576, 43785044, 37419904, -26390426, -63114544, 23164906, -22771916, + 7617125, -44944684, -36350456, -16426102, 41019084, 35865124, 4099546, 32736240, -51017768, 14345191, + -14027363, -20553566, 23218594, 1475321, 6573448, -72153304, -20001662, 37102076, -50957640, -15064598, + -63722284, -13769665, -24262270, 8542690, -15951509, 5012227, 5753109, -4284230, 5574868, -18979460, + -56717192, -12678743, 27702540, -5888400, 18854906, -23506356, -50242528, -10387378, 9204115, 58134528, + 4462471, -16849156, -41669772, -1322850, -19969450, 15601469, -34488588, 22020298, 13793287, -29875792, + -31001074, 46750720, -55048596, -1889786, 35192964, -39417064, 12543452, 45810120, -36464272, 31565862, + 22591528, 33799244, -55280524, 47908212, -55538224, 17132624, -42399916, 5798206, -21917218, 37965364, + 672162, 23523536, 11289322, -38478612, -24436216, -53407920, 31033286, -35867272, 31177168, -43233140, + -50886772, -83187072, 7539815, 45226004, -7449621, -169651, 13224204, 39294656, -13683766, 11536282, + -47300476, 13239237, 60883308, -4700842, 55080808, 74902080, -1402307, 14078903, 14093935, -29302414, + 15247134, -35723392, -2935610, -36494336, -38781408, 4898410, -15373835, -60883308, 42232412, 4526896, + 31157840, -33543694, -20250770, -9081708, -131915624, 33137820, 49042084, 13411035, -57299160, -8626442, + 92595200, -106970456, -2939905, -18281528, -70014408, -17884244, -47517372, 17031692, 17003776, 40495100, + 16301548, -56100864, -20038170, 39889508, -63898376, -18427558, -68326488, 57747984, 17184164, 45075680, + 77184856, -27668180, -16621523, -13172665, -39086348, 36739152, -18504866, -46660524, -52155936, -9539122, + 19542102, -1930588, 10217727, 12133283, 29757680, -13791140, -1838246, 21786222, -22022444, 43241732, + 49392124, 46420008, -38697656, 4423817, -12494060, 21784074, 93445600, 69795368, 133983656, 9850507, + 52445844, 42191612, -21384642, -5611375, -8087424, -13625784, 15835544, 2828236, 47150152, 35298188, + -18004502, -6281390, -30651034, -57956288, 20508468, -2261300, 16578574, -5486821, -42722040, -6655052, + 118112, }, }; const Word32 CRendBin_Combined_BRIR_coeff_diffuse_im_16kHz_fx[BINAURAL_CHANNELS][2522] ={ { -8937827, - 962073, -1997160, 1969243, -977105, 848256, -12885, 942745, -57982, 1020055, -1251983, - -590558, 594853, -846109, -141734, -1324997, -92342, -489626, 2634963, 1251983, -1604170, - 62277, 657130, -60130, -371515, 682900, 73014, 448824, 635655, 562641, -816044, - -219043, 77309, 113817, 156766, -57982, 38655, -62277, 137439, 12885, -6442, - -81604, -15032, 66572, -21475, 47245, 6728067, 3895535, 2087354, 1043677, 1129576, - 382252, 801011, -148176, -150324, 1932735, 1095217, 897648, 1853278, 1550483, 2115272, - -2948495, 2561948, 708670, 169651, 513249, -178241, -1320703, -940598, 1509681, 682900, - 1234803, 55835, -423054, 901943, -105227, -438087, 912681, 476741, 1340030, 382252, - 891206, -1331440, -803159, 715112, 130997, 768799, 319975, -165356, -354335, -1080184, - 223338, 3599183, -3721589, -766652, -725850, -947040, -199716, -124554, -648540, -586263, - 81604, 94489, -453119, 244813, -1099512, -408022, -113817, 654983, -3953518, -438087, - 912681, -442382, -408022, 296353, 158914, 229781, 1941325, -951335, -511101, -1045825, - -98784, 496069, 921271, -901943, -551903, 942745, -820339, -1398012, -57982, -412317, - 562641, -446677, -292058, 180389, 511101, -874026, 369367, -12895639, -8843338, -3519726, - -4127464, -2224793, -2177549, -1967095, -957778, -2381559, -1962800, -777389, -1535451, -133144, - -575526, -1241246, -1801739, -1913408, -809601, -1080184, -2025077, -188979, -2523293, 81604, - -212601, -270583, -1533303, -182536, -1163936, 88047, -1492501, -861141, 493921, -1002875, - 178241, -2435247, -474594, 1316408, 747324, 42950, -371515, -633508, 204011, 322123, - 1170379, -605590, -111669, -16935056, -1015760, 2276333, -124554, 738734, -208306, 100932, - -1455994, 1535451, 481036, 1829656, 1153199, 3665755, 2540473, 283468, -1511829, -736587, - -429497, 747324, -577673, -3088082, -2942053, -1398012, -536871, 212601, 302795, 659278, - -214748, 169651, 246961, -594853, -191126, -21475, -2052994, 1213328, 369367, -150324, - -124554, -682900, -1187559, 736587, 152471, -646393, 569083, 633508, 717260, 19020262, - 13462575, 2568391, 5246303, 1007170, 1769527, 4161823, 2229088, 599148, 2594160, 959925, - -1073742, -631360, 925565, 1393717, -2546916, -429497, -1516124, 3358665, 1748052, 794569, - 1745904, 783832, 914828, -49392, -141734, -942745, 1370095, 1533303, 1410897, 1636383, - 2119566, 1151051, 3083787, 586263, -161061, 981400, 212601, -648540, -236223, -594853, - -603443, -105227, 1425929, 219043, 231928, 28357522, 12217034, 3543348, 3440269, 2211908, - 1546188, 339302, 214748, 2997887, 732292, 1604170, 2452426, 1116692, -68719, -998580, - 5068062, -584116, -2630668, -1694365, 1324997, -70867, 2746632, 732292, 412317, -633508, - -1157494, -498216, -489626, 1017907, -124554, 332860, 191126, 27917, -566936, 790274, - 3524021, 2025077, 2360085, 1906966, 1769527, 770947, 725850, 227633, 1187559, -1125281, - 743029, 9251360, -9751723, -3111704, -4133906, -3811784, -1876901, -710817, 1511829, -1490354, - 285615, -3768834, 1391569, -1440962, -3171833, 773094, -2224793, -3264175, -2115272, 2929168, - 2428804, -1159641, 1309965, -2186138, 966368, -3901978, 354335, 545461, -491774, -972810, - 955630, -3094524, -1211181, 317828, -893353, -959925, -523986, 182536, 485331, 1462436, - 257698, 2570538, -846109, -773094, -654983, -1346472, -229781, -693637, 543313, -1157494, - -33648920, -17313014, -5978595, -4984310, -5076652, -3453154, -4363687, -3113851, -4765266, -1054415, - -2057289, -727997, 401579, -2203318, -384400, 173946, 206158, -3264175, -1887638, -1554778, - 478889, -4346507, 605590, -2046552, -3549791, 188979, 141734, 126702, 100932, -1449552, - -813896, -81604, -83752, -169651, -1194001, -73014, 584116, 1013612, 637803, -1565516, - 1043677, -1563368, 1200443, -2604898, -1483911, 274878, -1159641, -30065, -296353, -19870666, - 10361609, 4526896, 1501091, 2826089, 367220, 843961, 2241973, 2774549, 1299228, 1881196, - -1492501, -463856, -2248416, 2658585, 384400, 562641, 3335042, 208306, -2493229, 4236985, - -2905546, 425202, 3264175, -949188, 736587, 526134, -244813, -1640678, -577673, 1024350, - 818191, 238371, -783832, 135291, -1387274, 3974992, 156766, -2147, -1720134, -719407, - -1178969, -880468, 1928440, 2074469, -715112, 242666, -326418, 646393, -47245, -103079, - -616328, 506806, 29970282, 12906377, 3287798, 7020124, 3874061, 1831804, 2866891, 2697240, - -139586, 1995012, 2836826, 792421, -146029, 1625645, 4050154, -1329292, -934155, -3236258, - 680752, 3921305, 1449552, 259846, -2340757, -1086627, -1110249, 4112431, 1069447, 2181844, - 994285, -1853278, -3281355, 3562675, 1724429, -2095944, -1230508, 3453154, 2658585, -100932, - 500364, -315680, 1277753, 989990, -556198, 723702, -1428077, -539018, 1602023, -949188, - -985695, 1971390, 1432372, 936303, 88047, 35416300, 7917772, 5744519, 2808909, 2529736, - 1342177, 2607045, 3500398, 5076652, 3427384, -1198296, 4342212, -1005022, 1301375, 719407, - 3697967, 4982162, 3521873, -1110249, 5978595, -1316408, -423054, -3270618, 998580, -1127429, - 1123134, 1342177, -1584843, -2660732, -843961, 249108, -1788854, -871878, 1056562, 1058710, - -2134599, -2192581, -657130, 515396, 139586, 365072, -680752, -259846, -412317, -1020055, - 1080184, -1569811, 1406602, -1668595, -352187, -1333587, 371515, -646393, 3966402, -15631533, - -5216238, -5478231, -3781719, 1144609, -1041530, -3212636, 1799591, 322123, 2248416, -81604, - 122407, -3502546, -2727304, -1522566, -2800319, 429497, -2967823, -5302137, 981400, 854699, - -2660732, -343597, -2420214, 708670, 685047, -225486, -5772436, -1380832, 272730, -397284, - 403727, 1767379, -4123169, -968515, -2602750, 1561221, -384400, 38655, 2579128, -2422362, - -242666, 1093069, -399432, -614180, 1226213, 953483, -1655710, -1687922, -3182571, -191126, - -2439542, -1649268, -1063004, -36771364, -12796855, -7329362, -2153926, -3674345, -373662, -1868311, - -2972117, -3137474, 3992172, 356482, -1825361, -135291, -6356552, -3231963, -3201898, 5291400, - -4423817, -8654359, 549756, 1374390, 515396, -3002182, -1052267, 2168959, -4284230, -133144, - -4361540, -955630, 2173254, -1715839, 410169, 4864051, 339302, -637803, -1258425, 1548336, - 1267015, 1458141, -1503239, 64425, 1333587, 2332167, 1078037, 1005022, -3974992, 1058710, - -309238, -1614908, -846109, 715112, -633508, -1629940, -1413044, -1700807, -24371792, 5499706, - 558346, -3189013, 4595615, -2976412, -1960653, 914828, -3959960, -2675765, -693637, 1524713, - -3088082, 4273493, 281320, -322123, 2274185, 1881196, 3459596, -556198, 4696547, 6281390, - 4866198, 1273458, 4187593, -1511829, 2723009, -3171833, -2843268, -1477469, 547608, 1748052, - -1413044, -3060164, -1361505, -289910, 1926293, -2969970, 2151779, 453119, 1696512, -929860, - -2338610, -3609920, -3848291, 813896, -1889786, 854699, -4095251, -1477469, 2076617, -2933463, - 603443, -2138894, 1447404, -861141, 1408749, 36507, -601295, -328565, -1556926, 16348793, - 27200028, 7788923, 7127498, 9706626, 8010114, 1479616, 6367289, 5514738, 3124589, 11778948, - 2899103, 1926293, 5205501, 4666482, 2570538, 2018635, 1314260, 1885491, -1466731, 5899138, - -1544041, 487479, -1823214, 3700114, 246961, -1075889, 3191161, 3639985, 1370095, 4859756, - -3466039, -5916318, -1267015, -444529, 1303523, -511101, 2544768, -2437394, 2314987, 4883378, - 2183991, -4567698, -893353, 2149631, 912681, -2302103, 3167539, 1110249, 1881196, 1939178, - 2823941, 792421, -775242, 554051, -2536178, -805306, 2370822, 2031520, -1232656, -173946, - 62150324, 6577743, -760209, 4024384, -251256, 5493263, -73014, 1602023, 539018, 5778879, - 2484639, -2141041, 1745904, 2856153, 1305670, -3223373, -7183333, -3064459, -3098819, 1413044, - -4464619, -594853, -416612, 1324997, 7606387, 4466766, 1318555, 3268470, -4964982, -135291, - -2669322, -809601, -2134599, 3066607, -1254131, 5025112, -2381559, -723702, -2641405, -962073, - -3751654, -1529008, 687195, 936303, -332860, 188979, -2123861, 1269163, 3212636, 414464, - -1949915, 2244121, -3111704, 1432372, 1159641, -163209, -1067299, -504659, -277025, -438087, - 2147, -18176302, -21524228, -4054449, -1151051, -923418, -3373697, -1455994, 6603512, 3839701, - 1440962, 1754494, -2791729, -601295, 4982162, -1836099, 8070244, -6234145, -1623498, 6500433, - -1181116, -747324, -3710852, 4453881, 5025112, 79457, 4958540, -1782411, 2250563, -109522, - -2630668, -433792, -2057289, -904091, -1297080, 2690797, -1876901, -470299, -2939905, 2068027, - -1471026, 4509716, -6994354, 2995740, 2598455, -4286378, 214748, -2828236, 893353, -3219078, - 1157494, 1359357, -3968550, -605590, -1355062, -6094559, -3395172, -1681480, -2892661, -648540, - -365072, 343597, -2334315, 358630, -4649302, 1348620, -15807627, -9262097, -12232067, -6468221, - -8123931, -1052267, 8106751, -8441758, 6545530, 3974992, -4398047, 8974334, -1292785, 1660005, - -5785321, -743029, -2488934, -481036, 191126, 2141041, 1249836, 4645007, 9249212, -2553358, - 1413044, -4436701, -4380867, -4121021, 1084479, 3697967, -1163936, -1400159, -1037235, -2886218, - 3326452, -1063004, -34360, -2819646, -1986422, -1896228, -2656437, -300648, 57982, -2456721, - 1758789, -3725884, 1544041, -2181844, -191126, 1286343, -2521146, 3311420, -5634997, -1848983, - 747324, -1758789, -2911988, 1501091, -657130, -3519726, 5950677, 3236258, 1002875, 1090922, - 1367947, 1410897, -2688650, -44233868, -5214091, 3730179, -3388729, 7507603, 3262028, -8841190, - 1075889, 1651415, -3036542, -7385197, -2929168, -1696512, 2005750, 674310, -7103876, -2495376, - -3856881, -6569153, -5789616, -13003013, -6981470, -7546258, -9455371, 7511898, -5098126, 2821794, - 5390184, -3895535, -6463926, -2321430, -1513976, 1619203, 4005057, 2521146, -5385889, -6393059, - 4956393, 3296388, 3886946, 5787469, 661425, 57982, 2074469, -193274, -2686502, 1513976, - -1529008, -803159, 3176128, 8585640, -3002182, -4221953, 1812476, -2684355, -435939, 4417374, - -8617852, -109522, -2965675, -470299, -367220, 21475, -1196148, 1632088, -2705830, 2976412, - 35465692, 31089120, 8304320, 18932216, 5115306, 10930692, -1868311, -1653562, 5164698, 7198365, - 3670050, -12253542, -4204773, 7726646, 8540542, -3150359, -4312147, 1449552, 3470334, 4136054, - 463856, -6373732, -13911399, -5145371, 7352984, -646393, 7552700, -1812476, -2626373, 1571958, - -6575595, -3702262, -3904125, 7071664, -9004399, -6083821, 1385127, 1466731, -2476049, -294205, - -2740189, 2626373, 3382287, 3070902, 6753836, 4037269, -115964, -5746666, 5134634, -545461, - 2729452, -2834679, 1821066, 4211216, -916976, -1185411, -2937758, -3204046, 1651415, 384400, - 2443837, -2778844, 1982127, 5478231, -1471026, -3068754, 3532611, 42874512, 8293582, -8686571, - 7264937, 4294968, -7902740, -2089502, 4443144, -8590, 1614908, -923418, -1425929, -9281424, - -8536248, 3665755, 8632884, 8358007, -8199093, -17467632, 2712272, -519691, -6599218, -9051644, - -1245541, 4153234, -2725157, 6287832, 10806138, -4170413, -3105261, -1644973, -1226213, -2272038, - -15708843, 8158291, 7973607, -511101, 5265630, -5072357, -1200443, -4625680, 6818261, 6721624, - 1125281, -1913408, -2162516, 3678640, 1290638, -2422362, -3697967, -146029, 3792456, -5347235, - -2851858, -2965675, 1260573, 1537598, -6163278, 3225521, 7614977, -5995775, 313533, -1503239, - -624918, -111669, 1112397, 360777, -2175401, -4823249, -3189013, -1346472, 3453154, -1782411, - -11559904, -8029442, 1378685, 10460393, -10496900, 7415261, 3764539, 1434519, 2450279, 1610613, - 7249905, 11074573, 579821, 3176128, 1526861, -9949292, -8553427, 8400956, 1451699, -10264972, - 6212670, -8791798, 1702955, 10333691, -380105, -3085934, 12337294, 1675037, 1123134, 790274, - 663572, 893353, -4986457, 2987150, 5166846, 7761006, -5989332, -3302830, 1556926, 934155, - -2566243, -5862631, 3972845, -2237678, 2888366, 1200443, -1638530, -1986422, 1163936, 3478924, - -2385854, -1335735, -251256, 1958505, -5403069, -2800319, 3055869, 478889, -1567663, -1088774, - 2811056, -46250356, -42674796, -9397388, -19821274, -17190606, -9902047, -2843268, -7447474, -8727374, - 5952825, 1758789, -2128156, 10271414, 3655017, 12317966, 9363029, 2877628, 3728032, 4610648, - -18663780, 8967892, -1464584, -3753802, -3506841, -10825465, -3418794, -3620658, 10591389, -3328600, - -6313602, -2931315, 1707250, -1155346, -2080912, 2570538, -2757369, -1574106, 6530498, -6101001, - -491774, -1795296, 11729556, 4894115, 4748087, -8688719, 790274, 8263517, -4080219, 2199023, - 167504, 2241973, 193274, 981400, -455267, 5405217, -489626, -1329292, 3895535, -2293513, - 2289218, 4778151, -1840394, -2729452, 1627793, 2050847, -3049427, -1002875, -28578712, 60851096, - 38912404, 11899207, 4176856, 3749507, 4752382, 6408091, 6440304, 12496207, 26328150, 987843, - 3335042, 5149666, 5688684, 6167573, -4475356, 24665998, 18303004, -17242146, 12702366, 1748052, - -2345052, 5499706, 15554224, -14836965, -3732327, 586263, -11523397, -8669391, -8147553, 16698833, - -444529, -3697967, 2617783, 319975, -4857608, -14549202, 9942849, 7198365, -2055142, 3605625, - 10179072, -7279970, 5675800, -169651, -2282775, 7050189, 6944962, 779537, 1183264, -4295, - 5641440, 6745246, 341450, -2229088, 201863, -3294240, 5589900, 180389, -1876901, -3629247, - -1657857, 3008625, 2153926, 8080981, -2473901, 2108829, -1726577, 66080220, -23081154, -23330262, - 10735271, 2216203, -8385924, -8012262, -11860552, -12416750, -8516920, -7834021, 11297911, 2199023, - 1623498, -6607807, -5158256, -19816980, 261993, -8065949, -13086765, 10750303, 7677254, 1904818, - 7146826, 1537598, -2087354, -4707284, -113817, -4045859, 5875516, 9131100, -9895605, -4146791, - 375810, 4788889, 13449690, 3551938, 17955110, -9532680, 5804649, 14353781, 8914205, -7810398, - -2005750, 1286343, -3571265, 5948530, -822486, -83752, 9607842, 4737349, 1664300, 457414, - -92342, -4402342, 19327, 700080, -4123169, -2843268, 4297115, -2083059, -7947837, -1625645, - 324270, -1855426, -8308614, 1715839, 1778117, 1625645, 2379412, -2229088, -3455301, 21154862, - 40677636, 15741055, 11012296, 12513387, -3541201, 3897683, -11413876, 19950124, 8074539, 19146964, - 5918465, 7166153, -17534204, 21839908, 32800666, 3932043, 21296596, -4479651, -17102560, -17261474, - 15631533, -5248450, 12487617, 2048699, 5037997, -9790378, 9659381, -3607773, -3393024, 15592879, - 11057393, -8600672, 14845554, 1382980, 2712272, -3279208, -11196980, 2813204, 809601, -6532646, - -7084549, 6242735, 9163313, 2699387, -3315715, 4015795, 270583, 9463960, -6017249, -1217623, - -9871982, 773094, 9408126, 6043019, -4587025, -425202, 3176128, -9068823, -852551, -6335077, - -3519726, 1372242, 2035815, 5375152, -7116761, 2499671, -8175470, 208306, 9416716, 2931315, - 1554778, -785979, -46746424, -3139621, -10103911, 12884902, -9637907, 10511932, 938450, 8327942, - -616328, 7118909, -23021024, 6438156, -2138894, -9034464, 4806069, -10885595, 7033009, -10975789, - -4866198, -23654532, 13868449, 27288074, -10200547, -4153234, -2465311, -5010080, 4949950, 5053029, - 8783208, -21051782, 6904160, -13277891, -2914135, -1157494, 11345156, 3579855, -4520453, 1788854, - 3058017, 7118909, 8536248, -13286481, -3395172, 1428077, -8514773, -8783208, -708670, -6390912, - 3440269, 6775311, 1883343, 833224, -753767, 6296422, 19071802, 9807558, -10123238, 1836099, - 5132486, -5920613, 7438884, 1243393, -6027987, -1103807, 9285719, 423054, 8982924, -10982231, - -1215476, 5774584, 1602023, -86215024, -33268816, 18285824, 5682242, -10524817, 11656541, 10801843, - 15597174, -3324305, -7825431, 14841259, -94489, -9000104, 18657338, -21124796, -28995324, -12773233, - -15906411, 10471130, 13503377, 227633, 2922725, 23025320, 9133248, -22243636, -11072426, -13488345, - 3401614, -20639466, -19260780, -618475, 2033667, -7599945, -9691594, -12412455, -7554848, -11327976, - -12438225, -3882651, 96637, -3766686, -1599875, -7524783, -2168959, -5675800, -14409615, 29450590, - 1363652, 7264937, -12869870, 8070244, -1812476, 4294968, -10602127, -45097, -2669322, -7591355, - -6120329, -3309272, 8227010, 7159711, 6120329, 4833986, 4406637, -1136019, -1297080, -6682969, - -2707977, -206158, -2068027, 9008694, 809601, 5291400, -1559073, 45941116, 16316581, 37072012, - 5342940, 2836826, -15141907, 5995775, 21489868, 8602819, 1108102, 15077483, -13709536, -5587753, - 11474005, -8843338, 3637837, 21388938, 6227703, 3148211, 6148246, -3592740, 8579197, -6738804, - -382252, 3805341, 586263, -5181878, -6472516, 2471754, 21041044, -6861211, 4666482, -19879256, - -11452530, 9302899, 22127672, -17480516, -654983, 11134703, 1954210, 4282083, -15412490, -5025112, - -13469017, -21966610, -6734509, -12217034, -13883482, 10441065, 3180423, 3586298, -8596377, -4675072, - -2587718, -21210696, -3115999, 11763915, -9567040, 9399536, 18285824, 2836826, 11622182, 8377334, - -657130, -4071629, 9749576, -14368813, -2250563, -1037235, 7211250, 4148939, 6320045, 54580444, - -11403138, -17766132, 3451006, 11944304, 11070278, 9798968, -2379412, 10619307, 4279935, -14403173, - -26499948, 17366700, 5555540, 12320114, 8516920, -8096014, 3839701, -11280732, -17154100, 17579302, - -10945724, -23014582, 2950643, -4537633, 3315715, -3124589, -1668595, -6556268, -8214125, 5564130, - 15446850, -22527104, 21597244, -19222126, -23310934, 1316408, 6856916, -14448270, 11035918, -2931315, - 7142531, -12614319, -5334350, 18618684, 8431021, 18848464, 5647882, 416612, 6661495, -1172526, - 1032940, 9302899, -665720, 687195, -9120363, -7526930, -5377299, 6148246, -7172596, -7410966, - 11860552, -1604170, 13187697, 743029, -9923522, 14587856, 12010876, -2370822, 7507603, -9547712, - -14235669, 3715147, -6169721, -11119670, 45996952, 56846040, -9049496, 682900, -28829968, -2896956, - -21163452, -15212774, -5392332, -10322954, 15541339, 274878, 11937862, -26278758, 21560736, -16475495, - 22011708, 1015760, 17358110, -6262063, 21996676, 7589207, -11282879, 4913443, -16587164, 10767483, - -9513353, 25492778, 6953552, 16778290, -28374702, -15811922, -7453916, -14001593, -6549825, -9584220, - 221191, 34312492, -16552804, 17237852, 28348932, 4088809, 12043088, 115964, -7275675, -13651554, - -11132555, 1335735, -8274255, 17411798, -12197707, 7879118, 20379620, -2993592, -2632815, -1932735, - 16456167, 18500572, 4941360, -9021579, -8613557, -4954245, 6324340, -17594334, 2168959, -3539053, - -5854041, -277025, 10151155, 412317, 14759655, 14008036, 1417339, 2658585, -8860518, -44989784, - -38506528, 16593606, -4305705, 20742544, -11456825, -11224897, -13868449, -13146895, -4722317, -35794256, - -11875585, 12311524, 19531364, 6627135, -23375360, -7980049, -10799695, 9148280, 35835060, 18472654, - 9356586, 214748, 3438121, 642098, 6925635, 16915728, 2226941, 3545496, -9564892, -390842, - -14048838, 4522601, 7941395, 11815455, 2409477, -10258529, -3796751, 15934329, -7344394, 5162551, - 4211216, 4879083, 22722524, -13685913, -17991618, 5564130, 16365973, 2682207, 16344498, 17343078, - 9723806, 11523397, 5656472, 1221918, 10965052, 29792040, -16902844, -1700807, 5748814, 1056562, - -12994424, -4196183, 11027329, -2031520, -11602854, 2918430, 23383950, -20560008, 6631430, -19658066, - 10778220, 4745939, 3496104, -1475321, -89096952, -30457760, -2456721, -8366597, -22320946, 13831942, - 17368848, 30560840, 9429601, 19393924, -18010946, -36567352, 16812650, -8269960, 487479, -19462644, - 19194208, -11300059, -1359357, 18730352, -50968376, 5357972, 25877178, -48576080, -13376676, -16904992, - 1975685, 2297808, 11613592, -13174812, 15526307, 2731599, -26091926, -12796855, 2680060, -2847563, - -13093208, 11660836, 29568702, 6826851, 7945690, -4372277, -7758859, 17864916, 2884071, -8360154, - -43246024, -6453189, 5149666, -21408264, 10088878, 9156870, 1507534, -16494822, -15270756, -17630840, - 38373384, 10524817, -6043019, 7730941, -32918776, 4082367, -15448997, -17439714, 17008070, -2761664, - 208306, -11014444, -40965400, 5585605, 12605729, 7209103, -2710124, 24230058, 1395864, 1361505, - 93802088, 23882166, 24013162, 20796232, -6281390, 968515, 96409128, 28067612, -8317204, 59191092, - -33474976, 24743306, 4821101, 15141907, 23764054, -7406671, -17255032, 18242874, -3734474, -58387932, - 14489072, 15146202, 11899207, 27786290, 17126182, 18122614, -16965120, 3569118, -16423955, -8366597, - 16752520, 5650030, -34677564, -20474110, -29184302, -42679092, -7148973, 8622147, 20119774, 17768280, - 14766098, 12773233, -7015829, 22048214, 11632919, -27303108, -11138998, 6987912, 19585050, 240518, - 3554086, 35654672, -7314330, -3304977, -10226317, -2141041, 17338782, -15891379, -738734, -22355304, - -20703890, -12809740, 21889300, 31441308, -10363756, 2448131, -7359427, -19617264, -14673756, 5312875, - -24238648, -5471789, -7780334, -13398150, 94725504, 57475252, 3066607, 36816460, 26394722, 8731669, - 40422084, 12564927, -1215476, -12028056, -10655814, -26205742, -74474736, -4632122, 5976447, -24249386, - -15448997, -2059437, 50002008, 17501992, -14521284, 1236951, 2299955, -6650757, 20308752, -2985002, - -14615774, -8450348, -13881334, 8686571, -19795504, -44465796, -375810, -22975928, -37853696, 7632157, - 14254996, 23259396, 11351599, 20598664, -15283641, -38418484, -26858578, -34565896, 12105365, 32974612, - 25312390, 17635136, 30988190, 992137, 18702436, 44418552, -38427072, 6629282, -18348100, 98784, - 10907069, 13052406, 19666656, -2224793, -46785080, -35055524, 5450314, -10374494, -14828375, -9345849, - -11959336, -31776316, 438087, 19333796, -4655745, 13773960, -12193412, -3955665, -4840428, 21904334, - -46355584, 4574140, -35094176, 15066745, -68305016, -3137474, -21586506, -37224480, 66129612, 35330400, - -21315922, -59023588, -12917114, -22183506, -48829484, 38386272, 3951370, -35944580, -11108933, 19327352, - -31168578, -23398982, -15388868, -40067748, -12985834, -1554778, -29624536, -29517162, 42651172, -15760382, - -10350871, -4337917, -6700149, 33833604, -35691180, -18300856, 10531260, -10593537, 2516851, -9030169, - 22473416, -36447092, 15588584, -58014272, 8686571, -16716013, -20160576, 60513940, 9300752, -22475564, - 14665166, 12693776, -45749992, 34074124, -4958540, -10344429, -257698, 19726784, -4509716, 1282048, - -19711752, 13312251, 19782620, 28007482, -19503446, -59543280, 46473692, -3674345, 21902186, 22162032, - -7829726, 13883482, 36088464, -37209448, -88989576, -53206056, 13743895, -34765612, 6251325, -25765508, - -9822590, -36702644, -21343840, 15032386, 53629108, 51593296, 10924249, 35731980, -23901494, 64136748, - 51133732, -41143640, -32579474, 8714489, 13348758, 53861036, 22771916, 33661808, -10559177, 12118250, - -4883378, -8317204, -9474698, 50203872, 25935160, 47987668, 48120812, 6474663, -234076, -24539296, - 24522116, -4947803, -43490840, -32981054, -6236293, -26096222, -2785286, -26766236, -18895708, 12154757, - -3934190, -17832704, 40969692, 42857332, -23437636, -11117523, 64340756, 22728966, -39505108, -43922484, - -12268574, 13076028, 727997, -10290742, -27279484, 22688164, 10548440, -12496207, 9790378, 4123169, - -34432752, -19370302, 6287832, -17231408, -15367393, -23036058, 53027812, -43602508, -33277406, -34456376, - -51299088, -43548820, -676457, -34220152, -44671956, 11690901, -4146791, -61544732, 43785044, 8136816, - -4127464, 22256520, 67647880, 65277060, 27631672, -79345224, 29149944, 21371758, -78434696, -843961, - -38104948, -18051748, 39711268, -46956876, 26914412, 204011, -8615704, -16666621, 7584912, -3738769, - 12979391, -8914205, -42329052, 40718436, 18618684, 48717816, -5660767, -16258599, -24122684, 19767586, - -21829172, 57447336, 11398843, 34507916, -45423576, 35624608, 633508, 12584254, -29811368, 9689446, - -35306780, -5542656, -36247376, 14304389, 23504208, -47167332, 882616, -38968240, 17008070, 22499186, - 21051782, -3498251, -67703720, -429497, 16035260, -6425271, 27805618, -64392296, 14315126, -27573690, - 6165426, -23929410, 1670742, 14201309, 94399088, 116943368, 47382080, 41519448, -67832568, 65386584, - 92223688, -100860864, 11190537, 67381592, 10516227, -120480272, -13140452, -64815352, 20349556, 25492778, - -31733366, -10728828, 21238614, -54535348, -5409512, -20514912, -28394028, 12322261, -43314744, 47113644, - 31621696, 60544008, -30169998, 11190537, -7292855, -22497038, 73637216, 163209, -35231616, -14534169, - 15189152, -14328011, -20448340, -21120502, 36996848, 15940771, 51784420, -1816771, 18378166, 71199824, - -44878112, 11261404, -30805652, 57082264, -22587234, 27958090, 9852655, 188979, -21889300, -36612448, - -27575838, 13675176, 48451528, -43883828, 40630392, 52525304, 23566486, 61106648, -29710436, -19514184, - 36137856, -2690797, -8759586, -49115100, -5383742, -39191576, 6637872, 61510376, 24157044, 21169894, - 18854906, }, + 962073, -1997160, 1969243, -977105, 848256, -12885, 942745, -57982, 1020055, -1251983, + -590558, 594853, -846109, -141734, -1324997, -92342, -489626, 2634963, 1251983, -1604170, + 62277, 657130, -60130, -371515, 682900, 73014, 448824, 635655, 562641, -816044, + -219043, 77309, 113817, 156766, -57982, 38655, -62277, 137439, 12885, -6442, + -81604, -15032, 66572, -21475, 47245, 6728067, 3895535, 2087354, 1043677, 1129576, + 382252, 801011, -148176, -150324, 1932735, 1095217, 897648, 1853278, 1550483, 2115272, + -2948495, 2561948, 708670, 169651, 513249, -178241, -1320703, -940598, 1509681, 682900, + 1234803, 55835, -423054, 901943, -105227, -438087, 912681, 476741, 1340030, 382252, + 891206, -1331440, -803159, 715112, 130997, 768799, 319975, -165356, -354335, -1080184, + 223338, 3599183, -3721589, -766652, -725850, -947040, -199716, -124554, -648540, -586263, + 81604, 94489, -453119, 244813, -1099512, -408022, -113817, 654983, -3953518, -438087, + 912681, -442382, -408022, 296353, 158914, 229781, 1941325, -951335, -511101, -1045825, + -98784, 496069, 921271, -901943, -551903, 942745, -820339, -1398012, -57982, -412317, + 562641, -446677, -292058, 180389, 511101, -874026, 369367, -12895639, -8843338, -3519726, + -4127464, -2224793, -2177549, -1967095, -957778, -2381559, -1962800, -777389, -1535451, -133144, + -575526, -1241246, -1801739, -1913408, -809601, -1080184, -2025077, -188979, -2523293, 81604, + -212601, -270583, -1533303, -182536, -1163936, 88047, -1492501, -861141, 493921, -1002875, + 178241, -2435247, -474594, 1316408, 747324, 42950, -371515, -633508, 204011, 322123, + 1170379, -605590, -111669, -16935056, -1015760, 2276333, -124554, 738734, -208306, 100932, + -1455994, 1535451, 481036, 1829656, 1153199, 3665755, 2540473, 283468, -1511829, -736587, + -429497, 747324, -577673, -3088082, -2942053, -1398012, -536871, 212601, 302795, 659278, + -214748, 169651, 246961, -594853, -191126, -21475, -2052994, 1213328, 369367, -150324, + -124554, -682900, -1187559, 736587, 152471, -646393, 569083, 633508, 717260, 19020262, + 13462575, 2568391, 5246303, 1007170, 1769527, 4161823, 2229088, 599148, 2594160, 959925, + -1073742, -631360, 925565, 1393717, -2546916, -429497, -1516124, 3358665, 1748052, 794569, + 1745904, 783832, 914828, -49392, -141734, -942745, 1370095, 1533303, 1410897, 1636383, + 2119566, 1151051, 3083787, 586263, -161061, 981400, 212601, -648540, -236223, -594853, + -603443, -105227, 1425929, 219043, 231928, 28357522, 12217034, 3543348, 3440269, 2211908, + 1546188, 339302, 214748, 2997887, 732292, 1604170, 2452426, 1116692, -68719, -998580, + 5068062, -584116, -2630668, -1694365, 1324997, -70867, 2746632, 732292, 412317, -633508, + -1157494, -498216, -489626, 1017907, -124554, 332860, 191126, 27917, -566936, 790274, + 3524021, 2025077, 2360085, 1906966, 1769527, 770947, 725850, 227633, 1187559, -1125281, + 743029, 9251360, -9751723, -3111704, -4133906, -3811784, -1876901, -710817, 1511829, -1490354, + 285615, -3768834, 1391569, -1440962, -3171833, 773094, -2224793, -3264175, -2115272, 2929168, + 2428804, -1159641, 1309965, -2186138, 966368, -3901978, 354335, 545461, -491774, -972810, + 955630, -3094524, -1211181, 317828, -893353, -959925, -523986, 182536, 485331, 1462436, + 257698, 2570538, -846109, -773094, -654983, -1346472, -229781, -693637, 543313, -1157494, + -33648920, -17313014, -5978595, -4984310, -5076652, -3453154, -4363687, -3113851, -4765266, -1054415, + -2057289, -727997, 401579, -2203318, -384400, 173946, 206158, -3264175, -1887638, -1554778, + 478889, -4346507, 605590, -2046552, -3549791, 188979, 141734, 126702, 100932, -1449552, + -813896, -81604, -83752, -169651, -1194001, -73014, 584116, 1013612, 637803, -1565516, + 1043677, -1563368, 1200443, -2604898, -1483911, 274878, -1159641, -30065, -296353, -19870666, + 10361609, 4526896, 1501091, 2826089, 367220, 843961, 2241973, 2774549, 1299228, 1881196, + -1492501, -463856, -2248416, 2658585, 384400, 562641, 3335042, 208306, -2493229, 4236985, + -2905546, 425202, 3264175, -949188, 736587, 526134, -244813, -1640678, -577673, 1024350, + 818191, 238371, -783832, 135291, -1387274, 3974992, 156766, -2147, -1720134, -719407, + -1178969, -880468, 1928440, 2074469, -715112, 242666, -326418, 646393, -47245, -103079, + -616328, 506806, 29970282, 12906377, 3287798, 7020124, 3874061, 1831804, 2866891, 2697240, + -139586, 1995012, 2836826, 792421, -146029, 1625645, 4050154, -1329292, -934155, -3236258, + 680752, 3921305, 1449552, 259846, -2340757, -1086627, -1110249, 4112431, 1069447, 2181844, + 994285, -1853278, -3281355, 3562675, 1724429, -2095944, -1230508, 3453154, 2658585, -100932, + 500364, -315680, 1277753, 989990, -556198, 723702, -1428077, -539018, 1602023, -949188, + -985695, 1971390, 1432372, 936303, 88047, 35416300, 7917772, 5744519, 2808909, 2529736, + 1342177, 2607045, 3500398, 5076652, 3427384, -1198296, 4342212, -1005022, 1301375, 719407, + 3697967, 4982162, 3521873, -1110249, 5978595, -1316408, -423054, -3270618, 998580, -1127429, + 1123134, 1342177, -1584843, -2660732, -843961, 249108, -1788854, -871878, 1056562, 1058710, + -2134599, -2192581, -657130, 515396, 139586, 365072, -680752, -259846, -412317, -1020055, + 1080184, -1569811, 1406602, -1668595, -352187, -1333587, 371515, -646393, 3966402, -15631533, + -5216238, -5478231, -3781719, 1144609, -1041530, -3212636, 1799591, 322123, 2248416, -81604, + 122407, -3502546, -2727304, -1522566, -2800319, 429497, -2967823, -5302137, 981400, 854699, + -2660732, -343597, -2420214, 708670, 685047, -225486, -5772436, -1380832, 272730, -397284, + 403727, 1767379, -4123169, -968515, -2602750, 1561221, -384400, 38655, 2579128, -2422362, + -242666, 1093069, -399432, -614180, 1226213, 953483, -1655710, -1687922, -3182571, -191126, + -2439542, -1649268, -1063004, -36771364, -12796855, -7329362, -2153926, -3674345, -373662, -1868311, + -2972117, -3137474, 3992172, 356482, -1825361, -135291, -6356552, -3231963, -3201898, 5291400, + -4423817, -8654359, 549756, 1374390, 515396, -3002182, -1052267, 2168959, -4284230, -133144, + -4361540, -955630, 2173254, -1715839, 410169, 4864051, 339302, -637803, -1258425, 1548336, + 1267015, 1458141, -1503239, 64425, 1333587, 2332167, 1078037, 1005022, -3974992, 1058710, + -309238, -1614908, -846109, 715112, -633508, -1629940, -1413044, -1700807, -24371792, 5499706, + 558346, -3189013, 4595615, -2976412, -1960653, 914828, -3959960, -2675765, -693637, 1524713, + -3088082, 4273493, 281320, -322123, 2274185, 1881196, 3459596, -556198, 4696547, 6281390, + 4866198, 1273458, 4187593, -1511829, 2723009, -3171833, -2843268, -1477469, 547608, 1748052, + -1413044, -3060164, -1361505, -289910, 1926293, -2969970, 2151779, 453119, 1696512, -929860, + -2338610, -3609920, -3848291, 813896, -1889786, 854699, -4095251, -1477469, 2076617, -2933463, + 603443, -2138894, 1447404, -861141, 1408749, 36507, -601295, -328565, -1556926, 16348793, + 27200028, 7788923, 7127498, 9706626, 8010114, 1479616, 6367289, 5514738, 3124589, 11778948, + 2899103, 1926293, 5205501, 4666482, 2570538, 2018635, 1314260, 1885491, -1466731, 5899138, + -1544041, 487479, -1823214, 3700114, 246961, -1075889, 3191161, 3639985, 1370095, 4859756, + -3466039, -5916318, -1267015, -444529, 1303523, -511101, 2544768, -2437394, 2314987, 4883378, + 2183991, -4567698, -893353, 2149631, 912681, -2302103, 3167539, 1110249, 1881196, 1939178, + 2823941, 792421, -775242, 554051, -2536178, -805306, 2370822, 2031520, -1232656, -173946, + 62150324, 6577743, -760209, 4024384, -251256, 5493263, -73014, 1602023, 539018, 5778879, + 2484639, -2141041, 1745904, 2856153, 1305670, -3223373, -7183333, -3064459, -3098819, 1413044, + -4464619, -594853, -416612, 1324997, 7606387, 4466766, 1318555, 3268470, -4964982, -135291, + -2669322, -809601, -2134599, 3066607, -1254131, 5025112, -2381559, -723702, -2641405, -962073, + -3751654, -1529008, 687195, 936303, -332860, 188979, -2123861, 1269163, 3212636, 414464, + -1949915, 2244121, -3111704, 1432372, 1159641, -163209, -1067299, -504659, -277025, -438087, + 2147, -18176302, -21524228, -4054449, -1151051, -923418, -3373697, -1455994, 6603512, 3839701, + 1440962, 1754494, -2791729, -601295, 4982162, -1836099, 8070244, -6234145, -1623498, 6500433, + -1181116, -747324, -3710852, 4453881, 5025112, 79457, 4958540, -1782411, 2250563, -109522, + -2630668, -433792, -2057289, -904091, -1297080, 2690797, -1876901, -470299, -2939905, 2068027, + -1471026, 4509716, -6994354, 2995740, 2598455, -4286378, 214748, -2828236, 893353, -3219078, + 1157494, 1359357, -3968550, -605590, -1355062, -6094559, -3395172, -1681480, -2892661, -648540, + -365072, 343597, -2334315, 358630, -4649302, 1348620, -15807627, -9262097, -12232067, -6468221, + -8123931, -1052267, 8106751, -8441758, 6545530, 3974992, -4398047, 8974334, -1292785, 1660005, + -5785321, -743029, -2488934, -481036, 191126, 2141041, 1249836, 4645007, 9249212, -2553358, + 1413044, -4436701, -4380867, -4121021, 1084479, 3697967, -1163936, -1400159, -1037235, -2886218, + 3326452, -1063004, -34360, -2819646, -1986422, -1896228, -2656437, -300648, 57982, -2456721, + 1758789, -3725884, 1544041, -2181844, -191126, 1286343, -2521146, 3311420, -5634997, -1848983, + 747324, -1758789, -2911988, 1501091, -657130, -3519726, 5950677, 3236258, 1002875, 1090922, + 1367947, 1410897, -2688650, -44233868, -5214091, 3730179, -3388729, 7507603, 3262028, -8841190, + 1075889, 1651415, -3036542, -7385197, -2929168, -1696512, 2005750, 674310, -7103876, -2495376, + -3856881, -6569153, -5789616, -13003013, -6981470, -7546258, -9455371, 7511898, -5098126, 2821794, + 5390184, -3895535, -6463926, -2321430, -1513976, 1619203, 4005057, 2521146, -5385889, -6393059, + 4956393, 3296388, 3886946, 5787469, 661425, 57982, 2074469, -193274, -2686502, 1513976, + -1529008, -803159, 3176128, 8585640, -3002182, -4221953, 1812476, -2684355, -435939, 4417374, + -8617852, -109522, -2965675, -470299, -367220, 21475, -1196148, 1632088, -2705830, 2976412, + 35465692, 31089120, 8304320, 18932216, 5115306, 10930692, -1868311, -1653562, 5164698, 7198365, + 3670050, -12253542, -4204773, 7726646, 8540542, -3150359, -4312147, 1449552, 3470334, 4136054, + 463856, -6373732, -13911399, -5145371, 7352984, -646393, 7552700, -1812476, -2626373, 1571958, + -6575595, -3702262, -3904125, 7071664, -9004399, -6083821, 1385127, 1466731, -2476049, -294205, + -2740189, 2626373, 3382287, 3070902, 6753836, 4037269, -115964, -5746666, 5134634, -545461, + 2729452, -2834679, 1821066, 4211216, -916976, -1185411, -2937758, -3204046, 1651415, 384400, + 2443837, -2778844, 1982127, 5478231, -1471026, -3068754, 3532611, 42874512, 8293582, -8686571, + 7264937, 4294968, -7902740, -2089502, 4443144, -8590, 1614908, -923418, -1425929, -9281424, + -8536248, 3665755, 8632884, 8358007, -8199093, -17467632, 2712272, -519691, -6599218, -9051644, + -1245541, 4153234, -2725157, 6287832, 10806138, -4170413, -3105261, -1644973, -1226213, -2272038, + -15708843, 8158291, 7973607, -511101, 5265630, -5072357, -1200443, -4625680, 6818261, 6721624, + 1125281, -1913408, -2162516, 3678640, 1290638, -2422362, -3697967, -146029, 3792456, -5347235, + -2851858, -2965675, 1260573, 1537598, -6163278, 3225521, 7614977, -5995775, 313533, -1503239, + -624918, -111669, 1112397, 360777, -2175401, -4823249, -3189013, -1346472, 3453154, -1782411, + -11559904, -8029442, 1378685, 10460393, -10496900, 7415261, 3764539, 1434519, 2450279, 1610613, + 7249905, 11074573, 579821, 3176128, 1526861, -9949292, -8553427, 8400956, 1451699, -10264972, + 6212670, -8791798, 1702955, 10333691, -380105, -3085934, 12337294, 1675037, 1123134, 790274, + 663572, 893353, -4986457, 2987150, 5166846, 7761006, -5989332, -3302830, 1556926, 934155, + -2566243, -5862631, 3972845, -2237678, 2888366, 1200443, -1638530, -1986422, 1163936, 3478924, + -2385854, -1335735, -251256, 1958505, -5403069, -2800319, 3055869, 478889, -1567663, -1088774, + 2811056, -46250356, -42674796, -9397388, -19821274, -17190606, -9902047, -2843268, -7447474, -8727374, + 5952825, 1758789, -2128156, 10271414, 3655017, 12317966, 9363029, 2877628, 3728032, 4610648, + -18663780, 8967892, -1464584, -3753802, -3506841, -10825465, -3418794, -3620658, 10591389, -3328600, + -6313602, -2931315, 1707250, -1155346, -2080912, 2570538, -2757369, -1574106, 6530498, -6101001, + -491774, -1795296, 11729556, 4894115, 4748087, -8688719, 790274, 8263517, -4080219, 2199023, + 167504, 2241973, 193274, 981400, -455267, 5405217, -489626, -1329292, 3895535, -2293513, + 2289218, 4778151, -1840394, -2729452, 1627793, 2050847, -3049427, -1002875, -28578712, 60851096, + 38912404, 11899207, 4176856, 3749507, 4752382, 6408091, 6440304, 12496207, 26328150, 987843, + 3335042, 5149666, 5688684, 6167573, -4475356, 24665998, 18303004, -17242146, 12702366, 1748052, + -2345052, 5499706, 15554224, -14836965, -3732327, 586263, -11523397, -8669391, -8147553, 16698833, + -444529, -3697967, 2617783, 319975, -4857608, -14549202, 9942849, 7198365, -2055142, 3605625, + 10179072, -7279970, 5675800, -169651, -2282775, 7050189, 6944962, 779537, 1183264, -4295, + 5641440, 6745246, 341450, -2229088, 201863, -3294240, 5589900, 180389, -1876901, -3629247, + -1657857, 3008625, 2153926, 8080981, -2473901, 2108829, -1726577, 66080220, -23081154, -23330262, + 10735271, 2216203, -8385924, -8012262, -11860552, -12416750, -8516920, -7834021, 11297911, 2199023, + 1623498, -6607807, -5158256, -19816980, 261993, -8065949, -13086765, 10750303, 7677254, 1904818, + 7146826, 1537598, -2087354, -4707284, -113817, -4045859, 5875516, 9131100, -9895605, -4146791, + 375810, 4788889, 13449690, 3551938, 17955110, -9532680, 5804649, 14353781, 8914205, -7810398, + -2005750, 1286343, -3571265, 5948530, -822486, -83752, 9607842, 4737349, 1664300, 457414, + -92342, -4402342, 19327, 700080, -4123169, -2843268, 4297115, -2083059, -7947837, -1625645, + 324270, -1855426, -8308614, 1715839, 1778117, 1625645, 2379412, -2229088, -3455301, 21154862, + 40677636, 15741055, 11012296, 12513387, -3541201, 3897683, -11413876, 19950124, 8074539, 19146964, + 5918465, 7166153, -17534204, 21839908, 32800666, 3932043, 21296596, -4479651, -17102560, -17261474, + 15631533, -5248450, 12487617, 2048699, 5037997, -9790378, 9659381, -3607773, -3393024, 15592879, + 11057393, -8600672, 14845554, 1382980, 2712272, -3279208, -11196980, 2813204, 809601, -6532646, + -7084549, 6242735, 9163313, 2699387, -3315715, 4015795, 270583, 9463960, -6017249, -1217623, + -9871982, 773094, 9408126, 6043019, -4587025, -425202, 3176128, -9068823, -852551, -6335077, + -3519726, 1372242, 2035815, 5375152, -7116761, 2499671, -8175470, 208306, 9416716, 2931315, + 1554778, -785979, -46746424, -3139621, -10103911, 12884902, -9637907, 10511932, 938450, 8327942, + -616328, 7118909, -23021024, 6438156, -2138894, -9034464, 4806069, -10885595, 7033009, -10975789, + -4866198, -23654532, 13868449, 27288074, -10200547, -4153234, -2465311, -5010080, 4949950, 5053029, + 8783208, -21051782, 6904160, -13277891, -2914135, -1157494, 11345156, 3579855, -4520453, 1788854, + 3058017, 7118909, 8536248, -13286481, -3395172, 1428077, -8514773, -8783208, -708670, -6390912, + 3440269, 6775311, 1883343, 833224, -753767, 6296422, 19071802, 9807558, -10123238, 1836099, + 5132486, -5920613, 7438884, 1243393, -6027987, -1103807, 9285719, 423054, 8982924, -10982231, + -1215476, 5774584, 1602023, -86215024, -33268816, 18285824, 5682242, -10524817, 11656541, 10801843, + 15597174, -3324305, -7825431, 14841259, -94489, -9000104, 18657338, -21124796, -28995324, -12773233, + -15906411, 10471130, 13503377, 227633, 2922725, 23025320, 9133248, -22243636, -11072426, -13488345, + 3401614, -20639466, -19260780, -618475, 2033667, -7599945, -9691594, -12412455, -7554848, -11327976, + -12438225, -3882651, 96637, -3766686, -1599875, -7524783, -2168959, -5675800, -14409615, 29450590, + 1363652, 7264937, -12869870, 8070244, -1812476, 4294968, -10602127, -45097, -2669322, -7591355, + -6120329, -3309272, 8227010, 7159711, 6120329, 4833986, 4406637, -1136019, -1297080, -6682969, + -2707977, -206158, -2068027, 9008694, 809601, 5291400, -1559073, 45941116, 16316581, 37072012, + 5342940, 2836826, -15141907, 5995775, 21489868, 8602819, 1108102, 15077483, -13709536, -5587753, + 11474005, -8843338, 3637837, 21388938, 6227703, 3148211, 6148246, -3592740, 8579197, -6738804, + -382252, 3805341, 586263, -5181878, -6472516, 2471754, 21041044, -6861211, 4666482, -19879256, + -11452530, 9302899, 22127672, -17480516, -654983, 11134703, 1954210, 4282083, -15412490, -5025112, + -13469017, -21966610, -6734509, -12217034, -13883482, 10441065, 3180423, 3586298, -8596377, -4675072, + -2587718, -21210696, -3115999, 11763915, -9567040, 9399536, 18285824, 2836826, 11622182, 8377334, + -657130, -4071629, 9749576, -14368813, -2250563, -1037235, 7211250, 4148939, 6320045, 54580444, + -11403138, -17766132, 3451006, 11944304, 11070278, 9798968, -2379412, 10619307, 4279935, -14403173, + -26499948, 17366700, 5555540, 12320114, 8516920, -8096014, 3839701, -11280732, -17154100, 17579302, + -10945724, -23014582, 2950643, -4537633, 3315715, -3124589, -1668595, -6556268, -8214125, 5564130, + 15446850, -22527104, 21597244, -19222126, -23310934, 1316408, 6856916, -14448270, 11035918, -2931315, + 7142531, -12614319, -5334350, 18618684, 8431021, 18848464, 5647882, 416612, 6661495, -1172526, + 1032940, 9302899, -665720, 687195, -9120363, -7526930, -5377299, 6148246, -7172596, -7410966, + 11860552, -1604170, 13187697, 743029, -9923522, 14587856, 12010876, -2370822, 7507603, -9547712, + -14235669, 3715147, -6169721, -11119670, 45996952, 56846040, -9049496, 682900, -28829968, -2896956, + -21163452, -15212774, -5392332, -10322954, 15541339, 274878, 11937862, -26278758, 21560736, -16475495, + 22011708, 1015760, 17358110, -6262063, 21996676, 7589207, -11282879, 4913443, -16587164, 10767483, + -9513353, 25492778, 6953552, 16778290, -28374702, -15811922, -7453916, -14001593, -6549825, -9584220, + 221191, 34312492, -16552804, 17237852, 28348932, 4088809, 12043088, 115964, -7275675, -13651554, + -11132555, 1335735, -8274255, 17411798, -12197707, 7879118, 20379620, -2993592, -2632815, -1932735, + 16456167, 18500572, 4941360, -9021579, -8613557, -4954245, 6324340, -17594334, 2168959, -3539053, + -5854041, -277025, 10151155, 412317, 14759655, 14008036, 1417339, 2658585, -8860518, -44989784, + -38506528, 16593606, -4305705, 20742544, -11456825, -11224897, -13868449, -13146895, -4722317, -35794256, + -11875585, 12311524, 19531364, 6627135, -23375360, -7980049, -10799695, 9148280, 35835060, 18472654, + 9356586, 214748, 3438121, 642098, 6925635, 16915728, 2226941, 3545496, -9564892, -390842, + -14048838, 4522601, 7941395, 11815455, 2409477, -10258529, -3796751, 15934329, -7344394, 5162551, + 4211216, 4879083, 22722524, -13685913, -17991618, 5564130, 16365973, 2682207, 16344498, 17343078, + 9723806, 11523397, 5656472, 1221918, 10965052, 29792040, -16902844, -1700807, 5748814, 1056562, + -12994424, -4196183, 11027329, -2031520, -11602854, 2918430, 23383950, -20560008, 6631430, -19658066, + 10778220, 4745939, 3496104, -1475321, -89096952, -30457760, -2456721, -8366597, -22320946, 13831942, + 17368848, 30560840, 9429601, 19393924, -18010946, -36567352, 16812650, -8269960, 487479, -19462644, + 19194208, -11300059, -1359357, 18730352, -50968376, 5357972, 25877178, -48576080, -13376676, -16904992, + 1975685, 2297808, 11613592, -13174812, 15526307, 2731599, -26091926, -12796855, 2680060, -2847563, + -13093208, 11660836, 29568702, 6826851, 7945690, -4372277, -7758859, 17864916, 2884071, -8360154, + -43246024, -6453189, 5149666, -21408264, 10088878, 9156870, 1507534, -16494822, -15270756, -17630840, + 38373384, 10524817, -6043019, 7730941, -32918776, 4082367, -15448997, -17439714, 17008070, -2761664, + 208306, -11014444, -40965400, 5585605, 12605729, 7209103, -2710124, 24230058, 1395864, 1361505, + 93802088, 23882166, 24013162, 20796232, -6281390, 968515, 96409128, 28067612, -8317204, 59191092, + -33474976, 24743306, 4821101, 15141907, 23764054, -7406671, -17255032, 18242874, -3734474, -58387932, + 14489072, 15146202, 11899207, 27786290, 17126182, 18122614, -16965120, 3569118, -16423955, -8366597, + 16752520, 5650030, -34677564, -20474110, -29184302, -42679092, -7148973, 8622147, 20119774, 17768280, + 14766098, 12773233, -7015829, 22048214, 11632919, -27303108, -11138998, 6987912, 19585050, 240518, + 3554086, 35654672, -7314330, -3304977, -10226317, -2141041, 17338782, -15891379, -738734, -22355304, + -20703890, -12809740, 21889300, 31441308, -10363756, 2448131, -7359427, -19617264, -14673756, 5312875, + -24238648, -5471789, -7780334, -13398150, 94725504, 57475252, 3066607, 36816460, 26394722, 8731669, + 40422084, 12564927, -1215476, -12028056, -10655814, -26205742, -74474736, -4632122, 5976447, -24249386, + -15448997, -2059437, 50002008, 17501992, -14521284, 1236951, 2299955, -6650757, 20308752, -2985002, + -14615774, -8450348, -13881334, 8686571, -19795504, -44465796, -375810, -22975928, -37853696, 7632157, + 14254996, 23259396, 11351599, 20598664, -15283641, -38418484, -26858578, -34565896, 12105365, 32974612, + 25312390, 17635136, 30988190, 992137, 18702436, 44418552, -38427072, 6629282, -18348100, 98784, + 10907069, 13052406, 19666656, -2224793, -46785080, -35055524, 5450314, -10374494, -14828375, -9345849, + -11959336, -31776316, 438087, 19333796, -4655745, 13773960, -12193412, -3955665, -4840428, 21904334, + -46355584, 4574140, -35094176, 15066745, -68305016, -3137474, -21586506, -37224480, 66129612, 35330400, + -21315922, -59023588, -12917114, -22183506, -48829484, 38386272, 3951370, -35944580, -11108933, 19327352, + -31168578, -23398982, -15388868, -40067748, -12985834, -1554778, -29624536, -29517162, 42651172, -15760382, + -10350871, -4337917, -6700149, 33833604, -35691180, -18300856, 10531260, -10593537, 2516851, -9030169, + 22473416, -36447092, 15588584, -58014272, 8686571, -16716013, -20160576, 60513940, 9300752, -22475564, + 14665166, 12693776, -45749992, 34074124, -4958540, -10344429, -257698, 19726784, -4509716, 1282048, + -19711752, 13312251, 19782620, 28007482, -19503446, -59543280, 46473692, -3674345, 21902186, 22162032, + -7829726, 13883482, 36088464, -37209448, -88989576, -53206056, 13743895, -34765612, 6251325, -25765508, + -9822590, -36702644, -21343840, 15032386, 53629108, 51593296, 10924249, 35731980, -23901494, 64136748, + 51133732, -41143640, -32579474, 8714489, 13348758, 53861036, 22771916, 33661808, -10559177, 12118250, + -4883378, -8317204, -9474698, 50203872, 25935160, 47987668, 48120812, 6474663, -234076, -24539296, + 24522116, -4947803, -43490840, -32981054, -6236293, -26096222, -2785286, -26766236, -18895708, 12154757, + -3934190, -17832704, 40969692, 42857332, -23437636, -11117523, 64340756, 22728966, -39505108, -43922484, + -12268574, 13076028, 727997, -10290742, -27279484, 22688164, 10548440, -12496207, 9790378, 4123169, + -34432752, -19370302, 6287832, -17231408, -15367393, -23036058, 53027812, -43602508, -33277406, -34456376, + -51299088, -43548820, -676457, -34220152, -44671956, 11690901, -4146791, -61544732, 43785044, 8136816, + -4127464, 22256520, 67647880, 65277060, 27631672, -79345224, 29149944, 21371758, -78434696, -843961, + -38104948, -18051748, 39711268, -46956876, 26914412, 204011, -8615704, -16666621, 7584912, -3738769, + 12979391, -8914205, -42329052, 40718436, 18618684, 48717816, -5660767, -16258599, -24122684, 19767586, + -21829172, 57447336, 11398843, 34507916, -45423576, 35624608, 633508, 12584254, -29811368, 9689446, + -35306780, -5542656, -36247376, 14304389, 23504208, -47167332, 882616, -38968240, 17008070, 22499186, + 21051782, -3498251, -67703720, -429497, 16035260, -6425271, 27805618, -64392296, 14315126, -27573690, + 6165426, -23929410, 1670742, 14201309, 94399088, 116943368, 47382080, 41519448, -67832568, 65386584, + 92223688, -100860864, 11190537, 67381592, 10516227, -120480272, -13140452, -64815352, 20349556, 25492778, + -31733366, -10728828, 21238614, -54535348, -5409512, -20514912, -28394028, 12322261, -43314744, 47113644, + 31621696, 60544008, -30169998, 11190537, -7292855, -22497038, 73637216, 163209, -35231616, -14534169, + 15189152, -14328011, -20448340, -21120502, 36996848, 15940771, 51784420, -1816771, 18378166, 71199824, + -44878112, 11261404, -30805652, 57082264, -22587234, 27958090, 9852655, 188979, -21889300, -36612448, + -27575838, 13675176, 48451528, -43883828, 40630392, 52525304, 23566486, 61106648, -29710436, -19514184, + 36137856, -2690797, -8759586, -49115100, -5383742, -39191576, 6637872, 61510376, 24157044, 21169894, + 18854906, }, { -11117523, - 365072, -2740189, 2707977, -1516124, -457414, 828929, 1941325, -371515, 1939178, 813896, - 642098, -96637, -139586, 294205, 208306, -979253, -515396, -1848983, 839666, -577673, - -77309, 1911261, 717260, 251256, 261993, 545461, 21475, -326418, -12885, -204011, - -133144, -566936, -302795, -178241, -137439, 103079, 143881, 2147, 4295, 2147, - -77309, -34360, 49392, 178241, -60130, 7786776, 4277788, 2156074, 2637110, 1483911, - 2231236, 4514011, 259846, 128849, -470299, -1114544, 2342905, 27917, -165356, 2486786, - -962073, -1153199, 687195, 249108, 1069447, 259846, 410169, 1123134, -751619, 753767, - -223338, -165356, -564788, 380105, 1490354, 790274, 938450, 785979, -94489, 612033, - 882616, -362925, 745177, -1251983, 1565516, -629213, 466004, 83752, 225486, -300648, - -279173, 3910568, -4475356, -603443, -818191, -1116692, 732292, -2229088, 760209, -53687, - 1020055, 886911, -1758789, -629213, 2699387, -283468, 581968, -500364, 1178969, 2469606, - 2862596, 485331, 1239098, -40802, -2244121, -66572, 253403, -485331, 17180, 1245541, - -1284195, -1735167, 768799, -837519, -766652, -1215476, -42950, 1288490, 332860, -373662, - -453119, -504659, 4295, 292058, -676457, 261993, -773094, -11222750, -7986492, -3886946, - -2942053, -2239826, -2321430, -785979, -1715839, -517544, -1080184, -2763812, 528281, 1438814, - -238371, 828929, -543313, -1421634, -1451699, -2156074, -749472, 545461, 57982, -1202591, - 820339, -1458141, -1464584, 985695, -6442, 75162, 768799, 899796, 229781, -309238, - -435939, -545461, 296353, 182536, -766652, 442382, -1522566, -624918, -375810, -124554, - -1084479, -184684, -397284, -15927886, -2181844, 1271310, 199716, 1202591, 88047, -841814, - 541166, -639950, -790274, -1393717, -1245541, 616328, -489626, 1056562, -1022202, 53687, - -989990, 337155, 1580548, -388695, 1163936, 103079, -1151051, -188979, 1428077, 773094, - 912681, 1118839, -1574106, 1067299, -667867, -92342, -869731, -360777, 403727, 695785, - 311385, -337155, 1140314, 1056562, 571231, -322123, -809601, 139586, -674310, 18796924, - 14995878, 3528316, 6719477, 1597728, 5199058, 3624953, 1131724, 3648575, 1481764, 2759517, - 1215476, -1035087, 2800319, 1943473, -755914, -279173, -5188321, -586263, 270583, 3139621, - 365072, 92342, 1619203, 96637, 1462436, 1312113, 219043, -141734, 515396, 2126009, - 1657857, 1357210, -137439, -594853, 90194, 962073, -380105, -148176, 1118839, 326418, - -558346, -73014, 236223, -1151051, 1374390, 33066954, 12139725, 5832566, 3498251, 2091649, - 2158221, 1999307, 3397319, 801011, 5529771, 727997, 517544, 2340757, -1282048, 541166, - -569083, -622770, -914828, 3517578, 1958505, -317828, 2701535, -1883343, -474594, -680752, - 4168266, -414464, 1494649, 307090, 2037962, 332860, -616328, 1052267, 1391569, -667867, - 487479, 549756, 362925, 826781, -289910, 951335, 865436, -2703682, 569083, 289910, - 491774, 12685186, -9378061, -3302830, -4333622, -2714419, -2570538, 1733019, -1464584, -3927748, - -970663, -5220533, -1209033, -2278480, -4980015, -1282048, 1136019, -3171833, -1045825, 474594, - -3515431, -173946, 4069482, 895501, 590558, -1879048, 83752, 1404454, 36507, -1726577, - -1806034, 1853278, -158914, -2426657, 231928, -1035087, 2959233, -92342, 1335735, -483184, - 2559801, -1685775, 1028645, 337155, 603443, 27917, 659278, -73014, -813896, 1556926, - -34866544, -19722490, -4026532, -4915590, -3371549, -4297115, -6058052, -556198, 169651, -1778117, - 1524713, -1649268, 264141, -169651, -1977833, -2192581, -3453154, -1209033, 3435974, -3246995, - -345745, 3096672, 1997160, -489626, 1163936, -453119, -3330747, -1672890, -2727304, -936303, - 163209, -691490, 1636383, -2946348, -2289218, -92342, -2817499, -2211908, -1977833, -2347200, - 2523293, -725850, -2963528, -957778, 882616, 944893, -962073, -1533303, -633508, -21388938, - 12277164, 4599910, 2007897, 2102387, 1868311, 934155, -2297808, 603443, -1372242, -395137, - 3816079, 2345052, 3283503, 3380139, 3468186, -2905546, 1455994, 3753802, 586263, 3268470, - -3880503, 730144, -996432, -261993, -1468879, 1380832, -526134, 55835, 3377992, -3515431, - -1090922, 1335735, 1930588, -921271, 1602023, -1395864, -2342905, 2735894, -1406602, -124554, - -805306, 1026497, -390842, 1254131, -1406602, -530428, -1279900, -352187, -1127429, 2029372, - 141734, 644245, 31810676, 13035226, 2753074, 7258495, 5677947, 1103807, 2536178, 6863358, - 3126736, -167504, 1464584, 850404, -1017907, 1960653, 5892695, 1378685, 7033009, 3414499, - -5811091, 1080184, 195421, 1187559, 5186173, 2920578, 2080912, -468151, -826781, -715112, - -895501, 798864, -1157494, 1720134, 502511, 2345052, -500364, -618475, 843961, 1911261, - 1026497, -225486, -2572686, -1090922, -1440962, 2257005, 1619203, 2549063, 1391569, 367220, - 337155, 2175401, 1705102, 1421634, 199716, 35540856, 10196252, 4436701, 5555540, 906238, - 5366562, -880468, -2059437, -126702, 1370095, 558346, -176094, 1005022, 5465346, -822486, - -3438121, -2418067, 2639258, 657130, 3077344, 4879083, 4277788, -317828, 2845416, -3143916, - 326418, -2450279, 3279208, 1857573, -3738769, 2134599, -1788854, 223338, -1449552, 2158221, - -1398012, 2716567, 2177549, 1735167, 3539053, 1116692, -96637, -923418, -15032, 429497, - 3917010, -163209, 77309, 223338, 1881196, 1213328, 118112, -551903, 4879083, -15094663, - -6171868, -2422362, -3487514, -1541893, -1329292, 264141, 2143189, -2177549, -4112431, 3852586, - -4937065, -4649302, -880468, -1052267, 2115272, -1294933, -122407, -4490389, -2723009, -5426691, - -6021544, -6637872, -947040, 1591285, -4685810, -1217623, 646393, 539018, 182536, -562641, - -4645007, -2836826, 1990717, 818191, -1099512, 4419522, -2952790, -1273458, 1069447, 2727304, - 2168959, -335007, -687195, 1101659, 622770, -2789581, 234076, -1617055, -783832, 270583, - -1178969, 210453, 1902671, -38590280, -12219182, -7247758, -3081639, -5199058, -4249870, -1178969, - -3049427, -1191853, -4052302, -5342940, -3917010, -1264868, -8048769, -1859721, -3309272, -4793184, - -654983, 889058, 2546916, -2780991, -4052302, -1421634, 3219078, 4262755, 5104569, 2823941, - -204011, -2493229, -1221918, 88047, -3208341, 1374390, 2070174, 2753074, -1896228, -1505386, - -1529008, -659278, -687195, -1037235, 2016487, -543313, 1279900, -2602750, -4696547, -1874753, - -251256, 2385854, -4078072, 1393717, -1999307, 1947768, -2035815, 1189706, -22192096, 5914170, - 1644973, 23622, 3891240, -3728032, 1000727, -8577050, -2787434, 2989297, 2119566, 5538361, - -399432, 6043019, -3515431, -880468, 2894808, -5244155, -1921998, -3081639, 5894843, -362925, - -4868346, 2467459, 4702989, -4159676, -3171833, -3743064, 1099512, -861141, 2037962, -1421634, - -1181116, -989990, -2267743, 3341485, -2660732, 665720, 2192581, -249108, 2531883, -1432372, - 5523328, 854699, -534723, -1896228, -1894081, 118112, -2181844, -2649995, -1647120, 472446, - 1906966, -214748, 545461, -2293513, -2319282, -3285650, -1297080, -1002875, -841814, 19284404, - 27455578, 9573482, 9472550, 13121125, 9350144, -1267015, 1801739, -972810, 1685775, 1647120, - 2325725, 1808181, 4627828, 1833951, 2869038, 944893, 9206262, 2194728, 4471061, 2710124, - 2306398, 7327214, 1644973, 9171903, 4647155, -1870458, 6373732, 1681480, 3085934, 6448894, - 1209033, 3822521, -2080912, -710817, 1702955, 2860448, -4080219, 3322157, -2420214, -4367982, - -2675765, 3478924, 5186173, 3957812, -936303, 1209033, 1065152, 1885491, 2628520, 1490354, - 2985002, 1788854, -3240553, -236223, 2012192, 2911988, 687195, 822486, 294205, -3240553, - 65925600, 5252745, -3618510, 5581310, -3852586, 7745974, 2001455, 8121783, -4138201, 1005022, - -219043, 4984310, -8604967, 1898376, 5113159, -869731, -1488206, 7174743, 10606422, -4256313, - -2772402, 1591285, 5117454, -2126009, 3238405, 444529, -3751654, -2649995, -3040837, 2568391, - 3053722, 4075924, -2987150, 4468914, -2959233, 4348655, 3431679, -670015, -2682207, 1672890, - -4161823, -5267778, 1000727, -3517578, 1324997, 661425, 377957, 2632815, -264141, 3137474, - -30065, -3493956, 1273458, -710817, 1565516, -2482491, -777389, 695785, 1668595, -1241246, - -5001490, -22578644, -21897890, -4969277, 1720134, -974958, -3283503, -3571265, -4868346, -1303523, - 3657165, -1174674, -1198296, -5033702, 5357972, -296353, -4322885, -3749507, 9266392, -8315057, - 921271, 6137509, -654983, 1045825, -7975755, 2613488, -3373697, 1977833, -5510443, -3599183, - 1011465, 1554778, -2514703, -2856153, 384400, -1118839, 515396, -3332895, -1814624, 3682935, - -259846, -1569811, -874026, 4672925, 2162516, -2465311, -3801046, -3375844, 1355062, -390842, - -1490354, 543313, 942745, -1765232, 5611375, 3115999, -350040, -227633, -1181116, 854699, - -1337882, -1359357, -1372242, -92342, -2787434, -2190433, -8562017, -7838316, -8819715, -6783901, - -4501126, -3423089, 966368, -332860, -2040110, -1153199, 2422362, 7630010, -6605660, 3210488, - -2044404, -4559108, 5802501, -704375, 1357210, 7065221, 1333587, 2847563, -4312147, -1303523, - -13045963, -1735167, 2789581, 1434519, 1423782, 1140314, 2147484, -3158949, -3710852, 2843268, - -68719, 2677912, 1733019, -3710852, 3182571, -487479, -9152575, -7965017, -1015760, -7546258, - 1247688, 2106682, -210453, -2078764, -551903, 141734, -1874753, -869731, -133144, -1466731, - 2579128, 423054, 1047972, -1507534, -663572, 3440269, 1239098, -2538326, 2798171, -768799, - -1404454, -4015795, 373662, -43033424, -9859097, 678605, -8604967, 3502546, 818191, 10378788, - -4872641, 661425, -2877628, 6972880, -14162655, -13507672, 5677947, -6521908, 10159745, 3736622, - -8222715, -14306536, -358630, -4013647, -6994354, -2806761, 1612760, 2372970, -3388729, 12337294, - 635655, -1172526, -5160403, 4232691, 4636417, 5063767, 5373004, -618475, -3206193, -1159641, - 3173981, -201863, 3835406, -3569118, -1432372, -1196148, 4449586, 3624953, -3906273, 5113159, - -2821794, -3481071, 438087, -1556926, -3345780, 3502546, -3957812, -483184, 1026497, -916976, - -1593433, 949188, 3354370, -2020782, 3225521, -2598455, 2188286, -1428077, -1586990, -1000727, - 39582420, 34628172, 7333657, 9193377, -1775969, 11252814, 9159018, 11332271, -408022, 4494684, - 2813204, -10819023, -9023726, 4885526, 1022202, -7782481, -8072391, -4640712, 560493, 4496831, - 1382980, 10735271, 9936407, 4226248, -2265595, -2523293, 6577743, 6019397, 500364, 5254893, - -1730872, 6749541, 388695, -1612760, 9560597, 4844723, 7836168, 4928475, 1711545, 5362267, - 2750927, 1767379, 5072357, -2937758, 992137, 6616397, -103079, -4514011, 3981435, 3831111, - 2815351, -3227668, -124554, 3773129, 5884105, -3148211, 7121056, 8025147, -1490354, -4627828, - 691490, 1694365, 1200443, 3403762, -96637, 1086627, 2692945, 47699908, 4131759, -1578401, - 3609920, 2091649, -7630010, 1836099, 2366527, -212601, 5334350, 7106024, 11186242, -5106716, - -4724464, -7960722, -6034429, 6854768, -324270, 9994389, -2224793, -2692945, 4443144, 8656507, - 3755949, -9124658, 7284265, -2815351, 5871221, -3154654, 4608500, -5579163, 3519726, -642098, - 5364414, 414464, 3152506, 1370095, -8819715, -5179731, -627065, -2035815, -635655, -3023657, - 4567698, 1449552, 9519795, -1647120, -6176163, -3923453, -446677, 350040, -6904160, 2183991, - -2231236, -526134, -513249, -4352950, 3938485, 6998649, -2115272, 3493956, 1005022, -4271345, - -253403, -4082367, -3092377, 408022, 6474663, 657130, -2619930, -6438156, 1879048, -2372970, - 13840532, -3317862, -13215614, -8948564, -11916387, 11001559, -8804683, 2424509, 13453985, -612033, - -13666586, 916976, -14347338, 11927124, -4168266, 11884175, 70867, -4556961, 10237055, 358630, - 2121714, -7730941, -9740986, -1591285, 3418794, 2065879, -1909113, -4520453, 4518306, -1417339, - 3371549, 5175436, 6309307, 2892661, 3483219, -12859132, 1052267, -2942053, -4404489, 1722282, - 6335077, -5392332, -9878425, -4385162, 2856153, 1088774, -8690866, -3564823, 3998615, 5871221, - -5246303, -3420942, -4054449, 6010807, 7965017, 1591285, -2763812, 880468, 5675800, -2780991, - -309238, -48593260, -48730700, -8177618, -23753316, -15133317, -8257075, -13550622, -1348620, 9833328, - -21678848, 7808251, -4206921, 7112466, 1561221, 4286378, -8802535, 2119566, -828929, -4937065, - -19819126, -4286378, -10142565, -12983686, -996432, 3066607, 1030792, -4518306, 3148211, -4290673, - -856846, 10546292, 150324, -3706557, 1056562, 6861211, 9805410, 6171868, 416612, 4909148, - 6240588, -687195, 491774, -10574209, 4292820, -8750996, 2078764, 8239895, -5267778, -10563472, - 3513283, -5961415, -5111011, 1080184, 433792, -5035849, 2946348, -1245541, 11834782, 6277095, - 4022237, 1342177, 4726612, -457414, 1853278, -4483946, -7372312, -1348620, -28321014, 52971980, - 42309724, 2179696, 8914205, 2942053, 9670119, 13720273, 3607773, 13299366, 2830384, -14980846, - 9983651, 11117523, 3764539, 2967823, 8993662, 10924249, -11154030, 9012989, -5763846, 7842611, - 1516124, -7494718, 1589138, 8916352, 5604933, -11828340, 5662915, -5179731, 16550656, -1952063, - 3992172, -3105261, -10406706, 10048076, 10711648, 4443144, 2806761, -1088774, 3899830, 10664404, - 2697240, 7436736, 1060857, 4962835, 3085934, -1406602, 6113886, -8061654, -11512660, -5738077, - -8808978, -8123931, -3876208, -8338679, 10170483, 6579890, 762357, -2566243, -3824669, -1947768, - -468151, -672162, 261993, 670015, 1853278, 420907, -571231, 70796096, -27270894, -15923591, - 3332895, -899796, -2806761, -20605106, -7750269, 4329327, -231928, -3590593, -3158949, 2310693, - -15605764, -5415954, 9210557, 15154792, 9399536, 6380174, -4376572, -5596343, -8686571, 10204842, - -14763950, -3476776, 4550518, -10980084, 4054449, 3599183, 13172665, -19849192, -897648, -1138166, - -3238405, 4254165, -16943646, -10022306, 20128364, 11963631, 3360812, -4166118, 12298639, -4239133, - -811749, 1312113, 9764608, 4367982, -4924180, 322123, -2592013, 6556268, -11209865, -6249178, - -6521908, -8480413, 15234249, 3075197, 2486786, -7355132, 141734, -3120294, -1887638, -7690139, - 1765232, -7350837, 410169, 1228361, 6296422, -10666551, -6017249, -9532680, -1904818, 20927228, - 49261128, 7705172, 18992346, 16535624, 16501264, 5065914, 12412455, 7106024, -3199751, -10286447, - -6002217, -3227668, 14160507, -12204150, -12809740, -1271310, -298500, -5744519, -9740986, 29278792, - 28162100, 20579336, 1324997, -12375948, 2418067, 1576253, -5677947, 6405944, 4666482, 11538430, - 1685775, 4445291, -277025, -8695161, 13859859, 10780368, 8405251, -2422362, -10462540, 165356, - -530428, -3513283, -21672404, 15305116, -9713069, 17712446, 1344325, 9309342, -1791001, 10301479, - 16849156, 2692945, -7170448, -1196148, 3352222, -6122476, 3231963, -2821794, -6693707, -4589173, - 2639258, -2495376, 7279970, 1612760, -11377368, -165356, -1245541, -13619341, -2596308, 1464584, - -4425964, 4791036, -51077900, -7121056, -31714038, 70867, 5965710, -11156178, -18399640, -21940840, - -20201378, -12429635, -16404628, -4365835, -781684, -4582730, 5744519, -3584150, 1464584, 12914967, - 6287832, -1529008, 31505732, -7052337, 6633577, -4763119, 3021510, 4312147, 2076617, -1943473, - 5001490, 14383845, 4829691, 4982162, 2089502, 5660767, 12773233, 16799764, 5811091, 20429012, - -5014375, -17877802, 18429704, -5811091, -3242700, -3728032, 10677289, 15618649, 12414603, -392990, - -3498251, -9073118, -22329534, 14070313, 16685948, 11321534, -13037373, 8267812, 2832531, -1382980, - 13728863, 2218351, 9500468, -7213398, 5076652, -8972187, 2147, 7969312, -1346472, 6068789, - -216896, -3085934, -2091649, -89446992, -40851580, 18799072, -3985730, -2581275, 2727304, -10758893, - -10359461, -2871186, -4928475, -15229954, 10657961, 1741609, 23053236, -12607876, -11735998, -18687402, - -11205570, -19252190, 1170379, 7801808, -30000346, 19628000, 15972983, -1778117, 2843268, 13005161, - 1417339, 11523397, -22821308, -21942988, -12923557, -14171245, -11793980, 37164352, 11510512, -7404524, - -13507672, -18051748, 8484708, 5699422, -9257802, 7986492, 6833293, -12485470, 871878, 3676492, - 10037339, -11501922, 29746944, -12406013, -10844792, 5499706, -3560528, 665720, -9365176, -2559801, - 654983, 20014548, -6197638, 28486370, 5645735, 2776696, 2888366, 8390219, -8407398, -1883343, - -10947872, -7625715, -8317204, 1211181, 14989436, -8321499, 14164802, 45481556, 23308788, 14493367, - 9756018, -16043850, 1488206, -13020193, 20059644, -2302103, -2877628, 6736656, 4230543, 4531191, - -858993, 6927782, 2291365, 7295002, -6526203, 19501300, 2319282, -2087354, 58875412, 2907693, - -4941360, -15522012, 8373039, -14493367, 12741020, 31505732, -3025805, 7368017, 7307887, -16913582, - -18981608, 34360, -251256, 13475460, -9773198, -75162, -1696512, 9715216, 9869835, 17126182, - 5866926, 5478231, 6498286, 25770, 10808285, 4707284, -22561464, 3826816, -12156905, -28546500, - -3485366, 6929930, -1007170, 1417339, -4902705, -401579, -2183991, -1118839, 2115272, -399432, - 11160473, -8604967, -2744484, 1389422, 970663, -730144, -6672232, 7623567, 12848395, 64939904, - -17733920, -9070971, -16385300, 31821412, 14020921, 1041530, 8467528, -6637872, -6174016, 10060961, - 2744484, -13391708, 4657892, -17111150, -9975062, -1011465, -13911399, 330712, 6710887, -13282186, - -18577882, 122407, 2718714, 11871290, 24096914, 13838385, -8905615, -1995012, 15579994, 23643794, - -25061134, 8216273, -3380139, -2308545, -10546292, -18998788, 3094524, 13471165, 6154688, 4971425, - 11353746, -2987150, 8141111, -3474629, 6302865, 7909183, -16136192, -14450417, 29379724, -4189741, - 848256, -8269960, 12788265, 33822868, 10726681, 3365107, 13413183, -11491185, -8832600, -2065879, - -6085969, -22625888, 15148350, -405874, -8239895, 3524021, 5177583, -7943542, -7419556, 10945724, - -2089502, -17703856, 10000831, 5209796, 56446608, 54350664, -18019536, 15131170, 3955665, 11836930, - 28421946, -3169686, -15614354, -4913443, 55338508, -31035434, -6517613, -15210627, -13030931, -25110526, - 27367532, -7743826, -38568808, -28005334, -35257388, -13005161, 30075508, -3375844, 13857712, -5164698, - -16320876, 13926431, 3384434, 17553532, -17364552, 15627239, 11572789, 6517613, 6427419, -27111982, - 7159711, -22621592, 18556406, 40913860, 11078868, 12382391, -26684632, 36610300, 9004399, -3706557, - -6427419, -7337952, 10642929, 18292266, 3633542, -4230543, -1879048, 4928475, -9655086, -6350109, - -9330816, -6633577, -1539746, 13260712, -9803263, 19834158, 6337224, 12040941, -4995047, -28870770, - -20036022, 7020124, 1148904, -8888435, 9949292, -953483, -1606318, 5242008, -4413079, -54438712, - -30958124, 6826851, 5201206, -1099512, -22477712, 13204877, 8989367, -14890652, -37336152, 30771294, - 8927090, 11078868, 19056770, 9938554, -3717294, 5257040, -8308614, 25673168, -20274394, -37986840, - 289910, -2207613, -16234976, -41137196, 2948495, -8624294, -19739670, -12010876, -4915590, 9030169, - 3420942, 14959371, 32018982, -12777528, -22804128, 7894150, -792421, 435939, 14512694, -17405354, - -13793287, -1898376, 16902844, -18695992, 18326626, -5046587, 33137820, -3837553, -6893423, -2987150, - 2961380, 6818261, -32040456, 5845451, -27206470, 31830002, 3300682, 20413980, 14882062, -10739566, - 1937030, -14482630, 11345156, -367220, 9957882, 7258495, -16733193, -1561221, -15723875, -7110319, - 13651554, -4183298, -7185481, 7984344, -71092448, -37263136, -9431748, -11400991, 747324, 4638565, - -22769770, -21683142, 9850507, -24820616, 9833328, -27236536, -4514011, -26456998, -25082610, 26480620, - 15311558, 1221918, 1204738, -27788438, -38583840, 17454748, -51535312, 16460462, 3777424, -20800526, - 5832566, -14192719, 7129646, 34589520, -16157667, -5439576, -38010460, 28774134, -6569153, 11196980, - -11482595, -8319352, -392990, -5080947, 22009560, 2982855, 42659764, 44126492, -2072322, -2954938, - -12848395, -1939178, -3206193, 3695819, 18165564, -1926293, 37512244, 5914170, -9880572, 1582696, - 10146860, -3809636, 560493, -3015067, 29280940, -23791972, -36483600, -20532092, 3650722, 4883378, - 9966472, 15264314, 1151051, 3682935, -6792491, -20959440, -18668076, -22988812, 5126044, -8121783, - 95328944, 41304700, 29965986, 11192685, -9964324, -18107582, -28716152, 15410343, 29029684, 10711648, - -12496207, 32373316, 19503446, 32341104, 2967823, -25179246, -8684424, 49020608, -51623360, -11841225, - 35227320, -21607980, -10853382, 79746808, -9528385, 21945136, 73959336, -12979391, -4230543, -3382287, - 9698036, -5336497, 32373316, 19155554, 26772678, -19885698, -42780020, 15955804, -16552804, 19417548, - -7582765, 6124624, 31419834, 16421807, 2342905, 12079596, 6798933, 11536282, 30399778, 15247134, - -2634963, 27399744, 12732431, 2467459, 7490423, 51750060, 32686848, -1705102, 29787746, -14675903, - 37538016, -11059541, 8890582, -12406013, 5272073, 19091130, -10722386, -2944200, -919123, 5121749, - 2269890, -16172699, 2499671, -14392435, 121090160, 55967720, -25567940, 11506217, 62139588, 2325725, - 44626856, -12534862, 17115444, 38764228, -29469918, 4275640, 65302832, 60273424, 47502340, 17905718, - 40666896, 7797513, 35534412, 13503377, 10118943, -22000970, -27661736, -37276020, -76300096, 24792698, - -23622, -19711752, -8130373, 26830660, -18053896, -1855426, 2025077, 15393163, -67718752, -10086731, - 47556024, 38036232, -14405320, 25363930, 20145544, 14353781, -9101036, -14841259, -7651484, -9764608, - -7668664, -24000278, -21865678, 17779018, -42513732, 14450417, 33264522, -9451076, -25239376, -37280316, - 34748432, -418759, -18837726, -11042361, -9047349, -12281459, 6685117, -5224828, -14033806, 14385993, - 54668492, -26746908, -17401060, 8190503, -11474005, 14141180, -152471, 30322470, 4870493, 2873333, - -47568912, -14100378, -57322780, -13275744, -57307748, 27120570, -54597624, 28948080, -9038759, -32669668, - -9159018, -15710990, 67927056, 9676561, -48681308, 137439, -31651762, -26130582, 33644628, -38356204, - -34284576, -40020504, 59214716, -8821863, 39200168, -60786672, -31580894, 22870700, -27582280, 21745420, - 65429532, 41781440, 40583144, 5877663, -6646462, -32669668, -44708464, -3487514, 10232760, -42769284, - 1129576, -25692494, 12255689, 17224966, -47476568, -41689100, -74519832, -12919262, 5302137, -33386928, - -46044196, 44208100, 2467459, 45406396, 46011984, -7022272, -6352257, -20055350, 26598732, 21464100, - 3453154, 9833328, -3586298, -3874061, 22589380, -7460358, -25930866, -21708912, -32590212, -29280940, - -9586367, -2800319, -3343632, -43121472, -83951576, -12571369, 5564130, -6008659, -1597728, 23837068, - -19980188, 21339546, 16967268, -11497627, 23564338, -33812132, 42359116, 31776316, -392990, -31082678, - 670015, 22971632, -98152888, 21311628, 37179384, -67529768, 26257282, -33947420, -52654152, -44762148, - 21206402, -10247792, -74038792, 39827232, 18348100, -42256036, -75000864, 15891379, 6143951, -21704618, - -7773891, -36185100, 32527934, 30103426, 48417168, -39769248, 3927748, -53203908, -23349590, 10417443, - -37634652, 15470472, -7325067, -26242250, -44096428, -43297564, 61516816, -42696268, -24030342, -15494095, - -816044, 30666066, 13947906, 22591528, -3657165, 26259430, -12635794, 4902705, -15105400, -26031796, - 687195, 58287000, 3974992, 2074469, -5587753, -36346160, 18167712, 39275328, 33554432, -55918328, - -27775554, -58982784, 17693118, -11523397, 24167780, -17003776, 12111808, 17611514, -18066780, -34241628, - 50425064, -14194867, -20671678, 55832428, -10511932, -14617921, 66546224, -39086348, 10857677, 14669461, - 6337224, -58903328, 1438814, -9730248, -33363306, 18451180, -25941602, 35287452, -5199058, 39423504, - -43368432, 26381836, -77749648, -493921, -41845868, 46731392, -6146098, 5190468, -7011534, -45243184, - -1902671, 36801428, 102121440, 6027987, 7640747, 20003810, 35774932, -7279970, -8385924, 1713692, - -386547, 87230784, -6676527, 12208445, 36992552, -36013300, -57662084, -1269163, -60986388, -9113921, - -30567282, -24427626, -10988674, -27771258, 16436840, 20605106, -34662532, 44601088, 39966820, -6616397, - -7395934, -38414188, 28623810, 8903467, 95039040, 103530184, 770947, -31765578, -25479894, 86741160, - -56972740, -64965676, 67665064, -61351460, 39571680, 12071006, 54793044, 50495932, 34162168, 5549098, - -34361884, -29684666, 71152576, -30056182, -2894808, 17439714, 60687888, 87701088, -2456721, 59970628, - -48752172, -51002736, 6051609, -18728204, 28565828, 18103288, -43342664, 6158983, 28157806, 72241352, - 24998858, 29753386, 27567248, 32465658, 8832600, -2263448, 46299748, 8330089, 37207300, 58847496, - 12940736, -23753316, -19649476, 53113712, 14710263, 108615424, 26246546, 43054900, -43072080, -69009384, - -5482526, -80618680, -50609748, -18021682, -26231512, 3530463, -2452426, 1159641, 3015067, -60084444, - -48022028, -25965224, -49312668, 19488414, 23572928, -15180562, -392990, -47734268, -2894808, 14061723, - -6515466, }, + 365072, -2740189, 2707977, -1516124, -457414, 828929, 1941325, -371515, 1939178, 813896, + 642098, -96637, -139586, 294205, 208306, -979253, -515396, -1848983, 839666, -577673, + -77309, 1911261, 717260, 251256, 261993, 545461, 21475, -326418, -12885, -204011, + -133144, -566936, -302795, -178241, -137439, 103079, 143881, 2147, 4295, 2147, + -77309, -34360, 49392, 178241, -60130, 7786776, 4277788, 2156074, 2637110, 1483911, + 2231236, 4514011, 259846, 128849, -470299, -1114544, 2342905, 27917, -165356, 2486786, + -962073, -1153199, 687195, 249108, 1069447, 259846, 410169, 1123134, -751619, 753767, + -223338, -165356, -564788, 380105, 1490354, 790274, 938450, 785979, -94489, 612033, + 882616, -362925, 745177, -1251983, 1565516, -629213, 466004, 83752, 225486, -300648, + -279173, 3910568, -4475356, -603443, -818191, -1116692, 732292, -2229088, 760209, -53687, + 1020055, 886911, -1758789, -629213, 2699387, -283468, 581968, -500364, 1178969, 2469606, + 2862596, 485331, 1239098, -40802, -2244121, -66572, 253403, -485331, 17180, 1245541, + -1284195, -1735167, 768799, -837519, -766652, -1215476, -42950, 1288490, 332860, -373662, + -453119, -504659, 4295, 292058, -676457, 261993, -773094, -11222750, -7986492, -3886946, + -2942053, -2239826, -2321430, -785979, -1715839, -517544, -1080184, -2763812, 528281, 1438814, + -238371, 828929, -543313, -1421634, -1451699, -2156074, -749472, 545461, 57982, -1202591, + 820339, -1458141, -1464584, 985695, -6442, 75162, 768799, 899796, 229781, -309238, + -435939, -545461, 296353, 182536, -766652, 442382, -1522566, -624918, -375810, -124554, + -1084479, -184684, -397284, -15927886, -2181844, 1271310, 199716, 1202591, 88047, -841814, + 541166, -639950, -790274, -1393717, -1245541, 616328, -489626, 1056562, -1022202, 53687, + -989990, 337155, 1580548, -388695, 1163936, 103079, -1151051, -188979, 1428077, 773094, + 912681, 1118839, -1574106, 1067299, -667867, -92342, -869731, -360777, 403727, 695785, + 311385, -337155, 1140314, 1056562, 571231, -322123, -809601, 139586, -674310, 18796924, + 14995878, 3528316, 6719477, 1597728, 5199058, 3624953, 1131724, 3648575, 1481764, 2759517, + 1215476, -1035087, 2800319, 1943473, -755914, -279173, -5188321, -586263, 270583, 3139621, + 365072, 92342, 1619203, 96637, 1462436, 1312113, 219043, -141734, 515396, 2126009, + 1657857, 1357210, -137439, -594853, 90194, 962073, -380105, -148176, 1118839, 326418, + -558346, -73014, 236223, -1151051, 1374390, 33066954, 12139725, 5832566, 3498251, 2091649, + 2158221, 1999307, 3397319, 801011, 5529771, 727997, 517544, 2340757, -1282048, 541166, + -569083, -622770, -914828, 3517578, 1958505, -317828, 2701535, -1883343, -474594, -680752, + 4168266, -414464, 1494649, 307090, 2037962, 332860, -616328, 1052267, 1391569, -667867, + 487479, 549756, 362925, 826781, -289910, 951335, 865436, -2703682, 569083, 289910, + 491774, 12685186, -9378061, -3302830, -4333622, -2714419, -2570538, 1733019, -1464584, -3927748, + -970663, -5220533, -1209033, -2278480, -4980015, -1282048, 1136019, -3171833, -1045825, 474594, + -3515431, -173946, 4069482, 895501, 590558, -1879048, 83752, 1404454, 36507, -1726577, + -1806034, 1853278, -158914, -2426657, 231928, -1035087, 2959233, -92342, 1335735, -483184, + 2559801, -1685775, 1028645, 337155, 603443, 27917, 659278, -73014, -813896, 1556926, + -34866544, -19722490, -4026532, -4915590, -3371549, -4297115, -6058052, -556198, 169651, -1778117, + 1524713, -1649268, 264141, -169651, -1977833, -2192581, -3453154, -1209033, 3435974, -3246995, + -345745, 3096672, 1997160, -489626, 1163936, -453119, -3330747, -1672890, -2727304, -936303, + 163209, -691490, 1636383, -2946348, -2289218, -92342, -2817499, -2211908, -1977833, -2347200, + 2523293, -725850, -2963528, -957778, 882616, 944893, -962073, -1533303, -633508, -21388938, + 12277164, 4599910, 2007897, 2102387, 1868311, 934155, -2297808, 603443, -1372242, -395137, + 3816079, 2345052, 3283503, 3380139, 3468186, -2905546, 1455994, 3753802, 586263, 3268470, + -3880503, 730144, -996432, -261993, -1468879, 1380832, -526134, 55835, 3377992, -3515431, + -1090922, 1335735, 1930588, -921271, 1602023, -1395864, -2342905, 2735894, -1406602, -124554, + -805306, 1026497, -390842, 1254131, -1406602, -530428, -1279900, -352187, -1127429, 2029372, + 141734, 644245, 31810676, 13035226, 2753074, 7258495, 5677947, 1103807, 2536178, 6863358, + 3126736, -167504, 1464584, 850404, -1017907, 1960653, 5892695, 1378685, 7033009, 3414499, + -5811091, 1080184, 195421, 1187559, 5186173, 2920578, 2080912, -468151, -826781, -715112, + -895501, 798864, -1157494, 1720134, 502511, 2345052, -500364, -618475, 843961, 1911261, + 1026497, -225486, -2572686, -1090922, -1440962, 2257005, 1619203, 2549063, 1391569, 367220, + 337155, 2175401, 1705102, 1421634, 199716, 35540856, 10196252, 4436701, 5555540, 906238, + 5366562, -880468, -2059437, -126702, 1370095, 558346, -176094, 1005022, 5465346, -822486, + -3438121, -2418067, 2639258, 657130, 3077344, 4879083, 4277788, -317828, 2845416, -3143916, + 326418, -2450279, 3279208, 1857573, -3738769, 2134599, -1788854, 223338, -1449552, 2158221, + -1398012, 2716567, 2177549, 1735167, 3539053, 1116692, -96637, -923418, -15032, 429497, + 3917010, -163209, 77309, 223338, 1881196, 1213328, 118112, -551903, 4879083, -15094663, + -6171868, -2422362, -3487514, -1541893, -1329292, 264141, 2143189, -2177549, -4112431, 3852586, + -4937065, -4649302, -880468, -1052267, 2115272, -1294933, -122407, -4490389, -2723009, -5426691, + -6021544, -6637872, -947040, 1591285, -4685810, -1217623, 646393, 539018, 182536, -562641, + -4645007, -2836826, 1990717, 818191, -1099512, 4419522, -2952790, -1273458, 1069447, 2727304, + 2168959, -335007, -687195, 1101659, 622770, -2789581, 234076, -1617055, -783832, 270583, + -1178969, 210453, 1902671, -38590280, -12219182, -7247758, -3081639, -5199058, -4249870, -1178969, + -3049427, -1191853, -4052302, -5342940, -3917010, -1264868, -8048769, -1859721, -3309272, -4793184, + -654983, 889058, 2546916, -2780991, -4052302, -1421634, 3219078, 4262755, 5104569, 2823941, + -204011, -2493229, -1221918, 88047, -3208341, 1374390, 2070174, 2753074, -1896228, -1505386, + -1529008, -659278, -687195, -1037235, 2016487, -543313, 1279900, -2602750, -4696547, -1874753, + -251256, 2385854, -4078072, 1393717, -1999307, 1947768, -2035815, 1189706, -22192096, 5914170, + 1644973, 23622, 3891240, -3728032, 1000727, -8577050, -2787434, 2989297, 2119566, 5538361, + -399432, 6043019, -3515431, -880468, 2894808, -5244155, -1921998, -3081639, 5894843, -362925, + -4868346, 2467459, 4702989, -4159676, -3171833, -3743064, 1099512, -861141, 2037962, -1421634, + -1181116, -989990, -2267743, 3341485, -2660732, 665720, 2192581, -249108, 2531883, -1432372, + 5523328, 854699, -534723, -1896228, -1894081, 118112, -2181844, -2649995, -1647120, 472446, + 1906966, -214748, 545461, -2293513, -2319282, -3285650, -1297080, -1002875, -841814, 19284404, + 27455578, 9573482, 9472550, 13121125, 9350144, -1267015, 1801739, -972810, 1685775, 1647120, + 2325725, 1808181, 4627828, 1833951, 2869038, 944893, 9206262, 2194728, 4471061, 2710124, + 2306398, 7327214, 1644973, 9171903, 4647155, -1870458, 6373732, 1681480, 3085934, 6448894, + 1209033, 3822521, -2080912, -710817, 1702955, 2860448, -4080219, 3322157, -2420214, -4367982, + -2675765, 3478924, 5186173, 3957812, -936303, 1209033, 1065152, 1885491, 2628520, 1490354, + 2985002, 1788854, -3240553, -236223, 2012192, 2911988, 687195, 822486, 294205, -3240553, + 65925600, 5252745, -3618510, 5581310, -3852586, 7745974, 2001455, 8121783, -4138201, 1005022, + -219043, 4984310, -8604967, 1898376, 5113159, -869731, -1488206, 7174743, 10606422, -4256313, + -2772402, 1591285, 5117454, -2126009, 3238405, 444529, -3751654, -2649995, -3040837, 2568391, + 3053722, 4075924, -2987150, 4468914, -2959233, 4348655, 3431679, -670015, -2682207, 1672890, + -4161823, -5267778, 1000727, -3517578, 1324997, 661425, 377957, 2632815, -264141, 3137474, + -30065, -3493956, 1273458, -710817, 1565516, -2482491, -777389, 695785, 1668595, -1241246, + -5001490, -22578644, -21897890, -4969277, 1720134, -974958, -3283503, -3571265, -4868346, -1303523, + 3657165, -1174674, -1198296, -5033702, 5357972, -296353, -4322885, -3749507, 9266392, -8315057, + 921271, 6137509, -654983, 1045825, -7975755, 2613488, -3373697, 1977833, -5510443, -3599183, + 1011465, 1554778, -2514703, -2856153, 384400, -1118839, 515396, -3332895, -1814624, 3682935, + -259846, -1569811, -874026, 4672925, 2162516, -2465311, -3801046, -3375844, 1355062, -390842, + -1490354, 543313, 942745, -1765232, 5611375, 3115999, -350040, -227633, -1181116, 854699, + -1337882, -1359357, -1372242, -92342, -2787434, -2190433, -8562017, -7838316, -8819715, -6783901, + -4501126, -3423089, 966368, -332860, -2040110, -1153199, 2422362, 7630010, -6605660, 3210488, + -2044404, -4559108, 5802501, -704375, 1357210, 7065221, 1333587, 2847563, -4312147, -1303523, + -13045963, -1735167, 2789581, 1434519, 1423782, 1140314, 2147484, -3158949, -3710852, 2843268, + -68719, 2677912, 1733019, -3710852, 3182571, -487479, -9152575, -7965017, -1015760, -7546258, + 1247688, 2106682, -210453, -2078764, -551903, 141734, -1874753, -869731, -133144, -1466731, + 2579128, 423054, 1047972, -1507534, -663572, 3440269, 1239098, -2538326, 2798171, -768799, + -1404454, -4015795, 373662, -43033424, -9859097, 678605, -8604967, 3502546, 818191, 10378788, + -4872641, 661425, -2877628, 6972880, -14162655, -13507672, 5677947, -6521908, 10159745, 3736622, + -8222715, -14306536, -358630, -4013647, -6994354, -2806761, 1612760, 2372970, -3388729, 12337294, + 635655, -1172526, -5160403, 4232691, 4636417, 5063767, 5373004, -618475, -3206193, -1159641, + 3173981, -201863, 3835406, -3569118, -1432372, -1196148, 4449586, 3624953, -3906273, 5113159, + -2821794, -3481071, 438087, -1556926, -3345780, 3502546, -3957812, -483184, 1026497, -916976, + -1593433, 949188, 3354370, -2020782, 3225521, -2598455, 2188286, -1428077, -1586990, -1000727, + 39582420, 34628172, 7333657, 9193377, -1775969, 11252814, 9159018, 11332271, -408022, 4494684, + 2813204, -10819023, -9023726, 4885526, 1022202, -7782481, -8072391, -4640712, 560493, 4496831, + 1382980, 10735271, 9936407, 4226248, -2265595, -2523293, 6577743, 6019397, 500364, 5254893, + -1730872, 6749541, 388695, -1612760, 9560597, 4844723, 7836168, 4928475, 1711545, 5362267, + 2750927, 1767379, 5072357, -2937758, 992137, 6616397, -103079, -4514011, 3981435, 3831111, + 2815351, -3227668, -124554, 3773129, 5884105, -3148211, 7121056, 8025147, -1490354, -4627828, + 691490, 1694365, 1200443, 3403762, -96637, 1086627, 2692945, 47699908, 4131759, -1578401, + 3609920, 2091649, -7630010, 1836099, 2366527, -212601, 5334350, 7106024, 11186242, -5106716, + -4724464, -7960722, -6034429, 6854768, -324270, 9994389, -2224793, -2692945, 4443144, 8656507, + 3755949, -9124658, 7284265, -2815351, 5871221, -3154654, 4608500, -5579163, 3519726, -642098, + 5364414, 414464, 3152506, 1370095, -8819715, -5179731, -627065, -2035815, -635655, -3023657, + 4567698, 1449552, 9519795, -1647120, -6176163, -3923453, -446677, 350040, -6904160, 2183991, + -2231236, -526134, -513249, -4352950, 3938485, 6998649, -2115272, 3493956, 1005022, -4271345, + -253403, -4082367, -3092377, 408022, 6474663, 657130, -2619930, -6438156, 1879048, -2372970, + 13840532, -3317862, -13215614, -8948564, -11916387, 11001559, -8804683, 2424509, 13453985, -612033, + -13666586, 916976, -14347338, 11927124, -4168266, 11884175, 70867, -4556961, 10237055, 358630, + 2121714, -7730941, -9740986, -1591285, 3418794, 2065879, -1909113, -4520453, 4518306, -1417339, + 3371549, 5175436, 6309307, 2892661, 3483219, -12859132, 1052267, -2942053, -4404489, 1722282, + 6335077, -5392332, -9878425, -4385162, 2856153, 1088774, -8690866, -3564823, 3998615, 5871221, + -5246303, -3420942, -4054449, 6010807, 7965017, 1591285, -2763812, 880468, 5675800, -2780991, + -309238, -48593260, -48730700, -8177618, -23753316, -15133317, -8257075, -13550622, -1348620, 9833328, + -21678848, 7808251, -4206921, 7112466, 1561221, 4286378, -8802535, 2119566, -828929, -4937065, + -19819126, -4286378, -10142565, -12983686, -996432, 3066607, 1030792, -4518306, 3148211, -4290673, + -856846, 10546292, 150324, -3706557, 1056562, 6861211, 9805410, 6171868, 416612, 4909148, + 6240588, -687195, 491774, -10574209, 4292820, -8750996, 2078764, 8239895, -5267778, -10563472, + 3513283, -5961415, -5111011, 1080184, 433792, -5035849, 2946348, -1245541, 11834782, 6277095, + 4022237, 1342177, 4726612, -457414, 1853278, -4483946, -7372312, -1348620, -28321014, 52971980, + 42309724, 2179696, 8914205, 2942053, 9670119, 13720273, 3607773, 13299366, 2830384, -14980846, + 9983651, 11117523, 3764539, 2967823, 8993662, 10924249, -11154030, 9012989, -5763846, 7842611, + 1516124, -7494718, 1589138, 8916352, 5604933, -11828340, 5662915, -5179731, 16550656, -1952063, + 3992172, -3105261, -10406706, 10048076, 10711648, 4443144, 2806761, -1088774, 3899830, 10664404, + 2697240, 7436736, 1060857, 4962835, 3085934, -1406602, 6113886, -8061654, -11512660, -5738077, + -8808978, -8123931, -3876208, -8338679, 10170483, 6579890, 762357, -2566243, -3824669, -1947768, + -468151, -672162, 261993, 670015, 1853278, 420907, -571231, 70796096, -27270894, -15923591, + 3332895, -899796, -2806761, -20605106, -7750269, 4329327, -231928, -3590593, -3158949, 2310693, + -15605764, -5415954, 9210557, 15154792, 9399536, 6380174, -4376572, -5596343, -8686571, 10204842, + -14763950, -3476776, 4550518, -10980084, 4054449, 3599183, 13172665, -19849192, -897648, -1138166, + -3238405, 4254165, -16943646, -10022306, 20128364, 11963631, 3360812, -4166118, 12298639, -4239133, + -811749, 1312113, 9764608, 4367982, -4924180, 322123, -2592013, 6556268, -11209865, -6249178, + -6521908, -8480413, 15234249, 3075197, 2486786, -7355132, 141734, -3120294, -1887638, -7690139, + 1765232, -7350837, 410169, 1228361, 6296422, -10666551, -6017249, -9532680, -1904818, 20927228, + 49261128, 7705172, 18992346, 16535624, 16501264, 5065914, 12412455, 7106024, -3199751, -10286447, + -6002217, -3227668, 14160507, -12204150, -12809740, -1271310, -298500, -5744519, -9740986, 29278792, + 28162100, 20579336, 1324997, -12375948, 2418067, 1576253, -5677947, 6405944, 4666482, 11538430, + 1685775, 4445291, -277025, -8695161, 13859859, 10780368, 8405251, -2422362, -10462540, 165356, + -530428, -3513283, -21672404, 15305116, -9713069, 17712446, 1344325, 9309342, -1791001, 10301479, + 16849156, 2692945, -7170448, -1196148, 3352222, -6122476, 3231963, -2821794, -6693707, -4589173, + 2639258, -2495376, 7279970, 1612760, -11377368, -165356, -1245541, -13619341, -2596308, 1464584, + -4425964, 4791036, -51077900, -7121056, -31714038, 70867, 5965710, -11156178, -18399640, -21940840, + -20201378, -12429635, -16404628, -4365835, -781684, -4582730, 5744519, -3584150, 1464584, 12914967, + 6287832, -1529008, 31505732, -7052337, 6633577, -4763119, 3021510, 4312147, 2076617, -1943473, + 5001490, 14383845, 4829691, 4982162, 2089502, 5660767, 12773233, 16799764, 5811091, 20429012, + -5014375, -17877802, 18429704, -5811091, -3242700, -3728032, 10677289, 15618649, 12414603, -392990, + -3498251, -9073118, -22329534, 14070313, 16685948, 11321534, -13037373, 8267812, 2832531, -1382980, + 13728863, 2218351, 9500468, -7213398, 5076652, -8972187, 2147, 7969312, -1346472, 6068789, + -216896, -3085934, -2091649, -89446992, -40851580, 18799072, -3985730, -2581275, 2727304, -10758893, + -10359461, -2871186, -4928475, -15229954, 10657961, 1741609, 23053236, -12607876, -11735998, -18687402, + -11205570, -19252190, 1170379, 7801808, -30000346, 19628000, 15972983, -1778117, 2843268, 13005161, + 1417339, 11523397, -22821308, -21942988, -12923557, -14171245, -11793980, 37164352, 11510512, -7404524, + -13507672, -18051748, 8484708, 5699422, -9257802, 7986492, 6833293, -12485470, 871878, 3676492, + 10037339, -11501922, 29746944, -12406013, -10844792, 5499706, -3560528, 665720, -9365176, -2559801, + 654983, 20014548, -6197638, 28486370, 5645735, 2776696, 2888366, 8390219, -8407398, -1883343, + -10947872, -7625715, -8317204, 1211181, 14989436, -8321499, 14164802, 45481556, 23308788, 14493367, + 9756018, -16043850, 1488206, -13020193, 20059644, -2302103, -2877628, 6736656, 4230543, 4531191, + -858993, 6927782, 2291365, 7295002, -6526203, 19501300, 2319282, -2087354, 58875412, 2907693, + -4941360, -15522012, 8373039, -14493367, 12741020, 31505732, -3025805, 7368017, 7307887, -16913582, + -18981608, 34360, -251256, 13475460, -9773198, -75162, -1696512, 9715216, 9869835, 17126182, + 5866926, 5478231, 6498286, 25770, 10808285, 4707284, -22561464, 3826816, -12156905, -28546500, + -3485366, 6929930, -1007170, 1417339, -4902705, -401579, -2183991, -1118839, 2115272, -399432, + 11160473, -8604967, -2744484, 1389422, 970663, -730144, -6672232, 7623567, 12848395, 64939904, + -17733920, -9070971, -16385300, 31821412, 14020921, 1041530, 8467528, -6637872, -6174016, 10060961, + 2744484, -13391708, 4657892, -17111150, -9975062, -1011465, -13911399, 330712, 6710887, -13282186, + -18577882, 122407, 2718714, 11871290, 24096914, 13838385, -8905615, -1995012, 15579994, 23643794, + -25061134, 8216273, -3380139, -2308545, -10546292, -18998788, 3094524, 13471165, 6154688, 4971425, + 11353746, -2987150, 8141111, -3474629, 6302865, 7909183, -16136192, -14450417, 29379724, -4189741, + 848256, -8269960, 12788265, 33822868, 10726681, 3365107, 13413183, -11491185, -8832600, -2065879, + -6085969, -22625888, 15148350, -405874, -8239895, 3524021, 5177583, -7943542, -7419556, 10945724, + -2089502, -17703856, 10000831, 5209796, 56446608, 54350664, -18019536, 15131170, 3955665, 11836930, + 28421946, -3169686, -15614354, -4913443, 55338508, -31035434, -6517613, -15210627, -13030931, -25110526, + 27367532, -7743826, -38568808, -28005334, -35257388, -13005161, 30075508, -3375844, 13857712, -5164698, + -16320876, 13926431, 3384434, 17553532, -17364552, 15627239, 11572789, 6517613, 6427419, -27111982, + 7159711, -22621592, 18556406, 40913860, 11078868, 12382391, -26684632, 36610300, 9004399, -3706557, + -6427419, -7337952, 10642929, 18292266, 3633542, -4230543, -1879048, 4928475, -9655086, -6350109, + -9330816, -6633577, -1539746, 13260712, -9803263, 19834158, 6337224, 12040941, -4995047, -28870770, + -20036022, 7020124, 1148904, -8888435, 9949292, -953483, -1606318, 5242008, -4413079, -54438712, + -30958124, 6826851, 5201206, -1099512, -22477712, 13204877, 8989367, -14890652, -37336152, 30771294, + 8927090, 11078868, 19056770, 9938554, -3717294, 5257040, -8308614, 25673168, -20274394, -37986840, + 289910, -2207613, -16234976, -41137196, 2948495, -8624294, -19739670, -12010876, -4915590, 9030169, + 3420942, 14959371, 32018982, -12777528, -22804128, 7894150, -792421, 435939, 14512694, -17405354, + -13793287, -1898376, 16902844, -18695992, 18326626, -5046587, 33137820, -3837553, -6893423, -2987150, + 2961380, 6818261, -32040456, 5845451, -27206470, 31830002, 3300682, 20413980, 14882062, -10739566, + 1937030, -14482630, 11345156, -367220, 9957882, 7258495, -16733193, -1561221, -15723875, -7110319, + 13651554, -4183298, -7185481, 7984344, -71092448, -37263136, -9431748, -11400991, 747324, 4638565, + -22769770, -21683142, 9850507, -24820616, 9833328, -27236536, -4514011, -26456998, -25082610, 26480620, + 15311558, 1221918, 1204738, -27788438, -38583840, 17454748, -51535312, 16460462, 3777424, -20800526, + 5832566, -14192719, 7129646, 34589520, -16157667, -5439576, -38010460, 28774134, -6569153, 11196980, + -11482595, -8319352, -392990, -5080947, 22009560, 2982855, 42659764, 44126492, -2072322, -2954938, + -12848395, -1939178, -3206193, 3695819, 18165564, -1926293, 37512244, 5914170, -9880572, 1582696, + 10146860, -3809636, 560493, -3015067, 29280940, -23791972, -36483600, -20532092, 3650722, 4883378, + 9966472, 15264314, 1151051, 3682935, -6792491, -20959440, -18668076, -22988812, 5126044, -8121783, + 95328944, 41304700, 29965986, 11192685, -9964324, -18107582, -28716152, 15410343, 29029684, 10711648, + -12496207, 32373316, 19503446, 32341104, 2967823, -25179246, -8684424, 49020608, -51623360, -11841225, + 35227320, -21607980, -10853382, 79746808, -9528385, 21945136, 73959336, -12979391, -4230543, -3382287, + 9698036, -5336497, 32373316, 19155554, 26772678, -19885698, -42780020, 15955804, -16552804, 19417548, + -7582765, 6124624, 31419834, 16421807, 2342905, 12079596, 6798933, 11536282, 30399778, 15247134, + -2634963, 27399744, 12732431, 2467459, 7490423, 51750060, 32686848, -1705102, 29787746, -14675903, + 37538016, -11059541, 8890582, -12406013, 5272073, 19091130, -10722386, -2944200, -919123, 5121749, + 2269890, -16172699, 2499671, -14392435, 121090160, 55967720, -25567940, 11506217, 62139588, 2325725, + 44626856, -12534862, 17115444, 38764228, -29469918, 4275640, 65302832, 60273424, 47502340, 17905718, + 40666896, 7797513, 35534412, 13503377, 10118943, -22000970, -27661736, -37276020, -76300096, 24792698, + -23622, -19711752, -8130373, 26830660, -18053896, -1855426, 2025077, 15393163, -67718752, -10086731, + 47556024, 38036232, -14405320, 25363930, 20145544, 14353781, -9101036, -14841259, -7651484, -9764608, + -7668664, -24000278, -21865678, 17779018, -42513732, 14450417, 33264522, -9451076, -25239376, -37280316, + 34748432, -418759, -18837726, -11042361, -9047349, -12281459, 6685117, -5224828, -14033806, 14385993, + 54668492, -26746908, -17401060, 8190503, -11474005, 14141180, -152471, 30322470, 4870493, 2873333, + -47568912, -14100378, -57322780, -13275744, -57307748, 27120570, -54597624, 28948080, -9038759, -32669668, + -9159018, -15710990, 67927056, 9676561, -48681308, 137439, -31651762, -26130582, 33644628, -38356204, + -34284576, -40020504, 59214716, -8821863, 39200168, -60786672, -31580894, 22870700, -27582280, 21745420, + 65429532, 41781440, 40583144, 5877663, -6646462, -32669668, -44708464, -3487514, 10232760, -42769284, + 1129576, -25692494, 12255689, 17224966, -47476568, -41689100, -74519832, -12919262, 5302137, -33386928, + -46044196, 44208100, 2467459, 45406396, 46011984, -7022272, -6352257, -20055350, 26598732, 21464100, + 3453154, 9833328, -3586298, -3874061, 22589380, -7460358, -25930866, -21708912, -32590212, -29280940, + -9586367, -2800319, -3343632, -43121472, -83951576, -12571369, 5564130, -6008659, -1597728, 23837068, + -19980188, 21339546, 16967268, -11497627, 23564338, -33812132, 42359116, 31776316, -392990, -31082678, + 670015, 22971632, -98152888, 21311628, 37179384, -67529768, 26257282, -33947420, -52654152, -44762148, + 21206402, -10247792, -74038792, 39827232, 18348100, -42256036, -75000864, 15891379, 6143951, -21704618, + -7773891, -36185100, 32527934, 30103426, 48417168, -39769248, 3927748, -53203908, -23349590, 10417443, + -37634652, 15470472, -7325067, -26242250, -44096428, -43297564, 61516816, -42696268, -24030342, -15494095, + -816044, 30666066, 13947906, 22591528, -3657165, 26259430, -12635794, 4902705, -15105400, -26031796, + 687195, 58287000, 3974992, 2074469, -5587753, -36346160, 18167712, 39275328, 33554432, -55918328, + -27775554, -58982784, 17693118, -11523397, 24167780, -17003776, 12111808, 17611514, -18066780, -34241628, + 50425064, -14194867, -20671678, 55832428, -10511932, -14617921, 66546224, -39086348, 10857677, 14669461, + 6337224, -58903328, 1438814, -9730248, -33363306, 18451180, -25941602, 35287452, -5199058, 39423504, + -43368432, 26381836, -77749648, -493921, -41845868, 46731392, -6146098, 5190468, -7011534, -45243184, + -1902671, 36801428, 102121440, 6027987, 7640747, 20003810, 35774932, -7279970, -8385924, 1713692, + -386547, 87230784, -6676527, 12208445, 36992552, -36013300, -57662084, -1269163, -60986388, -9113921, + -30567282, -24427626, -10988674, -27771258, 16436840, 20605106, -34662532, 44601088, 39966820, -6616397, + -7395934, -38414188, 28623810, 8903467, 95039040, 103530184, 770947, -31765578, -25479894, 86741160, + -56972740, -64965676, 67665064, -61351460, 39571680, 12071006, 54793044, 50495932, 34162168, 5549098, + -34361884, -29684666, 71152576, -30056182, -2894808, 17439714, 60687888, 87701088, -2456721, 59970628, + -48752172, -51002736, 6051609, -18728204, 28565828, 18103288, -43342664, 6158983, 28157806, 72241352, + 24998858, 29753386, 27567248, 32465658, 8832600, -2263448, 46299748, 8330089, 37207300, 58847496, + 12940736, -23753316, -19649476, 53113712, 14710263, 108615424, 26246546, 43054900, -43072080, -69009384, + -5482526, -80618680, -50609748, -18021682, -26231512, 3530463, -2452426, 1159641, 3015067, -60084444, + -48022028, -25965224, -49312668, 19488414, 23572928, -15180562, -392990, -47734268, -2894808, 14061723, + -6515466, }, }; + + +/********************** defaultHRIR reverb rom tables at sampling rate 48kHz **********************/ + +const float defaultHRIR_coherence_48kHz_fx[LR_IAC_LENGTH_NR_FC] = + {0.997092f, 0.947391f, 0.799213f, 0.575216f, 0.335047f, 0.138324f, 0.007933f, 0.000000f, 0.000000f, + 0.000000f, 0.008438f, 0.037607f, 0.044493f, 0.042149f, 0.041877f, 0.039860f, 0.029404f, 0.015898f, + 0.010316f, 0.014065f, 0.020005f, 0.024518f, 0.029292f, 0.033522f, 0.033418f, 0.029630f, 0.027260f, + 0.027515f, 0.025682f, 0.019571f, 0.013977f, 0.013695f, 0.016531f, 0.016882f, 0.013257f, 0.008483f, + 0.004883f, 0.002525f, 0.001004f, 0.000180f, 0.000000f, 0.000000f, 0.000000f, 0.000785f, 0.003979f, + 0.007082f, 0.009598f, 0.011665f, 0.012700f, 0.011794f, 0.009192f, 0.006164f, 0.003527f, 0.001284f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000894f, 0.002136f, 0.003127f, 0.003616f, + 0.003810f, 0.003754f, 0.003186f, 0.002091f, 0.000823f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.001007f, 0.001843f, 0.002400f, + 0.002505f, 0.002133f, 0.001524f, 0.000903f, 0.000317f, 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, 0.000000f, 0.000000f, 0.000000f, 0.000202f, 0.000867f, 0.001309f, + 0.001553f, 0.001563f, 0.001334f, 0.000961f, 0.000530f, 0.000033f, 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, 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, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, + 0.000000f, 0.000000f, 0.000000f, 0.000278f, 0.000621f, 0.000951f, 0.001272f, 0.001608f, 0.001931f, + 0.002199f, 0.002435f, 0.002687f, 0.002947f, 0.003173f, 0.003370f, 0.003577f, 0.003781f, 0.003920f, + 0.003978f, 0.003985f, 0.003937f, 0.003783f, 0.003511f, 0.003170f, 0.002788f, 0.002337f, 0.001808f, + 0.001255f, 0.000716f, 0.000166f, 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, 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, 0.000000f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.003551f, 0.000000f, 0.000000f, + 0.000000f, 0.005564f, 0.000000f, 0.000000f, 0.000000f, 0.008736f, 0.000000f, 0.000000f, 0.001007f, + 0.011608f, 0.002316f, 0.000000f, 0.000000f, 0.011987f, 0.005591f, 0.000000f, 0.000000f, 0.008714f, + 0.005905f, 0.000000f, 0.000000f, 0.005316f, 0.003972f, 0.000000f, 0.000000f, 0.003403f, 0.002041f, + 0.000000f, 0.000000f, 0.002140f, 0.000245f, 0.000000f}; + +const float defaultHRIR_left_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC] = + {0.981018f, 0.973361f, 0.958480f, 0.950611f, 0.953039f, 0.955845f, 0.950660f, 0.942556f, 0.943810f, + 0.958014f, 0.974983f, 0.982099f, 0.977269f, 0.968243f, 0.961714f, 0.957355f, 0.952468f, 0.947771f, + 0.945396f, 0.943711f, 0.938609f, 0.929975f, 0.922937f, 0.921202f, 0.922151f, 0.920926f, 0.917154f, + 0.914393f, 0.914067f, 0.913705f, 0.911632f, 0.910100f, 0.911873f, 0.915812f, 0.918271f, 0.917846f, + 0.916545f, 0.916408f, 0.916915f, 0.916273f, 0.914005f, 0.911339f, 0.909453f, 0.908137f, 0.906301f, + 0.903476f, 0.900479f, 0.898396f, 0.897057f, 0.895115f, 0.891879f, 0.888353f, 0.885879f, 0.884157f, + 0.881651f, 0.877929f, 0.874417f, 0.872453f, 0.871459f, 0.869941f, 0.867796f, 0.866504f, 0.866990f, + 0.868298f, 0.868985f, 0.869170f, 0.870398f, 0.873460f, 0.877373f, 0.880867f, 0.884271f, 0.889105f, + 0.895880f, 0.903280f, 0.909888f, 0.915965f, 0.922776f, 0.930375f, 0.937111f, 0.941667f, 0.944690f, + 0.947747f, 0.950950f, 0.952712f, 0.951893f, 0.949398f, 0.946830f, 0.944212f, 0.940067f, 0.933749f, + 0.926604f, 0.920193f, 0.914164f, 0.906886f, 0.897913f, 0.888731f, 0.880661f, 0.873093f, 0.864556f, + 0.855014f, 0.846098f, 0.839027f, 0.833268f, 0.827720f, 0.822648f, 0.819628f, 0.819557f, 0.821500f, + 0.823986f, 0.826902f, 0.831352f, 0.837670f, 0.844414f, 0.850004f, 0.854617f, 0.859684f, 0.865573f, + 0.870873f, 0.874346f, 0.876636f, 0.879215f, 0.882152f, 0.883944f, 0.883578f, 0.881897f, 0.880319f, + 0.878855f, 0.876201f, 0.871708f, 0.866458f, 0.861964f, 0.858239f, 0.853971f, 0.848551f, 0.843114f, + 0.839005f, 0.835832f, 0.831994f, 0.826972f, 0.822069f, 0.818424f, 0.815337f, 0.811300f, 0.806249f, + 0.801664f, 0.798529f, 0.796124f, 0.793286f, 0.790217f, 0.788277f, 0.788174f, 0.789082f, 0.789775f, + 0.790281f, 0.791803f, 0.794902f, 0.798467f, 0.801024f, 0.802713f, 0.804961f, 0.808244f, 0.811142f, + 0.812318f, 0.812488f, 0.813349f, 0.815025f, 0.815968f, 0.815334f, 0.814250f, 0.814149f, 0.814776f, + 0.814769f, 0.813685f, 0.812567f, 0.812562f, 0.813456f, 0.814055f, 0.813739f, 0.813391f, 0.814325f, + 0.816394f, 0.817949f, 0.818173f, 0.818552f, 0.820798f, 0.824070f, 0.826010f, 0.826515f, 0.828132f, + 0.832036f, 0.835874f, 0.837493f, 0.838582f, 0.842046f, 0.847074f, 0.850262f, 0.851182f, 0.852997f, + 0.856510f, 0.857491f, 0.852207f, 0.842444f, 0.831373f, 0.816756f, 0.793031f, 0.759822f, 0.723220f, + 0.686833f, 0.646128f, 0.595684f, 0.539241f, 0.486856f, 0.441279f, 0.391675f, 0.324292f, 0.238341f, + 0.149255f, 0.076756f, 0.031022f, 0.009191f, 0.001733f, 0.000140f, 0.000010f, 0.000019f, 0.000015f, + 0.000015f, 0.000014f, 0.000011f, 0.000009f, 0.000009f, 0.000009f, 0.000007f, 0.000006f, 0.000006f, + 0.000007f, 0.000006f, 0.000005f, 0.000005f, 0.000006f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, + 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, + 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f}; + +const float defaultHRIR_right_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC] = + {0.981020f, 0.973360f, 0.958481f, 0.950613f, 0.953040f, 0.955848f, 0.950658f, 0.942557f, 0.943810f, + 0.958017f, 0.974981f, 0.982098f, 0.977271f, 0.968244f, 0.961715f, 0.957356f, 0.952467f, 0.947770f, + 0.945398f, 0.943710f, 0.938610f, 0.929975f, 0.922938f, 0.921205f, 0.922151f, 0.920926f, 0.917152f, + 0.914393f, 0.914069f, 0.913705f, 0.911630f, 0.910101f, 0.911874f, 0.915811f, 0.918272f, 0.917846f, + 0.916542f, 0.916408f, 0.916918f, 0.916272f, 0.914004f, 0.911340f, 0.909452f, 0.908136f, 0.906302f, + 0.903479f, 0.900480f, 0.898395f, 0.897055f, 0.895119f, 0.891880f, 0.888352f, 0.885878f, 0.884154f, + 0.881649f, 0.877926f, 0.874417f, 0.872450f, 0.871458f, 0.869943f, 0.867797f, 0.866503f, 0.866987f, + 0.868297f, 0.868981f, 0.869171f, 0.870394f, 0.873460f, 0.877377f, 0.880866f, 0.884272f, 0.889105f, + 0.895880f, 0.903282f, 0.909886f, 0.915965f, 0.922778f, 0.930375f, 0.937113f, 0.941665f, 0.944689f, + 0.947744f, 0.950952f, 0.952711f, 0.951895f, 0.949398f, 0.946830f, 0.944209f, 0.940067f, 0.933750f, + 0.926601f, 0.920191f, 0.914167f, 0.906884f, 0.897916f, 0.888731f, 0.880663f, 0.873093f, 0.864559f, + 0.855017f, 0.846098f, 0.839028f, 0.833267f, 0.827717f, 0.822649f, 0.819631f, 0.819558f, 0.821499f, + 0.823985f, 0.826902f, 0.831353f, 0.837669f, 0.844416f, 0.850003f, 0.854616f, 0.859686f, 0.865572f, + 0.870872f, 0.874347f, 0.876635f, 0.879216f, 0.882154f, 0.883942f, 0.883576f, 0.881895f, 0.880318f, + 0.878857f, 0.876202f, 0.871706f, 0.866459f, 0.861965f, 0.858241f, 0.853968f, 0.848548f, 0.843114f, + 0.839005f, 0.835832f, 0.831994f, 0.826974f, 0.822068f, 0.818424f, 0.815335f, 0.811299f, 0.806245f, + 0.801662f, 0.798530f, 0.796124f, 0.793287f, 0.790217f, 0.788273f, 0.788173f, 0.789081f, 0.789770f, + 0.790279f, 0.791801f, 0.794900f, 0.798466f, 0.801028f, 0.802711f, 0.804962f, 0.808246f, 0.811143f, + 0.812318f, 0.812490f, 0.813348f, 0.815027f, 0.815969f, 0.815335f, 0.814254f, 0.814150f, 0.814776f, + 0.814772f, 0.813686f, 0.812569f, 0.812558f, 0.813456f, 0.814055f, 0.813736f, 0.813389f, 0.814324f, + 0.816395f, 0.817948f, 0.818173f, 0.818549f, 0.820796f, 0.824069f, 0.826013f, 0.826514f, 0.828134f, + 0.832033f, 0.835874f, 0.837493f, 0.838582f, 0.842047f, 0.847077f, 0.850263f, 0.851184f, 0.852998f, + 0.856513f, 0.857491f, 0.852209f, 0.842446f, 0.831375f, 0.816757f, 0.793032f, 0.759821f, 0.723221f, + 0.686832f, 0.646128f, 0.595684f, 0.539241f, 0.486856f, 0.441280f, 0.391676f, 0.324293f, 0.238342f, + 0.149255f, 0.076756f, 0.031022f, 0.009191f, 0.001733f, 0.000140f, 0.000010f, 0.000019f, 0.000015f, + 0.000015f, 0.000014f, 0.000011f, 0.000009f, 0.000009f, 0.000009f, 0.000007f, 0.000006f, 0.000006f, + 0.000007f, 0.000006f, 0.000005f, 0.000005f, 0.000006f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, + 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, + 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f}; + + +/********************** defaultHRIR reverb rom tables at sampling rate 32kHz **********************/ + +const float defaultHRIR_coherence_32kHz_fx[LR_IAC_LENGTH_NR_FC] = + {0.992805f, 0.970760f, 0.904274f, 0.794804f, 0.650716f, 0.489140f, 0.331131f, 0.193608f, 0.084875f, + 0.006016f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.006084f, 0.028478f, 0.040113f, + 0.042718f, 0.041091f, 0.039575f, 0.039321f, 0.038312f, 0.033935f, 0.025743f, 0.016207f, 0.009052f, + 0.006651f, 0.008629f, 0.012678f, 0.016595f, 0.019686f, 0.022543f, 0.025721f, 0.028716f, 0.030244f, + 0.029496f, 0.027051f, 0.024537f, 0.023327f, 0.023382f, 0.023280f, 0.021454f, 0.017604f, 0.013058f, + 0.009830f, 0.009160f, 0.010653f, 0.012635f, 0.013369f, 0.012139f, 0.009418f, 0.006248f, 0.003470f, + 0.001368f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, + 0.000000f, 0.000000f, 0.000000f, 0.001485f, 0.003632f, 0.005492f, 0.007105f, 0.008527f, 0.009629f, + 0.010103f, 0.009685f, 0.008382f, 0.006502f, 0.004466f, 0.002568f, 0.000890f, 0.000000f, 0.000000f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, + 0.000067f, 0.000797f, 0.001293f, 0.001577f, 0.001732f, 0.001797f, 0.001717f, 0.001403f, 0.000826f, + 0.000060f, 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, 0.000000f, + 0.000000f, 0.000318f, 0.000795f, 0.001124f, 0.001249f, 0.001151f, 0.000871f, 0.000495f, 0.000102f, + 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, 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, 0.000206f, 0.000612f, 0.000908f, 0.001107f, + 0.001211f, 0.001209f, 0.001095f, 0.000883f, 0.000607f, 0.000298f, 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, 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, 0.000000f, 0.000029f, 0.000144f, 0.000254f, 0.000368f, 0.000486f, 0.000599f, + 0.000706f, 0.000810f, 0.000925f, 0.001059f, 0.001209f, 0.001367f, 0.001526f, 0.001686f, 0.001850f, + 0.002018f, 0.002181f, 0.002324f, 0.002440f, 0.002532f, 0.002614f, 0.002696f, 0.002779f, 0.002860f, + 0.002941f, 0.003036f, 0.003166f, 0.003347f, 0.003580f, 0.003855f, 0.004158f, 0.004487f, 0.004850f, + 0.005251f, 0.005688f, 0.006141f, 0.006591f, 0.007029f, 0.007462f, 0.007902f, 0.008351f, 0.008798f, + 0.009224f, 0.009620f, 0.009991f, 0.010352f, 0.010711f, 0.011057f, 0.011367f, 0.011621f, 0.011817f, + 0.011973f, 0.012106f, 0.012223f, 0.012309f, 0.012340f}; + +const float defaultHRIR_left_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC] = + {1.030501f, 1.026884f, 1.017950f, 1.008331f, 1.002600f, 1.002689f, 1.006923f, 1.011298f, 1.012169f, + 1.008564f, 1.002836f, 0.999190f, 1.001098f, 1.009190f, 1.020853f, 1.031695f, 1.037922f, 1.038190f, + 1.033894f, 1.027913f, 1.022760f, 1.019333f, 1.016935f, 1.014341f, 1.010980f, 1.007343f, 1.004372f, + 1.002476f, 1.000944f, 0.998381f, 0.993744f, 0.987300f, 0.980631f, 0.975661f, 0.973406f, 0.973314f, + 0.973708f, 0.972973f, 0.970597f, 0.967379f, 0.964640f, 0.963173f, 0.962707f, 0.962251f, 0.960983f, + 0.959006f, 0.957269f, 0.956892f, 0.958263f, 0.960779f, 0.963180f, 0.964405f, 0.964185f, 0.963091f, + 0.962007f, 0.961501f, 0.961514f, 0.961497f, 0.960845f, 0.959307f, 0.957094f, 0.954689f, 0.952548f, + 0.950838f, 0.949382f, 0.947807f, 0.945783f, 0.943211f, 0.940296f, 0.937430f, 0.934938f, 0.932866f, + 0.930925f, 0.928674f, 0.925802f, 0.922364f, 0.918772f, 0.915508f, 0.912798f, 0.910417f, 0.907879f, + 0.904771f, 0.901065f, 0.897182f, 0.893708f, 0.890989f, 0.888922f, 0.887041f, 0.884873f, 0.882294f, + 0.879602f, 0.877334f, 0.875865f, 0.875169f, 0.874822f, 0.874316f, 0.873406f, 0.872264f, 0.871377f, + 0.871228f, 0.871946f, 0.873284f, 0.874764f, 0.876044f, 0.877146f, 0.878469f, 0.880494f, 0.883471f, + 0.887228f, 0.891261f, 0.895055f, 0.898401f, 0.901497f, 0.904769f, 0.908500f, 0.912597f, 0.916577f, + 0.919848f, 0.922085f, 0.923416f, 0.924327f, 0.925296f, 0.926465f, 0.927512f, 0.927876f, 0.927108f, + 0.925203f, 0.922559f, 0.919733f, 0.917037f, 0.914341f, 0.911186f, 0.907145f, 0.902128f, 0.896510f, + 0.890876f, 0.885647f, 0.880803f, 0.875934f, 0.870521f, 0.864338f, 0.857593f, 0.850818f, 0.844491f, + 0.838728f, 0.833217f, 0.827473f, 0.821173f, 0.814417f, 0.807660f, 0.801457f, 0.796095f, 0.791458f, + 0.787181f, 0.782928f, 0.778681f, 0.774802f, 0.771808f, 0.770061f, 0.769530f, 0.769827f, 0.770454f, + 0.771132f, 0.771943f, 0.773228f, 0.775315f, 0.778206f, 0.781513f, 0.784677f, 0.787274f, 0.789288f, + 0.791065f, 0.793055f, 0.795463f, 0.798095f, 0.800470f, 0.802135f, 0.802987f, 0.803318f, 0.803610f, + 0.804182f, 0.804958f, 0.805536f, 0.805434f, 0.804413f, 0.802618f, 0.800482f, 0.798381f, 0.796424f, + 0.794397f, 0.791922f, 0.788779f, 0.785087f, 0.781262f, 0.777778f, 0.774863f, 0.772372f, 0.769886f, + 0.767005f, 0.763613f, 0.759968f, 0.756518f, 0.753595f, 0.751171f, 0.748880f, 0.746246f, 0.743010f, + 0.739317f, 0.735608f, 0.732307f, 0.729533f, 0.727006f, 0.724256f, 0.720938f, 0.717104f, 0.713138f, + 0.709525f, 0.706513f, 0.703976f, 0.701515f, 0.698771f, 0.695693f, 0.692572f, 0.689860f, 0.687867f, + 0.686574f, 0.685644f, 0.684672f, 0.683452f, 0.682093f, 0.680935f, 0.680291f, 0.680231f, 0.680501f, + 0.680700f, 0.680500f, 0.679869f, 0.679047f, 0.678394f, 0.678091f, 0.678035f, 0.677888f, 0.677314f, + 0.676218f, 0.674814f, 0.673484f, 0.672514f, 0.671917f, 0.671422f, 0.670711f, 0.669654f, 0.668436f, + 0.667417f, 0.666896f, 0.666879f, 0.667100f, 0.667225f}; + +const float defaultHRIR_right_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC] = + {1.030502f, 1.026883f, 1.017953f, 1.008327f, 1.002600f, 1.002691f, 1.006922f, 1.011300f, 1.012168f, + 1.008564f, 1.002837f, 0.999188f, 1.001094f, 1.009186f, 1.020854f, 1.031695f, 1.037923f, 1.038191f, + 1.033893f, 1.027913f, 1.022760f, 1.019332f, 1.016931f, 1.014338f, 1.010982f, 1.007343f, 1.004370f, + 1.002473f, 1.000948f, 0.998380f, 0.993744f, 0.987300f, 0.980628f, 0.975661f, 0.973406f, 0.973316f, + 0.973710f, 0.972971f, 0.970599f, 0.967380f, 0.964639f, 0.963173f, 0.962708f, 0.962246f, 0.960984f, + 0.959004f, 0.957270f, 0.956889f, 0.958265f, 0.960778f, 0.963180f, 0.964406f, 0.964189f, 0.963091f, + 0.962005f, 0.961500f, 0.961514f, 0.961496f, 0.960845f, 0.959306f, 0.957092f, 0.954688f, 0.952548f, + 0.950838f, 0.949380f, 0.947808f, 0.945783f, 0.943212f, 0.940298f, 0.937430f, 0.934937f, 0.932865f, + 0.930925f, 0.928674f, 0.925801f, 0.922365f, 0.918770f, 0.915509f, 0.912795f, 0.910417f, 0.907881f, + 0.904769f, 0.901065f, 0.897183f, 0.893709f, 0.890990f, 0.888922f, 0.887040f, 0.884874f, 0.882293f, + 0.879603f, 0.877335f, 0.875867f, 0.875169f, 0.874820f, 0.874318f, 0.873404f, 0.872263f, 0.871381f, + 0.871226f, 0.871950f, 0.873283f, 0.874763f, 0.876042f, 0.877147f, 0.878470f, 0.880494f, 0.883473f, + 0.887227f, 0.891261f, 0.895053f, 0.898401f, 0.901500f, 0.904769f, 0.908500f, 0.912599f, 0.916578f, + 0.919847f, 0.922084f, 0.923417f, 0.924328f, 0.925296f, 0.926463f, 0.927512f, 0.927872f, 0.927107f, + 0.925199f, 0.922559f, 0.919735f, 0.917037f, 0.914339f, 0.911186f, 0.907142f, 0.902131f, 0.896510f, + 0.890876f, 0.885644f, 0.880802f, 0.875934f, 0.870524f, 0.864337f, 0.857594f, 0.850819f, 0.844491f, + 0.838727f, 0.833219f, 0.827473f, 0.821173f, 0.814415f, 0.807662f, 0.801459f, 0.796094f, 0.791462f, + 0.787182f, 0.782926f, 0.778681f, 0.774803f, 0.771810f, 0.770061f, 0.769529f, 0.769825f, 0.770456f, + 0.771131f, 0.771940f, 0.773230f, 0.775319f, 0.778206f, 0.781513f, 0.784675f, 0.787274f, 0.789285f, + 0.791065f, 0.793054f, 0.795465f, 0.798097f, 0.800468f, 0.802133f, 0.802987f, 0.803319f, 0.803610f, + 0.804179f, 0.804959f, 0.805538f, 0.805434f, 0.804411f, 0.802621f, 0.800480f, 0.798379f, 0.796426f, + 0.794398f, 0.791920f, 0.788777f, 0.785087f, 0.781263f, 0.777777f, 0.774862f, 0.772372f, 0.769886f, + 0.767004f, 0.763614f, 0.759968f, 0.756517f, 0.753593f, 0.751172f, 0.748881f, 0.746246f, 0.743011f, + 0.739318f, 0.735608f, 0.732306f, 0.729532f, 0.727006f, 0.724254f, 0.720939f, 0.717103f, 0.713136f, + 0.709524f, 0.706514f, 0.703976f, 0.701513f, 0.698772f, 0.695692f, 0.692570f, 0.689859f, 0.687869f, + 0.686573f, 0.685642f, 0.684671f, 0.683452f, 0.682094f, 0.680934f, 0.680290f, 0.680228f, 0.680501f, + 0.680699f, 0.680498f, 0.679867f, 0.679050f, 0.678395f, 0.678093f, 0.678035f, 0.677889f, 0.677315f, + 0.676220f, 0.674814f, 0.673485f, 0.672517f, 0.671918f, 0.671424f, 0.670712f, 0.669657f, 0.668437f, + 0.667421f, 0.666896f, 0.666880f, 0.667103f, 0.667228f}; + + + +/********************** defaultHRIR reverb rom tables at sampling rate 16kHz **********************/ + +const float defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ] = + {0.983044f, 0.960794f, 0.893756f, 0.783586f, 0.638963f, 0.477338f, 0.319879f, 0.183374f, 0.075909f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.003842f, 0.025288f, 0.035886f, + 0.037785f, 0.035991f, 0.034784f, 0.035091f, 0.034683f, 0.030849f, 0.023146f, 0.014061f, 0.007275f, + 0.005053f, 0.006930f, 0.010589f, 0.013905f, 0.016288f, 0.018404f, 0.020849f, 0.023164f, 0.024149f, + 0.023098f, 0.020635f, 0.018325f, 0.017381f, 0.017611f, 0.017534f, 0.015650f, 0.011786f, 0.007342f, + 0.004290f, 0.003732f, 0.005148f, 0.006838f, 0.007172f, 0.005579f, 0.002632f, 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, 0.000238f, 0.001738f, 0.003011f, 0.003910f, + 0.004120f, 0.003394f, 0.001769f, 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, 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, 0.000000f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, + 0.000000f, 0.002101f, 0.004247f, 0.006330f, 0.008300f, 0.010110f, 0.011735f, 0.013165f, 0.014384f, + 0.015345f, 0.015972f, 0.016191f}; + +const float defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ] = + {1.118974f, 1.115256f, 1.106210f, 1.096901f, 1.092316f, 1.094422f, 1.101140f, 1.107775f, 1.110000f, + 1.106535f, 1.099921f, 1.094914f, 1.095643f, 1.103178f, 1.114955f, 1.126292f, 1.132973f, 1.133288f, + 1.128471f, 1.121439f, 1.114842f, 1.109721f, 1.105480f, 1.100966f, 1.095650f, 1.090074f, 1.085225f, + 1.081525f, 1.078267f, 1.074026f, 1.067777f, 1.059839f, 1.051856f, 1.045772f, 1.042531f, 1.041432f, + 1.040607f, 1.038291f, 1.033910f, 1.028286f, 1.022846f, 1.018514f, 1.015152f, 1.011898f, 1.008047f, + 1.003762f, 0.999992f, 0.997770f, 0.997349f, 0.997960f, 0.998259f, 0.997177f, 0.994506f, 0.990883f, + 0.987207f, 0.984003f, 0.981133f, 0.977984f, 0.973950f, 0.968837f, 0.962915f, 0.956690f, 0.950584f, + 0.944679f, 0.938744f, 0.932399f, 0.925372f, 0.917663f, 0.909568f, 0.901511f, 0.893804f, 0.886455f, + 0.879155f, 0.871463f, 0.863142f, 0.854285f, 0.845334f, 0.836740f, 0.828656f, 0.820817f, 0.812713f, + 0.803960f, 0.794564f, 0.784952f, 0.775633f, 0.766881f, 0.758539f, 0.750156f, 0.741330f, 0.732004f, + 0.722524f, 0.713387f, 0.704919f, 0.697057f, 0.689419f, 0.681576f, 0.673350f, 0.664931f, 0.656703f, + 0.648997f, 0.641801f, 0.634760f, 0.627357f, 0.619192f, 0.610186f, 0.600526f, 0.590442f, 0.579952f, + 0.568762f, 0.556384f, 0.542389f, 0.526648f, 0.509355f, 0.490884f, 0.471542f, 0.451447f, 0.430550f, + 0.408842f, 0.386537f, 0.364126f, 0.342284f, 0.321675f, 0.302809f, 0.286016f, 0.271536f, 0.259639f, + 0.250691f, 0.245099f, 0.243192f}; + +const float defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC_16KHZ] = + {1.118974f, 1.115254f, 1.106207f, 1.096903f, 1.092317f, 1.094425f, 1.101145f, 1.107775f, 1.109999f, + 1.106540f, 1.099921f, 1.094912f, 1.095644f, 1.103178f, 1.114952f, 1.126292f, 1.132973f, 1.133288f, + 1.128472f, 1.121439f, 1.114842f, 1.109719f, 1.105481f, 1.100965f, 1.095650f, 1.090072f, 1.085224f, + 1.081527f, 1.078270f, 1.074025f, 1.067775f, 1.059840f, 1.051856f, 1.045772f, 1.042533f, 1.041433f, + 1.040611f, 1.038292f, 1.033911f, 1.028286f, 1.022844f, 1.018512f, 1.015153f, 1.011899f, 1.008050f, + 1.003762f, 0.999995f, 0.997769f, 0.997349f, 0.997959f, 0.998259f, 0.997178f, 0.994509f, 0.990883f, + 0.987204f, 0.984003f, 0.981133f, 0.977983f, 0.973949f, 0.968836f, 0.962914f, 0.956689f, 0.950583f, + 0.944681f, 0.938745f, 0.932399f, 0.925373f, 0.917662f, 0.909567f, 0.901511f, 0.893804f, 0.886456f, + 0.879153f, 0.871467f, 0.863138f, 0.854286f, 0.845334f, 0.836740f, 0.828656f, 0.820816f, 0.812712f, + 0.803961f, 0.794567f, 0.784951f, 0.775631f, 0.766882f, 0.758540f, 0.750158f, 0.741330f, 0.732005f, + 0.722523f, 0.713388f, 0.704920f, 0.697057f, 0.689418f, 0.681575f, 0.673352f, 0.664930f, 0.656706f, + 0.648998f, 0.641802f, 0.634762f, 0.627355f, 0.619192f, 0.610187f, 0.600527f, 0.590442f, 0.579953f, + 0.568763f, 0.556383f, 0.542389f, 0.526646f, 0.509355f, 0.490883f, 0.471543f, 0.451446f, 0.430550f, + 0.408843f, 0.386537f, 0.364127f, 0.342285f, 0.321676f, 0.302809f, 0.286016f, 0.271535f, 0.259640f, + 0.250692f, 0.245099f, 0.243192f}; + + + + Word32 sine_table_Q31 [361] = { - 187, - -37478868, -74946000, -112390808, -149800880, -187165824, -224473232, -261712288, -298872128, -335940416, -372906880, - -409759232, -446486784, -483078848, -519523232, -555809856, -591926720, -627863744, -663609024, -699152192, -734482816, - -769589248, -804461760, -839088768, -873460160, -907565952, -941394816, -974937344, -1008182528, -1041120576, -1073741952, - -1106035712, -1137993088, -1169603456, -1200857856, -1231746048, -1262259072, -1292388096, -1322122880, -1351455488, -1380375936, - -1408875904, -1436947072, -1464580224, -1491767680, -1518500224, -1544770688, -1570570112, -1595891328, -1620726528, -1645067904, - -1668908416, -1692240256, -1715056640, -1737350784, -1759115520, -1780344704, -1801031296, -1821169280, -1840752768, -1859775360, - -1878231552, -1896115456, -1913422080, -1930145536, -1946281088, -1961824000, -1976769152, -1991112192, -2004848768, -2017974528, - -2030485760, -2042378368, -2053648768, -2064293760, -2074309888, -2083694208, -2092443776, -2100556032, -2108028288, -2114858496, - -2121044608, -2126584448, -2131476608, -2135719552, -2139311872, -2142252544, -2144540544, -2146175488, -2147156608, -2147483647, - -2147156608, -2146175488, -2144540544, -2142252544, -2139311872, -2135719552, -2131476608, -2126584448, -2121044608, -2114858496, - -2108028288, -2100556032, -2092443776, -2083694208, -2074309888, -2064293760, -2053648768, -2042378368, -2030485632, -2017974528, - -2004848640, -1991112192, -1976769024, -1961824000, -1946281216, -1930145536, -1913421952, -1896115456, -1878231552, -1859775488, - -1840752768, -1821169408, -1801031296, -1780344576, -1759115648, -1737350784, -1715056768, -1692240128, -1668908160, -1645067904, - -1620726400, -1595891456, -1570570112, -1544770432, -1518500224, -1491767552, -1464580352, -1436947072, -1408876032, -1380375808, - -1351455232, -1322123008, -1292387840, -1262259200, -1231746048, -1200857600, -1169603456, -1137992960, -1106035840, -1073741824, - -1041120704, -1008182528, -974937152, -941394880, -907565824, -873460288, -839088704, -804461504, -769589312, -734482624, - -699152256, -663608960, -627863424, -591926720, -555809664, -519523328, -483078688, -446486976, -409759200, -372906624, - -335940480, -298871968, -261712432, -224473168, -187165520, -149800880, -112390616, -74946096, -37478756, 0, - 37478756, 74946096, 112390616, 149800880, 187165520, 224473168, 261712432, 298871968, 335940480, 372906624, - 409759200, 446486976, 483078688, 519523328, 555809664, 591926720, 627863424, 663608960, 699152256, 734482624, - 769589312, 804461504, 839088704, 873460288, 907565824, 941394880, 974937152, 1008182528, 1041120704, 1073741824, - 1106035840, 1137992960, 1169603456, 1200857600, 1231746048, 1262259200, 1292387840, 1322123008, 1351455232, 1380375808, - 1408876032, 1436947072, 1464580352, 1491767552, 1518500224, 1544770432, 1570570112, 1595891456, 1620726400, 1645067904, - 1668908160, 1692240128, 1715056768, 1737350784, 1759115648, 1780344576, 1801031296, 1821169408, 1840752768, 1859775488, - 1878231552, 1896115456, 1913421952, 1930145536, 1946281216, 1961824000, 1976769024, 1991112192, 2004848640, 2017974528, - 2030485632, 2042378368, 2053648768, 2064293760, 2074309888, 2083694208, 2092443776, 2100556032, 2108028288, 2114858496, - 2121044608, 2126584448, 2131476608, 2135719552, 2139311872, 2142252544, 2144540544, 2146175488, 2147156608, 2147483647, - 2147156608, 2146175488, 2144540544, 2142252544, 2139311872, 2135719552, 2131476608, 2126584448, 2121044608, 2114858496, - 2108028288, 2100556032, 2092443776, 2083694208, 2074309888, 2064293760, 2053648768, 2042378368, 2030485760, 2017974528, - 2004848768, 1991112192, 1976769152, 1961824000, 1946281088, 1930145536, 1913422080, 1896115456, 1878231552, 1859775360, - 1840752768, 1821169280, 1801031296, 1780344704, 1759115520, 1737350784, 1715056640, 1692240256, 1668908416, 1645067904, - 1620726528, 1595891328, 1570570112, 1544770688, 1518500224, 1491767680, 1464580224, 1436947072, 1408875904, 1380375936, - 1351455488, 1322122880, 1292388096, 1262259072, 1231746048, 1200857856, 1169603456, 1137993088, 1106035712, 1073741952, - 1041120576, 1008182528, 974937344, 941394816, 907565952, 873460160, 839088768, 804461760, 769589248, 734482816, - 699152192, 663609024, 627863744, 591926720, 555809856, 519523232, 483078848, 446486784, 409759232, 372906880, - 335940416, 298872128, 261712288, 224473232, 187165824, 149800880, 112390808, 74946000, 37478868, -187, + 187, + -37478868, -74946000, -112390808, -149800880, -187165824, -224473232, -261712288, -298872128, -335940416, -372906880, + -409759232, -446486784, -483078848, -519523232, -555809856, -591926720, -627863744, -663609024, -699152192, -734482816, + -769589248, -804461760, -839088768, -873460160, -907565952, -941394816, -974937344, -1008182528, -1041120576, -1073741952, + -1106035712, -1137993088, -1169603456, -1200857856, -1231746048, -1262259072, -1292388096, -1322122880, -1351455488, -1380375936, + -1408875904, -1436947072, -1464580224, -1491767680, -1518500224, -1544770688, -1570570112, -1595891328, -1620726528, -1645067904, + -1668908416, -1692240256, -1715056640, -1737350784, -1759115520, -1780344704, -1801031296, -1821169280, -1840752768, -1859775360, + -1878231552, -1896115456, -1913422080, -1930145536, -1946281088, -1961824000, -1976769152, -1991112192, -2004848768, -2017974528, + -2030485760, -2042378368, -2053648768, -2064293760, -2074309888, -2083694208, -2092443776, -2100556032, -2108028288, -2114858496, + -2121044608, -2126584448, -2131476608, -2135719552, -2139311872, -2142252544, -2144540544, -2146175488, -2147156608, -2147483647, + -2147156608, -2146175488, -2144540544, -2142252544, -2139311872, -2135719552, -2131476608, -2126584448, -2121044608, -2114858496, + -2108028288, -2100556032, -2092443776, -2083694208, -2074309888, -2064293760, -2053648768, -2042378368, -2030485632, -2017974528, + -2004848640, -1991112192, -1976769024, -1961824000, -1946281216, -1930145536, -1913421952, -1896115456, -1878231552, -1859775488, + -1840752768, -1821169408, -1801031296, -1780344576, -1759115648, -1737350784, -1715056768, -1692240128, -1668908160, -1645067904, + -1620726400, -1595891456, -1570570112, -1544770432, -1518500224, -1491767552, -1464580352, -1436947072, -1408876032, -1380375808, + -1351455232, -1322123008, -1292387840, -1262259200, -1231746048, -1200857600, -1169603456, -1137992960, -1106035840, -1073741824, + -1041120704, -1008182528, -974937152, -941394880, -907565824, -873460288, -839088704, -804461504, -769589312, -734482624, + -699152256, -663608960, -627863424, -591926720, -555809664, -519523328, -483078688, -446486976, -409759200, -372906624, + -335940480, -298871968, -261712432, -224473168, -187165520, -149800880, -112390616, -74946096, -37478756, 0, + 37478756, 74946096, 112390616, 149800880, 187165520, 224473168, 261712432, 298871968, 335940480, 372906624, + 409759200, 446486976, 483078688, 519523328, 555809664, 591926720, 627863424, 663608960, 699152256, 734482624, + 769589312, 804461504, 839088704, 873460288, 907565824, 941394880, 974937152, 1008182528, 1041120704, 1073741824, + 1106035840, 1137992960, 1169603456, 1200857600, 1231746048, 1262259200, 1292387840, 1322123008, 1351455232, 1380375808, + 1408876032, 1436947072, 1464580352, 1491767552, 1518500224, 1544770432, 1570570112, 1595891456, 1620726400, 1645067904, + 1668908160, 1692240128, 1715056768, 1737350784, 1759115648, 1780344576, 1801031296, 1821169408, 1840752768, 1859775488, + 1878231552, 1896115456, 1913421952, 1930145536, 1946281216, 1961824000, 1976769024, 1991112192, 2004848640, 2017974528, + 2030485632, 2042378368, 2053648768, 2064293760, 2074309888, 2083694208, 2092443776, 2100556032, 2108028288, 2114858496, + 2121044608, 2126584448, 2131476608, 2135719552, 2139311872, 2142252544, 2144540544, 2146175488, 2147156608, 2147483647, + 2147156608, 2146175488, 2144540544, 2142252544, 2139311872, 2135719552, 2131476608, 2126584448, 2121044608, 2114858496, + 2108028288, 2100556032, 2092443776, 2083694208, 2074309888, 2064293760, 2053648768, 2042378368, 2030485760, 2017974528, + 2004848768, 1991112192, 1976769152, 1961824000, 1946281088, 1930145536, 1913422080, 1896115456, 1878231552, 1859775360, + 1840752768, 1821169280, 1801031296, 1780344704, 1759115520, 1737350784, 1715056640, 1692240256, 1668908416, 1645067904, + 1620726528, 1595891328, 1570570112, 1544770688, 1518500224, 1491767680, 1464580224, 1436947072, 1408875904, 1380375936, + 1351455488, 1322122880, 1292388096, 1262259072, 1231746048, 1200857856, 1169603456, 1137993088, 1106035712, 1073741952, + 1041120576, 1008182528, 974937344, 941394816, 907565952, 873460160, 839088768, 804461760, 769589248, 734482816, + 699152192, 663609024, 627863744, 591926720, 555809856, 519523232, 483078848, 446486784, 409759232, 372906880, + 335940416, 298872128, 261712288, 224473232, 187165824, 149800880, 112390808, 74946000, 37478868, -187, }; Word32 cosine_table_Q31 [181] = { - 2147483647, - 2147156608, 2146175488, 2144540544, 2142252544, 2139311872, 2135719552, 2131476608, 2126584448, 2121044608, 2114858496, - 2108028288, 2100556032, 2092443776, 2083694208, 2074309888, 2064293760, 2053648896, 2042378368, 2030485632, 2017974528, - 2004848640, 1991112192, 1976769152, 1961823872, 1946281088, 1930145536, 1913421952, 1896115456, 1878231552, 1859775360, - 1840752768, 1821169408, 1801031296, 1780344704, 1759115648, 1737350784, 1715056768, 1692240256, 1668908160, 1645067904, - 1620726528, 1595891328, 1570570112, 1544770432, 1518500224, 1491767552, 1464580352, 1436946944, 1408876032, 1380375936, - 1351455360, 1322123008, 1292387968, 1262259328, 1231746048, 1200857600, 1169603456, 1137992960, 1106035840, 1073741760, - 1041120640, 1008182592, 974937216, 941394880, 907565760, 873460224, 839088832, 804461632, 769589376, 734482688, - 699152256, 663608896, 627863616, 591926784, 555809728, 519523328, 483078688, 446486880, 409759328, 372906720, - 335940512, 298871968, 261712384, 224473072, 187165664, 149800960, 112390648, 74946096, 37478708, -93, - -37478640, -74946024, -112390576, -149800896, -187165584, -224473264, -261712304, -298871904, -335940416, -372906656, - -409759264, -446486816, -483078592, -519523264, -555809664, -591926720, -627863552, -663608832, -699152192, -734482624, - -769589312, -804461568, -839088768, -873460160, -907565952, -941394816, -974936960, -1008182528, -1041120576, -1073741952, - -1106035712, -1137993088, -1169603456, -1200857472, -1231746048, -1262259072, -1292388096, -1322122880, -1351455104, -1380375936, - -1408875904, -1436947200, -1464580224, -1491767296, -1518500224, -1544770304, -1570570240, -1595891328, -1620726656, -1645067904, - -1668908032, -1692240256, -1715056640, -1737350912, -1759115648, -1780344448, -1801031296, -1821169280, -1840752768, -1859775360, - -1878231680, -1896115456, -1913421824, -1930145536, -1946281088, -1961824000, -1976769152, -1991112064, -2004848768, -2017974528, - -2030485760, -2042378240, -2053648768, -2064293760, -2074309888, -2083694208, -2092443776, -2100556032, -2108028288, -2114858496, - -2121044608, -2126584448, -2131476608, -2135719552, -2139311744, -2142252544, -2144540544, -2146175488, -2147156608, -2147483647, + 2147483647, + 2147156608, 2146175488, 2144540544, 2142252544, 2139311872, 2135719552, 2131476608, 2126584448, 2121044608, 2114858496, + 2108028288, 2100556032, 2092443776, 2083694208, 2074309888, 2064293760, 2053648896, 2042378368, 2030485632, 2017974528, + 2004848640, 1991112192, 1976769152, 1961823872, 1946281088, 1930145536, 1913421952, 1896115456, 1878231552, 1859775360, + 1840752768, 1821169408, 1801031296, 1780344704, 1759115648, 1737350784, 1715056768, 1692240256, 1668908160, 1645067904, + 1620726528, 1595891328, 1570570112, 1544770432, 1518500224, 1491767552, 1464580352, 1436946944, 1408876032, 1380375936, + 1351455360, 1322123008, 1292387968, 1262259328, 1231746048, 1200857600, 1169603456, 1137992960, 1106035840, 1073741760, + 1041120640, 1008182592, 974937216, 941394880, 907565760, 873460224, 839088832, 804461632, 769589376, 734482688, + 699152256, 663608896, 627863616, 591926784, 555809728, 519523328, 483078688, 446486880, 409759328, 372906720, + 335940512, 298871968, 261712384, 224473072, 187165664, 149800960, 112390648, 74946096, 37478708, -93, + -37478640, -74946024, -112390576, -149800896, -187165584, -224473264, -261712304, -298871904, -335940416, -372906656, + -409759264, -446486816, -483078592, -519523264, -555809664, -591926720, -627863552, -663608832, -699152192, -734482624, + -769589312, -804461568, -839088768, -873460160, -907565952, -941394816, -974936960, -1008182528, -1041120576, -1073741952, + -1106035712, -1137993088, -1169603456, -1200857472, -1231746048, -1262259072, -1292388096, -1322122880, -1351455104, -1380375936, + -1408875904, -1436947200, -1464580224, -1491767296, -1518500224, -1544770304, -1570570240, -1595891328, -1620726656, -1645067904, + -1668908032, -1692240256, -1715056640, -1737350912, -1759115648, -1780344448, -1801031296, -1821169280, -1840752768, -1859775360, + -1878231680, -1896115456, -1913421824, -1930145536, -1946281088, -1961824000, -1976769152, -1991112064, -2004848768, -2017974528, + -2030485760, -2042378240, -2053648768, -2064293760, -2074309888, -2083694208, -2092443776, -2100556032, -2108028288, -2114858496, + -2121044608, -2126584448, -2131476608, -2135719552, -2139311744, -2142252544, -2144540544, -2146175488, -2147156608, -2147483647, }; + #undef WMC_TOOL_SKIP diff --git a/lib_rend/ivas_rom_rend.h b/lib_rend/ivas_rom_rend.h index 7f9cfb57adb40b59f5d130ccb44ac26c50c04c42..6c966e4578a89ef5ef383f06fd5fdd07cf47308a 100644 --- a/lib_rend/ivas_rom_rend.h +++ b/lib_rend/ivas_rom_rend.h @@ -93,17 +93,6 @@ extern const Word16 HRTF_MODEL_N_CPTS_VAR[HRTF_MODEL_N_SECTIONS]; extern const Word32 SincTable_fx[321]; -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*/ - -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*/ /*----------------------------------------------------------------------------------* * t-design and SN3D normalization table *----------------------------------------------------------------------------------*/ @@ -121,8 +110,6 @@ extern const Word32 ivas_reverb_default_fc_fx[]; /*Q-16*/ extern const Word32 ivas_reverb_default_RT60_fx[]; /*Q-26*/ extern const Word32 ivas_reverb_default_DSR_fx[]; /*Q-30*/ -extern const Word32 release_cnst_table[4][201]; // Q31 - /*----------------------------------------------------------------------------------* * Renderer SBA & MC enc/dec matrices *----------------------------------------------------------------------------------*/ diff --git a/lib_rend/ivas_rom_rend_fx.c b/lib_rend/ivas_rom_rend_fx.c index d14be4afe9ba42309e1161e95b0740e249a70a62..6589adcf73587f10293187204be4bb40ac147f52 100644 --- a/lib_rend/ivas_rom_rend_fx.c +++ b/lib_rend/ivas_rom_rend_fx.c @@ -206,285 +206,6 @@ const Word32 SincTable_fx[321] /*Q31*/ = { 8716980, 8185692, 7649294, 7108665, 6564643, 6017979, 5469361, 4919434, 4368840, 3818118, 3267783, 2718370, 2170290, 1624034, 1079948, 538481, }; -const Word32 defaultHRIR_coherence_48kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-27*/ = { - 131936432,125285536,105934832,77097344,45729324,19356880,2523696,0,0, - 0,1602425,4763253,5796595,5698884,5608690,5175704,3880368,2303444, - 1553033,1902670,2661537,3300414,3919560,4475624,4485288,3976468,3688169, - 3682129,3375844,2619661,1976758,1906026,2165066,2186943,1765500,1162325, - 671759,348160,140123,27783,0,0,0,148981,534991, - 939926,1281242,1547798,1665910,1550617,1228897,835102,478486,185757, - 0,0,0,0,4294,124554,284273,410840,479828, - 507343,493652,417417,278367,114890,0,0,0,0, - 0,0,0,0,0,29125,130728,242531,313264, - 326954,282528,204816,121735,46976,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,31943,114353,173543, - 205218,205755,176362,128043,69927,20803,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,3355,38117,83214,127372,170993,215553,257966, - 294607,327222,360643,395137,425738,452447,480096,507208,525462, - 533247,534186,526804,505463,469896,424799,372856,312190,242397, - 168711,95831,28319,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,102810,72074,0, - 226962,443858,219445,0,214882,1013209,77846,0,273535, - 1385798,289239,0,472983,1241648,688671,0,306821,870536, - 792153,0,115695,613375,552574,0,0,434462,205890, - 34762,26709,182938,117843,0 -}; -const Word32 defaultHRIR_left_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-23*/ = { - 8209721,8156956,8050127,7984940,7992858,8011649,7974747,7910306,7917252, - 8038476,8174723,8228729,8192717,8124794,8070352,8029995,7989956,7953608, - 7931152,7912210,7870745,7803402,7745101,7727896,7735563,7724331,7693670, - 7672548,7668253,7662666,7647508,7638633,7652147,7680265,7699593,7698955, - 7689828,7687614,7690835,7685852,7667229,7645042,7629506,7617787,7601639, - 7578545,7554822,7537315,7524279,7507108,7481430,7453328,7431803,7415991, - 7395254,7364820,7335141,7319069,7310202,7296948,7280120,7270700,7273946, - 7282989,7288836,7292510,7303600,7327768,7359376,7389357,7418784,7458856, - 7515186,7577119,7632232,7684091,7741771,7803922,7858506,7897295,7924793, - 7950529,7975309,7989134,7983815,7964337,7942418,7920028,7885853,7832460, - 7773178,7719675,7667640,7605540,7531820,7456659,7388182,7322718,7251305, - 7173342,7099371,7039023,6989942,6943645,6900871,6876377,6876200,6891753, - 6912280,6938008,6976184,7027514,7081939,7129159,7169768,7212416,7260113, - 7303961,7334160,7353923,7375390,7399868,7413919,7410756,7397888,7384995, - 7371128,7347783,7311469,7269433,7231533,7198642,7162562,7118413,7073358, - 7038218,7011467,6978885,6936976,6896929,6866243,6838636,6804318,6763793, - 6726715,6699377,6677726,6654422,6630095,6613880,6612001,6619165,6625113, - 6629517,6642997,6668750,6697196,6718344,6734173,6753895,6779589,6802146, - 6813185,6816633,6823486,6836086,6844013,6839567,6830432,6829887,6834652, - 6833897,6825424,6817447,6817430,6823444,6827572,6826137,6824845,6832135, - 6847612,6860472,6863735,6867082,6885344,6912573,6928050,6933679,6949215, - 6980018,7009084,7024486,7037715,7065515,7103221,7130283,7141717,7156523, - 7182804,7191302,7148830,7066479,6973039,6845448,6642997,6369529,6067757, - 5757018,5407708,4989863,4529504,4091224,3695693,3270760,2711684,2000297, - 1252050,651123,273904,89170,20652,2843,209,134,134, - 125,117,92,75,75,75,58,50,50, - 58,50,41,41,50,41,41,41,41, - 41,41,41,41,41,41,41,41,41, - 41,41,41,41,41 -}; -const Word32 defaultHRIR_right_avg_power_48kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-23*/ = { - 8209721,8156956,8050144,7984965,7992850,8011640,7974756,7910323,7917252, - 8038484,8174707,8228738,8192709,8124794,8070361,8030003,7989948,7953583, - 7931127,7912202,7870737,7803402,7745101,7727896,7735563,7724331,7693679, - 7672548,7668236,7662658,7647491,7638624,7652147,7680265,7699609,7698964, - 7689820,7687597,7690827,7685844,7667229,7645050,7629472,7617779,7601639, - 7578545,7554822,7537315,7524288,7507133,7481447,7453337,7431803,7415982, - 7395229,7364812,7335141,7319077,7310185,7296931,7280120,7270700,7273955, - 7282998,7288836,7292494,7303583,7327776,7359401,7389382,7418776,7458856, - 7515186,7577127,7632241,7684082,7741787,7803939,7858523,7897295,7924793, - 7950529,7975309,7989125,7983824,7964320,7942426,7920062,7885853,7832443, - 7773194,7719675,7667640,7605556,7531829,7456675,7388199,7322726,7251305, - 7173333,7099379,7039032,6989967,6943653,6900880,6876377,6876226,6891753, - 6912271,6937999,6976184,7027514,7081931,7129151,7169768,7212416,7260122, - 7303961,7334160,7353940,7375398,7399868,7413910,7410731,7397871,7384978, - 7371145,7347791,7311477,7269450,7231542,7198633,7162554,7118413,7073358, - 7038218,7011475,6978885,6936976,6896920,6866226,6838628,6804310,6763785, - 6726707,6699369,6677709,6654414,6630095,6613889,6612010,6619148,6625071, - 6629508,6642989,6668750,6697204,6718352,6734190,6753920,6779597,6802146, - 6813210,6816641,6823495,6836095,6844030,6839559,6830457,6829904,6834677, - 6833905,6825416,6817455,6817421,6823428,6827555,6826129,6824837,6832135, - 6847620,6860472,6863735,6867082,6885336,6912582,6928059,6933679,6949232, - 6980026,7009084,7024477,7037706,7065489,7103188,7130275,7141708,7156497, - 7182812,7191285,7148847,7066488,6973047,6845439,6642997,6369529,6067757, - 5757001,5407699,4989863,4529504,4091224,3695702,3270751,2711693,2000297, - 1252050,651123,273904,89170,20652,2843,209,134,134, - 125,117,92,75,75,75,58,50,50, - 58,50,41,41,50,41,41,41,41, - 41,41,41,41,41,41,41,41,41, - 41,41,41,41,41 -}; -const Word32 defaultHRIR_coherence_32kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-27*/ = { - 131125216,129227112,119736576,105149792,87165424,65548180,45102524,26414452,12630962, - 2261837,646258,0,0,0,362790,1269699,3305916,5226035, - 5552185,5544266,5313545,5242007,4972498,4406099,3304843,2138491,1245809, - 945832,1040724,1586856,2087488,2519669,2930509,3330210,3706959,3852988, - 3845069,3506438,3230889,3049963,3020838,2972117,2692944,2226269,1634369, - 1306206,1176284,1344056,1533169,1651817,1468073,1147695,736184,393929, - 141465,23622,0,0,0,0,0,0,0, - 0,0,31004,186025,403995,663840,869999,1052669,1200174, - 1230910,1195208,1010927,774704,504121,258100,82812,13824,0, - 0,0,0,0,0,0,0,0,0, - 0,35567,94757,127104,150189,159048,139586,103616,29662, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,13287,46305,75833,95294,77980,44426,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,13153,45768,78383,106434, - 117574,114487,101871,68719,36641,6039,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,1476, - 5234,21072,40667,63619,89120,116098,144015,171932,199715, - 227901,255818,281723,304405,324941,341584,357824,373796,388962, - 403995,419296,437818,458621,488820,521301,557674,596329,636728, - 680886,727728,776315,821546,862751,897916,926773,952409,971870, - 980460,981802,955227,918049,865167,793897,713233,613106,507477, - 398224,342255,316082,334604,338228 -}; -const Word32 defaultHRIR_left_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-23*/ = { - 8747993,8732977,8657866,8592845,8534553,8549703,8574332,8613196,8612450, - 8594632,8548151,8528631,8527079,8602383,8683241,8772412,8811402,8825092, - 8787822,8745552,8699960,8676052,8653847,8634210,8606620,8577981,8553109, - 8534922,8521190,8494783,8457906,8405301,8354525,8310963,8294462,8290268, - 8294278,8284279,8267812,8241648,8222362,8207531,8203647,8196752,8187852, - 8170672,8158450,8153660,8165857,8182684,8201064,8209352,8210920,8201391, - 8193506,8188086,8186669,8185008,8178398,8165219,8147653,8126564,8107262, - 8090653,8075973,8060647,8040892,8017060,7990510,7965369,7942812,7924139, - 7905508,7885266,7858574,7828903,7797253,7770124,7745051,7723047,7698192, - 7671231,7638683,7606840,7575458,7552800,7532081,7514280,7493736,7472068, - 7448614,7429295,7412736,7405756,7399180,7393182,7382990,7372018,7362119, - 7358680,7359552,7368629,7377118,7384718,7391127,7398953,7413675,7435679, - 7462522,7492302,7520043,7544714,7568412,7592915,7621662,7651325,7681599, - 7702873,7719423,7728886,7735043,7740672,7747517,7751812,7754412,7743650, - 7728089,7705339,7680970,7656341,7632308,7603568,7571683,7527366,7481606, - 7433699,7390347,7348345,7307132,7260525,7210319,7153108,7097458,7044149, - 6995864,6948351,6898883,6845179,6788657,6732512,6680016,6632990,6592154, - 6553113,6515029,6478094,6441947,6416664,6397714,6388260,6386465,6386851, - 6388319,6391700,6396364,6411102,6429029,6451720,6471844,6489796,6501641, - 6513435,6525204,6542518,6559405,6575670,6584344,6589771,6589813,6590845, - 6592531,6595845,6596365,6592707,6580091,6564161,6543961,6524642,6505902, - 6486113,6462969,6434800,6400113,6364034,6328861,6297445,6268521,6239597, - 6208098,6172732,6136241,6100909,6071330,6044722,6020084,5990858,5959116, - 5923599,5889046,5855634,5825838,5795177,5763938,5725518,5685253,5642211, - 5600763,5560540,5523688,5486661,5449525,5408043,5366612,5325264,5291257, - 5260940,5238031,5214778,5191290,5165126,5142795,5126186,5122067,5121799, - 5124433,5124877,5123837,5133241,5151268,5182239,5223192,5269715,5328527, - 5411331,5510141,5612029,5649811,5591443,5269488,4824515,4151102,3472472, - 2790361,2355655,2029229,1865232,1832432 -}; -const Word32 defaultHRIR_right_avg_power_32kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-23*/ = { - 8747984,8732969,8657857,8592837,8534561,8549686,8574315,8613188,8612450, - 8594632,8548151,8528622,8527070,8602392,8683241,8772404,8811402,8825109, - 8787822,8745552,8699951,8676044,8653847,8634226,8606620,8577964,8553100, - 8534914,8521190,8494808,8457931,8405310,8354525,8310963,8294471,8290276, - 8294278,8284287,8267820,8241639,8222362,8207540,8203664,8196752,8187826, - 8170663,8158450,8153685,8165873,8182684,8201064,8209360,8210945,8201416, - 8193531,8188095,8186669,8185008,8178398,8165219,8147653,8126539,8107237, - 8090644,8075973,8060664,8040875,8017043,7990510,7965369,7942812,7924122, - 7905499,7885283,7858574,7828903,7797270,7770116,7745034,7723056,7698192, - 7671222,7638675,7606840,7575466,7552809,7532089,7514280,7493736,7472068, - 7448597,7429287,7412753,7405756,7399163,7393174,7382981,7372009,7362111, - 7358680,7359560,7368637,7377126,7384718,7391135,7398970,7413692,7435679, - 7462514,7492293,7520026,7544705,7568403,7592915,7621688,7651341,7681582, - 7702873,7719423,7728877,7735026,7740663,7747517,7751829,7754437,7743650, - 7728080,7705330,7680970,7656349,7632308,7603568,7571700,7527383,7481623, - 7433716,7390363,7348353,7307132,7260525,7210327,7153125,7097475,7044149, - 6995872,6948359,6898883,6845179,6788657,6732520,6680024,6632990,6592154, - 6553113,6515037,6478102,6441947,6416664,6397714,6388269,6386457,6386843, - 6388327,6391700,6396347,6411102,6429029,6451712,6471844,6489796,6501624, - 6513427,6525213,6542518,6559405,6575653,6584327,6589763,6589813,6590845, - 6592531,6595836,6596365,6592716,6580099,6564169,6543978,6524642,6505894, - 6486122,6462994,6434817,6400122,6364034,6328852,6297428,6268521,6239597, - 6208090,6172723,6136241,6100909,6071330,6044722,6020076,5990842,5959107, - 5923599,5889037,5855617,5825829,5795169,5763921,5725518,5685253,5642194, - 5600755,5560548,5523688,5486661,5449508,5408026,5366603,5325256,5291257, - 5260949,5238040,5214778,5191281,5165134,5142795,5126194,5122075,5121799, - 5124441,5124877,5123854,5133241,5151259,5182230,5223192,5269715,5328527, - 5411340,5510149,5612037,5649820,5591435,5269472,4824498,4151094,3472472, - 2790378,2355663,2029237,1865240,1832432 -}; -const Word32 defaultHRIR_coherence_16kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-27*/ = { - 130123416,130123416,128225040,123478832,118732624,113118568,104033232,94947768,85862304, - 75063144,64263984,53464828,43914296,34675820,25437480,17993766,11746601,5499437, - 1532229,985023,437818,0,0,0,0,0,0, - 0,343865,773496,1203261,2004810,3054258,4103707,4777480,4887673, - 4998000,5066316,4966727,4867271,4767816,4765534,4763253,4760971,4569174, - 4329998,4090822,3659312,3099355,2539533,2037290,1621350,1205543,880065, - 916304,952677,988916,1233058,1477200,1721342,1912602,2090441,2268413, - 2427327,2573490,2719788,2859643,2989834,3120025,3219078,3193576,3168075, - 3142574,2987686,2832665,2677778,2583691,2504771,2425851,2397128,2401692, - 2406255,2356594,2225464,2094333,1933137,1651280,1369423,1087566,924357, - 761148,597940,625051,699677,774302,854295,937779,1021128,1026631, - 915230,803830,670014,446676,223338,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,5100,30735, - 56371,81872,173140,264408,355542,419698,477144,534455,552037, - 543044,533918,485599,378494,271254,173946,115964,57982,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0, - 0,0,671,1476,2415,99723,261321,423054,646795, - 963549,1280302,1632087,2124129,2616037,3108080,3841982,4575885,5309922, - 6280181,7309766,8339216,8750996,8750996 -}; -const Word32 defaultHRIR_left_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-23*/ = { - 9335246,9335246,9316514,9269680,9222847,9180350,9155201,9130044,9104894, - 9126688,9148473,9170267,9191549,9212688,9233844,9234423,9221295,9208167, - 9191205,9168497,9145789,9127997,9129884,9131780,9133676,9164823,9195978, - 9227125,9267550,9310290,9353038,9385225,9410374,9435531,9445170,9431538, - 9417907,9399855,9364128,9328409,9292682,9270670,9248667,9226655,9215783, - 9207688,9199593,9183605,9162356,9141108,9116244,9085961,9055678,9028608, - 9014432,9000255,8986078,8975962,8965845,8955728,8926108,8891606,8857103, - 8819145,8778896,8738639,8710806,8701604,8692401,8686227,8692209,8698190, - 8704171,8686706,8669232,8651767,8623917,8593466,8563024,8543554,8531399, - 8519252,8509748,8504203,8498667,8489716,8467083,8444459,8421835,8399773, - 8377711,8355649,8351698,8352268,8352847,8355833,8360430,8365027,8363484, - 8352721,8341959,8331028,8319460,8307884,8296308,8292063,8287827,8283582, - 8271142,8256647,8242159,8221389,8196442,8171494,8150547,8135607,8120659, - 8106465,8095225,8083992,8072760,8043073,8013394,7983706,7949422,7913997, - 7878564,7853893,7836394,7818904,7801472,7784141,7766811,7744782,7703972, - 7663169,7622359,7580802,7539253,7497696,7474266,7455367,7436467,7415496, - 7393140,7370784,7338471,7291235,7244007,7197551,7154232,7110914,7067595, - 7046615,7025627,7004647,6977485,6948779,6920073,6878751,6829015,6779278, - 6733644,6694184,6654724,6618804,6597044,6575284,6553524,6518183,6482842, - 6447501,6401632,6353137,6304634,6267229,6237215,6207201,6181045,6160677, - 6140310,6115580,6073427,6031275,5989122,5942817,5896503,5850198,5825150, - 5805428,5785707,5765742,5745626,5725510,5693398,5643285,5593180,5544358, - 5500720,5457091,5413454,5404126,5394797,5385469,5366930,5346085,5325239, - 5282164,5224274,5166376,5115566,5075376,5035186,5002731,5001238,4999736, - 4998243,4969436,4940630,4911823,4847290,4773822,4700355,4646282,4605153, - 4564023,4540250,4542523,4544788,4536869,4488241,4439612,4390983,4285488, - 4179984,4074489,4025282,3990150,3955019,3974925,4031523,4088129,4108127, - 4073222,4038317,3957300,3691818,3426335,3160861,2774481,2388110,2001740, - 1708239,1437966,1167685,1059581,1059581 -}; -const Word32 defaultHRIR_right_avg_power_16kHz_fx[LR_IAC_LENGTH_NR_FC] /*Q-23*/ = { - 9335246,9335246,9316514,9269689,9222855,9180358,9155201,9130035,9104869, - 9126663,9148465,9170258,9191540,9212688,9233827,9234415,9221295,9208175, - 9191213,9168488,9145755,9127963,9129867,9131772,9133676,9164831,9195978, - 9227133,9267550,9310281,9353021,9385200,9410357,9435506,9445153,9431522, - 9417899,9399855,9364119,9328384,9292648,9270653,9248658,9226663,9215792, - 9207688,9199593,9183596,9162348,9141100,9116236,9085953,9055678,9028617, - 9014432,9000255,8986070,8975962,8965853,8955745,8926116,8891614,8857103, - 8819145,8778888,8738631,8710789,8701587,8692385,8686219,8692200,8698181, - 8704162,8686697,8669232,8651775,8623917,8593466,8563016,8543546,8531390, - 8519244,8509739,8504203,8498675,8489724,8467100,8444468,8421844,8399773, - 8377703,8355641,8351681,8352252,8352830,8355817,8360414,8365019,8363475, - 8352721,8341959,8331037,8319469,8307893,8296316,8292072,8287835,8283591, - 8271142,8256647,8242151,8221381,8196433,8171494,8150547,8135616,8120676, - 8106482,8095250,8084009,8072777,8043081,8013385,7983698,7949405,7913972, - 7878547,7853876,7836386,7818904,7801481,7784150,7766819,7744790,7703980, - 7663161,7622350,7580793,7539244,7497696,7474258,7455358,7436459,7415487, - 7393132,7370776,7338471,7291244,7244016,7197560,7154241,7110914,7067587, - 7046607,7025627,7004647,6977485,6948770,6920064,6878742,6829006,6779270, - 6733644,6694184,6654724,6618813,6597053,6575301,6553549,6518191,6482842, - 6447492,6401623,6353137,6304643,6267229,6237215,6207201,6181037,6160677, - 6140310,6115580,6073427,6031275,5989122,5942817,5896512,5850207,5825167, - 5805445,5785723,5765750,5745626,5725493,5693382,5643276,5593180,5544375, - 5500729,5457074,5413429,5404109,5394789,5385478,5366939,5346093,5325247, - 5282172,5224282,5166384,5115574,5075384,5035195,5002739,5001238,4999736, - 4998243,4969436,4940630,4911823,4847290,4773814,4700338,4646274,4605153, - 4564023,4540258,4542523,4544788,4536878,4488249,4439612,4390983,4285480, - 4179984,4074489,4025282,3990150,3955019,3974925,4031523,4088129,4108127, - 4073222,4038317,3957292,3691809,3426327,3160844,2774473,2388110,2001740, - 1708239,1437966,1167685,1059573,1059573 -}; /*----------------------------------------------------------------------------------* * t-design and SN3D normalization table *----------------------------------------------------------------------------------*/ @@ -561,825 +282,6 @@ const Word32 ivas_reverb_default_DSR_fx[IVAS_REVERB_DEFAULT_N_BANDS] /*Q30*/ = 66, 30, 28 }; -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, - }, - - - }; - - /*----------------------------------------------------------------------------------* * Renderer SBA & MC enc/dec matrices *----------------------------------------------------------------------------------*/ diff --git a/lib_rend/ivas_rotation_fx.c b/lib_rend/ivas_rotation_fx.c index d65dab4c1f5fb5c5f155142a5afde20489e2d7a9..5d2f393bb7649b330e267aed27db447c4ef5b3d8 100644 --- a/lib_rend/ivas_rotation_fx.c +++ b/lib_rend/ivas_rotation_fx.c @@ -87,6 +87,7 @@ Word16 square_root30_q12[31] = { static ivas_error combine_external_and_head_orientations( IVAS_QUATERNION *headRotQuaternions, IVAS_VECTOR3 *listenerPos, + ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis, /* i : split rend pose prediction axis*/ EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData ); static void external_target_interpolation_fx( @@ -140,6 +141,8 @@ ivas_error ivas_headTrack_open_fx( move32(); } + ( *hHeadTrackData )->sr_pose_pred_axis = DEFAULT_AXIS; + move32(); set32_fx( ( *hHeadTrackData )->chEneIIR_fx[0], 0, MASA_FREQUENCY_BANDS ); set32_fx( ( *hHeadTrackData )->chEneIIR_fx[1], 0, MASA_FREQUENCY_BANDS ); @@ -188,103 +191,66 @@ void QuatToRotMat_fx( Word32 Rmat[3][3] /* o : real-space rotation matrix for this rotation 2*Qx-32 */ ) { - Word32 w = quat.w_fx; // Qx - move32(); - Word32 x = quat.x_fx; - move32(); - Word32 y = quat.y_fx; - move32(); - Word32 z = quat.z_fx; - move32(); - // Adding a guard bit to squared terms since 2*x is not being done in those - // statements (R[0][0], R[1][1], R[2][2]). This is done to avoid L_shl. - Word32 ww = L_shr( Mpy_32_32( w, w ), 1 ); // 2 * Qx - 31 - 1 = 2*Qx-32 - Word32 xx = L_shr( Mpy_32_32( x, x ), 1 ); - Word32 yy = L_shr( Mpy_32_32( y, y ), 1 ); - Word32 zz = L_shr( Mpy_32_32( z, z ), 1 ); - - Word32 wx = Mpy_32_32( w, x ); // 2 * Qx - 31 - Word32 wz = Mpy_32_32( w, z ); - Word32 wy = Mpy_32_32( w, y ); + IF( EQ_32( quat.w_fx, L_negate( 12582912 ) ) ) + { + assert( 0 ); + // IVAS_QUATERNION quat_local; + // Euler2Quat_fx( deg2rad( quat.x_fx ), deg2rad( quat.y_fx ), deg2rad( quat.z_fx ), &quat_local ); + // QuatToRotMat_fx( quat_local, Rmat ); + } + else + { + Word32 w = quat.w_fx; // Qx + move32(); + Word32 x = quat.x_fx; + move32(); + Word32 y = quat.y_fx; + move32(); + Word32 z = quat.z_fx; + move32(); - Word32 xy = Mpy_32_32( x, y ); - Word32 xz = Mpy_32_32( x, z ); + // Adding a guard bit to squared terms since 2*x is not being done in those + // statements (R[0][0], R[1][1], R[2][2]). This is done to avoid L_shl. + Word32 ww = L_shr( Mpy_32_32( w, w ), 1 ); // 2 * Qx - 31 - 1 = 2*Qx-32 + Word32 xx = L_shr( Mpy_32_32( x, x ), 1 ); + Word32 yy = L_shr( Mpy_32_32( y, y ), 1 ); + Word32 zz = L_shr( Mpy_32_32( z, z ), 1 ); - Word32 yz = Mpy_32_32( y, z ); + Word32 wx = Mpy_32_32( w, x ); // 2 * Qx - 31 + Word32 wz = Mpy_32_32( w, z ); + Word32 wy = Mpy_32_32( w, y ); - Rmat[0][0] = L_sub( L_sub( L_add( ww, xx ), yy ), zz ); // 2 * Qx - 31 - 1 = 2*Qx-32 - move32(); - Rmat[0][1] = L_sub( xy, wz ); - move32(); - Rmat[0][2] = L_add( xz, wy ); - move32(); + Word32 xy = Mpy_32_32( x, y ); + Word32 xz = Mpy_32_32( x, z ); - Rmat[1][0] = L_add( xy, wz ); // 2 * Qx - 32 - move32(); - Rmat[1][1] = L_sub( L_add( L_sub( ww, xx ), yy ), zz ); - move32(); - Rmat[1][2] = L_sub( yz, wx ); - move32(); - - Rmat[2][0] = L_sub( xz, wy ); // 2 * Qx - 32 - move32(); - Rmat[2][1] = L_add( yz, wx ); - move32(); - Rmat[2][2] = L_add( L_sub( L_sub( ww, xx ), yy ), zz ); - move32(); - - return; -} + Word32 yz = Mpy_32_32( y, z ); + Rmat[0][0] = L_sub( L_sub( L_add( ww, xx ), yy ), zz ); // 2 * Qx - 31 - 1 = 2*Qx-32 + move32(); + Rmat[0][1] = L_sub( xy, wz ); + move32(); + Rmat[0][2] = L_add( xz, wy ); + move32(); -void Euler2Quat_fx( - const Word32 yaw, /* i : yaw (x) Q22 */ - const Word32 pitch, /* i : pitch (y) Q22 */ - const Word32 roll, /* i : roll (z) Q22 */ - IVAS_QUATERNION *quat /* o : quaternion describing the rotation Q19 */ -) -{ - Word16 cr = getCosWord16( extract_l( L_shr_r( roll, 10 ) ) ); // Q14 - Word16 sr = getSinWord16( extract_l( L_shr_r( roll, 10 ) ) ); - Word16 cp = getCosWord16( extract_l( L_shr_r( pitch, 10 ) ) ); - Word16 sp = getSinWord16( extract_l( L_shr_r( pitch, 10 ) ) ); - Word16 cy = getCosWord16( extract_l( L_shr_r( yaw, 10 ) ) ); - Word16 sy = getSinWord16( extract_l( L_shr_r( yaw, 10 ) ) ); - quat->w_fx = L_shr_r( L_add( Mpy_32_16_1( L_mult0( cr, cp ), cy ), Mpy_32_16_1( L_mult0( sr, sp ), sy ) ), 5 ); // Q19 - move32(); - quat->x_fx = L_shr_r( L_sub( Mpy_32_16_1( L_mult0( sr, cp ), cy ), Mpy_32_16_1( L_mult0( cr, sp ), sy ) ), 5 ); // Q19 - move32(); - quat->y_fx = L_shr_r( L_add( Mpy_32_16_1( L_mult0( sr, cp ), sy ), Mpy_32_16_1( L_mult0( cr, sp ), cy ) ), 5 ); // Q19 - move32(); - quat->z_fx = L_shr_r( L_sub( Mpy_32_16_1( L_mult0( cr, cp ), sy ), Mpy_32_16_1( L_mult0( sr, sp ), cy ) ), 5 ); // Q19 - move32(); + Rmat[1][0] = L_add( xy, wz ); // 2 * Qx - 32 + move32(); + Rmat[1][1] = L_sub( L_add( L_sub( ww, xx ), yy ), zz ); + move32(); + Rmat[1][2] = L_sub( yz, wx ); + move32(); + Rmat[2][0] = L_sub( xz, wy ); // 2 * Qx - 32 + move32(); + Rmat[2][1] = L_add( yz, wx ); + move32(); + Rmat[2][2] = L_add( L_sub( L_sub( ww, xx ), yy ), zz ); + move32(); + } return; } -/*------------------------------------------------------------------------- - * deg2rad() - * - * Converts degrees to normalized radians - *------------------------------------------------------------------------*/ -Word32 deg2rad_fx( - Word32 degrees // Q23 -) -{ - WHILE( GE_32( degrees, DEGREE_180 ) ) - { - degrees = L_sub( degrees, DEGREE_360 ); - } - WHILE( LE_32( degrees, -DEGREE_180 ) ) - { - degrees = L_add( degrees, DEGREE_360 ); - } - - return Mpy_32_32( PI_OVER_180_FX, degrees ); // Q23 -} - /*------------------------------------------------------------------------- * rad2deg() * @@ -757,8 +723,7 @@ void rotateFrame_shd( } /* calculate ambisonics rotation matrices for the previous and current frames */ - SHrotmatgen_fx( SHrotmat_prev, hCombinedOrientationData->Rmat_prev_fx, shd_rot_max_order ); - + SHrotmatgen_fx( SHrotmat_prev, hCombinedOrientationData->Rmat_prev_fx[0], shd_rot_max_order ); SHrotmatgen_fx( SHrotmat /*Q14*/, hCombinedOrientationData->Rmat_fx[hCombinedOrientationData->subframe_idx], shd_rot_max_order ); FOR( i = 0; i < subframe_len; i++ ) @@ -817,9 +782,9 @@ void rotateFrame_shd( /* move Rmat to Rmat_prev */ FOR( i = 0; i < 3; i++ ) { - MVR2R_WORD32( + Copy32( hCombinedOrientationData->Rmat_fx[subframe_idx][i], - hCombinedOrientationData->Rmat_prev_fx[i], + hCombinedOrientationData->Rmat_prev_fx[0][i], 3 ); // Q14 } @@ -918,8 +883,7 @@ void rotateFrame_sd( } /* gains for previous subframe rotation */ - rotateAziEle_fx( extract_l( L_shr( hTransSetup.ls_azimuth_fx[ch_in_woLFE], Q22 ) ), extract_l( L_shr( hTransSetup.ls_elevation_fx[ch_in_woLFE], Q22 ) ), &azimuth, &elevation, hCombinedOrientationData->Rmat_prev_fx, hTransSetup.is_planar_setup ); - + rotateAziEle_fx( extract_l( L_shr( hTransSetup.ls_azimuth_fx[ch_in_woLFE], Q22 ) ), extract_l( L_shr( hTransSetup.ls_elevation_fx[ch_in_woLFE], Q22 ) ), &azimuth, &elevation, hCombinedOrientationData->Rmat_prev_fx[0], hTransSetup.is_planar_setup ); test(); test(); IF( hEFAPdata != NULL && ( NE_16( extract_l( L_shr( hTransSetup.ls_azimuth_fx[ch_in_woLFE], Q22 ) ), azimuth ) || NE_16( extract_l( L_shr( hTransSetup.ls_elevation_fx[ch_in_woLFE], Q22 ) ), elevation ) ) ) @@ -1011,15 +975,15 @@ void rotateFrame_sd( /* move Rmat to Rmat_prev */ FOR( i = 0; i < 3; i++ ) { - MVR2R_WORD32( + Copy32( hCombinedOrientationData->Rmat_fx[hCombinedOrientationData->subframe_idx][i], // Q30 - hCombinedOrientationData->Rmat_prev_fx[i], + hCombinedOrientationData->Rmat_prev_fx[0][i], 3 ); } /* copy to output */ FOR( ch_out = 0; ch_out < nchan; ch_out++ ) { - MVR2R_WORD32( &output_tmp_fx[ch_out][offset], &output[ch_out][offset], subframe_len ); // Q11 + Copy32( &output_tmp_fx[ch_out][offset], &output[ch_out][offset], subframe_len ); // Q11 } pop_wmops(); @@ -1209,6 +1173,9 @@ void rotateFrame_sd_cldfb_fixed( IF( hEFAPdata != NULL && ( NE_16( extract_l( L_shr( hOutputSetup->ls_azimuth_fx[n], Q22 ) ), azimuth ) || NE_16( extract_l( L_shr( hOutputSetup->ls_elevation_fx[n], Q22 ) ), elevation ) ) ) { efap_determine_gains_fx( hEFAPdata, gains_fx[n], L_shl( azimuth, Q22 ), L_shl( elevation, Q22 ), EFAP_MODE_EFAP ); +#ifdef FIX_1835_REVERB_ACTIVATION + scale_sig32( gains_fx[n], hEFAPdata->numSpk, Q1 ); // gains_fx: Q31 +#endif } ELSE { @@ -1366,6 +1333,7 @@ ivas_error ivas_combined_orientation_open( Word16 j; IVAS_QUATERNION identity; IVAS_VECTOR3 origo; + Word16 pos_idx; identity.w_fx = ONE_IN_Q31; move32(); identity.x_fx = 0; @@ -1397,16 +1365,8 @@ ivas_error ivas_combined_orientation_open( move32(); ( *hCombinedOrientationData )->interpolationIncrement_fx = ONE_IN_Q30; // Q30 move32(); - IF( EQ_16( num_subframes, 1 ) ) - { - ( *hCombinedOrientationData )->maximumFramesToTargetOrientation = 2000; - move16(); - } - ELSE - { - ( *hCombinedOrientationData )->maximumFramesToTargetOrientation = 500; - move16(); - } + ( *hCombinedOrientationData )->maximumFramesToTargetOrientation = 500; + move16(); ( *hCombinedOrientationData )->lrSwitchedNext = 0; move16(); ( *hCombinedOrientationData )->lrSwitchedCurrent = 0; @@ -1435,13 +1395,22 @@ ivas_error ivas_combined_orientation_open( } } - FOR( j = 0; j < 3; j++ ) + FOR( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) { - set32_fx( ( *hCombinedOrientationData )->Rmat_prev_fx[j], 0, 3 ); - ( *hCombinedOrientationData )->Rmat_prev_fx[j][j] = ONE_IN_Q30; - move32(); + FOR( j = 0; j < 3; j++ ) + { + set32_fx( ( *hCombinedOrientationData )->Rmat_prev_fx[pos_idx][j], 0, 3 ); + ( *hCombinedOrientationData )->Rmat_prev_fx[pos_idx][j][j] = ONE_IN_Q30; + move32(); + } } - ( *hCombinedOrientationData )->Quaternion_prev_extOrientation = identity; + ( *hCombinedOrientationData )->sr_pose_pred_axis = DEFAULT_AXIS; + ( *hCombinedOrientationData )->sr_low_res_flag = 0; + move32(); + move16(); + + ( *hCombinedOrientationData ) + ->Quaternion_prev_extOrientation = identity; ( *hCombinedOrientationData )->Quaternion_frozen_ext = identity; ( *hCombinedOrientationData )->Quaternion_frozen_head = identity; set_zero_fx( ( *hCombinedOrientationData )->chEneIIR_fx[0], MASA_FREQUENCY_BANDS ); @@ -1503,6 +1472,7 @@ ivas_error combine_external_and_head_orientations_dec( COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ ) { + ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; IVAS_QUATERNION *pHeadRotQuaternion = NULL; IVAS_VECTOR3 *listenerPos = NULL; @@ -1510,8 +1480,14 @@ ivas_error combine_external_and_head_orientations_dec( { pHeadRotQuaternion = hHeadTrackData->Quaternions; listenerPos = hHeadTrackData->Pos; + sr_pose_pred_axis = hHeadTrackData->sr_pose_pred_axis; + } + ELSE + { + sr_pose_pred_axis = DEFAULT_AXIS; } return combine_external_and_head_orientations( pHeadRotQuaternion, listenerPos, + sr_pose_pred_axis, hExtOrientationData, hCombinedOrientationData ); } @@ -1528,10 +1504,13 @@ ivas_error combine_external_and_head_orientations_rend( COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ ) { + ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; IVAS_QUATERNION *headRotQuaternions = NULL; IVAS_VECTOR3 *listenerPos = NULL; Word16 i; + sr_pose_pred_axis = DEFAULT_AXIS; + IF( hHeadTrackData != NULL ) { IF( hHeadTrackData->headRotEnabled ) @@ -1539,6 +1518,7 @@ ivas_error combine_external_and_head_orientations_rend( headRotQuaternions = hHeadTrackData->headPositions; listenerPos = hHeadTrackData->Pos; } + sr_pose_pred_axis = hHeadTrackData->sr_pose_pred_axis; } ELSE IF( hExtOrientationData != NULL ) { @@ -1554,6 +1534,7 @@ ivas_error combine_external_and_head_orientations_rend( } return combine_external_and_head_orientations( headRotQuaternions, listenerPos, + sr_pose_pred_axis, hExtOrientationData, hCombinedOrientationData ); } @@ -1567,6 +1548,7 @@ ivas_error combine_external_and_head_orientations_rend( ivas_error combine_external_and_head_orientations( IVAS_QUATERNION *headRotQuaternions, /* i : quaternions for head rotation */ IVAS_VECTOR3 *listenerPos, /* i : listener position */ + ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis, /* i : split rend pose prediction axis */ EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, /* i : external orientation handle */ COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ ) @@ -1914,6 +1896,8 @@ ivas_error combine_external_and_head_orientations( hCombinedOrientationData->Quaternions[i].q_fact = add( hCombinedOrientationData->Quaternions[i].q_fact, l_shift ); move16(); } + + hCombinedOrientationData->sr_pose_pred_axis = sr_pose_pred_axis; return IVAS_ERR_OK; } @@ -2222,7 +2206,7 @@ static Word32 SHrot_w_fx( IF( m == 0 ) { - printf( "ERROR should not be called\n" ); + assert( 0 && "ERROR should not be called\n" ); return 0; } ELSE @@ -2420,7 +2404,7 @@ void ivas_combined_orientation_update_index( Word16 exp, div_result; IF( hCombinedOrientationData != NULL ) { - IF( EQ_16( hCombinedOrientationData->num_subframes, 1 ) ) + IF( EQ_16( hCombinedOrientationData->num_subframes, 1 ) || hCombinedOrientationData->sr_low_res_flag ) { /* only one orientation available anyway or split rendering with low resolution*/ hCombinedOrientationData->subframe_idx = 0; @@ -2477,7 +2461,7 @@ void ivas_combined_orientation_update_start_index( { IF( hCombinedOrientationData != NULL ) { - IF( EQ_16( hCombinedOrientationData->num_subframes, 1 ) ) + IF( EQ_16( hCombinedOrientationData->num_subframes, 1 ) || hCombinedOrientationData->sr_low_res_flag ) { /* only one orientation available anyway or split rendering with low resolution*/ hCombinedOrientationData->subframe_idx = 0; diff --git a/lib_rend/ivas_shoebox_fx.c b/lib_rend/ivas_shoebox_fx.c index 0156e70b59727210b58433ce2e2f6b7dc99edbc0..fb580de75d104ee5fde02b1f3c39652b9ead6984 100644 --- a/lib_rend/ivas_shoebox_fx.c +++ b/lib_rend/ivas_shoebox_fx.c @@ -35,6 +35,7 @@ #include #include "ivas_prot_rend_fx.h" #include "ivas_stat_rend.h" +#include "ivas_prot_fx.h" #include "ivas_cnst.h" #include "prot_fx.h" #include "wmc_auto.h" diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index 9f853102d9c6295a892f855d916b682e32d2939b..638e928f17b44296dffeea6c8203702732610ec4 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -39,7 +39,7 @@ #include "ivas_stat_com.h" // note: needed for DIRAC_DEC_BIN_HANDLE until #156 is solved #include "stat_com.h" /* Note: Currently needed for CLDFB. */ #include "common_api_types.h" - +#include "isar_stat.h" /*----------------------------------------------------------------------------------* * Output configuration for renderer (e.g. DirAC, MASA, Binaural Renderer...) @@ -606,6 +606,24 @@ typedef struct ivas_diffuse_distribution_data_structure } DIFFUSE_DISTRIBUTION_DATA, *DIFFUSE_DISTRIBUTION_HANDLE; +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF +typedef struct ivas_hrtfs_parambin_struct +{ + Word16 hrtfShCoeffsRe_fx[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; /* Q14 */ + Word16 hrtfShCoeffsIm_fx[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; /* Q14 */ + +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT + Word32 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /* Q26 */ +#else + Word32 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ +#endif + Word32 parametricReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ + Word32 parametricEarlyPartEneCorrection_fx[CLDFB_NO_CHANNELS_MAX]; /* Q28 */ + + Word16 allocatedFromFile; /* Unused variable that should not be here. Remove in cleanup. */ + +} HRTFS_PARAMBIN, *HRTFS_PARAMBIN_HANDLE; +#endif /* Parametric binaural data structure */ typedef struct ivas_dirac_dec_binaural_data_structure @@ -670,6 +688,10 @@ typedef struct ivas_dirac_dec_binaural_data_structure ivas_td_decorr_state_t *hTdDecorr; Word16 reqularizationFactor_fx; /* Q14 */ +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + HRTFS_PARAMBIN_HANDLE *phHrtfParambin; +#endif + DIFFUSE_DISTRIBUTION_HANDLE hDiffuseDist; HANDLE_DIRAC_DECORR_PARAMS h_freq_domain_decorr_ap_params; @@ -683,10 +705,9 @@ typedef struct ivas_binaural_rendering_conv_module_struct_fx Word32 ***filterTapsRightReal_fx; Word32 ***filterTapsRightImag_fx; - Word32 ***filterStatesLeftReal_fx; - Word32 ***filterStatesLeftImag_fx; - Word16 Q_filterStatesLeft; - + Word32 ****filterStatesLeftReal_fx; + Word32 ****filterStatesLeftImag_fx; + Word16 *Q_filterStates; Word16 numTapsArray[BINAURAL_CONVBANDS]; Word16 numTaps; @@ -781,6 +802,7 @@ typedef struct IVAS_QUATERNION headPositions[MAX_PARAM_SPATIAL_SUBFRAMES]; IVAS_VECTOR3 Pos[MAX_PARAM_SPATIAL_SUBFRAMES]; Word32 crossfade_fx[L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES]; /* Q31 */ + ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; ivas_orient_trk_state_t *hOrientationTracker; } IVAS_REND_HeadRotData; @@ -802,6 +824,7 @@ typedef struct ivas_binaural_head_track_struct Word16 shd_rot_max_order; ivas_orient_trk_state_t *OrientationTracker; + ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; } HEAD_TRACK_DATA, *HEAD_TRACK_DATA_HANDLE; /*----------------------------------------------------------------------------------* @@ -834,14 +857,16 @@ typedef struct ivas_combined_orientation_struct IVAS_QUATERNION Quaternion_prev_extOrientation; IVAS_QUATERNION Quaternions_ext_interpolation_start; IVAS_QUATERNION Quaternions_ext_interpolation_target; - Word32 Rmat_fx[MAX_PARAM_SPATIAL_SUBFRAMES][3][3]; /* Q30 */ - Word32 Rmat_prev_fx[3][3]; /* Q30 */ + Word32 Rmat_fx[MAX_PARAM_SPATIAL_SUBFRAMES][3][3]; /* Q30 */ + Word32 Rmat_prev_fx[MAX_HEAD_ROT_POSES][3][3]; Word32 chEneIIR_fx[2][MASA_FREQUENCY_BANDS]; /* independent of the format. MASA bands are suitable for the task and readily available in ROM. */ /* Q(q_chEneIIR) */ Word16 q_chEneIIR[2][MASA_FREQUENCY_BANDS]; Word32 procChEneIIR_fx[2][MASA_FREQUENCY_BANDS]; /* Q(q_procChEneIIR) */ Word16 q_procChEneIIR[2][MASA_FREQUENCY_BANDS]; Word16 shd_rot_max_order; IVAS_VECTOR3 listenerPos[MAX_PARAM_SPATIAL_SUBFRAMES]; + ISAR_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; + Word16 sr_low_res_flag; IVAS_QUATERNION Quaternion_frozen_ext; IVAS_QUATERNION Quaternion_frozen_head; Word8 isExtOrientationFrozen; @@ -1182,11 +1207,8 @@ typedef struct TDREND_HRFILT_FiltSet_struct ModelParams_t ModelParams; ModelEval_t ModelEval; ModelParamsITD_t ModelParamsITD; - TDREND_HRFILT_Method_t FilterMethod; /* HR filtering method */ - Word32 latency_s_fx; /* Q31 */ - const Word32 *lr_energy_and_iac_fx[3]; /* left/right energy and interaural coherence for late reverb */ - Word32 *lr_energy_and_iac_dyn_fx[3]; - + TDREND_HRFILT_Method_t FilterMethod; /* HR filtering method */ + Word32 latency_s_fx; /* Q31 */ } TDREND_HRFILT_FiltSet_t; /* Distance attenuation */ @@ -1278,8 +1300,9 @@ typedef struct ivas_binaural_td_rendering_struct TDREND_SRC_t *Sources[MAX_NUM_TDREND_CHANNELS]; Word16 Gain_fx; /* Q14 */ - TDREND_MIX_Listener_t *Listener_p; /* The virtual listener */ - TDREND_HRFILT_FiltSet_t *HrFiltSet_p; /* HR filter set */ + TDREND_MIX_Listener_t *Listener_p; /* The virtual listener */ + TDREND_HRFILT_FiltSet_t *HrFiltSet_p; /* HR filter set */ + TDREND_HRFILT_FiltSet_t **pHrFiltSet_p; /* pointer to HR filter set */ Word16 UseCommonDistAttenModel; /* Use common dist atten model (TRUE/FALSE) */ Word16 DistAttenEnabled; /* (TRUE/FALSE) */ @@ -1291,8 +1314,7 @@ typedef struct { Word32 binaural_latency_ns; BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd; - TDREND_HRFILT_FiltSet_t *hHrtfTD; - + TDREND_HRFILT_FiltSet_t **hHrtfTD; } TDREND_WRAPPER, *TDREND_WRAPPER_HANDLE; @@ -1312,8 +1334,10 @@ typedef struct ivas_hrtfs_structure UWord16 index_frequency_max_diffuse; Word16 max_num_ir; Word16 max_num_iterations; - Word16 inv_diffuse_weight_fx[MAX_INTERN_CHANNELS]; /* inverse diffuse weights array, access one inverse weight by pInvDiffuseWeight[channel] Q15 */ + Word16 inv_diffuse_weight_fx[BINAURAL_CHANNELS][MAX_INTERN_CHANNELS]; /* inverse diffuse weights array, access one inverse weight by pInvDiffuseWeight[channel] */ + Word16 same_inv_diffuse_weight; Word32 latency_s_fx; + Word16 init_from_rom; Word16 gain_lfe_fx; // Q14 } HRTFS_DATA, *HRTFS_HANDLE; /* Main Crend structure */ @@ -1321,8 +1345,8 @@ typedef struct ivas_crend_state_t { Word32 *freq_buffer_re_fx[MAX_INTERN_CHANNELS]; Word32 *freq_buffer_im_fx[MAX_INTERN_CHANNELS]; - Word32 *freq_buffer_re_diffuse_fx; - Word32 *freq_buffer_im_diffuse_fx; + Word32 *freq_buffer_re_diffuse_fx[BINAURAL_CHANNELS]; + Word32 *freq_buffer_im_diffuse_fx[BINAURAL_CHANNELS]; Word32 *prev_out_buffer_fx[BINAURAL_CHANNELS]; Word32 *lfe_delay_line_fx; Word32 m_fYaw_fx; @@ -1340,13 +1364,39 @@ typedef struct ivas_crend_state_t typedef struct ivas_binaural_crend_wrapper_struct { Word32 binaural_latency_ns; - CREND_HANDLE hCrend; + CREND_HANDLE hCrend[MAX_HEAD_ROT_POSES]; HRTFS_HANDLE hHrtfCrend; Word16 *p_io_qfactor; Word16 io_qfactor; } CREND_WRAPPER, *CREND_WRAPPER_HANDLE; +/* 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; + + Word16 numPoses; + +} BINAURAL_RENDERER, *BINAURAL_RENDERER_HANDLE; + /*------------------------------------------------------------------------------------------* * HRTF structures - hrtfs from binary files *------------------------------------------------------------------------------------------*/ @@ -1397,21 +1447,58 @@ typedef struct ivas_hrtfs_fastconv_struct Word16 allocate_init_flag; /*Memory allocation flag 0: if the hrtf pointers are allocated at application level , 1: of allocated at ivas_binaural_hrtf_open() */ - Word32 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT + Word32 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /* Q26 */ +#else + Word32 fastconvReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ +#endif Word32 fastconvReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ } HRTFS_FASTCONV, *HRTFS_FASTCONV_HANDLE; +#ifndef NONBE_FIX_991_PARAMBIN_BINARY_HRTF typedef struct ivas_hrtfs_parambin_struct { Word16 hrtfShCoeffsRe_fx[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; /* Q14 */ Word16 hrtfShCoeffsIm_fx[BINAURAL_CHANNELS][HRTF_SH_CHANNELS][HRTF_NUM_BINS]; /* Q14 */ - Word32 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT + Word32 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /* Q26 */ +#else + Word32 parametricReverberationTimes_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ +#endif Word32 parametricReverberationEneCorrections_fx[CLDFB_NO_CHANNELS_MAX]; /* Q31 */ Word32 parametricEarlyPartEneCorrection_fx[CLDFB_NO_CHANNELS_MAX]; /* Q28 */ + Word16 allocatedFromFile; + } HRTFS_PARAMBIN, *HRTFS_PARAMBIN_HANDLE; +#endif + + +typedef struct ivas_hrtfs_statistics_struct +{ + const Word32 *average_energy_l; + const Word32 *average_energy_r; + const Word32 *inter_aural_coherence; + Word32 *average_energy_l_dyn; + Word32 *average_energy_r_dyn; + Word32 *inter_aural_coherence_dyn; + int16_t fromROM; /* Flag that indicates that the pointers point to tables in ROM (controls init/dealloc).*/ +} HRTFS_STATISTICS, *HRTFS_STATISTICS_HANDLE; + + +/*----------------------------------------------------------------------------------* + * CLDFB renderer wrapper + *----------------------------------------------------------------------------------*/ + +typedef struct +{ + int32_t binaural_latency_ns; + BINAURAL_RENDERER_HANDLE hCldfbRend; + HRTFS_FASTCONV_HANDLE hHrtfFastConv; + +} CLDFB_REND_WRAPPER; /*----------------------------------------------------------------------------------* @@ -1427,6 +1514,10 @@ typedef struct Word32 release_heuristic_fx; /* Q30 */ Word32 attack_constant_fx; /* Q31 */ Word16 strong_saturation_count; +#ifdef DEBUGGING + int32_t cnt_frames_limited; /* counter of frames in which the limiter is applied */ +#endif + } IVAS_LIMITER, *IVAS_LIMITER_HANDLE; @@ -1446,6 +1537,7 @@ typedef struct ivas_LS_setupconversion_struct } LSSETUP_CONVERSION_STRUCT, *LSSETUP_CONVERSION_HANDLE; + typedef struct ivas_LS_setupconversion_matrix_fx { Word16 index; @@ -1505,10 +1597,10 @@ typedef struct ivas_masa_external_rendering_struct RENDERER_TYPE renderer_type; DIRAC_REND_HANDLE hDirACRend; SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; - DIRAC_DEC_BIN_HANDLE hDiracDecBin; + DIRAC_DEC_BIN_HANDLE hDiracDecBin[MAX_HEAD_ROT_POSES]; REVERB_STRUCT_HANDLE hReverb; - HRTFS_PARAMBIN_HANDLE hHrtfParambin; + HRTFS_PARAMBIN_HANDLE *hHrtfParambin; VBAP_HANDLE hVBAPdata; Word32 *hoa_dec_mtx; diff --git a/lib_rend/lib_rend.h b/lib_rend/lib_rend.h index e837daa4f54faebea954292a031669f385b3ca3d..41fbff92dedb151bcf51dd507c4074b7c5566171 100644 --- a/lib_rend/lib_rend.h +++ b/lib_rend/lib_rend.h @@ -34,6 +34,7 @@ #define LIB_REND_H #include "common_api_types.h" +#include "ivas_stat_rend.h" #include "basop_util.h" #include @@ -57,18 +58,20 @@ typedef Word32 IVAS_REND_LfePanMtx_fx[RENDERER_MAX_INPUT_LFE_CHANNELS][IVAS_MAX_ typedef struct { - Word16 numSamplesPerChannel; - Word16 numChannels; -} IVAS_REND_AudioBufferConfig; + Word32 bufLenInBytes; + Word32 bitsWritten; + Word32 bitsRead; + ISAR_SPLIT_REND_CODEC codec; + ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection; + Word16 codec_frame_size_ms; + Word16 isar_frame_size_ms; + Word16 lc3plus_highres; +} IVAS_REND_BitstreamBufferConfig; typedef struct { - IVAS_REND_AudioBufferConfig config; - Word16 q_factor; - Word16 *pq_fact; - Word32 *data_fx; - // Word16 Q_data; -} IVAS_REND_AudioBuffer; - + IVAS_REND_BitstreamBufferConfig config; + UWord8 *bits; +} IVAS_REND_BitstreamBuffer; typedef struct { @@ -109,6 +112,7 @@ ivas_error IVAS_REND_Open( IVAS_REND_HANDLE *phIvasRend, /* i/o: Pointer to renderer handle */ const Word32 outputSampleRate, /* i : output sampling rate */ const IVAS_AUDIO_CONFIG outConfig, /* i : output audio config */ + const bool asHrtfBinary, /* i : load hrtf binary file */ const Word16 nonDiegeticPan, /* i : non-diegetic object flag */ const Word32 nonDiegeticPanGain, /* i : non-diegetic panning gain Q31 */ const Word16 num_subframes /* i : number of subframes */ @@ -177,6 +181,38 @@ ivas_error IVAS_REND_GetDelay_fx( Word16 *nSamples, /* o : Renderer delay in samples */ Word32 *timeScale /* o : Time scale of the delay, equal to renderer output sampling rate */ ); +ivas_error IVAS_REND_GetDelay( + IVAS_REND_CONST_HANDLE hIvasRend, /* i : Renderer handle */ + int16_t *nSamples, /* o : Renderer delay in samples */ + int32_t *timeScale /* o : Time scale of the delay, equal to renderer output sampling rate */ +); + +/*! r: error code */ +ivas_error IVAS_REND_GetHrtfHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS rendder handle */ + IVAS_DEC_HRTF_HANDLE **hHrtfTD /* o : HRTF handle */ +); + +/*! r: error code */ +ivas_error IVAS_REND_GetHrtfCRendHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS render handle */ + IVAS_DEC_HRTF_CREND_HANDLE **hSetOfHRTF /* o : Set of HRTF handle */ +); + +ivas_error IVAS_REND_GetHrtfFastConvHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS render handle */ + IVAS_DEC_HRTF_FASTCONV_HANDLE **hHrtfFastConv /* o : FASTCONV HRTF handle */ +); + +ivas_error IVAS_REND_GetHrtfParamBinHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS render handle */ + IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o : Parametric binauralizer HRTF handle */ +); + +ivas_error IVAS_REND_GetHrtfStatisticsHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS renderer handle */ + IVAS_DEC_HRTF_STATISTICS_HANDLE **hHrtfStatistics /* o : HRTF statistics handle */ +); /* Functions to be called during rendering */ @@ -226,11 +262,39 @@ Word16 IVAS_REND_FeedRenderConfig( const IVAS_RENDER_CONFIG_DATA renderConfig /* i : Render configuration struct */ ); +ivas_error IVAS_REND_FeedSplitBinauralBitstream( + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const IVAS_REND_InputId inputId, /* i : ID of the input */ + IVAS_REND_BitstreamBuffer *hBits /* i : buffer for input bitstream */ +); + +ivas_error IVAS_REND_GetSplitBinauralSamples( + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + IVAS_REND_AudioBuffer outAudio, /* i/o: buffer for output audio */ + bool* needNewFrame +); + +ivas_error IVAS_REND_GetSplitBinauralBitstream( + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + IVAS_REND_AudioBuffer outAudio, /* i/o: buffer for output audio */ + IVAS_REND_BitstreamBuffer *hBits /* o : buffer for output bitstream */ +); + +ivas_error IVAS_REND_GetSplitRendBitstreamHeader( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS renderer handle */ + ISAR_SPLIT_REND_CODEC *pCodec, /* o: pointer to codec setting */ + ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, /* o: pointer to pose correction mode */ + Word16 *pCodec_frame_size_ms /* o: pointer to codec frame size setting */ + , + Word16 *pIsar_frame_size_ms /* o: pointer to isar frame size setting */ +); + ivas_error IVAS_REND_SetHeadRotation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ const IVAS_QUATERNION headRot, /* i : head orientations for next rendering call */ const IVAS_VECTOR3 Pos, /* i : listener positions for next rendering call */ - const Word16 sf_idx /* i : subframe index */ + const ISAR_SPLIT_REND_ROT_AXIS rot_axis, /* i : external control for rotation axis for split rendering*/ + const Word16 sf_idx /* i : subframe index */ ); /* Head rotation becomes enabled by calling IVAS_REND_SetHeadRotation. Use this to disable. */ @@ -264,6 +328,9 @@ ivas_error IVAS_REND_SetReferenceVector( const IVAS_VECTOR3 refPos /* i : Reference position */ ); +ivas_error IVAS_REND_SetSplitRendBFI( + IVAS_REND_HANDLE hIvasRend, + const Word16 bfi); ivas_error IVAS_REND_SetExternalOrientation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ @@ -323,6 +390,39 @@ void IVAS_REND_Close( IVAS_REND_HANDLE* phIvasRend /* i/o: Pointer to renderer handle */ ); +/* Split binaural rendering functions */ + +ivas_error IVAS_REND_openCldfb( + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbAna[IVAS_MAX_INPUT_CHANNELS], + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbSyn[IVAS_MAX_OUTPUT_CHANNELS], + const Word16 num_in_chs, + const Word16 num_out_chs, + const Word32 output_Fs +); + +void IVAS_REND_closeCldfb( + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbAna[IVAS_MAX_INPUT_CHANNELS], + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbSyn[IVAS_MAX_OUTPUT_CHANNELS] +); + +void IVAS_REND_cldfbAnalysis_ts_wrapper( + const Word32 *timeIn, /* i : time buffer */ + Word32 realBuffer[IVAS_CLDFB_NO_CHANNELS_MAX], /* o : real value buffer */ + Word32 imagBuffer[IVAS_CLDFB_NO_CHANNELS_MAX], /* o : imag value buffer */ + const Word16 samplesToProcess, /* i : samples to process */ + IVAS_CLDFB_FILTER_BANK_HANDLE h_cldfb, /* i : filterbank state */ + Word16 Q_in, + Word16 *Q_out ); + +void IVAS_REND_cldfbSynthesis_wrapper( + Word32 **realBuffer, /* i : real values */ + Word32 **imagBuffer, /* i : imag values */ + Word32 *timeOut, /* o : output time domain samples */ + const int16_t samplesToProcess, /* i : number of processed samples */ + IVAS_CLDFB_FILTER_BANK_HANDLE h_cldfb, /* i : filter bank state */ + Word16 Q_cldfb, + Word16 *Q_out ); + /* Disclaimer and info printing */ diff --git a/lib_rend/lib_rend_fx.c b/lib_rend/lib_rend_fx.c index 6150926692003cac265024869a6a85308197050d..1fa9801e14d4024e2273253db2810fe84f0f8298 100644 --- a/lib_rend/lib_rend_fx.c +++ b/lib_rend/lib_rend_fx.c @@ -35,6 +35,9 @@ #include "prot_fx.h" #include "ivas_prot_fx.h" #include "ivas_prot_rend_fx.h" +#include "isar_prot.h" +#include "isar_stat.h" +#include "lib_isar_pre_rend.h" #include "ivas_cnst.h" #include "ivas_rom_com.h" #include "ivas_rom_com_fx.h" @@ -52,19 +55,9 @@ * Local constants *-------------------------------------------------------------------*/ -/* Maximum buffer length (per channel) in samples. - * Keep this separate from L_FRAME48k in case we want to support different size later */ -#define MAX_BUFFER_LENGTH_PER_CHANNEL ( L_FRAME48k ) - -/* Maximum buffer length (total) in samples. */ /* Maximum buffer length (total) in samples. */ -#define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) - -#define MAX_BIN_DELAY_SAMPLES 50 /* Maximum supported rendering latency for binaural IRs */ - -/* Frame size required when rendering to binaural */ -#define BINAURAL_RENDERING_FRAME_SIZE_MS 5 - +#define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) +#define MAX_BIN_DELAY_SAMPLES 150 /* Maximum supported rendering latency for binaural IRs */ /*-------------------------------------------------------------------* * Local types @@ -102,6 +95,9 @@ typedef struct const LSSETUP_CUSTOM_STRUCT *pCustomLsOut; const EFAP_WRAPPER *pEfapOutWrapper; IVAS_REND_HeadRotData *pHeadRotData; // for now removing the const qualifier TODO: will modify later + const RENDER_CONFIG_HANDLE *hhRendererConfig; + const Word16 *pSplitRendBFI; + const SPLIT_REND_WRAPPER *pSplitRendWrapper; const COMBINED_ORIENTATION_HANDLE *pCombinedOrientationData; } rendering_context; /* Common base for input structs */ @@ -127,6 +123,7 @@ typedef struct rotation_matrix_fx rot_mat_prev_fx; pan_vector prev_pan_gains; Word8 firstFrameRendered; + TDREND_WRAPPER splitTdRendWrappers[MAX_HEAD_ROT_POSES - 1]; /* Additional TD Rend instances used for split rendering */ Word32 *bufferData_fx; Word16 nonDiegeticPan; Word32 nonDiegeticPanGain_fx; /* Q31 */ @@ -159,8 +156,9 @@ typedef struct EFAP_WRAPPER efapInWrapper; TDREND_WRAPPER tdRendWrapper; CREND_WRAPPER_HANDLE crendWrapper; + TDREND_WRAPPER splitTdRendWrappers[MAX_HEAD_ROT_POSES - 1]; /* Additional TD Rend instances used for split rendering */ REVERB_HANDLE hReverb; - rotation_gains_Word32 rot_gains_prev_fx; + rotation_gains_Word32 rot_gains_prev_fx[MAX_HEAD_ROT_POSES]; Word16 nonDiegeticPan; Word32 nonDiegeticPanGain_fx; lfe_routing lfeRouting; @@ -174,8 +172,9 @@ typedef struct input_base base; // pan_matrix hoaDecMtx; pan_matrix_fx hoaDecMtx_fx; + CLDFB_REND_WRAPPER cldfbRendWrapper; CREND_WRAPPER_HANDLE crendWrapper; - rotation_gains_fx rot_gains_prev_fx; + rotation_gains_fx rot_gains_prev_fx[MAX_HEAD_ROT_POSES]; Word32 *bufferData_fx; DIRAC_ANA_HANDLE hDirAC; } input_sba; @@ -190,6 +189,16 @@ typedef struct MASA_EXT_REND_HANDLE hMasaExtRend; MASA_PREREND_HANDLE hMasaPrerend; } input_masa; + +typedef struct hrtf_handles +{ + IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF; + IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv; + IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin; + IVAS_DEC_HRTF_HANDLE hHrtfTD; + IVAS_DEC_HRTF_STATISTICS_HANDLE hHrtfStatistics; +} hrtf_handles; + struct IVAS_REND { Word32 sampleRateOut; @@ -205,7 +214,10 @@ struct IVAS_REND EFAP_WRAPPER efapOutWrapper; IVAS_LSSETUP_CUSTOM_STRUCT customLsOut; + SPLIT_REND_WRAPPER splitRendWrapper; + IVAS_REND_AudioBuffer splitRendEncBuffer; IVAS_REND_HeadRotData headRotData; + Word16 splitRendBFI; EXTERNAL_ORIENTATION_HANDLE hExternalOrientationData; COMBINED_ORIENTATION_HANDLE hCombinedOrientationData; @@ -214,17 +226,32 @@ struct IVAS_REND RENDER_CONFIG_DATA *hRendererConfig; /* Renderer config pointer */ Word16 num_subframes; + hrtf_handles hHrtfs; }; /*-------------------------------------------------------------------* * Local function prototypes *-------------------------------------------------------------------*/ +static ivas_error initMasaExtRenderer( input_masa *inputMasa, const AUDIO_CONFIG outConfig, const RENDER_CONFIG_DATA *hRendCfg, hrtf_handles *hHrtfs ); -static ivas_error initMasaExtRenderer( input_masa *inputMasa, const AUDIO_CONFIG outConfig ); static void freeMasaExtRenderer( MASA_EXT_REND_HANDLE *hMasaExtRendOut ); static void intermidiate_ext_dirac_render( MASA_EXT_REND_HANDLE hMasaExtRend, /* i/o: MASA renderer structure */ Word16 to_fix ); + +static ivas_error renderSbaToMultiBinauralCldfb( + input_sba *sbaInput, + Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const Word16 low_res_pre_rend_rot, + const Word16 num_subframes, + const Word16 Q_in ); + +static ivas_error renderSbaToMultiBinaural( + input_sba *sbaInput, + const AUDIO_CONFIG outConfig, + Word32 out[][L_FRAME48k] ); + /*-------------------------------------------------------------------* * Local functions *-------------------------------------------------------------------*/ @@ -303,6 +330,109 @@ static Word32 *getSmplPtr_fx( { return buffer.data_fx + chnlIdx * buffer.config.numSamplesPerChannel + smplIdx; } + +static void convertBitsBufferToInternalBitsBuff( + const IVAS_REND_BitstreamBuffer outBits, + ISAR_SPLIT_REND_BITS_HANDLE hBits ) +{ + hBits->bits_buf = outBits.bits; + hBits->bits_read = outBits.config.bitsRead; + hBits->bits_written = outBits.config.bitsWritten; + hBits->buf_len = outBits.config.bufLenInBytes; + hBits->codec = outBits.config.codec; + hBits->pose_correction = outBits.config.poseCorrection; + hBits->codec_frame_size_ms = outBits.config.codec_frame_size_ms; + + move16(); + move32(); + move32(); + move32(); + move32(); + move32(); + move32(); + + return; +} + +static void convertInternalBitsBuffToBitsBuffer( + IVAS_REND_BitstreamBuffer *hOutBits, + const ISAR_SPLIT_REND_BITS_DATA bits ) +{ + hOutBits->bits = bits.bits_buf; + hOutBits->config.bitsRead = bits.bits_read; + hOutBits->config.bitsWritten = bits.bits_written; + hOutBits->config.bufLenInBytes = bits.buf_len; + hOutBits->config.codec = bits.codec; + hOutBits->config.poseCorrection = bits.pose_correction; + hOutBits->config.codec_frame_size_ms = bits.codec_frame_size_ms; + + return; +} + +static void copyBufferToCLDFBarray_fx( + const IVAS_REND_AudioBuffer buffer, + Word32 re[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 im[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] ) +{ + UWord32 smplIdx, slotIdx; + UWord32 numCldfbSamples, num_bands; + UWord32 chnlIdx; + const Word32 *readPtr; + + assert( ( buffer.config.is_cldfb == 1 ) && "for time domain input call copyBufferTo2dArray()" ); + readPtr = buffer.data_fx; + numCldfbSamples = (UWord32) shr( buffer.config.numSamplesPerChannel, 1 ); + num_bands = (UWord32) Mpy_32_32( numCldfbSamples, ONE_BY_CLDFB_NO_COL_MAX_Q31 ); + FOR( chnlIdx = 0; chnlIdx < (UWord32) buffer.config.numChannels; ++chnlIdx ) + { + FOR( slotIdx = 0; slotIdx < CLDFB_NO_COL_MAX; ++slotIdx ) + { + FOR( smplIdx = 0; smplIdx < num_bands; ++smplIdx ) + { + re[chnlIdx][slotIdx][smplIdx] = *readPtr++; + } + FOR( smplIdx = 0; smplIdx < num_bands; ++smplIdx ) + { + im[chnlIdx][slotIdx][smplIdx] = *readPtr++; + } + } + } + + return; +} + +static void accumulateCLDFBArrayToBuffer_fx( + Word32 re[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 im[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + IVAS_REND_AudioBuffer *buffer ) +{ + UWord32 smplIdx, slotIdx; + UWord32 numCldfbSamples, num_bands; + UWord32 chnlIdx; + Word32 *writePtr; + + assert( ( buffer->config.is_cldfb == 1 ) && "for time domain input call copyBufferTo2dArray()" ); + writePtr = buffer->data_fx; + numCldfbSamples = (UWord32) shr( buffer->config.numSamplesPerChannel, 1 ); + num_bands = (UWord32) Mpy_32_32( numCldfbSamples, ONE_BY_CLDFB_NO_COL_MAX_Q31 ); + FOR( chnlIdx = 0; chnlIdx < (uint32_t) buffer->config.numChannels; ++chnlIdx ) + { + FOR( slotIdx = 0; slotIdx < CLDFB_NO_COL_MAX; ++slotIdx ) + { + FOR( smplIdx = 0; smplIdx < num_bands; ++smplIdx ) + { + *writePtr++ += re[chnlIdx][slotIdx][smplIdx]; + } + FOR( smplIdx = 0; smplIdx < num_bands; ++smplIdx ) + { + *writePtr++ += im[chnlIdx][slotIdx][smplIdx]; + } + } + } + + return; +} + static void copyBufferTo2dArray_fx( const IVAS_REND_AudioBuffer buffer, Word32 array[][L_FRAME48k] ) @@ -311,6 +441,8 @@ static void copyBufferTo2dArray_fx( UWord32 chnlIdx; const Word32 *readPtr; + assert( ( buffer.config.is_cldfb == 0 ) && "for CLDFB input call copyBufferToCLDFBarray()" ); + readPtr = buffer.data_fx; FOR( chnlIdx = 0; chnlIdx < (UWord32) buffer.config.numChannels; ++chnlIdx ) @@ -326,7 +458,7 @@ static void copyBufferTo2dArray_fx( } static void accumulate2dArrayToBuffer_fx( Word32 array[][L_FRAME48k], - IVAS_REND_AudioBuffer *buffer ) + const IVAS_REND_AudioBuffer *buffer ) { Word16 smplIdx, chnlIdx; Word32 *writePtr; @@ -419,6 +551,8 @@ static ivas_error validateOutputAudioConfig( case IVAS_AUDIO_CONFIG_HOA2: case IVAS_AUDIO_CONFIG_HOA3: 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_MASA1: @@ -497,23 +631,31 @@ static ivas_error validateOutputSampleRate( const Word32 sampleRate, const AUDIO_CONFIG outConfig ) { + IF( NE_32( getAudioConfigType( outConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) ) { /* If no binaural rendering, any sampling rate is supported */ return IVAS_ERR_OK; } - - /* Otherwise rendering to binaural, support the same set as IVAS decoder */ - SWITCH( sampleRate ) + ELSE IF( ( EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) && NE_32( sampleRate, 48000 ) ) { - case 8000: - case 16000: - case 32000: - case 48000: - return IVAS_ERR_OK; + return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "Error: Only 48kHz output sampling rate is supported for split rendering." ); } + ELSE + { + + /* Otherwise rendering to binaural, support the same set as IVAS decoder */ + SWITCH( sampleRate ) + { + case 8000: + case 16000: + case 32000: + case 48000: + return IVAS_ERR_OK; + } - return IVAS_ERR_INVALID_SAMPLING_RATE; + return IVAS_ERR_INVALID_SAMPLING_RATE; + } } /*-------------------------------------------------------------------* * getAudioConfigNumChannels() @@ -535,6 +677,8 @@ ivas_error getAudioConfigNumChannels( BREAK; case IVAS_AUDIO_CONFIG_STEREO: 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_MASA2: @@ -1044,6 +1188,8 @@ static ivas_error initHeadRotation_fx( hIvasRend->headRotData.headPositions[i] = quaternionInit_fx(); } + hIvasRend->headRotData.sr_pose_pred_axis = DEFAULT_AXIS; + move32(); IF( ( hIvasRend->headRotData.hOrientationTracker = (ivas_orient_trk_state_t *) malloc( sizeof( ivas_orient_trk_state_t ) ) ) == NULL ) { @@ -1195,6 +1341,9 @@ static rendering_context getRendCtx( ctx.pCustomLsOut = &hIvasRend->customLsOut; ctx.pEfapOutWrapper = &hIvasRend->efapOutWrapper; ctx.pHeadRotData = &hIvasRend->headRotData; + ctx.hhRendererConfig = &hIvasRend->hRendererConfig; + ctx.pSplitRendBFI = &hIvasRend->splitRendBFI; + ctx.pSplitRendWrapper = &hIvasRend->splitRendWrapper; ctx.pCombinedOrientationData = &hIvasRend->hCombinedOrientationData; return ctx; @@ -1240,11 +1389,9 @@ static ivas_error initIsmMasaRendering( IF( inputIsm->tdRendWrapper.hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputIsm->tdRendWrapper.hBinRendererTd ); - inputIsm->tdRendWrapper.hHrtfTD = NULL; } - ivas_rend_closeCrend( &inputIsm->crendWrapper ); - + ivas_rend_closeCrend( &inputIsm->crendWrapper, inputIsm->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses ); ivas_reverb_close( &inputIsm->hReverb ); IF( NE_32( ( error = ivas_omasa_ana_open( &inputIsm->hOMasa, inSampleRate, inputIsm->total_num_objects ) ), IVAS_ERR_OK ) ) @@ -1260,12 +1407,26 @@ static ivas_error setRendInputActiveIsm( void *input, const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, - RENDER_CONFIG_DATA *hRendCfg ) + RENDER_CONFIG_DATA *hRendCfg, + hrtf_handles *hrtfs ) { ivas_error error; rendering_context rendCtx; AUDIO_CONFIG outConfig; input_ism *inputIsm; + Word16 i; + Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; + Word16 num_src; + Word16 ivas_format; + IF( EQ_32( getAudioConfigType( inConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) ) + { + ivas_format = MC_FORMAT; + } + ELSE + { + ivas_format = ISM_FORMAT; + } + inputIsm = (input_ism *) input; rendCtx = inputIsm->base.ctx; @@ -1295,18 +1456,80 @@ static ivas_error setRendInputActiveIsm( set_zero_fx( inputIsm->prev_pan_gains_fx, MAX_OUTPUT_CHANNELS ); + FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + inputIsm->splitTdRendWrappers[i].hHrtfTD = &hrtfs->hHrtfTD; + } + inputIsm->hOMasa = NULL; error = IVAS_ERR_OK; move32(); + inputIsm->tdRendWrapper.hHrtfTD = &hrtfs->hHrtfTD; + + test(); test(); - IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) ) + test(); + IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { - IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) { return error; } + + Word16 nchan_rend = num_src; + move16(); + + test(); + IF( EQ_16( ivas_format, MC_FORMAT ) && NE_32( inConfig, 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 = inputIsm->tdRendWrapper.hBinRendererTd->Sources[SrcInd[nS]]; + IF( Src_p != NULL ) + { + IF( Src_p->SrcSpatial_p != NULL ) + { + Src_p->SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->tdRendWrapper.hBinRendererTd->Sources[nS]->SrcSpatial_p; + SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + } + + /* Open TD renderer wrappers */ + FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->splitTdRendWrappers[i], inConfig, hRendCfg, NULL, *inputIsm->base.ctx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) + { + return error; + } + + /* Assert same delay as main TD renderer */ + assert( inputIsm->splitTdRendWrappers[i].binaural_latency_ns == inputIsm->tdRendWrapper.binaural_latency_ns ); + + FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) + { + TDREND_SRC_t *Src_p = inputIsm->splitTdRendWrappers[i].hBinRendererTd->Sources[SrcInd[nS]]; + IF( Src_p != NULL ) + { + IF( Src_p->SrcSpatial_p != NULL ) + { + Src_p->SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputIsm->splitTdRendWrappers[i].hBinRendererTd->Sources[nS]->SrcSpatial_p; + SrcSpatial_p->q_Pos_p = Q31; + move16(); + } + } + } } ELSE IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA1 ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_MASA2 ) ) { @@ -1317,19 +1540,6 @@ static ivas_error setRendInputActiveIsm( } ELSE { - Word16 SrcInd[MAX_NUM_TDREND_CHANNELS]; - Word16 num_src; - Word16 ivas_format; - IF( EQ_32( getAudioConfigType( inConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) ) - { - ivas_format = MC_FORMAT; - } - ELSE - { - ivas_format = ISM_FORMAT; - } - - move16(); IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputIsm->tdRendWrapper, inConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) { return error; @@ -1343,6 +1553,7 @@ static ivas_error setRendInputActiveIsm( { 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 = inputIsm->tdRendWrapper.hBinRendererTd->Sources[SrcInd[nS]]; @@ -1361,7 +1572,14 @@ static ivas_error setRendInputActiveIsm( IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) { - IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), outConfig, NULL, inputIsm->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_reverb_open_fx( &( inputIsm->hReverb ), hrtfs->hHrtfStatistics, hRendCfg, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + ELSE IF( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + { + IF( NE_32( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hrtfs->hSetOfHRTF, hrtfs->hHrtfStatistics, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) { return error; } @@ -1375,6 +1593,7 @@ static void clearInputIsm( input_ism *inputIsm ) { rendering_context rendCtx; + int16_t i; rendCtx = inputIsm->base.ctx; @@ -1383,16 +1602,19 @@ static void clearInputIsm( initRendInputBase_fx( &inputIsm->base, IVAS_AUDIO_CONFIG_INVALID, 0, rendCtx, NULL, 0 ); /* Free input's internal handles */ - ivas_rend_closeCrend( &inputIsm->crendWrapper ); + ivas_rend_closeCrend( &inputIsm->crendWrapper, inputIsm->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses ); ivas_reverb_close( &inputIsm->hReverb ); IF( inputIsm->tdRendWrapper.hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputIsm->tdRendWrapper.hBinRendererTd ); - inputIsm->tdRendWrapper.hHrtfTD = NULL; } + FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + ivas_td_binaural_close_fx( &inputIsm->splitTdRendWrappers[i].hBinRendererTd ); + } ivas_omasa_ana_close( &( inputIsm->hOMasa ) ); @@ -2122,6 +2344,8 @@ static ivas_error updateMcPanGains( SWITCH( outConfig ) { case IVAS_AUDIO_CONFIG_BINAURAL: + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: BREAK; /* Do nothing */ case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: @@ -2165,12 +2389,15 @@ static ivas_error initMcBinauralRendering( const AUDIO_CONFIG inConfig, const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg, - UWord8 reconfigureFlag ) + IVAS_DEC_HRTF_CREND_HANDLE hMixconv, + HRTFS_STATISTICS_HANDLE hHrtfStatistics, + uint8_t reconfigureFlag ) { ivas_error error; Word32 binauralDelayNs; Word32 outSampleRate; Word8 useTDRend; + int16_t i; /* Allocate TD binaural renderer for custom loudspeaker layouts (regardless of headrotation) or planar MC layouts with headrotation, CREND for the rest */ @@ -2199,14 +2426,23 @@ static ivas_error initMcBinauralRendering( IF( !reconfigureFlag || ( !useTDRend && inputMc->tdRendWrapper.hBinRendererTd != NULL ) ) { ivas_td_binaural_close_fx( &inputMc->tdRendWrapper.hBinRendererTd ); - inputMc->tdRendWrapper.hHrtfTD = NULL; } + IF( !reconfigureFlag || !useTDRend ) + { + FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + IF( inputMc->splitTdRendWrappers[i].hBinRendererTd != NULL ) + { + ivas_td_binaural_close_fx( &inputMc->splitTdRendWrappers[i].hBinRendererTd ); + } + } + } /* if we need to use TD renderer and CREND was open, close it */ IF( useTDRend ) { - ivas_rend_closeCrend( &inputMc->crendWrapper ); + ivas_rend_closeCrend( &inputMc->crendWrapper, inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses ); } test(); @@ -2265,10 +2501,46 @@ static ivas_error initMcBinauralRendering( } } } + + IF( EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + /* Open TD renderer wrappers */ + FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + IF( NE_32( ( error = ivas_td_binaural_open_ext_fx( &inputMc->splitTdRendWrappers[i], inConfig, hRendCfg, &inputMc->customLsInput, outSampleRate, SrcInd, &num_src ) ), IVAS_ERR_OK ) ) + { + return error; + } + + /* Assert same delay as main TD renderer */ + assert( inputMc->splitTdRendWrappers[i].binaural_latency_ns == inputMc->tdRendWrapper.binaural_latency_ns ); + + FOR( Word16 nS = 0; nS < nchan_rend; nS++ ) + { + TDREND_SRC_t *Src_p = inputMc->splitTdRendWrappers[i].hBinRendererTd->Sources[SrcInd[nS]]; + IF( Src_p != NULL ) + { + IF( Src_p->SrcSpatial_p != NULL ) + { + Src_p->SrcSpatial_p->q_Pos_p = 31; + move16(); + } + IF( inputMc->splitTdRendWrappers[i].hBinRendererTd->Sources[nS] != NULL ) + { + TDREND_SRC_SPATIAL_t *SrcSpatial_p = inputMc->splitTdRendWrappers[i].hBinRendererTd->Sources[nS]->SrcSpatial_p; + SrcSpatial_p->q_Pos_p = 31; + move16(); + } + } + } + } + } + + test(); IF( EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) && inputMc->hReverb == NULL ) { - IF( NE_32( ( error = ivas_reverb_open_fx( &( inputMc->hReverb ), outConfig, NULL, inputMc->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac_fx, hRendCfg, outSampleRate ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_reverb_open_fx( &( inputMc->hReverb ), hHrtfStatistics, hRendCfg, outSampleRate ) ), IVAS_ERR_OK ) ) { return error; } @@ -2277,7 +2549,9 @@ static ivas_error initMcBinauralRendering( ELSE IF( !useTDRend && inputMc->crendWrapper == NULL ) { /* open CREND */ - IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( EQ_16( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, NULL, outSampleRate ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( inConfig == IVAS_AUDIO_CONFIG_LS_CUSTOM ) ? IVAS_AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, + outSampleRate, ( ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 ) ), + IVAS_ERR_OK ) ) { return error; } @@ -2333,10 +2607,9 @@ static ivas_error initMcMasaRendering( IF( inputMc->tdRendWrapper.hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputMc->tdRendWrapper.hBinRendererTd ); - inputMc->tdRendWrapper.hHrtfTD = NULL; } - ivas_rend_closeCrend( &inputMc->crendWrapper ); + ivas_rend_closeCrend( &inputMc->crendWrapper, inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses ); ivas_reverb_close( &inputMc->hReverb ); @@ -2420,12 +2693,15 @@ static ivas_error setRendInputActiveMc( void *input, const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, - RENDER_CONFIG_DATA *hRendCfg ) + RENDER_CONFIG_DATA *hRendCfg, + hrtf_handles *hrtfs ) { + Word16 i; ivas_error error; rendering_context rendCtx; AUDIO_CONFIG outConfig; input_mc *inputMc; + Word16 pos_idx; inputMc = (input_mc *) input; rendCtx = inputMc->base.ctx; @@ -2450,11 +2726,20 @@ static ivas_error setRendInputActiveMc( inputMc->customLsInput = defaultCustomLs(); inputMc->tdRendWrapper = defaultTdRendWrapper(); + + if ( hrtfs->hHrtfTD ) + { + inputMc->tdRendWrapper.binaural_latency_ns = Mult_32_32( hrtfs->hHrtfTD->latency_s_fx, 1000000000 ); + } + inputMc->tdRendWrapper.hHrtfTD = &hrtfs->hHrtfTD; inputMc->crendWrapper = NULL; inputMc->hReverb = NULL; inputMc->hMcMasa = NULL; - initRotGainsWord32_fx( inputMc->rot_gains_prev_fx ); + FOR( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) + { + initRotGainsWord32_fx( inputMc->rot_gains_prev_fx[pos_idx] ); + } inputMc->lfeRouting = defaultLfeRouting( inConfig, inputMc->customLsInput, outConfig, *inputMc->base.ctx.pCustomLsOut ); set32_fx( inputMc->lfeDelayBuffer_fx, 0, MAX_BIN_DELAY_SAMPLES ); inputMc->binauralDelaySmp = 0; @@ -2462,9 +2747,19 @@ static ivas_error setRendInputActiveMc( test(); test(); - IF( EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + if ( hrtfs->hHrtfTD ) + { + inputMc->splitTdRendWrappers[i].binaural_latency_ns = Mult_32_32( hrtfs->hHrtfTD->latency_s_fx, 1000000000 ); + } + inputMc->splitTdRendWrappers[i].hHrtfTD = &hrtfs->hHrtfTD; + } + + IF( EQ_32( getAudioConfigType( outConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) ) { - IF( NE_32( ( error = initMcBinauralRendering( inputMc, inConfig, outConfig, hRendCfg, FALSE ) ), IVAS_ERR_OK ) ) + + IF( NE_32( ( error = initMcBinauralRendering( inputMc, inConfig, outConfig, hRendCfg, hrtfs->hSetOfHRTF, hrtfs->hHrtfStatistics, FALSE ) ), IVAS_ERR_OK ) ) { return error; } @@ -2490,6 +2785,7 @@ static void clearInputMc( input_mc *inputMc ) { rendering_context rendCtx; + Word16 i; rendCtx = inputMc->base.ctx; freeMcLfeDelayBuffer_fx( &inputMc->lfeDelayBuffer_fx ); @@ -2502,16 +2798,23 @@ static void clearInputMc( efap_free_data_fx( &inputMc->efapInWrapper.hEfap ); } - ivas_rend_closeCrend( &inputMc->crendWrapper ); + ivas_rend_closeCrend( &inputMc->crendWrapper, inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses ); ivas_reverb_close( &inputMc->hReverb ); IF( inputMc->tdRendWrapper.hBinRendererTd != NULL ) { ivas_td_binaural_close_fx( &inputMc->tdRendWrapper.hBinRendererTd ); - inputMc->tdRendWrapper.hHrtfTD = NULL; } + FOR( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + IF( inputMc->splitTdRendWrappers[i].hBinRendererTd != NULL ) + { + ivas_td_binaural_close_fx( &inputMc->splitTdRendWrappers[i].hBinRendererTd ); + inputMc->splitTdRendWrappers[i].hHrtfTD = NULL; + } + } ivas_mcmasa_ana_close( &( inputMc->hMcMasa ) ); @@ -2610,7 +2913,11 @@ static ivas_error initSbaPanGainsForSbaOut( static ivas_error updateSbaPanGains( input_sba *inputSba, const AUDIO_CONFIG outConfig, - RENDER_CONFIG_DATA *hRendCfg ) + RENDER_CONFIG_DATA *hRendCfg, + IVAS_DEC_HRTF_CREND_HANDLE hMixconv, + IVAS_DEC_HRTF_STATISTICS_HANDLE hHrtfStatistics + +) { ivas_error error; AUDIO_CONFIG inConfig; @@ -2633,12 +2940,45 @@ static ivas_error updateSbaPanGains( case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: SWITCH( outConfig ) { - case IVAS_AUDIO_CONFIG_BINAURAL: + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: { - IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) + IF( EQ_32( hRendCfg->split_rend_config.rendererSelection, ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) ) { - return error; + assert( inConfig == IVAS_AUDIO_CONFIG_HOA3 && ( *rendCtx.pOutSampleRate == 48000 ) && "split binaural fast conv mode is currently supported with HOA3 input and 48k sampling rate only" ); + if ( ( error = ivas_rend_openCldfbRend( &inputSba->cldfbRendWrapper, inConfig, outConfig, &rendCtx.pSplitRendWrapper->multiBinPoseData, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + assert( ( *rendCtx.pOutSampleRate == 48000 ) && "split binaural crend mode is currently supported with 48k sampling rate only" ); + if ( ( error = ivas_rend_openMultiBinCrend( &inputSba->crendWrapper, inConfig, outConfig, + &rendCtx.pSplitRendWrapper->multiBinPoseData, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) + { + return error; + } + } + break; + } + case IVAS_AUDIO_CONFIG_BINAURAL: + { + if ( hRendCfg->split_rend_config.rendererSelection == ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) + { + if ( ( error = ivas_rend_openCldfbRend( &inputSba->cldfbRendWrapper, inConfig, outConfig, + &rendCtx.pSplitRendWrapper->multiBinPoseData, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, hMixconv, hHrtfStatistics, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) + { + return error; + } } } BREAK; @@ -2648,8 +2988,7 @@ static ivas_error updateSbaPanGains( { return error; } - - IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, hMixconv, hHrtfStatistics, *rendCtx.pOutSampleRate, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ) ), IVAS_ERR_OK ) ) { return error; } @@ -2681,7 +3020,7 @@ static ivas_error initSbaMasaRendering( { ivas_error error; - ivas_rend_closeCrend( &inputSba->crendWrapper ); + ivas_rend_closeCrend( &inputSba->crendWrapper, inputSba->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses ); IF( NE_32( ( error = ivas_dirac_ana_open_fx( &inputSba->hDirAC, inSampleRate ) ), IVAS_ERR_OK ) ) { @@ -2695,12 +3034,16 @@ static ivas_error setRendInputActiveSba( void *input, const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, - RENDER_CONFIG_DATA *hRendCfg ) + RENDER_CONFIG_DATA *hRendCfg, + hrtf_handles *hrtfs + +) { ivas_error error; rendering_context rendCtx; AUDIO_CONFIG outConfig; input_sba *inputSba; + int16_t pos_idx; inputSba = (input_sba *) input; rendCtx = inputSba->base.ctx; @@ -2712,17 +3055,22 @@ static ivas_error setRendInputActiveSba( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } - IF( NE_32( ( error = allocateInputBaseBufferData_fx( &inputSba->bufferData_fx, MAX_BUFFER_LENGTH ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = allocateInputBaseBufferData_fx( &inputSba->bufferData_fx, MAX_CLDFB_BUFFER_LENGTH ) ), IVAS_ERR_OK ) ) { return error; } - initRendInputBase_fx( &inputSba->base, inConfig, id, rendCtx, inputSba->bufferData_fx, MAX_BUFFER_LENGTH ); + + initRendInputBase_fx( &inputSba->base, inConfig, id, rendCtx, inputSba->bufferData_fx, MAX_CLDFB_BUFFER_LENGTH ); setZeroPanMatrix_fx( inputSba->hoaDecMtx_fx ); inputSba->crendWrapper = NULL; inputSba->hDirAC = NULL; - initRotGains_fx( inputSba->rot_gains_prev_fx ); + FOR( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) + { + initRotGains_fx( inputSba->rot_gains_prev_fx[pos_idx] ); + } + inputSba->cldfbRendWrapper.hHrtfFastConv = hrtfs->hHrtfFastConv; test(); IF( EQ_32( outConfig, IVAS_AUDIO_CONFIG_MASA1 ) || EQ_32( outConfig, IVAS_AUDIO_CONFIG_MASA2 ) ) @@ -2732,8 +3080,7 @@ static ivas_error setRendInputActiveSba( return error; } } - - IF( NE_32( ( error = updateSbaPanGains( inputSba, outConfig, hRendCfg ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = updateSbaPanGains( inputSba, outConfig, hRendCfg, hrtfs->hSetOfHRTF, hrtfs->hHrtfStatistics ) ), IVAS_ERR_OK ) ) { return error; } @@ -2751,8 +3098,12 @@ static void clearInputSba( initRendInputBase_fx( &inputSba->base, IVAS_AUDIO_CONFIG_INVALID, 0, rendCtx, NULL, 0 ); - /* Free input's internal handles */ - ivas_rend_closeCrend( &inputSba->crendWrapper ); + ivas_rend_closeCrend( &inputSba->crendWrapper, rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses ); + + IF( inputSba->cldfbRendWrapper.hCldfbRend != NULL ) + { + ivas_rend_closeCldfbRend( &inputSba->cldfbRendWrapper ); + } ivas_dirac_ana_close_fx( &( inputSba->hDirAC ) ); @@ -2763,7 +3114,8 @@ static ivas_error setRendInputActiveMasa( void *input, const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, - RENDER_CONFIG_DATA *hRendCfg ) /* Todo: This is not used at all within MASA. Support might be better to do after refactoring. */ + RENDER_CONFIG_DATA *hRendCfg, + hrtf_handles *hrtfs ) { ivas_error error; rendering_context rendCtx; @@ -2775,7 +3127,6 @@ static ivas_error setRendInputActiveMasa( rendCtx = inputMasa->base.ctx; outConfig = *rendCtx.pOutConfig; move32(); - (void) hRendCfg; /* Suppress warning */ IF( !isIoConfigPairSupported( inConfig, outConfig ) ) { @@ -2814,7 +3165,7 @@ static ivas_error setRendInputActiveMasa( } ELSE { - IF( NE_32( ( error = initMasaExtRenderer( inputMasa, outConfig ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = initMasaExtRenderer( inputMasa, outConfig, hRendCfg, hrtfs ) ), IVAS_ERR_OK ) ) { return error; } @@ -2854,11 +3205,13 @@ ivas_error IVAS_REND_Open( IVAS_REND_HANDLE *phIvasRend, const Word32 outputSampleRate, const AUDIO_CONFIG outConfig, + const bool asHrtfBinary, const Word16 nonDiegeticPan, const Word32 nonDiegeticPanGain, /* Q31 */ const Word16 num_subframes ) { Word16 i; + Word16 j; IVAS_REND_HANDLE hIvasRend; ivas_error error; Word16 numOutChannels; @@ -2928,6 +3281,8 @@ ivas_error IVAS_REND_Open( } /* Initialize inputs */ + isar_init_split_rend_handles( &hIvasRend->splitRendWrapper ); + hIvasRend->splitRendEncBuffer.data_fx = NULL; FOR( i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i ) { @@ -2935,6 +3290,11 @@ ivas_error IVAS_REND_Open( hIvasRend->inputsIsm[i].crendWrapper = NULL; hIvasRend->inputsIsm[i].hReverb = NULL; hIvasRend->inputsIsm[i].tdRendWrapper.hBinRendererTd = NULL; + FOR( j = 0; j < MAX_HEAD_ROT_POSES - 1; ++j ) + { + hIvasRend->inputsIsm[i].splitTdRendWrappers[j].hBinRendererTd = NULL; + hIvasRend->inputsIsm[i].splitTdRendWrappers[j].hHrtfTD = NULL; + } hIvasRend->inputsIsm[i].nonDiegeticPan = nonDiegeticPan; move16(); hIvasRend->inputsIsm[i].nonDiegeticPanGain_fx = nonDiegeticPanGain; @@ -2958,6 +3318,11 @@ ivas_error IVAS_REND_Open( hIvasRend->inputsMc[i].nonDiegeticPanGain_fx = nonDiegeticPanGain; move32(); hIvasRend->inputsMc[i].hMcMasa = NULL; + FOR( j = 0; j < MAX_HEAD_ROT_POSES - 1; ++j ) + { + hIvasRend->inputsMc[i].splitTdRendWrappers[j].hBinRendererTd = NULL; + hIvasRend->inputsMc[i].splitTdRendWrappers[j].hHrtfTD = NULL; + } } FOR( i = 0; i < RENDERER_MAX_SBA_INPUTS; ++i ) @@ -2965,6 +3330,8 @@ ivas_error IVAS_REND_Open( initRendInputBase_fx( &hIvasRend->inputsSba[i].base, IVAS_AUDIO_CONFIG_INVALID, 0, getRendCtx( hIvasRend ), NULL, 0 ); hIvasRend->inputsSba[i].crendWrapper = NULL; + hIvasRend->inputsSba[i].cldfbRendWrapper.hCldfbRend = NULL; + hIvasRend->inputsSba[i].cldfbRendWrapper.hHrtfFastConv = NULL; hIvasRend->inputsSba[i].bufferData_fx = NULL; hIvasRend->inputsSba[i].hDirAC = NULL; } @@ -2980,9 +3347,42 @@ ivas_error IVAS_REND_Open( move16(); } + hIvasRend->hHrtfs.hHrtfFastConv = NULL; + hIvasRend->hHrtfs.hHrtfParambin = NULL; + hIvasRend->hHrtfs.hHrtfTD = NULL; + hIvasRend->hHrtfs.hSetOfHRTF = NULL; + hIvasRend->hHrtfs.hHrtfStatistics = NULL; + IF( asHrtfBinary ) + { + IF( NE_32( ( error = ivas_HRTF_binary_open_fx( &( hIvasRend->hHrtfs.hHrtfTD ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + IF( NE_32( ( error = ivas_HRTF_CRend_binary_open_fx( &( hIvasRend->hHrtfs.hSetOfHRTF ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + IF( NE_32( ( error = ivas_HRTF_fastconv_binary_open_fx( &( hIvasRend->hHrtfs.hHrtfFastConv ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + IF( NE_32( ( error = ivas_HRTF_parambin_binary_open_fx( &( hIvasRend->hHrtfs.hHrtfParambin ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + IF( NE_32( ( error = ivas_HRTF_statistics_binary_open( &( hIvasRend->hHrtfs.hHrtfStatistics ) ) ), IVAS_ERR_OK ) ) + { + return error; + } + } + IF( NE_32( ( error = ivas_HRTF_statistics_init( &( hIvasRend->hHrtfs.hHrtfStatistics ), hIvasRend->sampleRateOut ) ), IVAS_ERR_OK ) ) + { + return error; + } return IVAS_ERR_OK; } + static LSSETUP_CUSTOM_STRUCT makeCustomLsSetup( const IVAS_CUSTOM_LS_DATA rendCustomLsLayout ) { @@ -3126,7 +3526,7 @@ ivas_error IVAS_REND_ConfigureCustomOutputLoudspeakerLayout( /* Input inactive, skip. */ CONTINUE; } - IF( NE_32( ( error = updateSbaPanGains( inputSba, hIvasRend->outputConfig, hIvasRend->hRendererConfig ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = updateSbaPanGains( inputSba, hIvasRend->outputConfig, hIvasRend->hRendererConfig, NULL, NULL ) ), IVAS_ERR_OK ) ) { return error; } @@ -3360,8 +3760,137 @@ static ivas_error findFreeInputSlot_fx( } -/*-------------------------------------------------------------------* - * IVAS_REND_AddInput() +static Word16 getCldfbRendFlag( + IVAS_REND_HANDLE hIvasRend, /* i : Renderer handle */ + const IVAS_REND_AudioConfigType new_configType ) +{ + Word16 i; + Word16 numMasaInputs = 0, numSbaInputs = 0, numIsmInputs = 0, numMcInputs = 0; + Word16 isCldfbRend; + + move16(); + move16(); + move16(); + move16(); + + isCldfbRend = 0; + move16(); + + IF( hIvasRend->hRendererConfig != NULL ) + { + FOR( i = 0; i < RENDERER_MAX_MASA_INPUTS; ++i ) + { + numMasaInputs = add( numMasaInputs, ( hIvasRend->inputsMasa[i].base.inConfig == IVAS_AUDIO_CONFIG_INVALID && new_configType != IVAS_REND_AUDIO_CONFIG_TYPE_MASA ) ? 0 : 1 ); + move16(); + } + FOR( i = 0; i < RENDERER_MAX_SBA_INPUTS; ++i ) + { + numSbaInputs = add( numSbaInputs, ( hIvasRend->inputsSba[i].base.inConfig == IVAS_AUDIO_CONFIG_INVALID && new_configType != IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS ) ? 0 : 1 ); + move16(); + } + FOR( i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i ) + { + numIsmInputs = add( numIsmInputs, ( hIvasRend->inputsIsm[i].base.inConfig == IVAS_AUDIO_CONFIG_INVALID && new_configType != IVAS_REND_AUDIO_CONFIG_TYPE_OBJECT_BASED ) ? 0 : 1 ); + move16(); + } + FOR( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i ) + { + numMcInputs = add( numMcInputs, ( hIvasRend->inputsMc[i].base.inConfig == IVAS_AUDIO_CONFIG_INVALID && new_configType != IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) ? 0 : 1 ); + move16(); + } + + IF( GT_16( numIsmInputs, 0 ) || GT_16( numMcInputs, 0 ) ) + { + isCldfbRend = 0; + move16(); + } + ELSE IF( GT_16( numMasaInputs, 0 ) || ( GT_16( numSbaInputs, 0 ) && EQ_32( hIvasRend->hRendererConfig->split_rend_config.rendererSelection, ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) ) ) + { + isCldfbRend = 1; + move16(); + } + } + + return isCldfbRend; +} + +/*------------------------------------------------------------------------- + * Function ivas_pre_rend_init() + * + * + *------------------------------------------------------------------------*/ + +static ivas_error ivas_pre_rend_init( + SPLIT_REND_WRAPPER *pSplitRendWrapper, + IVAS_REND_AudioBuffer *pSplitRendEncBuffer, + ISAR_SPLIT_REND_CONFIG_DATA *pSplit_rend_config, + IVAS_REND_HeadRotData headRotData, + const Word32 outputSampleRate, + const AUDIO_CONFIG outConfig, + const Word16 cldfb_in_flag, + const Word16 num_subframes ) +{ + ivas_error error; + IVAS_REND_AudioBufferConfig bufConfig; + + IF( EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + IF( EQ_32( pSplit_rend_config->poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) ) + { + ISAR_PRE_REND_GetMultiBinPoseData( pSplit_rend_config, &pSplitRendWrapper->multiBinPoseData, headRotData.sr_pose_pred_axis ); + } + ELSE IF( EQ_32( pSplit_rend_config->poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) ) + { + isar_renderSplitUpdateNoCorrectionPoseData( pSplit_rend_config, &pSplitRendWrapper->multiBinPoseData ); + } + + IF( ( error = ISAR_PRE_REND_open( pSplitRendWrapper, pSplit_rend_config, outputSampleRate, cldfb_in_flag, outConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM, num_subframes, 0 ) ) != IVAS_ERR_OK ) + { + return error; + } + + /*allocate for CLDFB in and change to TD during process if needed*/ + bufConfig.numSamplesPerChannel = MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL; + bufConfig.numChannels = i_mult( BINAURAL_CHANNELS, pSplitRendWrapper->multiBinPoseData.num_poses ); + bufConfig.is_cldfb = 1; + pSplitRendEncBuffer->config = bufConfig; + move16(); + move16(); + move16(); + move32(); + + IF( ( pSplitRendEncBuffer->data_fx = malloc( bufConfig.numChannels * bufConfig.numSamplesPerChannel * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + + pSplitRendEncBuffer->q_factor = 0; + pSplitRendEncBuffer->pq_fact = &pSplitRendEncBuffer->q_factor; + } + ELSE + { + IVAS_REND_AudioBufferConfig bufConfig2; + + bufConfig2.numSamplesPerChannel = 0; + bufConfig2.numChannels = 0; + bufConfig2.is_cldfb = 0; + pSplitRendEncBuffer->config = bufConfig2; + pSplitRendEncBuffer->data_fx = NULL; + pSplitRendEncBuffer->pq_fact = NULL; + pSplitRendEncBuffer->q_factor = 0; + move16(); + move16(); + move16(); + move32(); + move32(); + } + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * IVAS_REND_AddInput() * * *-------------------------------------------------------------------*/ @@ -3375,7 +3904,7 @@ ivas_error IVAS_REND_AddInput_fx( Word32 maxNumInputsOfType; void *inputsArray; Word32 inputStructSize; - ivas_error ( *activateInput )( void *, AUDIO_CONFIG, IVAS_REND_InputId, RENDER_CONFIG_DATA * ); + ivas_error ( *activateInput )( void *, AUDIO_CONFIG, IVAS_REND_InputId, RENDER_CONFIG_DATA *, hrtf_handles *hrtfs ); Word32 inputIndex; /* Validate function arguments */ @@ -3385,6 +3914,17 @@ ivas_error IVAS_REND_AddInput_fx( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } + IF( ( EQ_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) && hIvasRend->splitRendEncBuffer.data_fx == NULL && hIvasRend->hRendererConfig != NULL ) + { + Word16 cldfb_in_flag; + cldfb_in_flag = getCldfbRendFlag( hIvasRend, getAudioConfigType( inConfig ) ); + + IF( ( error = ivas_pre_rend_init( &hIvasRend->splitRendWrapper, &hIvasRend->splitRendEncBuffer, &hIvasRend->hRendererConfig->split_rend_config, hIvasRend->headRotData, hIvasRend->sampleRateOut, hIvasRend->outputConfig, cldfb_in_flag, hIvasRend->num_subframes ) ) != IVAS_ERR_OK ) + { + return error; + } + } + SWITCH( getAudioConfigType( inConfig ) ) { @@ -3432,8 +3972,7 @@ ivas_error IVAS_REND_AddInput_fx( *inputId = makeInputId( inConfig, inputIndex ); move16(); - - IF( NE_32( ( error = activateInput( (UWord8 *) inputsArray + inputStructSize * inputIndex, inConfig, *inputId, hIvasRend->hRendererConfig ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = activateInput( (uint8_t *) inputsArray + inputStructSize * inputIndex, inConfig, *inputId, hIvasRend->hRendererConfig, &hIvasRend->hHrtfs ) ), IVAS_ERR_OK ) ) { return error; } @@ -3493,9 +4032,10 @@ ivas_error IVAS_REND_ConfigureCustomInputLoudspeakerLayout( test(); test(); - IF( EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL ) || EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR ) || EQ_16( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + + IF( EQ_32( getAudioConfigType( hIvasRend->outputConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) ) { - IF( NE_32( ( error = initMcBinauralRendering( inputMc, inputMc->base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, FALSE ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = initMcBinauralRendering( inputMc, inputMc->base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, hIvasRend->hHrtfs.hHrtfStatistics, FALSE ) ), IVAS_ERR_OK ) ) { return error; } @@ -3835,6 +4375,25 @@ ivas_error IVAS_REND_GetDelay_fx( { IF( NE_32( hIvasRend->inputsSba[i].base.inConfig, IVAS_AUDIO_CONFIG_INVALID ) ) { + if ( hIvasRend->splitRendWrapper.hBinHrSplitPreRend != NULL ) + { + if ( hIvasRend->hRendererConfig->split_rend_config.rendererSelection == ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) + { + latency_ns = hIvasRend->inputsSba[i].cldfbRendWrapper.binaural_latency_ns; + } + else + { + latency_ns = ( hIvasRend->inputsSba[i].crendWrapper != NULL ) ? hIvasRend->inputsSba[i].crendWrapper->binaural_latency_ns : 0; + } + max_latency_ns = max( max_latency_ns, latency_ns ); + } + else if ( hIvasRend->inputsSba[i].cldfbRendWrapper.hCldfbRend != NULL ) + { + latency_ns = hIvasRend->inputsSba[i].cldfbRendWrapper.binaural_latency_ns; + latency_ns += IVAS_FB_DEC_DELAY_NS; + max_latency_ns = max( max_latency_ns, latency_ns ); + } + else { IF( hIvasRend->inputsSba[i].crendWrapper != NULL ) { @@ -3885,6 +4444,7 @@ ivas_error IVAS_REND_FeedInputAudio_fx( ivas_error error; input_base *inputBase; Word16 numInputChannels; + Word16 cldfb2tdShift; /* Validate function arguments */ test(); @@ -3894,7 +4454,10 @@ ivas_error IVAS_REND_FeedInputAudio_fx( } test(); - IF( inputAudio.config.numSamplesPerChannel <= 0 || LT_16( MAX_BUFFER_LENGTH_PER_CHANNEL, inputAudio.config.numSamplesPerChannel ) ) + cldfb2tdShift = ( inputAudio.config.is_cldfb ) ? 1 : 0; + + IF( inputAudio.config.numSamplesPerChannel <= 0 || ( MAX_BUFFER_LENGTH_PER_CHANNEL < inputAudio.config.numSamplesPerChannel && inputAudio.config.is_cldfb == 0 ) || + ( ( shl( MAX_BUFFER_LENGTH_PER_CHANNEL, cldfb2tdShift ) ) < inputAudio.config.numSamplesPerChannel && inputAudio.config.is_cldfb == 1 ) ) { return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Buffer size outside of supported range" ); } @@ -3908,7 +4471,9 @@ ivas_error IVAS_REND_FeedInputAudio_fx( test(); move32(); // move added for typecasting IF( EQ_32( getAudioConfigType( hIvasRend->outputConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) && - NE_32( L_mult0( inputAudio.config.numSamplesPerChannel, 1000 ), (Word32) W_mult0_32_32( L_mult0( BINAURAL_RENDERING_FRAME_SIZE_MS, hIvasRend->num_subframes ), hIvasRend->sampleRateOut ) ) ) + NE_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && + NE_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) && + NE_32( L_shr( L_mult0( inputAudio.config.numSamplesPerChannel, 1000 ), cldfb2tdShift ), (Word32) W_mult0_32_32( L_mult0( BINAURAL_RENDERING_FRAME_SIZE_MS, hIvasRend->num_subframes ), hIvasRend->sampleRateOut ) ) ) { return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Binaural rendering requires specific frame size" ); } @@ -3939,7 +4504,7 @@ ivas_error IVAS_REND_FeedInputAudio_fx( MVR2R_WORD32( inputAudio.data_fx, inputBase->inputBuffer.data_fx, inputAudio.config.numSamplesPerChannel * inputAudio.config.numChannels ); - inputBase->numNewSamplesPerChannel = inputAudio.config.numSamplesPerChannel; + inputBase->numNewSamplesPerChannel = shr( inputAudio.config.numSamplesPerChannel, cldfb2tdShift ); move32(); return IVAS_ERR_OK; @@ -4135,6 +4700,17 @@ Word16 IVAS_REND_GetRenderConfig( Copy32( hRCin->roomAcoustics.pAcoustic_rt60_fx, hRCout->roomAcoustics.pAcoustic_rt60_fx, CLDFB_NO_CHANNELS_MAX ); Copy32( hRCin->roomAcoustics.pAcoustic_dsr_fx, hRCout->roomAcoustics.pAcoustic_dsr_fx, CLDFB_NO_CHANNELS_MAX ); + 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; + hRCout->split_rend_config.isar_frame_size_ms = 20; + 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; + hRCout->split_rend_config.lc3plus_highres = 0; + hRCout->roomAcoustics.use_er = hRCin->roomAcoustics.use_er; hRCout->roomAcoustics.lowComplexity = hRCin->roomAcoustics.lowComplexity; @@ -4157,6 +4733,7 @@ Word16 IVAS_REND_FeedRenderConfig( ) { RENDER_CONFIG_HANDLE hRenderConfig; + ivas_error error; test(); IF( hIvasRend == NULL || hIvasRend->hRendererConfig == NULL ) @@ -4192,6 +4769,33 @@ Word16 IVAS_REND_FeedRenderConfig( Copy32( renderConfig.roomAcoustics.AbsCoeff_fx, hRenderConfig->roomAcoustics.AbsCoeff_fx, IVAS_ROOM_ABS_COEFF ); } + hRenderConfig->split_rend_config = renderConfig.split_rend_config; + /* Overwrite any pose correction settings if 0 DOF (no pose correction) was selected */ + IF( EQ_16( hRenderConfig->split_rend_config.dof, 0 ) ) + { + hRenderConfig->split_rend_config.poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE; + } + + hRenderConfig->split_rend_config.codec = renderConfig.split_rend_config.codec; + + IF( ( error = isar_split_rend_validate_config( &hRenderConfig->split_rend_config, ( hIvasRend->outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0 ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Must re-initialize split rendering config in case renderer config is updated after adding renderer inputs */ + /* if its not initialized yet then no need to re-initialize, initialization will happen while adding inputs*/ + IF( hIvasRend->splitRendEncBuffer.data_fx != NULL && hIvasRend->hRendererConfig != NULL ) + { + int16_t cldfb_in_flag; + cldfb_in_flag = getCldfbRendFlag( hIvasRend, IVAS_REND_AUDIO_CONFIG_TYPE_UNKNOWN ); + ISAR_PRE_REND_close( &hIvasRend->splitRendWrapper, &hIvasRend->splitRendEncBuffer ); + + IF( ( error = ivas_pre_rend_init( &hIvasRend->splitRendWrapper, &hIvasRend->splitRendEncBuffer, &hIvasRend->hRendererConfig->split_rend_config, hIvasRend->headRotData, hIvasRend->sampleRateOut, hIvasRend->outputConfig, cldfb_in_flag, hIvasRend->num_subframes ) ) != IVAS_ERR_OK ) + { + return error; + } + } return IVAS_ERR_OK; } @@ -4202,10 +4806,11 @@ Word16 IVAS_REND_FeedRenderConfig( * *-------------------------------------------------------------------*/ ivas_error IVAS_REND_SetHeadRotation( - IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ - const IVAS_QUATERNION headRot, /* i : head orientations for next rendering call */ - const IVAS_VECTOR3 Pos, /* i : listener positions for next rendering call */ - const Word16 sf_idx /* i : subframe index */ + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const IVAS_QUATERNION headRot, /* i : head orientations for next rendering call */ + const IVAS_VECTOR3 Pos, /* i : listener positions for next rendering call */ + const ISAR_SPLIT_REND_ROT_AXIS rot_axis, /* i : external control for rotation axis for split rendering */ + const Word16 sf_idx /* i : subframe index */ ) { Word16 i; @@ -4232,7 +4837,7 @@ ivas_error IVAS_REND_SetHeadRotation( { IF( NE_32( hIvasRend->inputsMc[i].base.inConfig, IVAS_AUDIO_CONFIG_INVALID ) ) { - IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, TRUE ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, hIvasRend->hHrtfs.hHrtfStatistics, TRUE ) ), IVAS_ERR_OK ) ) { return error; } @@ -4240,9 +4845,10 @@ ivas_error IVAS_REND_SetHeadRotation( } /* check for Euler angle signaling */ - IF( EQ_32( headRot.w_fx, -1610612736 /* -3.0f in Q29 */ ) ) + IF( EQ_32( headRot.w_fx, L_negate( 12582912 ) ) && EQ_16( headRot.q_fact, Q22 ) ) { Euler2Quat_fx( deg2rad_fx( headRot.x_fx ), deg2rad_fx( headRot.y_fx ), deg2rad_fx( headRot.z_fx ), &rotQuat ); + modify_Quat_q_fx( &rotQuat, &rotQuat, Q29 ); } ELSE { @@ -4290,6 +4896,8 @@ ivas_error IVAS_REND_SetHeadRotation( return error; } + hIvasRend->headRotData.sr_pose_pred_axis = rot_axis; + hIvasRend->headRotData.Pos[sf_idx] = Pos; return IVAS_ERR_OK; @@ -4323,7 +4931,7 @@ ivas_error IVAS_REND_DisableHeadRotation( { IF( NE_32( hIvasRend->inputsMc[i].base.inConfig, IVAS_AUDIO_CONFIG_INVALID ) ) { - IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, TRUE ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = initMcBinauralRendering( &hIvasRend->inputsMc[i], hIvasRend->inputsMc[i].base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig, hIvasRend->hHrtfs.hSetOfHRTF, hIvasRend->hHrtfs.hHrtfStatistics, TRUE ) ), IVAS_ERR_OK ) ) { return error; @@ -4335,6 +4943,23 @@ ivas_error IVAS_REND_DisableHeadRotation( return IVAS_ERR_OK; } +/*-------------------------------------------------------------------* + * IVAS_REND_SetSplitRendBFI() + * + * + *-------------------------------------------------------------------*/ + +ivas_error +IVAS_REND_SetSplitRendBFI( + IVAS_REND_HANDLE hIvasRend, + const int16_t bfi ) +{ + hIvasRend->splitRendBFI = bfi; + + return IVAS_ERR_OK; +} + + /*-------------------------------------------------------------------* * IVAS_REND_SetOrientationTrackingMode() * @@ -5044,9 +5669,14 @@ static Word16 getNumSubframesInBuffer( const IVAS_REND_AudioBuffer *buffer, const Word32 sampleRate ) { + Word16 cldfb2tdShift; + + cldfb2tdShift = buffer->config.is_cldfb ? 1 : 0; + Word16 scale, temp = extract_l( Mpy_32_32( sampleRate, 10737418 /* 1 / FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES in Q31 */ ) ); temp = BASOP_Util_Divide1616_Scale( buffer->config.numSamplesPerChannel, temp, &scale ); temp = shr( temp, sub( 15, scale ) ); /* Q0 */ + temp = shr( temp, cldfb2tdShift ); return temp; } @@ -5223,7 +5853,7 @@ static ivas_error renderIsmToBinauralRoom( } // Crend_process porting CREND_HANDLE hCrend; - hCrend = ismInput->crendWrapper->hCrend; + hCrend = ismInput->crendWrapper->hCrend[0]; IF( hCrend->reflections != NULL ) { test(); @@ -5240,11 +5870,7 @@ static ivas_error renderIsmToBinauralRoom( move16(); /* render 7_1_4 with BRIRs */ - IF( NE_32( ( error = ivas_rend_crendProcess( ismInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, - NULL, NULL, NULL, NULL, p_tmpRendBuffer, *ismInput->base.ctx.pOutSampleRate, - getNumSubframesInBuffer( &outAudio, *ismInput->base.ctx.pOutSampleRate ) ) ), - IVAS_ERR_OK ) ) - + IF( NE_32( ( error = ivas_rend_crendProcessSubframe( ismInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, ismInput->base.inputBuffer.config.numSamplesPerChannel, *ismInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { return error; } @@ -5532,6 +6158,130 @@ static ivas_error renderIsmToSba( return error; } +static ivas_error renderIsmToSplitBinaural( + input_ism *ismInput, + const IVAS_REND_AudioBuffer outAudio ) +{ + ivas_error error; + Word32 tmpProcessing[MAX_NUM_OBJECTS][L_FRAME48k]; + Word16 pos_idx; + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData; + const SPLIT_REND_WRAPPER *pSplitRendWrapper; + IVAS_QUATERNION originalHeadRot[MAX_PARAM_SPATIAL_SUBFRAMES]; + IVAS_QUATERNION localHeadRot[MAX_PARAM_SPATIAL_SUBFRAMES]; + Word16 i; + Word32 tmpBinaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][L_FRAME48k]; + Word16 output_frame = ismInput->base.inputBuffer.config.numSamplesPerChannel; + COMBINED_ORIENTATION_HANDLE pCombinedOrientationData; + Word16 ism_md_subframe_update_ext, exp; + + push_wmops( "renderIsmToSplitBinaural" ); + + pSplitRendWrapper = ismInput->base.ctx.pSplitRendWrapper; + pMultiBinPoseData = &pSplitRendWrapper->multiBinPoseData; + + exp = *outAudio.pq_fact; + /* Metadata Delay to sync with audio delay converted from ms to 5ms (1000/50/4) subframe index */ + ism_md_subframe_update_ext = (Word16) Mpy_32_32( ismInput->ism_metadata_delay_ms_fx, ONE_BY_SUBFRAME_LEN_MS_Q31 ); + + pCombinedOrientationData = *ismInput->base.ctx.pCombinedOrientationData; + + IF( EQ_32( pMultiBinPoseData->poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) ) + { + FOR( i = 1; i < pCombinedOrientationData->num_subframes; ++i ) + { + Copy_Quat_fx( &pCombinedOrientationData->Quaternions[0], &pCombinedOrientationData->Quaternions[i] ); + } + } + + /* Save current head positions */ + FOR( i = 0; i < pCombinedOrientationData->num_subframes; ++i ) + { + Copy_Quat_fx( &pCombinedOrientationData->Quaternions[i], &originalHeadRot[i] ); + } + + /* Copy input audio to a processing buffer. */ + copyBufferTo2dArray_fx( ismInput->base.inputBuffer, tmpProcessing ); + + + FOR( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ ) + { + /* Update head positions */ + IF( NE_16( pos_idx, 0 ) ) + { + Word16 q_fact_orig; + FOR( i = 0; i < pCombinedOrientationData->num_subframes; ++i ) + { + pCombinedOrientationData->Quaternions[i].w_fx = L_negate( 12582912 ); // Q22 + q_fact_orig = originalHeadRot[i].q_fact; + modify_Quat_q_fx( &originalHeadRot[i], &localHeadRot[i], Q22 ); + /*euler*/ + Quat2EulerDegree_fx( localHeadRot[i], + &pCombinedOrientationData->Quaternions[i].z_fx, + &pCombinedOrientationData->Quaternions[i].y_fx, + &pCombinedOrientationData->Quaternions[i].x_fx ); + pCombinedOrientationData->Quaternions[i].x_fx = L_add( pCombinedOrientationData->Quaternions[i].x_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][0] ); + pCombinedOrientationData->Quaternions[i].y_fx = L_add( pCombinedOrientationData->Quaternions[i].y_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][1] ); + pCombinedOrientationData->Quaternions[i].z_fx = L_add( pCombinedOrientationData->Quaternions[i].z_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][2] ); + + Euler2Quat_fx( deg2rad_fx( pCombinedOrientationData->Quaternions[i].x_fx ), + deg2rad_fx( pCombinedOrientationData->Quaternions[i].y_fx ), + deg2rad_fx( pCombinedOrientationData->Quaternions[i].z_fx ), &pCombinedOrientationData->Quaternions[i] ); + + modify_Quat_q_fx( &pCombinedOrientationData->Quaternions[i], &pCombinedOrientationData->Quaternions[i], q_fact_orig ); + } + } + + + FOR( i = 0; i < MAX_NUM_OBJECTS; ++i ) + { + Scale_sig32( tmpProcessing[i], L_FRAME48k, sub( Q11, exp ) ); /* Q11 */ + } + /* Render */ + IF( ( error = ivas_td_binaural_renderer_ext_fx( ( pos_idx == 0 ) ? &ismInput->tdRendWrapper : &ismInput->splitTdRendWrappers[sub( pos_idx, 1 )], ismInput->base.inConfig, NULL, ismInput->base.ctx.pCombinedOrientationData, &ismInput->currentPos, + NULL, ism_md_subframe_update_ext, *ismInput->base.ctx.pOutSampleRate, output_frame, tmpProcessing, &exp ) ) != IVAS_ERR_OK ) + { + return error; + } + FOR( i = 0; i < BINAURAL_CHANNELS; ++i ) + { + Scale_sig32( tmpProcessing[i], L_FRAME48k, negate( sub( Q11, exp ) ) ); /* Q(exp) */ + } + + IF( ismInput->hReverb != NULL ) + { + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + FOR( Word16 j = 0; j < outAudio.config.numSamplesPerChannel; j++ ) + { + tmpProcessing[i][j] = L_shl( tmpProcessing[i][j], Q2 ); /* Q(exp + 2) */ + move32(); + } + } + } + /* Copy rendered audio to tmp storage buffer. Copying directly to output would + * overwrite original audio, which is still needed for rendering next head pose. */ + Copy32( tmpProcessing[0], tmpBinaural[i_mult( 2, pos_idx )], output_frame ); + Copy32( tmpProcessing[1], tmpBinaural[add( i_mult( 2, pos_idx ), 1 )], output_frame ); + + /* Overwrite processing buffer with original input audio again */ + copyBufferTo2dArray_fx( ismInput->base.inputBuffer, tmpProcessing ); + } + + /* Restore original head rotation */ + FOR( i = 0; i < pCombinedOrientationData->num_subframes; ++i ) + { + Copy_Quat_fx( &originalHeadRot[i], &pCombinedOrientationData->Quaternions[i] ); + } + + accumulate2dArrayToBuffer_fx( tmpBinaural, &outAudio ); + pop_wmops(); + + /* Encoding to split rendering bitstream done at a higher level */ + return IVAS_ERR_OK; +} + + static void renderIsmToMasa( input_ism *ismInput, IVAS_REND_AudioBuffer outAudio, @@ -5622,6 +6372,10 @@ static ivas_error renderInputIsm( case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: error = renderIsmToBinauralRoom( ismInput, outAudio, &exp ); BREAK; + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: + error = renderIsmToSplitBinaural( ismInput, outAudio ); + break; case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: error = renderIsmToBinauralReverb( ismInput, outAudio ); BREAK; @@ -5684,13 +6438,16 @@ static ivas_error renderActiveInputsIsm( } return IVAS_ERR_OK; } + static ivas_error renderLfeToBinaural_fx( const input_mc *mcInput, + const AUDIO_CONFIG outConfig, IVAS_REND_AudioBuffer outAudio, Word16 in_q, Word16 out_q ) { Word16 lfe_idx; + Word16 pose_idx, num_poses; Word32 gain_fx; Word16 ear_idx, i, r_shift; Word32 tmpLfeBuffer[MAX_BUFFER_LENGTH_PER_CHANNEL]; @@ -5698,7 +6455,7 @@ static ivas_error renderLfeToBinaural_fx( const Word32 *lfeInput; Word32 *writePtr; - assert( ( outAudio.config.numChannels == 2 ) && "Must be binaural output" ); + assert( ( getAudioConfigType( outConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) && "Must be binaural output" ); push_wmops( "renderLfeToBinaural" ); gain_fx = GAIN_LFE_WORD32; /* 1.88364911f in Q30 */ @@ -5752,12 +6509,27 @@ static ivas_error renderLfeToBinaural_fx( move32(); } } - /* Copy LFE to left and right ears */ - FOR( ear_idx = 0; ear_idx < BINAURAL_CHANNELS; ++ear_idx ) + + /* Copy LFE to left and right binaural channels for all poses */ + IF( mcInput->base.ctx.pSplitRendWrapper != NULL ) + { + num_poses = mcInput->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses; + move16(); + } + ELSE { - writePtr = getSmplPtr_fx( outAudio, ear_idx, 0 ); - move32(); - v_add_fixed_no_hdrm( writePtr, tmpLfeBuffer, writePtr, frame_size ); /* Q(out_q) */ + num_poses = 1; + move16(); + } + + FOR( pose_idx = 0; pose_idx < num_poses; ++pose_idx ) + { + FOR( ear_idx = 0; ear_idx < BINAURAL_CHANNELS; ++ear_idx ) + { + writePtr = getSmplPtr_fx( outAudio, add( i_mult( pose_idx, BINAURAL_CHANNELS ), ear_idx ), 0 ); + move32(); + v_add_fixed_no_hdrm( writePtr, tmpLfeBuffer, writePtr, frame_size ); /* Q(out_q) */ + } } pop_wmops(); @@ -5835,7 +6607,7 @@ static ivas_error renderMcToBinaural( tmpRotBuffer.data_fx = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( Word32 ) ); set32_fx( tmpRotBuffer.data_fx, 0, imult1616( tmpRotBuffer.config.numSamplesPerChannel, tmpRotBuffer.config.numChannels ) ); - IF( NE_32( ( error = rotateFrameMc_fx( mcInput->base.inputBuffer, mcInput->base.inConfig, &mcInput->customLsInput, mcInput->base.ctx.pHeadRotData, mcInput->base.ctx.pCombinedOrientationData, mcInput->rot_gains_prev_fx, mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = rotateFrameMc_fx( mcInput->base.inputBuffer, mcInput->base.inConfig, &mcInput->customLsInput, mcInput->base.ctx.pHeadRotData, mcInput->base.ctx.pCombinedOrientationData, mcInput->rot_gains_prev_fx[0], mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ), IVAS_ERR_OK ) ) { return error; } @@ -5852,15 +6624,14 @@ static ivas_error renderMcToBinaural( } // Porting Crend_process function CREND_HANDLE hCrend; - hCrend = mcInput->crendWrapper->hCrend; + hCrend = mcInput->crendWrapper->hCrend[0]; /* call CREND */ - IF( NE_32( ( error = ivas_rend_crendProcess( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, p_tmpRendBuffer_fx, *mcInput->base.ctx.pOutSampleRate, - getNumSubframesInBuffer( &outAudio, *mcInput->base.ctx.pOutSampleRate ) ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer_fx, p_tmpRendBuffer_fx, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { return error; } + IF( hCrend->hReverb != NULL ) { exp = sub( exp, 2 ); @@ -5869,7 +6640,7 @@ static ivas_error renderMcToBinaural( accumulate2dArrayToBuffer_fx( tmpRendBuffer_fx, &outAudio ); - IF( NE_32( ( error = renderLfeToBinaural_fx( mcInput, outAudio, *outAudio.pq_fact, exp ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = renderLfeToBinaural_fx( mcInput, outConfig, outAudio, *outAudio.pq_fact, exp ) ), IVAS_ERR_OK ) ) { return error; @@ -5955,7 +6726,7 @@ static ivas_error renderMcToBinauralRoom( set32_fx( tmpRotBuffer.data_fx, 0, tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels ); IF( NE_32( ( error = rotateFrameMc_fx( mcInput->base.inputBuffer, mcInput->base.inConfig, &mcInput->customLsInput, mcInput->base.ctx.pHeadRotData, mcInput->base.ctx.pCombinedOrientationData, - mcInput->rot_gains_prev_fx, + mcInput->rot_gains_prev_fx[0], mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ), IVAS_ERR_OK ) ) { @@ -5973,15 +6744,14 @@ static ivas_error renderMcToBinauralRoom( } // Porting Crend_process function CREND_HANDLE hCrend; - hCrend = mcInput->crendWrapper->hCrend; + hCrend = mcInput->crendWrapper->hCrend[0]; /* call CREND */ - IF( NE_32( ( error = ivas_rend_crendProcess( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, p_tmpRendBuffer, *mcInput->base.ctx.pOutSampleRate, - getNumSubframesInBuffer( &outAudio, *mcInput->base.ctx.pOutSampleRate ) ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { return error; } + IF( hCrend->hReverb != NULL ) { exp = sub( exp, Q2 ); @@ -5990,7 +6760,7 @@ static ivas_error renderMcToBinauralRoom( accumulate2dArrayToBuffer_fx( tmpRendBuffer, &outAudio ); - IF( NE_32( ( error = renderLfeToBinaural_fx( mcInput, outAudio, *outAudio.pq_fact, exp ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = renderLfeToBinaural_fx( mcInput, outConfig, outAudio, *outAudio.pq_fact, exp ) ), IVAS_ERR_OK ) ) { return error; } @@ -6049,7 +6819,7 @@ static ivas_error renderMcCustomLsToBinauralRoom( set32_fx( tmpRotBuffer.data_fx, 0, tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels ); IF( NE_32( ( error = rotateFrameMc_fx( mcInput->base.inputBuffer, mcInput->base.inConfig, &mcInput->customLsInput, mcInput->base.ctx.pHeadRotData, mcInput->base.ctx.pCombinedOrientationData, - mcInput->rot_gains_prev_fx, + mcInput->rot_gains_prev_fx[0], mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ), IVAS_ERR_OK ) ) { @@ -6086,14 +6856,14 @@ static ivas_error renderMcCustomLsToBinauralRoom( copyBufferTo2dArray_fx( tmpMcBuffer, tmpCrendBuffer ); CREND_HANDLE hCrend; - hCrend = mcInput->crendWrapper->hCrend; + hCrend = mcInput->crendWrapper->hCrend[0]; + /* call CREND */ - IF( NE_32( ( error = ivas_rend_crendProcess( mcInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, - p_tmpCrendBuffer, *mcInput->base.ctx.pOutSampleRate, getNumSubframesInBuffer( &outAudio, *mcInput->base.ctx.pOutSampleRate ) ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { return error; } + IF( hCrend->hReverb != NULL ) { exp = sub( exp, 2 ); @@ -6101,7 +6871,7 @@ static ivas_error renderMcCustomLsToBinauralRoom( accumulate2dArrayToBuffer_fx( tmpCrendBuffer, &outAudio ); - IF( NE_32( ( error = renderLfeToBinaural_fx( mcInput, outAudio, *outAudio.pq_fact, exp ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = renderLfeToBinaural_fx( mcInput, outConfig, outAudio, *outAudio.pq_fact, exp ) ), IVAS_ERR_OK ) ) { return error; } @@ -6166,45 +6936,255 @@ static void renderMcToMasa( return; } -static ivas_error renderInputMc( +static ivas_error renderMcToSplitBinaural( input_mc *mcInput, const AUDIO_CONFIG outConfig, IVAS_REND_AudioBuffer outAudio ) { + Word16 i, j, pos_idx; + Word16 sf; + Word16 output_frame; ivas_error error; - IVAS_REND_AudioBuffer inAudio; - error = IVAS_ERR_OK; + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData; + const SPLIT_REND_WRAPPER *pSplitRendWrapper; + Word32 tmpRendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + Word32 *p_tmpRendBuffer[MAX_OUTPUT_CHANNELS]; + Word32 tmpSplitBinauralBuffer[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][L_FRAME48k]; + AUDIO_CONFIG inConfig; + IVAS_REND_AudioBuffer tmpRotBuffer; + COMBINED_ORIENTATION_DATA combinedOrientationDataLocal; + COMBINED_ORIENTATION_HANDLE pCombinedOrientationDataLocal; + Word16 exp = *outAudio.pq_fact; + move16(); + CREND_HANDLE hCrend; + IVAS_QUATERNION Quaternions_orig[MAX_PARAM_SPATIAL_SUBFRAMES], Quaternions_abs; + Word16 q_fact_orig; + + push_wmops( "renderMcToSplitBinaural" ); + inConfig = mcInput->base.inConfig; move32(); + output_frame = mcInput->base.inputBuffer.config.numSamplesPerChannel; + move16(); - inAudio = mcInput->base.inputBuffer; + pSplitRendWrapper = mcInput->base.ctx.pSplitRendWrapper; + pMultiBinPoseData = &pSplitRendWrapper->multiBinPoseData; + move32(); + move32(); - IF( NE_32( mcInput->base.numNewSamplesPerChannel, outAudio.config.numSamplesPerChannel ) ) + FOR( i = 0; i < MAX_OUTPUT_CHANNELS; ++i ) { - return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Mismatch between the number of input samples vs number of requested output samples - currently not allowed" ); + p_tmpRendBuffer[i] = tmpRendBuffer[i]; + move32(); } - mcInput->base.numNewSamplesPerChannel = 0; - move32(); - v_multc_fixed( inAudio.data_fx, mcInput->base.gain_fx, inAudio.data_fx, inAudio.config.numSamplesPerChannel * inAudio.config.numChannels ); - *outAudio.pq_fact = sub( *outAudio.pq_fact, Q1 ); // reducing the Q by 1 compensating for the v_mult_fixed done - move16(); - /* set combined orientation subframe info to start info */ - ivas_combined_orientation_set_to_start_index( *( mcInput->base.ctx.pCombinedOrientationData ) ); - SWITCH( getAudioConfigType( outConfig ) ) + /* save current head positions */ + pCombinedOrientationDataLocal = *mcInput->base.ctx.pCombinedOrientationData; + move32(); + combinedOrientationDataLocal = *pCombinedOrientationDataLocal; + move32(); + IF( EQ_32( pMultiBinPoseData->poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) ) { - case IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED: - renderMcToMc( mcInput, outAudio ); - BREAK; - case IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS: - renderMcToSba( mcInput, outAudio ); - BREAK; - case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: - SWITCH( outConfig ) + FOR( sf = 1; sf < combinedOrientationDataLocal.num_subframes; ++sf ) + { + Copy_Quat_fx( &combinedOrientationDataLocal.Quaternions[0], &combinedOrientationDataLocal.Quaternions[sf] ); + FOR( i = 0; i < 3; i++ ) { - case IVAS_AUDIO_CONFIG_BINAURAL: - error = renderMcToBinaural( mcInput, outConfig, outAudio ); - BREAK; - case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: + FOR( j = 0; j < 3; j++ ) + { + combinedOrientationDataLocal.Rmat_fx[sf][i][j] = combinedOrientationDataLocal.Rmat_fx[0][i][j]; + move32(); + } + } + } + } + + /* temporary buffer for rotation in source format for CREND */ + tmpRotBuffer = mcInput->base.inputBuffer; + move32(); + IF( NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) && NE_32( inConfig, IVAS_AUDIO_CONFIG_5_1 ) && NE_32( inConfig, IVAS_AUDIO_CONFIG_7_1 ) ) + { + tmpRotBuffer.data_fx = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( Word32 ) ); + } + + FOR( i = 0; i < combinedOrientationDataLocal.num_subframes; i++ ) + { + Copy_Quat_fx( &combinedOrientationDataLocal.Quaternions[i], &Quaternions_orig[i] ); + } + + FOR( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ ) + { + /* Update head positions */ + FOR( i = 0; i < combinedOrientationDataLocal.num_subframes; i++ ) + { + Quaternions_abs.w_fx = L_negate( 12582912 ); // Q22 + q_fact_orig = Quaternions_orig[i].q_fact; + modify_Quat_q_fx( &combinedOrientationDataLocal.Quaternions[i], &combinedOrientationDataLocal.Quaternions[i], Q22 ); + /*euler*/ + Quat2EulerDegree_fx( combinedOrientationDataLocal.Quaternions[i], + &Quaternions_abs.z_fx, + &Quaternions_abs.y_fx, + &Quaternions_abs.x_fx ); + Quaternions_abs.x_fx = L_add( Quaternions_abs.x_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][0] ); + Quaternions_abs.y_fx = L_add( Quaternions_abs.y_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][1] ); + Quaternions_abs.z_fx = L_add( Quaternions_abs.z_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][2] ); + + Euler2Quat_fx( deg2rad_fx( Quaternions_abs.x_fx ), + deg2rad_fx( Quaternions_abs.y_fx ), + deg2rad_fx( Quaternions_abs.z_fx ), &Quaternions_abs ); + + modify_Quat_q_fx( &Quaternions_abs, &Quaternions_abs, q_fact_orig ); + + Copy_Quat_fx( &Quaternions_abs, &combinedOrientationDataLocal.Quaternions[i] ); + QuatToRotMat_fx( combinedOrientationDataLocal.Quaternions[i], combinedOrientationDataLocal.Rmat_fx[i] ); + modify_Rmat_q_fx( combinedOrientationDataLocal.Rmat_fx[i], combinedOrientationDataLocal.Rmat_fx[i], sub( shl( q_fact_orig, 1 ), 32 ), Q30 ); + } + + IF( EQ_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) || EQ_32( inConfig, IVAS_AUDIO_CONFIG_5_1 ) || EQ_32( inConfig, IVAS_AUDIO_CONFIG_7_1 ) ) + { + /* tdrend processing overview: + * 1. copy from inputBuffer to tmpRendBuffer + * 2. td_binaural_renderer_ext: inplace processing in tmpRendBuffer + * 3. copy from tmpRendBuffer to tmpSplitBinBuffer + * 4. LFE mixing + * 5. tmpSplitBinBuffer accumulated to outBuffer */ + + /* copy input to tdrend input/output buffer */ + copyBufferTo2dArray_fx( mcInput->base.inputBuffer, tmpRendBuffer ); + + /* perform rotation in source format to tmpRotBuffer */ + pCombinedOrientationDataLocal = &combinedOrientationDataLocal; + + FOR( i = 0; i < MAX_OUTPUT_CHANNELS; ++i ) + { + Scale_sig32( tmpRendBuffer[i], L_FRAME48k, sub( Q11, exp ) ); /* Q11 */ + } + /* Render */ + IF( ( error = ivas_td_binaural_renderer_ext_fx( ( pos_idx == 0 ) ? &mcInput->tdRendWrapper : &mcInput->splitTdRendWrappers[pos_idx - 1], mcInput->base.inConfig, &mcInput->customLsInput, &pCombinedOrientationDataLocal, NULL, mcInput->hReverb, 0, /* Ism Audio Metadata Delay Sync in ms for External Renderer */ *mcInput->base.ctx.pOutSampleRate, mcInput->base.inputBuffer.config.numSamplesPerChannel, tmpRendBuffer, &exp ) ) != IVAS_ERR_OK ) + { + return error; + } + FOR( i = 0; i < BINAURAL_CHANNELS; ++i ) + { + Scale_sig32( tmpRendBuffer[i], L_FRAME48k, negate( sub( Q11, exp ) ) ); /* Q(exp) */ + } + + /* Copy rendered audio to tmp storage buffer. Copying directly to output would + * overwrite original audio, which is still needed for rendering next head pose. */ + Copy32( tmpRendBuffer[0], tmpSplitBinauralBuffer[i_mult( 2, pos_idx )], output_frame ); + Copy32( tmpRendBuffer[1], tmpSplitBinauralBuffer[add( i_mult( 2, pos_idx ), 1 )], output_frame ); + } + ELSE + { + hCrend = mcInput->crendWrapper->hCrend[0]; + /* crend processing overview: + * 1. rotateFrameMc: inputBuffer to tmpRotBuffer + * 2. crend_process: tmpRotBuffer to tmpRendBuffer + * 3. copy from tmpRendBuffer to tmpSplitBinBuffer + * 4. LFE mixing + * 5. tmpSplitBinBuffer accumulated to outBuffer */ + + + /* copy input for in-place rotation */ + set32_fx( tmpRotBuffer.data_fx, 0, i_mult( tmpRotBuffer.config.numSamplesPerChannel, tmpRotBuffer.config.numChannels ) ); + + /* perform rotation in source format to tmpRotBuffer */ + pCombinedOrientationDataLocal = &combinedOrientationDataLocal; + IF( ( error = rotateFrameMc_fx( mcInput->base.inputBuffer, mcInput->base.inConfig, &mcInput->customLsInput, mcInput->base.ctx.pHeadRotData, &pCombinedOrientationDataLocal, mcInput->rot_gains_prev_fx[pos_idx], mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ) != IVAS_ERR_OK ) + { + return error; + } + IF( EQ_16( pos_idx, 0 ) ) + { + exp = sub( *outAudio.pq_fact, 1 ); + } + + copyBufferTo2dArray_fx( tmpRotBuffer, tmpRendBuffer ); + + /* call CREND (rotation already performed) */ + IF( NE_32( ( error = ivas_rend_crendProcessSubframe( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpRendBuffer, p_tmpRendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, *mcInput->base.ctx.pOutSampleRate, pos_idx ) ), IVAS_ERR_OK ) ) + { + return error; + } + + IF( EQ_16( pos_idx, 0 ) ) + { + IF( hCrend->hReverb != NULL ) + { + exp = sub( exp, 2 ); + } + } + + /* Copy rendererd audio to tmp storage buffer, Copying directly to output would + * overwrite original audio, which is still needed for rendering next head pose. */ + Copy32( tmpRendBuffer[0], tmpSplitBinauralBuffer[i_mult( 2, pos_idx )], output_frame ); + Copy32( tmpRendBuffer[1], tmpSplitBinauralBuffer[add( i_mult( 2, pos_idx ), 1 )], output_frame ); + } + + /* restore original headrotation data */ + FOR( i = 0; i < combinedOrientationDataLocal.num_subframes; i++ ) + { + Copy_Quat_fx( &Quaternions_orig[i], &combinedOrientationDataLocal.Quaternions[i] ); + } + } + + IF( NE_32( inConfig, IVAS_AUDIO_CONFIG_LS_CUSTOM ) && NE_32( inConfig, IVAS_AUDIO_CONFIG_5_1 ) && NE_32( inConfig, IVAS_AUDIO_CONFIG_7_1 ) ) + { + /* free temporary buffer for rotation in source format for CREND */ + free( tmpRotBuffer.data_fx ); + } + + accumulate2dArrayToBuffer_fx( tmpSplitBinauralBuffer, &outAudio ); + + IF( ( error = renderLfeToBinaural_fx( mcInput, outConfig, outAudio, *outAudio.pq_fact, exp ) ) != IVAS_ERR_OK ) + { + return error; + } + *outAudio.pq_fact = exp; + + pop_wmops(); + return IVAS_ERR_OK; +} + + +static ivas_error renderInputMc( + input_mc *mcInput, + const AUDIO_CONFIG outConfig, + IVAS_REND_AudioBuffer outAudio ) +{ + ivas_error error; + IVAS_REND_AudioBuffer inAudio; + error = IVAS_ERR_OK; + move32(); + + inAudio = mcInput->base.inputBuffer; + + IF( NE_32( mcInput->base.numNewSamplesPerChannel, outAudio.config.numSamplesPerChannel ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Mismatch between the number of input samples vs number of requested output samples - currently not allowed" ); + } + mcInput->base.numNewSamplesPerChannel = 0; + move32(); + v_multc_fixed( inAudio.data_fx, mcInput->base.gain_fx, inAudio.data_fx, inAudio.config.numSamplesPerChannel * inAudio.config.numChannels ); + *outAudio.pq_fact = sub( *outAudio.pq_fact, Q1 ); // reducing the Q by 1 compensating for the v_mult_fixed done + move16(); + /* set combined orientation subframe info to start info */ + ivas_combined_orientation_set_to_start_index( *( mcInput->base.ctx.pCombinedOrientationData ) ); + + SWITCH( getAudioConfigType( outConfig ) ) + { + case IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED: + renderMcToMc( mcInput, outAudio ); + BREAK; + case IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS: + renderMcToSba( mcInput, outAudio ); + BREAK; + case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: + SWITCH( outConfig ) + { + case IVAS_AUDIO_CONFIG_BINAURAL: + error = renderMcToBinaural( mcInput, outConfig, outAudio ); + BREAK; + case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR: case IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: IF( mcInput->base.inConfig == IVAS_AUDIO_CONFIG_LS_CUSTOM ) { @@ -6215,6 +7195,10 @@ static ivas_error renderInputMc( error = renderMcToBinauralRoom( mcInput, outConfig, outAudio ); } BREAK; + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: + error = renderMcToSplitBinaural( mcInput, outConfig, outAudio ); + break; default: return IVAS_ERR_INVALID_OUTPUT_FORMAT; } @@ -6290,6 +7274,192 @@ static void renderSbaToSba( pop_wmops(); return; } + + +static ivas_error renderSbaToMultiBinaural( + input_sba *sbaInput, + const AUDIO_CONFIG outConfig, + Word32 out[][L_FRAME48k] ) +{ + Word32 tmpCrendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + Word32 *p_tmpCrendBuffer[MAX_OUTPUT_CHANNELS]; + Word16 sf; + Word16 i, j, pos_idx; + COMBINED_ORIENTATION_DATA combinedOrientationDataLocal; + COMBINED_ORIENTATION_HANDLE pCombinedOrientationDataLocal; + ivas_error error; + IVAS_REND_AudioBuffer tmpRotBuffer; + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData; + + FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) + { + p_tmpCrendBuffer[i] = tmpCrendBuffer[i]; + move32(); + } + push_wmops( "renderSbaToMultiBinaural" ); + pMultiBinPoseData = &sbaInput->base.ctx.pSplitRendWrapper->multiBinPoseData; + move32(); + + pCombinedOrientationDataLocal = *sbaInput->base.ctx.pCombinedOrientationData; + combinedOrientationDataLocal = *pCombinedOrientationDataLocal; + move32(); + move32(); + + IF( EQ_32( pMultiBinPoseData->poseCorrectionMode, ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) ) + { + FOR( sf = 1; sf < combinedOrientationDataLocal.num_subframes; ++sf ) + { + Copy_Quat_fx( &combinedOrientationDataLocal.Quaternions[0], &combinedOrientationDataLocal.Quaternions[sf] ); + FOR( i = 0; i < 3; i++ ) + { + FOR( j = 0; j < 3; j++ ) + { + combinedOrientationDataLocal.Rmat_fx[sf][i][j] = combinedOrientationDataLocal.Rmat_fx[0][i][j]; + move32(); + } + } + } + } + + tmpRotBuffer = sbaInput->base.inputBuffer; + tmpRotBuffer.data_fx = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( Word32 ) ); + + FOR( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ ) + { + IVAS_QUATERNION Quaternions_orig[MAX_PARAM_SPATIAL_SUBFRAMES], Quaternions_abs; + Word16 q_fact_orig; + FOR( i = 0; i < combinedOrientationDataLocal.num_subframes; i++ ) + { + Copy_Quat_fx( &combinedOrientationDataLocal.Quaternions[i], &Quaternions_orig[i] ); + + Quaternions_abs.w_fx = L_negate( 12582912 ); // Q22 + q_fact_orig = combinedOrientationDataLocal.Quaternions[i].q_fact; + modify_Quat_q_fx( &combinedOrientationDataLocal.Quaternions[i], &combinedOrientationDataLocal.Quaternions[i], Q22 ); + /*euler*/ + Quat2EulerDegree_fx( combinedOrientationDataLocal.Quaternions[i], + &Quaternions_abs.z_fx, + &Quaternions_abs.y_fx, + &Quaternions_abs.x_fx ); + Quaternions_abs.x_fx = L_add( Quaternions_abs.x_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][0] ); + Quaternions_abs.y_fx = L_add( Quaternions_abs.y_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][1] ); + Quaternions_abs.z_fx = L_add( Quaternions_abs.z_fx, pMultiBinPoseData->relative_head_poses_fx[pos_idx][2] ); + + Euler2Quat_fx( deg2rad_fx( Quaternions_abs.x_fx ), + deg2rad_fx( Quaternions_abs.y_fx ), + deg2rad_fx( Quaternions_abs.z_fx ), &Quaternions_abs ); + + modify_Quat_q_fx( &Quaternions_abs, &Quaternions_abs, q_fact_orig ); + + Copy_Quat_fx( &Quaternions_abs, &combinedOrientationDataLocal.Quaternions[i] ); + QuatToRotMat_fx( combinedOrientationDataLocal.Quaternions[i], combinedOrientationDataLocal.Rmat_fx[i] ); + modify_Rmat_q_fx( combinedOrientationDataLocal.Rmat_fx[i], combinedOrientationDataLocal.Rmat_fx[i], sub( shl( q_fact_orig, 1 ), 32 ), Q30 ); + } + + /* copy input for in-place rotation */ + Copy32( sbaInput->base.inputBuffer.data_fx, tmpRotBuffer.data_fx, tmpRotBuffer.config.numChannels * tmpRotBuffer.config.numSamplesPerChannel ); + + pCombinedOrientationDataLocal = &combinedOrientationDataLocal; + + IF( ( error = rotateFrameSba_fx( sbaInput->base.inputBuffer, sbaInput->base.inConfig, sbaInput->base.ctx.pHeadRotData, &pCombinedOrientationDataLocal, sbaInput->rot_gains_prev_fx[pos_idx], tmpRotBuffer ) ) != IVAS_ERR_OK ) + { + return error; + } + + copyBufferTo2dArray_fx( tmpRotBuffer, tmpCrendBuffer ); + + assert( sbaInput->crendWrapper->hCrend[0]->hReverb == NULL ); + + /* call CREND */ + IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, sbaInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate, pos_idx ) ), IVAS_ERR_OK ) ) + { + return error; + } + + FOR( i = 0; i < combinedOrientationDataLocal.num_subframes; i++ ) + { + Copy_Quat_fx( &Quaternions_orig[i], &combinedOrientationDataLocal.Quaternions[i] ); + } + + /* move to output */ + FOR( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + Copy32( tmpCrendBuffer[i], out[pos_idx * BINAURAL_CHANNELS + i], tmpRotBuffer.config.numSamplesPerChannel ); + } + } + + free( tmpRotBuffer.data_fx ); + + pop_wmops(); + return IVAS_ERR_OK; +} + + +static ivas_error renderSbaToMultiBinauralCldfb( + input_sba *sbaInput, + Word32 Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + Word32 Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const Word16 low_res_pre_rend_rot, + const Word16 num_subframes, + const Word16 Q_in ) +{ + Word32 Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + + copyBufferToCLDFBarray_fx( sbaInput->base.inputBuffer, Cldfb_RealBuffer, Cldfb_ImagBuffer ); + + ivas_rend_CldfbMultiBinRendProcess( sbaInput->cldfbRendWrapper.hCldfbRend, sbaInput->base.ctx.pCombinedOrientationData, &sbaInput->base.ctx.pSplitRendWrapper->multiBinPoseData, + Cldfb_RealBuffer, Cldfb_ImagBuffer, Cldfb_Out_Real, Cldfb_Out_Imag, low_res_pre_rend_rot, num_subframes, Q_in ); + + return IVAS_ERR_OK; +} + + +static ivas_error renderSbaToSplitBinaural( + input_sba *sbaInput, + const AUDIO_CONFIG outConfig, + IVAS_REND_AudioBuffer outAudio ) +{ + Word32 tmpCrendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + ivas_error error; + Word32 Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + Word16 low_res_pre_rend_rot; + + low_res_pre_rend_rot = 1; + + push_wmops( "renderSbaToSplitBinaural" ); + error = IVAS_ERR_OK; + move32(); + + IF( EQ_32( sbaInput->base.ctx.hhRendererConfig[0]->split_rend_config.rendererSelection, ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) ) + { + if ( ( renderSbaToMultiBinauralCldfb( sbaInput, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, low_res_pre_rend_rot, + getNumSubframesInBuffer( &outAudio, *sbaInput->base.ctx.pOutSampleRate ), *outAudio.pq_fact ) ) != IVAS_ERR_OK ) + { + return error; + } + + accumulateCLDFBArrayToBuffer_fx( Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, &outAudio ); + } + else + { + if ( ( renderSbaToMultiBinaural( sbaInput, outConfig, tmpCrendBuffer ) ) != IVAS_ERR_OK ) + { + return error; + } + IF( sbaInput->crendWrapper->hCrend[0]->hReverb != NULL ) + { + *outAudio.pq_fact = sub( *outAudio.pq_fact, Q2 ); + move16(); + } + + accumulate2dArrayToBuffer_fx( tmpCrendBuffer, &outAudio ); + } + + pop_wmops(); + return error; +} + static ivas_error renderSbaToBinaural( input_sba *sbaInput, const AUDIO_CONFIG outConfig, @@ -6305,11 +7475,27 @@ static ivas_error renderSbaToBinaural( Word32 *output_fx[MAX_OUTPUT_CHANNELS]; push_wmops( "renderSbaToBinaural" ); + + IF( EQ_32( sbaInput->base.ctx.hhRendererConfig[0]->split_rend_config.rendererSelection, ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) ) + { + Word32 Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + + IF( ( error = renderSbaToMultiBinauralCldfb( sbaInput, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, 0, + getNumSubframesInBuffer( &outAudio, *sbaInput->base.ctx.pOutSampleRate ), *outAudio.pq_fact ) ) != IVAS_ERR_OK ) + { + return error; + } + + accumulateCLDFBArrayToBuffer_fx( Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, &outAudio ); + } + ELSE { FOR( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) { output_fx[i] = output_buffer_fx[i]; + move32(); } hCombinedOrientationData = sbaInput->base.ctx.pCombinedOrientationData; @@ -6337,8 +7523,9 @@ static ivas_error renderSbaToBinaural( Copy32( sbaInput->base.inputBuffer.data_fx, tmpRotBuffer.data_fx, i_mult( tmpRotBuffer.config.numChannels, tmpRotBuffer.config.numSamplesPerChannel ) ); + IF( NE_16( ( error = rotateFrameSba_fx( sbaInput->base.inputBuffer, sbaInput->base.inConfig, sbaInput->base.ctx.pHeadRotData, - sbaInput->base.ctx.pCombinedOrientationData, sbaInput->rot_gains_prev_fx, tmpRotBuffer ) ), + sbaInput->base.ctx.pCombinedOrientationData, sbaInput->rot_gains_prev_fx[0], tmpRotBuffer ) ), IVAS_ERR_OK ) ) { return error; @@ -6353,15 +7540,14 @@ static ivas_error renderSbaToBinaural( } // Porting Crend_process function CREND_HANDLE hCrend; - hCrend = sbaInput->crendWrapper->hCrend; + hCrend = sbaInput->crendWrapper->hCrend[0]; /* call CREND */ - IF( NE_32( ( error = ivas_rend_crendProcess( sbaInput->crendWrapper, sbaInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, output_fx, *sbaInput->base.ctx.pOutSampleRate, - getNumSubframesInBuffer( &outAudio, *sbaInput->base.ctx.pOutSampleRate ) ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, sbaInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, NULL, output_fx, output_fx, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { return error; } + IF( hCrend->hReverb != NULL ) { *outAudio.pq_fact = sub( *outAudio.pq_fact, Q2 ); @@ -6394,8 +7580,7 @@ static ivas_error renderSbaToBinauralRoom( push_wmops( "renderSbaToBinauralRoom" ); Word16 nchan_out; CREND_HANDLE hCrend; - - hCrend = sbaInput->crendWrapper->hCrend; + hCrend = sbaInput->crendWrapper->hCrend[0]; IF( NE_32( ( error = getAudioConfigNumChannels( outConfig, &nchan_out ) ), IVAS_ERR_OK ) ) { @@ -6434,7 +7619,7 @@ static ivas_error renderSbaToBinauralRoom( IF( NE_32( ( error = rotateFrameSba_fx( sbaInput->base.inputBuffer, sbaInput->base.inConfig, sbaInput->base.ctx.pHeadRotData, sbaInput->base.ctx.pCombinedOrientationData, - sbaInput->rot_gains_prev_fx, + sbaInput->rot_gains_prev_fx[0], tmpRotBuffer ) ), IVAS_ERR_OK ) ) { @@ -6471,13 +7656,11 @@ static ivas_error renderSbaToBinauralRoom( // Porting Crend_process function /* call CREND */ - IF( NE_32( ( error = ivas_rend_crendProcess( sbaInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, - NULL, NULL, NULL, NULL, p_tmpCrendBuffer, *sbaInput->base.ctx.pOutSampleRate, - getNumSubframesInBuffer( &outAudio, *sbaInput->base.ctx.pOutSampleRate ) ) ), - IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_rend_crendProcessSubframe( sbaInput->crendWrapper, IVAS_AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, NULL, p_tmpCrendBuffer, p_tmpCrendBuffer, sbaInput->base.inputBuffer.config.numSamplesPerChannel, *sbaInput->base.ctx.pOutSampleRate, 0 ) ), IVAS_ERR_OK ) ) { return error; } + IF( hCrend->hReverb != NULL ) { *outAudio.pq_fact = sub( *outAudio.pq_fact, 2 ); @@ -6516,11 +7699,14 @@ static ivas_error renderInputSba( { ivas_error error; IVAS_REND_AudioBuffer inAudio; + int16_t cldfb2tdShift; error = IVAS_ERR_OK; move32(); inAudio = sbaInput->base.inputBuffer; - IF( NE_32( sbaInput->base.numNewSamplesPerChannel, outAudio.config.numSamplesPerChannel ) ) + cldfb2tdShift = outAudio.config.is_cldfb ? 1 : 0; + IF( NE_32( L_shl( sbaInput->base.numNewSamplesPerChannel, cldfb2tdShift ), outAudio.config.numSamplesPerChannel ) && + NE_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Mismatch between the number of input samples vs number of requested output samples - currently not allowed" ); } @@ -6547,6 +7733,10 @@ static ivas_error renderInputSba( case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: SWITCH( outConfig ) { + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: + error = renderSbaToSplitBinaural( sbaInput, outConfig, outAudio ); + break; case IVAS_AUDIO_CONFIG_BINAURAL: error = renderSbaToBinaural( sbaInput, outConfig, outAudio ); BREAK; @@ -6860,6 +8050,9 @@ static ivas_error renderInputMasa( Word16 maxBin; Word32 *tmpBuffer_fx[MAX_OUTPUT_CHANNELS]; Word32 tmpBuffer_buff_fx[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + int16_t cldfb2tdShift; + Word32 Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; IF( !masaInput->metadataHasBeenFed ) { @@ -6867,7 +8060,10 @@ static ivas_error renderInputMasa( } inAudio = masaInput->base.inputBuffer; - IF( NE_32( masaInput->base.numNewSamplesPerChannel, outAudio.config.numSamplesPerChannel ) ) + + cldfb2tdShift = outAudio.config.is_cldfb ? 1 : 0; + IF( ( NE_32( L_shl( masaInput->base.numNewSamplesPerChannel, cldfb2tdShift ), outAudio.config.numSamplesPerChannel ) ) && + NE_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Mismatch between the number of input samples vs number of requested output samples - currently not allowed" ); } @@ -6904,60 +8100,97 @@ static ivas_error renderInputMasa( num_subframes = BASOP_Util_Divide3232_Scale( L_mult0( masaInput->base.inputBuffer.config.numSamplesPerChannel, IVAS_NUM_FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES ), *masaInput->base.ctx.pOutSampleRate, &exp ); num_subframes = shr( num_subframes, sub( 15, exp ) ); /* Q0 */ - SWITCH( masaInput->hMasaExtRend->renderer_type ) + IF( EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || EQ_32( outConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) { - case RENDERER_DIRAC: - - copyMasaMetadataToDiracRenderer_fx( &masaInput->masaMetadata, masaInput->hMasaExtRend->hSpatParamRendCom, maxBin ); - intermidiate_ext_dirac_render( masaInput->hMasaExtRend, 1 ); - FOR( ch = 0; ch < masaInput->hMasaExtRend->hDirACRend->hOutSetup.nchan_out_woLFE + masaInput->hMasaExtRend->hDirACRend->hOutSetup.num_lfe; ch++ ) - { - masaInput->hMasaExtRend->cldfbAnaRend[0]->Q_cldfb_state = Q11; - move16(); - } - FOR( ch = 0; ch < MAX_OUTPUT_CHANNELS; ch++ ) + /* split rendering. use the combined of the first subframe in all subframes */ + Word16 sf, i, j; + COMBINED_ORIENTATION_HANDLE pCombinedOrientationData; + pCombinedOrientationData = *masaInput->base.ctx.pCombinedOrientationData; + FOR( sf = 1; sf < pCombinedOrientationData->num_subframes; sf++ ) + { + Copy_Quat_fx( &pCombinedOrientationData->Quaternions[0], &pCombinedOrientationData->Quaternions[sf] ); + FOR( i = 0; i < 3; i++ ) { - Scale_sig32( tmpBuffer_buff_fx[ch], L_FRAME48k, sub( Q11, *outAudio.pq_fact ) ); /* Q11 */ + FOR( j = 0; j < 3; j++ ) + { + pCombinedOrientationData->Rmat_fx[sf][i][j] = pCombinedOrientationData->Rmat_fx[0][i][j]; + move32(); + } } + } - scale_sig32( outAudio.data_fx, i_mult( outAudio.config.numChannels, outAudio.config.numSamplesPerChannel ), sub( Q11, *outAudio.pq_fact ) ); /* Q11 */ + copyMasaMetadataToDiracRenderer_fx( &masaInput->masaMetadata, masaInput->hMasaExtRend->hSpatParamRendCom, maxBin ); + Scale_sig32( tmpBuffer_buff_fx[0], L_FRAME48k, sub( Q11, *outAudio.pq_fact ) ); /* Q11 */ + Scale_sig32( tmpBuffer_buff_fx[1], L_FRAME48k, sub( Q11, *outAudio.pq_fact ) ); /* Q11 */ - ivas_masa_ext_dirac_render_fx( masaInput->hMasaExtRend, tmpBuffer_fx, num_subframes ); + // scale_sig32( outAudio.data_fx, i_mult( outAudio.config.numChannels, outAudio.config.numSamplesPerChannel ), sub( Q11, *outAudio.pq_fact ) ); - *outAudio.pq_fact = Q11; - move16(); - FOR( ch = 0; ch < masaInput->hMasaExtRend->hDirACRend->hOutSetup.nchan_out_woLFE + masaInput->hMasaExtRend->hDirACRend->hOutSetup.num_lfe; ch++ ) - { - scale_sig32( masaInput->hMasaExtRend->cldfbSynRend[ch]->cldfb_state_fx, masaInput->hMasaExtRend->cldfbSynRend[ch]->cldfb_size, sub( Q11, masaInput->hMasaExtRend->cldfbSynRend[ch]->Q_cldfb_state ) ); /* Q11 */ - masaInput->hMasaExtRend->cldfbSynRend[ch]->Q_cldfb_state = Q11; + ivas_masa_ext_rend_parambin_render_fx( masaInput->hMasaExtRend, *masaInput->base.ctx.pCombinedOrientationData, tmpBuffer_fx, num_subframes, masaInput->base.ctx.pSplitRendWrapper, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural ); + + accumulateCLDFBArrayToBuffer_fx( Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, &outAudio ); + + + *outAudio.pq_fact = Q6; + move16(); + } + ELSE + { + /* non-split path */ + SWITCH( masaInput->hMasaExtRend->renderer_type ) + { + case RENDERER_DIRAC: + + copyMasaMetadataToDiracRenderer_fx( &masaInput->masaMetadata, masaInput->hMasaExtRend->hSpatParamRendCom, maxBin ); + intermidiate_ext_dirac_render( masaInput->hMasaExtRend, 1 ); + FOR( ch = 0; ch < masaInput->hMasaExtRend->hDirACRend->hOutSetup.nchan_out_woLFE + masaInput->hMasaExtRend->hDirACRend->hOutSetup.num_lfe; ch++ ) + { + masaInput->hMasaExtRend->cldfbAnaRend[0]->Q_cldfb_state = Q11; + move16(); + } + FOR( ch = 0; ch < MAX_OUTPUT_CHANNELS; ch++ ) + { + Scale_sig32( tmpBuffer_buff_fx[ch], L_FRAME48k, sub( Q11, *outAudio.pq_fact ) ); /* Q11 */ + } + + scale_sig32( outAudio.data_fx, i_mult( outAudio.config.numChannels, outAudio.config.numSamplesPerChannel ), sub( Q11, *outAudio.pq_fact ) ); /* Q11 */ + + ivas_masa_ext_dirac_render_fx( masaInput->hMasaExtRend, tmpBuffer_fx, num_subframes ); + + *outAudio.pq_fact = Q11; move16(); - } - intermidiate_ext_dirac_render( masaInput->hMasaExtRend, 0 ); - BREAK; - case RENDERER_STEREO_PARAMETRIC: - case RENDERER_BINAURAL_PARAMETRIC: - case RENDERER_BINAURAL_PARAMETRIC_ROOM: + FOR( ch = 0; ch < masaInput->hMasaExtRend->hDirACRend->hOutSetup.nchan_out_woLFE + masaInput->hMasaExtRend->hDirACRend->hOutSetup.num_lfe; ch++ ) + { + scale_sig32( masaInput->hMasaExtRend->cldfbSynRend[ch]->cldfb_state_fx, masaInput->hMasaExtRend->cldfbSynRend[ch]->cldfb_size, sub( Q11, masaInput->hMasaExtRend->cldfbSynRend[ch]->Q_cldfb_state ) ); /* Q11 */ + masaInput->hMasaExtRend->cldfbSynRend[ch]->Q_cldfb_state = Q11; + move16(); + } + + intermidiate_ext_dirac_render( masaInput->hMasaExtRend, 0 ); + BREAK; + case RENDERER_STEREO_PARAMETRIC: + case RENDERER_BINAURAL_PARAMETRIC: + case RENDERER_BINAURAL_PARAMETRIC_ROOM: - copyMasaMetadataToDiracRenderer_fx( &masaInput->masaMetadata, masaInput->hMasaExtRend->hSpatParamRendCom, maxBin ); + copyMasaMetadataToDiracRenderer_fx( &masaInput->masaMetadata, masaInput->hMasaExtRend->hSpatParamRendCom, maxBin ); - Scale_sig32( tmpBuffer_buff_fx[0], L_FRAME48k, sub( Q11, *outAudio.pq_fact ) ); /* Q11 */ - Scale_sig32( tmpBuffer_buff_fx[1], L_FRAME48k, sub( Q11, *outAudio.pq_fact ) ); /* Q11 */ + Scale_sig32( tmpBuffer_buff_fx[0], L_FRAME48k, sub( Q11, *outAudio.pq_fact ) ); /* Q11 */ + Scale_sig32( tmpBuffer_buff_fx[1], L_FRAME48k, sub( Q11, *outAudio.pq_fact ) ); /* Q11 */ - scale_sig32( outAudio.data_fx, i_mult( outAudio.config.numChannels, outAudio.config.numSamplesPerChannel ), sub( Q11, *outAudio.pq_fact ) ); + scale_sig32( outAudio.data_fx, i_mult( outAudio.config.numChannels, outAudio.config.numSamplesPerChannel ), sub( Q11, *outAudio.pq_fact ) ); - ivas_masa_ext_rend_parambin_render_fx( masaInput->hMasaExtRend, *masaInput->base.ctx.pCombinedOrientationData, tmpBuffer_fx, num_subframes ); - *outAudio.pq_fact = Q11; - move16(); - BREAK; - case RENDERER_DISABLE: - BREAK; /* This happens for 1TC MASA to MONO where we just copy input transport to output */ - default: - return ( IVAS_ERROR( IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED, "Wrong output config for MASA input in external renderer\n" ) ); + ivas_masa_ext_rend_parambin_render_fx( masaInput->hMasaExtRend, *masaInput->base.ctx.pCombinedOrientationData, tmpBuffer_fx, num_subframes, NULL, NULL, NULL ); + *outAudio.pq_fact = Q11; + move16(); + BREAK; + case RENDERER_DISABLE: + BREAK; /* This happens for 1TC MASA to MONO where we just copy input transport to output */ + default: + return ( IVAS_ERROR( IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED, "Wrong output config for MASA input in external renderer\n" ) ); + } + accumulate2dArrayToBuffer_fx( tmpBuffer_buff_fx, &outAudio ); } - - accumulate2dArrayToBuffer_fx( tmpBuffer_buff_fx, &outAudio ); } return IVAS_ERR_OK; @@ -7192,12 +8425,15 @@ ivas_error IVAS_REND_SetIsmMetadataDelay( *-------------------------------------------------------------------*/ static ivas_error getSamplesInternal( - IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ - IVAS_REND_AudioBuffer outAudio /* i/o: buffer for output audio */ + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + IVAS_REND_AudioBuffer outAudio /* i/o: buffer for output audio */, + IVAS_REND_BitstreamBuffer *hBits /*i/o: buffer for input/output bitstream. Needed in split rendering mode*/ ) { ivas_error error; Word16 numOutChannels; + int16_t cldfb2tdSampleShift; + IVAS_REND_AudioBuffer outAudioOrig; /* Validate function arguments */ test(); IF( hIvasRend == NULL || outAudio.data_fx == NULL ) @@ -7206,20 +8442,26 @@ static ivas_error getSamplesInternal( } test(); - IF( outAudio.config.numSamplesPerChannel <= 0 || LT_16( MAX_BUFFER_LENGTH_PER_CHANNEL, outAudio.config.numSamplesPerChannel ) ) + cldfb2tdSampleShift = ( outAudio.config.is_cldfb ) ? 1 : 0; + + IF( outAudio.config.numSamplesPerChannel <= 0 || ( MAX_BUFFER_LENGTH_PER_CHANNEL < outAudio.config.numSamplesPerChannel && outAudio.config.is_cldfb == 0 ) || + ( ( shl( MAX_BUFFER_LENGTH_PER_CHANNEL, cldfb2tdSampleShift ) ) < outAudio.config.numSamplesPerChannel && outAudio.config.is_cldfb == 1 ) ) { return IVAS_ERR_INVALID_BUFFER_SIZE; } test(); - IF( outAudio.config.numChannels <= 0 || LT_16( MAX_OUTPUT_CHANNELS, outAudio.config.numChannels ) ) + IF( LE_16( outAudio.config.numChannels, 0 ) || LT_16( MAX_OUTPUT_CHANNELS, outAudio.config.numChannels ) ) { return IVAS_ERR_WRONG_NUM_CHANNELS; } test(); IF( EQ_32( getAudioConfigType( hIvasRend->outputConfig ), IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) && - NE_32( L_mult0( outAudio.config.numSamplesPerChannel, 1000 ), imult3216( hIvasRend->sampleRateOut, i_mult( hIvasRend->num_subframes, BINAURAL_RENDERING_FRAME_SIZE_MS ) ) ) ) + NE_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && + NE_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) && + NE_32( L_shr( L_mult0( outAudio.config.numSamplesPerChannel, 1000 ), cldfb2tdSampleShift ), + imult3216( hIvasRend->sampleRateOut, i_mult( hIvasRend->num_subframes, BINAURAL_RENDERING_FRAME_SIZE_MS ) ) ) ) { return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Binaural rendering requires specific frame size" ); } @@ -7298,7 +8540,7 @@ static ivas_error getSamplesInternal( return error; } - IF( NE_16( numOutChannels, outAudio.config.numChannels ) ) + IF( NE_16( numOutChannels, outAudio.config.numChannels ) && NE_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && NE_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) { return IVAS_ERR_WRONG_NUM_CHANNELS; } @@ -7306,6 +8548,25 @@ static ivas_error getSamplesInternal( /* Clear original output buffer */ set32_fx( outAudio.data_fx, 0, imult1616( outAudio.config.numChannels, outAudio.config.numSamplesPerChannel ) ); + outAudioOrig = outAudio; + /* Use internal buffer if outputting split rendering bitstream */ + IF( EQ_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || + EQ_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + Word16 num_poses_orig; + num_poses_orig = hIvasRend->splitRendWrapper.multiBinPoseData.num_poses; + move16(); + outAudio.config = hIvasRend->splitRendEncBuffer.config; + outAudio.data_fx = hIvasRend->splitRendEncBuffer.data_fx; + + ISAR_PRE_REND_GetMultiBinPoseData( &hIvasRend->hRendererConfig->split_rend_config, &hIvasRend->splitRendWrapper.multiBinPoseData, hIvasRend->headRotData.sr_pose_pred_axis ); + + assert( num_poses_orig == hIvasRend->splitRendWrapper.multiBinPoseData.num_poses && "number of poses should not change dynamically" ); + + /* Clear output buffer for split rendering bitstream */ + set32_fx( outAudio.data_fx, 0, outAudio.config.numChannels * outAudio.config.numSamplesPerChannel ); + } + IF( NE_32( ( error = renderActiveInputsIsm( hIvasRend, outAudio ) ), IVAS_ERR_OK ) ) { return error; @@ -7326,10 +8587,141 @@ static ivas_error getSamplesInternal( test(); test(); - Word32 limiter_thresold = L_lshl( IVAS_LIMITER_THRESHOLD, *outAudio.pq_fact ); + + IF( EQ_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || EQ_32( hIvasRend->outputConfig, IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + ISAR_SPLIT_REND_BITS_DATA bits; + Word16 cldfb_in_flag, i, j, k, ch, ro_md_flag; + Word32 Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + Word32 Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + FOR( i = 0; i < MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS; i++ ) + { + FOR( j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + FOR( k = 0; k < CLDFB_NO_CHANNELS_MAX; k++ ) + { + Cldfb_RealBuffer_Binaural[i][j][k] = 0; + Cldfb_ImagBuffer_Binaural[i][j][k] = 0; + move32(); + move32(); + } + } + } + + Word32 *tmpBinaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS], tmpBinaural_buff[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][L_FRAME48k]; + + FOR( ch = 0; ch < MAX_OUTPUT_CHANNELS; ch++ ) + { + tmpBinaural[ch] = tmpBinaural_buff[ch]; + move32(); + } + + IF( EQ_16( outAudio.config.is_cldfb, 1 ) ) + { + cldfb_in_flag = 1; + move16(); + copyBufferToCLDFBarray_fx( outAudio, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural ); + } + ELSE + { + cldfb_in_flag = 0; + move16(); + copyBufferTo2dArray_fx( outAudio, tmpBinaural_buff ); + } + + /* Encode split rendering bitstream */ + convertBitsBufferToInternalBitsBuff( *hBits, &bits ); + + ro_md_flag = 0; + move16(); + FOR( i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i ) + { + IF( NE_32( hIvasRend->inputsIsm[i].base.inConfig, IVAS_AUDIO_CONFIG_INVALID ) ) + { + ro_md_flag = 1; + move16(); + break; + } + } + + Word16 q1 = 31, q2 = 31, Q_buff; + Word16 Q_out[CLDFB_NO_COL_MAX]; + Q_out[0] = 31; + Word16 num_poses = hIvasRend->splitRendWrapper.multiBinPoseData.num_poses; + + for ( i = 0; i < num_poses * BINAURAL_CHANNELS; i++ ) + { + for ( j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + q1 = s_min( q1, L_norm_arr( Cldfb_RealBuffer_Binaural[i][j], CLDFB_NO_CHANNELS_MAX ) ); + q2 = s_min( q2, L_norm_arr( Cldfb_ImagBuffer_Binaural[i][j], CLDFB_NO_CHANNELS_MAX ) ); + } + } + Q_buff = s_min( q1, q2 ); + for ( i = 0; i < num_poses * BINAURAL_CHANNELS; i++ ) + { + for ( j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + scale_sig32( Cldfb_RealBuffer_Binaural[i][j], CLDFB_NO_CHANNELS_MAX, Q_buff ); + scale_sig32( Cldfb_ImagBuffer_Binaural[i][j], CLDFB_NO_CHANNELS_MAX, Q_buff ); + } + } + Q_buff = Q_buff + *outAudio.pq_fact; + + IF( EQ_16( cldfb_in_flag, 0 ) ) + { + /*TD input*/ + num_poses = hIvasRend->splitRendWrapper.multiBinPoseData.num_poses; + + FOR( i = 0; i < num_poses * BINAURAL_CHANNELS; ++i ) + { + Q_out[0] = s_min( Q_out[0], L_norm_arr( tmpBinaural_buff[i], L_FRAME48k ) ); + } + + FOR( i = 0; i < num_poses * BINAURAL_CHANNELS; ++i ) + { + scale_sig32( tmpBinaural_buff[i], L_FRAME48k, Q_out[0] ); + } + + Q_out[0] = Q_out[0] + *outAudio.pq_fact; + } + + if ( ( error = ISAR_PRE_REND_MultiBinToSplitBinaural( &hIvasRend->splitRendWrapper, hIvasRend->headRotData.headPositions[0], hIvasRend->hRendererConfig->split_rend_config.splitRendBitRate, hIvasRend->hRendererConfig->split_rend_config.codec, + hIvasRend->hRendererConfig->split_rend_config.isar_frame_size_ms, + hIvasRend->hRendererConfig->split_rend_config.codec_frame_size_ms, + &bits, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, ( const int16_t )( ( BINAURAL_MAXBANDS * hIvasRend->sampleRateOut ) / 48000 ), tmpBinaural, 1, cldfb_in_flag, ( hIvasRend->outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0, ro_md_flag, Q_buff, &Q_out[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + + Word16 pcm_out_flag = ( hIvasRend->outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0; + IF( NE_16( pcm_out_flag, 0 ) ) + { + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + scale_sig32( tmpBinaural_buff[j], L_FRAME48k, sub( *outAudio.pq_fact, Q_out[j] ) ); // *outAudio.pq_fact + } + } + + convertInternalBitsBuffToBitsBuffer( hBits, bits ); + + /* reset to outAudioOrig in case of PCM output */ + outAudio.config = outAudioOrig.config; + outAudio.data_fx = outAudioOrig.data_fx; + + IF( NE_16( pcm_out_flag, 0 ) ) + { + accumulate2dArrayToBuffer_fx( tmpBinaural_buff, &outAudio ); + } + } + + if ( outAudio.config.is_cldfb == 0 ) + { + Word32 limiter_thresold = L_lshl( IVAS_LIMITER_THRESHOLD, *outAudio.pq_fact ); #ifndef DISABLE_LIMITER - limitRendererOutput_fx( hIvasRend->hLimiter, outAudio.data_fx, outAudio.config.numSamplesPerChannel, limiter_thresold, *outAudio.pq_fact ); + limitRendererOutput_fx( hIvasRend->hLimiter, outAudio.data_fx, outAudio.config.numSamplesPerChannel, limiter_thresold, *outAudio.pq_fact ); #endif + } /* update global cominbed orientation start index */ ivas_combined_orientation_update_start_index( hIvasRend->hCombinedOrientationData, outAudio.config.numSamplesPerChannel ); @@ -7348,8 +8740,60 @@ ivas_error IVAS_REND_GetSamples( IVAS_REND_AudioBuffer outAudio /* i/o: buffer for output audio */ ) { - - return getSamplesInternal( hIvasRend, outAudio ); + + return getSamplesInternal( hIvasRend, outAudio, NULL ); +} + +/*-------------------------------------------------------------------* + * IVAS_REND_GetSplitBinauralBitstream() + * + * + *-------------------------------------------------------------------*/ + +ivas_error +IVAS_REND_GetSplitBinauralBitstream( + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + IVAS_REND_AudioBuffer outAudio, /* i/o: buffer for output audio */ + IVAS_REND_BitstreamBuffer *hBits /* o : buffer for output bitstream */ +) +{ + int16_t cldfb_in_flag; + + cldfb_in_flag = getCldfbRendFlag( hIvasRend, IVAS_REND_AUDIO_CONFIG_TYPE_UNKNOWN ); + hIvasRend->splitRendEncBuffer.config.is_cldfb = cldfb_in_flag; + if ( hIvasRend->hRendererConfig->split_rend_config.dof == 0 || hIvasRend->hRendererConfig->split_rend_config.poseCorrectionMode == ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) + { + hIvasRend->splitRendEncBuffer.config.numSamplesPerChannel = outAudio.config.numSamplesPerChannel; + } + else + { + hIvasRend->splitRendEncBuffer.config.numSamplesPerChannel = (int16_t) ( hIvasRend->sampleRateOut / FRAMES_PER_SEC ); + } + hIvasRend->splitRendEncBuffer.config.numSamplesPerChannel *= cldfb_in_flag ? 2 : 1; + + /* hIvasRend->splitRendEncBuffer used for BINAURAL_SPLIT_CODED output + outAudio used for BINAURAL_SPLIT_PCM output */ + return getSamplesInternal( hIvasRend, outAudio, hBits ); +} + +ivas_error IVAS_REND_GetSplitRendBitstreamHeader( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS renderer handle */ + ISAR_SPLIT_REND_CODEC *pCodec, /* o: pointer to codec setting */ + ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, /* o: pointer to pose correction mode */ + int16_t *pCodec_frame_size_ms /* o: pointer to codec frame size setting */ + , + int16_t *pIsar_frame_size_ms /* o: pointer to isar frame size setting */ +) +{ + if ( hIvasRend == NULL || hIvasRend->hRendererConfig == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + *pCodec = hIvasRend->hRendererConfig->split_rend_config.codec; + *pCodec_frame_size_ms = hIvasRend->hRendererConfig->split_rend_config.codec_frame_size_ms; + *pIsar_frame_size_ms = hIvasRend->hRendererConfig->split_rend_config.isar_frame_size_ms; + *poseCorrection = hIvasRend->hRendererConfig->split_rend_config.poseCorrectionMode; + return IVAS_ERR_OK; } @@ -7403,11 +8847,22 @@ void IVAS_REND_Close( ivas_limiter_close_fx( &hIvasRend->hLimiter ); + /* Split binaural rendering */ + ISAR_PRE_REND_close( &hIvasRend->splitRendWrapper, &hIvasRend->splitRendEncBuffer ); closeHeadRotation( hIvasRend ); ivas_external_orientation_close_fx( &hIvasRend->hExternalOrientationData ); ivas_combined_orientation_close_fx( &hIvasRend->hCombinedOrientationData ); + /* Fastconv HRTF memories */ + ivas_binaural_hrtf_close( &hIvasRend->hHrtfs.hHrtfFastConv ); + + /* Parametric binauralizer HRTF filters */ + ivas_HRTF_binary_close_fx( &( hIvasRend->hHrtfs.hHrtfTD ) ); + ivas_HRTF_CRend_binary_close_fx( &( hIvasRend->hHrtfs.hSetOfHRTF ) ); + ivas_HRTF_fastconv_binary_close_fx( &( hIvasRend->hHrtfs.hHrtfFastConv ) ); + ivas_HRTF_parambin_binary_close_fx( &( hIvasRend->hHrtfs.hHrtfParambin ) ); + ivas_HRTF_statistics_close( &( hIvasRend->hHrtfs.hHrtfStatistics ) ); free( hIvasRend ); *phIvasRend = NULL; @@ -7415,6 +8870,247 @@ void IVAS_REND_Close( return; } +/*-------------------------------------------------------------------* + * IVAS_REND_openCldfb() + * + * + *-------------------------------------------------------------------*/ + +ivas_error +IVAS_REND_openCldfb( + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbAna[IVAS_MAX_INPUT_CHANNELS], + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbSyn[IVAS_MAX_OUTPUT_CHANNELS], + const int16_t num_in_chs, + const int16_t num_out_chs, + const int32_t output_Fs ) +{ + int16_t n; + ivas_error error; + + for ( n = 0; n < num_in_chs; n++ ) + { + if ( ( error = openCldfb_ivas_fx( &( cldfbAna[n] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK ) + { + return error; + } + } + for ( ; n < IVAS_MAX_INPUT_CHANNELS; n++ ) + { + cldfbAna[n] = NULL; + } + + for ( n = 0; n < num_out_chs; n++ ) + { + if ( ( error = openCldfb_ivas_fx( &( cldfbSyn[n] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS, DEC ) ) != IVAS_ERR_OK ) + { + return error; + } + } + for ( ; n < IVAS_MAX_OUTPUT_CHANNELS; n++ ) + { + cldfbSyn[n] = NULL; + } + + return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------* + * IVAS_REND_closeCldfb() + * + * + *-------------------------------------------------------------------*/ + +void IVAS_REND_closeCldfb( + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbAna[IVAS_MAX_INPUT_CHANNELS], + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbSyn[IVAS_MAX_OUTPUT_CHANNELS] ) +{ + int16_t n; + + for ( n = 0; n < IVAS_MAX_INPUT_CHANNELS; n++ ) + { + if ( cldfbAna[n] != NULL ) + { + deleteCldfb_ivas_fx( &( cldfbAna[n] ) ); + cldfbAna[n] = NULL; + } + } + + for ( n = 0; n < IVAS_MAX_OUTPUT_CHANNELS; n++ ) + { + if ( cldfbSyn[n] != NULL ) + { + deleteCldfb_ivas_fx( &( cldfbSyn[n] ) ); + cldfbSyn[n] = NULL; + } + } + + return; +} + + +/*-------------------------------------------------------------------* + * IVAS_REND_cldfbSynthesis_wrapper() + * + * + *-------------------------------------------------------------------*/ + +void IVAS_REND_cldfbAnalysis_ts_wrapper( + const Word32 *timeIn, /* i : time buffer */ + Word32 realBuffer[IVAS_CLDFB_NO_CHANNELS_MAX], /* o : real value buffer */ + Word32 imagBuffer[IVAS_CLDFB_NO_CHANNELS_MAX], /* o : imag value buffer */ + const Word16 samplesToProcess, /* i : samples to process */ + IVAS_CLDFB_FILTER_BANK_HANDLE h_cldfb, /* i : filterbank state */ + Word16 Q_in, + Word16 *Q_out ) +{ + + Word16 Q_cldfb = Q_in; + assert( Q_in == h_cldfb->Q_cldfb_state ); + cldfbAnalysis_ts_fx_fixed_q( timeIn, realBuffer, imagBuffer, samplesToProcess, h_cldfb, + &Q_cldfb ); + + *Q_out = sub( Q_in, 5 ); + + return; +} + + +/*-------------------------------------------------------------------* + * IVAS_REND_cldfbSynthesis_wrapper() + * + * + *-------------------------------------------------------------------*/ + +void IVAS_REND_cldfbSynthesis_wrapper( + Word32 **realBuffer, /* i : real values */ + Word32 **imagBuffer, /* i : imag values */ + Word32 *timeOut, /* o : output time domain samples */ + const int16_t samplesToProcess, /* i : number of processed samples */ + IVAS_CLDFB_FILTER_BANK_HANDLE h_cldfb, /* i : filter bank state */ + Word16 Q_cldfb, + Word16 *Q_out ) +{ + + Scale_sig32( h_cldfb->cldfb_state_fx, h_cldfb->p_filter_length, sub( sub( Q_cldfb, 1 ), h_cldfb->Q_cldfb_state ) ); + cldfbSynthesis_ivas_fx( realBuffer, imagBuffer, timeOut, samplesToProcess, 0, 0, h_cldfb ); // Q_cldfb - 1 + *Q_out = sub( Q_cldfb, 1 ); + move16(); + h_cldfb->Q_cldfb_state = *Q_out; + move16(); + + return; +} + + +/*---------------------------------------------------------------------* + * IVAS_REND_GetHrtfHandle( ) + * + * + *---------------------------------------------------------------------*/ + +ivas_error IVAS_REND_GetHrtfHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_HANDLE **hHrtfTD /* o : HRTF handle */ +) +{ + if ( hIvasRend == NULL || hIvasRend->hHrtfs.hHrtfTD == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + *hHrtfTD = &hIvasRend->hHrtfs.hHrtfTD; + + return IVAS_ERR_OK; +} + + +/*---------------------------------------------------------------------* + * IVAS_REND_GetHrtfCRendHandle( ) + * + * + *---------------------------------------------------------------------*/ + +ivas_error IVAS_REND_GetHrtfCRendHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_CREND_HANDLE **hSetOfHRTF /* o : Set of HRTF handle */ +) +{ + if ( hIvasRend == NULL || hIvasRend->hHrtfs.hSetOfHRTF == NULL ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + *hSetOfHRTF = &hIvasRend->hHrtfs.hSetOfHRTF; + + return IVAS_ERR_OK; +} + + +/*---------------------------------------------------------------------* + * IVAS_REND_GetHrtfFastConvHandle( ) + * + * + *---------------------------------------------------------------------*/ + +ivas_error IVAS_REND_GetHrtfFastConvHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_FASTCONV_HANDLE **hHrtfFastConv /* o : FASTCONV HRTF handle */ +) +{ + if ( hIvasRend == NULL || hIvasRend->hHrtfs.hHrtfFastConv == NULL ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + *hHrtfFastConv = &hIvasRend->hHrtfs.hHrtfFastConv; + + return IVAS_ERR_OK; +} + + +/*---------------------------------------------------------------------* + * IVAS_REND_GetHrtfParamBinHandle( ) + * + * + *---------------------------------------------------------------------*/ + +ivas_error IVAS_REND_GetHrtfParamBinHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_PARAMBIN_HANDLE **hHrtfParambin /* o : Parametric binauralizer HRTF handle */ +) +{ + if ( hIvasRend == NULL || hIvasRend->hHrtfs.hHrtfParambin == NULL ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + *hHrtfParambin = &hIvasRend->hHrtfs.hHrtfParambin; + + return IVAS_ERR_OK; +} + + +/*---------------------------------------------------------------------* + * IVAS_REND_GetHrtfStatisticsHandle( ) + * + * + *---------------------------------------------------------------------*/ + +ivas_error IVAS_REND_GetHrtfStatisticsHandle( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_STATISTICS_HANDLE **hHrtfStatistics /* o : HRTF statistics handle */ +) +{ + if ( hIvasRend == NULL || hIvasRend->hHrtfs.hHrtfStatistics == NULL ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + *hHrtfStatistics = &hIvasRend->hHrtfs.hHrtfStatistics; + + return IVAS_ERR_OK; +} + static ivas_error ivas_masa_ext_rend_dirac_rend_init( input_masa *inputMasa ) { @@ -7844,11 +9540,17 @@ static ivas_error ivas_masa_ext_rend_dirac_rend_init( static ivas_error ivas_masa_ext_rend_parambin_init( - input_masa *inputMasa /* i/o: MASA external renderer structure */ + input_masa *inputMasa, /* i/o: MASA external renderer structure */ + const RENDER_CONFIG_DATA *hRendCfg, /* i : Renderer configuration data handle */ + HRTFS_STATISTICS_HANDLE hHrtfStatistics /* i : HRTF statistics */ ) { DIRAC_DEC_BIN_HANDLE hDiracDecBin; +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + HRTFS_PARAMBIN_HANDLE *phHrtfParambin; +#else HRTFS_PARAMBIN_HANDLE hHrtfParambin; +#endif Word16 nBins; Word32 output_Fs; RENDERER_TYPE renderer_type; @@ -7857,6 +9559,8 @@ static ivas_error ivas_masa_ext_rend_parambin_init( Word16 tmpFloat_fx; ivas_error error; Word16 frequency_axis_fx[CLDFB_NO_CHANNELS_MAX]; + int16_t pos_idx; + Word16 tmp; Word16 tmp_e; Word16 tmp2; @@ -7864,8 +9568,11 @@ static ivas_error ivas_masa_ext_rend_parambin_init( error = IVAS_ERR_OK; move32(); - hHrtfParambin = inputMasa->hMasaExtRend->hHrtfParambin; - +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + phHrtfParambin = inputMasa->hMasaExtRend->hHrtfParambin; +#else + hHrtfParambin = *( inputMasa->hMasaExtRend->hHrtfParambin ); +#endif /* Set common variables and defaults */ output_Fs = *( inputMasa->base.ctx.pOutSampleRate ); move32(); @@ -7874,151 +9581,170 @@ static ivas_error ivas_masa_ext_rend_parambin_init( renderer_type = inputMasa->hMasaExtRend->renderer_type; move32(); - hDiracDecBin = inputMasa->hMasaExtRend->hDiracDecBin; - - /* Init assumes that no reconfiguration is required in external renderer. Instead, free and rebuild whole rendering. */ - IF( ( hDiracDecBin = (DIRAC_DEC_BIN_HANDLE) malloc( sizeof( DIRAC_DEC_BIN_DATA ) ) ) == NULL ) + for ( pos_idx = 0; pos_idx < inputMasa->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses; pos_idx++ ) { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC binaural handle " ); - } + hDiracDecBin = inputMasa->hMasaExtRend->hDiracDecBin[pos_idx]; - hDiracDecBin->hTdDecorr = NULL; - hDiracDecBin->hReverb = NULL; - hDiracDecBin->h_freq_domain_decorr_ap_params = NULL; - hDiracDecBin->h_freq_domain_decorr_ap_state = NULL; - hDiracDecBin->hDiffuseDist = NULL; /* Not used in external renderer */ - hDiracDecBin->useTdDecorr = 0; /* Always use frequency domain decorrelator in external renderer */ - move16(); - - FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) - { - FOR( k = 0; k < BINAURAL_CHANNELS + MAX_NUM_OBJECTS; k++ ) + /* Init assumes that no reconfiguration is required in external renderer. Instead, free and rebuild whole rendering. */ + IF( ( hDiracDecBin = (DIRAC_DEC_BIN_HANDLE) malloc( sizeof( DIRAC_DEC_BIN_DATA ) ) ) == NULL ) { - set16_fx( hDiracDecBin->processMtxRe_fx[j][k], 0, nBins ); - set16_fx( hDiracDecBin->processMtxIm_fx[j][k], 0, nBins ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC binaural handle " ); } - FOR( k = 0; k < BINAURAL_CHANNELS; k++ ) - { - set16_fx( hDiracDecBin->processMtxDecRe_fx[j][k], 0, nBins ); - set16_fx( hDiracDecBin->processMtxDecIm_fx[j][k], 0, nBins ); - } - hDiracDecBin->q_processMtx = Q15; - hDiracDecBin->q_processMtxSCCR = Q15; - hDiracDecBin->q_processMtxPrev = Q15; - hDiracDecBin->q_processMtxPrevSCCR = Q15; - hDiracDecBin->q_processMtxDec = Q15; - hDiracDecBin->q_processMtxDecPrev = Q15; - move16(); - move16(); - move16(); - move16(); - move16(); + hDiracDecBin->hTdDecorr = NULL; + hDiracDecBin->hReverb = NULL; + hDiracDecBin->h_freq_domain_decorr_ap_params = NULL; + hDiracDecBin->h_freq_domain_decorr_ap_state = NULL; + hDiracDecBin->hDiffuseDist = NULL; /* Not used in external renderer */ + hDiracDecBin->useTdDecorr = 0; /* Always use frequency domain decorrelator in external renderer */ move16(); - set_zero_fx( hDiracDecBin->ChEnePrev_fx[j], nBins ); - set_zero_fx( hDiracDecBin->ChEneOutPrev_fx[j], nBins ); - set16_fx( hDiracDecBin->ChEnePrev_e[j], 0, nBins ); - set16_fx( hDiracDecBin->ChEneOutPrev_e[j], 0, nBins ); - } - set_zero_fx( hDiracDecBin->ChCrossRePrev_fx, nBins ); - set_zero_fx( hDiracDecBin->ChCrossImPrev_fx, nBins ); - set_zero_fx( hDiracDecBin->ChCrossReOutPrev_fx, nBins ); - set_zero_fx( hDiracDecBin->ChCrossImOutPrev_fx, nBins ); - set16_fx( hDiracDecBin->ChCrossRePrev_e, 0, nBins ); - set16_fx( hDiracDecBin->ChCrossImPrev_e, 0, nBins ); - set16_fx( hDiracDecBin->ChCrossReOutPrev_e, 0, nBins ); - set16_fx( hDiracDecBin->ChCrossImOutPrev_e, 0, nBins ); - hDiracDecBin->renderStereoOutputInsteadOfBinaural = 0; - move16(); - FOR( bin = 0; bin < nBins; bin++ ) - { - binCenterFreq_fx = L_mult0( extract_l( L_shr( output_Fs, 1 ) ), div_s( add( shl( bin, 1 ), 1 ), shl( nBins, 1 ) ) ) /*( (float) bin + 0.5f ) / (float) nBins * ( (float) output_Fs / 2.0f )*/; /*Q15*/ - /* These formulas and values are from Christian Borss's publication for binaural diffuse field coherence */ - tmp = BASOP_Util_Divide3232_Scale( binCenterFreq_fx, L_shl( 2700, Q15 ), &tmp_e ); - IF( tmp_e < 0 ) + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { - tmp = shl( tmp, tmp_e ); /*q15*/ - tmp_e = 0; + FOR( k = 0; k < BINAURAL_CHANNELS + MAX_NUM_OBJECTS; k++ ) + { + set16_fx( hDiracDecBin->processMtxRe_fx[j][k], 0, nBins ); + set16_fx( hDiracDecBin->processMtxIm_fx[j][k], 0, nBins ); + } + + FOR( k = 0; k < BINAURAL_CHANNELS; k++ ) + { + set16_fx( hDiracDecBin->processMtxDecRe_fx[j][k], 0, nBins ); + set16_fx( hDiracDecBin->processMtxDecIm_fx[j][k], 0, nBins ); + } + hDiracDecBin->q_processMtx = Q15; + hDiracDecBin->q_processMtxSCCR = Q15; + hDiracDecBin->q_processMtxPrev = Q15; + hDiracDecBin->q_processMtxPrevSCCR = Q15; + hDiracDecBin->q_processMtxDec = Q15; + hDiracDecBin->q_processMtxDecPrev = Q15; + move16(); + move16(); move16(); + move16(); + move16(); + move16(); + set_zero_fx( hDiracDecBin->ChEnePrev_fx[j], nBins ); + set_zero_fx( hDiracDecBin->ChEneOutPrev_fx[j], nBins ); + set16_fx( hDiracDecBin->ChEnePrev_e[j], 0, nBins ); + set16_fx( hDiracDecBin->ChEneOutPrev_e[j], 0, nBins ); + } + set_zero_fx( hDiracDecBin->ChCrossRePrev_fx, nBins ); + set_zero_fx( hDiracDecBin->ChCrossImPrev_fx, nBins ); + set_zero_fx( hDiracDecBin->ChCrossReOutPrev_fx, nBins ); + set_zero_fx( hDiracDecBin->ChCrossImOutPrev_fx, nBins ); + set16_fx( hDiracDecBin->ChCrossRePrev_e, 0, nBins ); + set16_fx( hDiracDecBin->ChCrossImPrev_e, 0, nBins ); + set16_fx( hDiracDecBin->ChCrossReOutPrev_e, 0, nBins ); + set16_fx( hDiracDecBin->ChCrossImOutPrev_e, 0, nBins ); + hDiracDecBin->renderStereoOutputInsteadOfBinaural = 0; + move16(); + + FOR( bin = 0; bin < nBins; bin++ ) + { + binCenterFreq_fx = L_mult0( extract_l( L_shr( output_Fs, 1 ) ), div_s( add( shl( bin, 1 ), 1 ), shl( nBins, 1 ) ) ) /*( (float) bin + 0.5f ) / (float) nBins * ( (float) output_Fs / 2.0f )*/; /*Q15*/ + /* These formulas and values are from Christian Borss's publication for binaural diffuse field coherence */ + tmp = BASOP_Util_Divide3232_Scale( binCenterFreq_fx, L_shl( 2700, Q15 ), &tmp_e ); + IF( tmp_e < 0 ) + { + tmp = shl( tmp, tmp_e ); /*q15*/ + tmp_e = 0; + move16(); + } + tmpFloat_fx = s_max( 0, sub( shl_sat( 1, sub( 15, tmp_e ) ), tmp ) ) /*max( 0.0f, 1.0f - binCenterFreq / 2700.0f )*/; /*Q30*/ + tmp2 = extract_l( Mult_32_32( binCenterFreq_fx, 1952258 /*=2^31*180/(550)/360*/ ) % 32767 ); //*binCenterFreq_fx * EVS_PI / 550.0f*/ + hDiracDecBin->diffuseFieldCoherence_fx[bin] = L_shl( L_mult0( divide3232( tmpFloat_fx, Mult_32_16( binCenterFreq_fx, 187 /*2^15*pi/550*/ ) ), getSineWord16R2( tmp2 ) ), tmp_e ); /*tmpFloat * sinf( binCenterFreq * EVS_PI / 550.0f ) / ( binCenterFreq * EVS_PI / 550.0f );*/ + hDiracDecBin->diffuseFieldCoherence_fx[bin] = L_shl( hDiracDecBin->diffuseFieldCoherence_fx[bin], 1 ); /* Q31 */ + move32(); + move32(); } - tmpFloat_fx = s_max( 0, sub( shl_sat( 1, sub( 15, tmp_e ) ), tmp ) ) /*max( 0.0f, 1.0f - binCenterFreq / 2700.0f )*/; /*Q30*/ - tmp2 = extract_l( Mult_32_32( binCenterFreq_fx, 1952258 /*=2^31*180/(550)/360*/ ) % 32767 ); //*binCenterFreq_fx * EVS_PI / 550.0f*/ - hDiracDecBin->diffuseFieldCoherence_fx[bin] = L_shl( L_mult0( divide3232( tmpFloat_fx, Mult_32_16( binCenterFreq_fx, 187 /*2^15*pi/550*/ ) ), getSineWord16R2( tmp2 ) ), tmp_e ); /*tmpFloat * sinf( binCenterFreq * EVS_PI / 550.0f ) / ( binCenterFreq * EVS_PI / 550.0f );*/ - hDiracDecBin->diffuseFieldCoherence_fx[bin] = L_shl( hDiracDecBin->diffuseFieldCoherence_fx[bin], 1 ); /* Q31 */ - move32(); - move32(); - } - /* No SPAR in external renderer so set directive diffuse field coherence tables to zero */ - set_zero_fx( hDiracDecBin->diffuseFieldCoherenceX_fx, BINAURAL_COHERENCE_DIFFERENCE_BINS ); - set_zero_fx( hDiracDecBin->diffuseFieldCoherenceY_fx, BINAURAL_COHERENCE_DIFFERENCE_BINS ); - set_zero_fx( hDiracDecBin->diffuseFieldCoherenceZ_fx, BINAURAL_COHERENCE_DIFFERENCE_BINS ); + /* No SPAR in external renderer so set directive diffuse field coherence tables to zero */ + set_zero_fx( hDiracDecBin->diffuseFieldCoherenceX_fx, BINAURAL_COHERENCE_DIFFERENCE_BINS ); + set_zero_fx( hDiracDecBin->diffuseFieldCoherenceY_fx, BINAURAL_COHERENCE_DIFFERENCE_BINS ); + set_zero_fx( hDiracDecBin->diffuseFieldCoherenceZ_fx, BINAURAL_COHERENCE_DIFFERENCE_BINS ); - IF( EQ_16( renderer_type, RENDERER_BINAURAL_PARAMETRIC ) ) /* Indication of binaural rendering without room effect */ - { - set32_fx( hDiracDecBin->earlyPartEneCorrection_fx, ONE_IN_Q28 /*1.0f Q28*/, CLDFB_NO_CHANNELS_MAX ); - hDiracDecBin->q_earlyPartEneCorrection = Q28; - move16(); - hDiracDecBin->hReverb = NULL; - } - ELSE IF( EQ_16( renderer_type, RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) /* Indication of binaural rendering with room effect */ - { - Copy32( hHrtfParambin->parametricEarlyPartEneCorrection_fx, hDiracDecBin->earlyPartEneCorrection_fx, nBins ); - hDiracDecBin->q_earlyPartEneCorrection = Q28; - move16(); + IF( EQ_16( renderer_type, RENDERER_BINAURAL_PARAMETRIC ) ) /* Indication of binaural rendering without room effect */ + { + set32_fx( hDiracDecBin->earlyPartEneCorrection_fx, ONE_IN_Q28 /*1.0f Q28*/, CLDFB_NO_CHANNELS_MAX ); + hDiracDecBin->q_earlyPartEneCorrection = Q28; + move16(); + hDiracDecBin->hReverb = NULL; + } + ELSE IF( EQ_16( 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(); + + IF( hDiracDecBin->hReverb == NULL && pos_idx == 0 ) /* open reverb only for the main direction */ + { +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + if ( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRendCfg->roomAcoustics ), output_Fs, ( *phHrtfParambin )->parametricReverberationTimes_fx, ( *phHrtfParambin )->parametricReverberationEneCorrections_fx ) ), IVAS_ERR_OK ) ) +#else + IF( NE_32( ( error = ivas_binaural_reverb_init( &hDiracDecBin->hReverb, hHrtfStatistics, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, &( hRendCfg->roomAcoustics ), output_Fs, hHrtfParambin->parametricReverberationTimes_fx, hHrtfParambin->parametricReverberationEneCorrections_fx ) ), IVAS_ERR_OK ) ) +#endif + { + return error; + } + } + } + ELSE IF( EQ_16( renderer_type, RENDERER_STEREO_PARAMETRIC ) ) + { + set32_fx( hDiracDecBin->earlyPartEneCorrection_fx, ONE_IN_Q28 /*1.0f Q28*/, CLDFB_NO_CHANNELS_MAX ); + hDiracDecBin->q_earlyPartEneCorrection = Q28; + move16(); + hDiracDecBin->hReverb = NULL; + hDiracDecBin->renderStereoOutputInsteadOfBinaural = 1; + move16(); + } + ELSE /* Not valid renderer type for this renderer */ + { + assert( false ); + } - IF( hDiracDecBin->hReverb == NULL ) + IF( pos_idx == 0 ) /* open decorrelator only for the main direction */ { - /* Todo Philips: Room acoustics should be passed here once the underlying part works. In this case, it probably should come from render context or somewhere else suitable. */ - IF( NE_32( ( error = ivas_binaural_reverb_open_parambin( &hDiracDecBin->hReverb, nBins, CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, output_Fs, hHrtfParambin ) ), IVAS_ERR_OK ) ) + /* Always open frequency domain decorrelator */ + ivas_dirac_dec_get_frequency_axis_fx( frequency_axis_fx, output_Fs, nBins ); + + IF( NE_32( ( error = ivas_dirac_dec_decorr_open_fx( &( hDiracDecBin->h_freq_domain_decorr_ap_params ), + &( hDiracDecBin->h_freq_domain_decorr_ap_state ), + nBins, + BINAURAL_CHANNELS, + BINAURAL_CHANNELS, + DIRAC_SYNTHESIS_PSD_LS, + frequency_axis_fx, + BINAURAL_CHANNELS, + output_Fs ) ), + IVAS_ERR_OK ) ) { return error; } } - } - ELSE IF( EQ_16( renderer_type, RENDERER_STEREO_PARAMETRIC ) ) - { - set32_fx( hDiracDecBin->earlyPartEneCorrection_fx, ONE_IN_Q28 /*1.0f Q28*/, CLDFB_NO_CHANNELS_MAX ); - hDiracDecBin->q_earlyPartEneCorrection = Q28; - move16(); - hDiracDecBin->hReverb = NULL; - hDiracDecBin->renderStereoOutputInsteadOfBinaural = 1; + /* External renderer uses constant regularization factor */ + hDiracDecBin->reqularizationFactor_fx = 6554; /* 0.4f in Q14 */ move16(); - } - ELSE /* Not valid renderer type for this renderer */ - { - assert( false ); - } - /* Always open frequency domain decorrelator */ - ivas_dirac_dec_get_frequency_axis_fx( frequency_axis_fx, output_Fs, nBins ); +#ifdef NONBE_FIX_991_PARAMBIN_BINARY_HRTF + hDiracDecBin->phHrtfParambin = phHrtfParambin; +#endif - IF( NE_32( ( error = ivas_dirac_dec_decorr_open_fx( &( hDiracDecBin->h_freq_domain_decorr_ap_params ), - &( hDiracDecBin->h_freq_domain_decorr_ap_state ), - nBins, - BINAURAL_CHANNELS, - BINAURAL_CHANNELS, - DIRAC_SYNTHESIS_PSD_LS, - frequency_axis_fx, - BINAURAL_CHANNELS, - output_Fs ) ), - IVAS_ERR_OK ) ) - { - return error; + inputMasa->hMasaExtRend->hDiracDecBin[pos_idx] = hDiracDecBin; } - /* External renderer uses constant regularization factor */ - hDiracDecBin->reqularizationFactor_fx = 6554; /* 0.4f in Q14 */ - move16(); - - inputMasa->hMasaExtRend->hDiracDecBin = hDiracDecBin; return error; } static ivas_error initMasaExtRenderer( input_masa *inputMasa, - const AUDIO_CONFIG outConfig ) + const AUDIO_CONFIG outConfig, + const RENDER_CONFIG_DATA *hRendCfg, + hrtf_handles *hrtfs ) { Word16 i; ivas_error error; @@ -8039,9 +9765,12 @@ static ivas_error initMasaExtRenderer( move32(); hMasaExtRend->hDirACRend = NULL; hMasaExtRend->hSpatParamRendCom = NULL; - hMasaExtRend->hDiracDecBin = NULL; + for ( i = 0; i < MAX_HEAD_ROT_POSES; i++ ) + { + hMasaExtRend->hDiracDecBin[i] = NULL; + } hMasaExtRend->hReverb = NULL; - hMasaExtRend->hHrtfParambin = NULL; + hMasaExtRend->hHrtfParambin = &hrtfs->hHrtfParambin; hMasaExtRend->hVBAPdata = NULL; hMasaExtRend->hoa_dec_mtx = NULL; @@ -8095,6 +9824,8 @@ static ivas_error initMasaExtRenderer( BREAK; case IVAS_AUDIO_CONFIG_BINAURAL: + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM: + case IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED: hMasaExtRend->renderer_type = RENDERER_BINAURAL_PARAMETRIC; move32(); BREAK; @@ -8141,13 +9872,12 @@ static ivas_error initMasaExtRenderer( { IF( NE_16( hMasaExtRend->renderer_type, RENDERER_STEREO_PARAMETRIC ) ) { - IF( NE_32( ( error = ivas_dirac_dec_binaural_copy_hrtfs_fx( &inputMasa->hMasaExtRend->hHrtfParambin ) ), IVAS_ERR_OK ) ) + IF( NE_32( ( error = ivas_dirac_dec_binaural_copy_hrtfs_fx( inputMasa->hMasaExtRend->hHrtfParambin ) ), IVAS_ERR_OK ) ) { return error; } } - - IF( NE_32( ( error = ivas_masa_ext_rend_parambin_init( inputMasa ) ), IVAS_ERR_OK ) ) + if ( NE_32( ( error = ivas_masa_ext_rend_parambin_init( inputMasa, hRendCfg, hrtfs->hHrtfStatistics ) ), IVAS_ERR_OK ) ) { return error; } @@ -8212,11 +9942,15 @@ static void freeMasaExtRenderer( ivas_spat_hSpatParamRendCom_close_fx( &hMasaExtRend->hSpatParamRendCom ); } - IF( hMasaExtRend->hDiracDecBin != NULL ) + for ( i = 0; i < MAX_HEAD_ROT_POSES; i++ ) { - ivas_dirac_dec_close_binaural_data( &hMasaExtRend->hDiracDecBin ); + if ( hMasaExtRend->hDiracDecBin[i] != NULL ) + { + ivas_dirac_dec_close_binaural_data( &hMasaExtRend->hDiracDecBin[i] ); + } } + IF( hMasaExtRend->hReverb != NULL ) { ivas_binaural_reverb_close_fx( &hMasaExtRend->hReverb ); @@ -8224,7 +9958,7 @@ static void freeMasaExtRenderer( IF( hMasaExtRend->hHrtfParambin != NULL ) { - ivas_HRTF_parambin_binary_close_fx( &hMasaExtRend->hHrtfParambin ); + ivas_HRTF_parambin_binary_close_fx( hMasaExtRend->hHrtfParambin ); } IF( hMasaExtRend->hVBAPdata != NULL ) diff --git a/lib_util/cmdln_parser.c b/lib_util/cmdln_parser.c index b2c8f85bc4dc7119e7268271f44fcce2af9c703c..1b9eb7a92899f1b62df0e925fc7f3882c2512012 100644 --- a/lib_util/cmdln_parser.c +++ b/lib_util/cmdln_parser.c @@ -150,7 +150,22 @@ static int8_t optionMatchesString( const char *optionName = stringToOptionName( str ); - if ( strncmp( optionName, opt.props.match, MAX_OPTION_LENGTH ) == 0 || strncmp( optionName, opt.props.matchShort, MAX_OPTION_LENGTH ) == 0 ) + char optionName_to_upper[FILENAME_MAX]; + strncpy( optionName_to_upper, optionName, sizeof( optionName_to_upper ) - 1 ); + optionName_to_upper[sizeof( optionName_to_upper ) - 1] = '\0'; + to_upper( optionName_to_upper ); + + char match_to_upper[FILENAME_MAX]; + strncpy( match_to_upper, opt.props.match, sizeof( match_to_upper ) - 1 ); + optionName_to_upper[sizeof( match_to_upper ) - 1] = '\0'; + to_upper( match_to_upper ); + + char matchShort_to_upper[FILENAME_MAX]; + strncpy( matchShort_to_upper, opt.props.matchShort, sizeof( matchShort_to_upper ) - 1 ); + optionName_to_upper[sizeof( matchShort_to_upper ) - 1] = '\0'; + to_upper( matchShort_to_upper ); + + if ( strncmp( optionName_to_upper, match_to_upper, MAX_OPTION_LENGTH ) == 0 || strncmp( optionName_to_upper, matchShort_to_upper, MAX_OPTION_LENGTH ) == 0 ) { return 1; } diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index c2e3d8a2ae53745336dfedd66904388a85fd7355..9a89badafc8df0fa97de9e8c6b7778a937db9c97 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -35,6 +35,7 @@ #include "prot_fx.h" #include "ivas_prot_rend_fx.h" #include "ivas_prot_fx.h" +#include "ivas_rom_binaural_crend_head.h" /*---------------------------------------------------------------------* * Local structures @@ -189,6 +190,16 @@ static ivas_error check_hrtf_binary_header( ivas_hrtfs_header_t *hrtf_header ) { /* Check the renderer type */ + +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_MIXER_CONV ) && ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_MIXER_CONV_ROOM ) && + ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_FASTCONV ) && ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) && + ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_PARAMETRIC ) && ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM ) && + ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_OBJECTS_TD ) && ( hrtf_header->rend_type != HRTF_READER_RENDERER_BINAURAL_REVERB_ALL ) ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Header of HRTF binary file not compliant (renderer type)" ); + } +#else if ( ( hrtf_header->rend_type != RENDERER_BINAURAL_MIXER_CONV ) && ( hrtf_header->rend_type != RENDERER_BINAURAL_MIXER_CONV_ROOM ) && ( hrtf_header->rend_type != RENDERER_BINAURAL_FASTCONV ) && ( hrtf_header->rend_type != RENDERER_BINAURAL_FASTCONV_ROOM ) && ( hrtf_header->rend_type != RENDERER_BINAURAL_PARAMETRIC ) && ( hrtf_header->rend_type != RENDERER_BINAURAL_PARAMETRIC_ROOM ) && @@ -196,7 +207,7 @@ static ivas_error check_hrtf_binary_header( { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Header of HRTF binary file not compliant (renderer type)" ); } - +#endif /* Check the output format of the decoder */ if ( ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_FOA ) && ( hrtf_header->input_cfg != BINAURAL_INPUT_AUDIO_CONFIG_UNDEFINED ) ) @@ -225,7 +236,7 @@ static ivas_error read_hrtf_binary_header( FILE *f_hrtf ) { /* HRTF Header */ - /* Renderer type (4 bytes) : See "RENDERER_TYPE" */ + /* Renderer type (4 bytes) : See "HRTF_READER_RENDERER_TYPE" */ /* Input configuration (4 bytes) : See "BINAURAL_INPUT_AUDIO_CONFIG" */ /* Sampling Frequency (4 bytes) */ /* Raw data size (4 bytes) */ @@ -332,6 +343,7 @@ static void LoadBSplineBinaryITD( return; } + /*-------------------------------------------------------------------* * LoadBSplineBinary() * @@ -348,7 +360,10 @@ static ivas_error LoadBSplineBinary( float f_tmp_latency_s; + +#ifndef USE_NEW_HRTF_BINARY_FILE_FORMAT float f_tmp_lr_energy_and_iac_dyn[LR_IAC_LENGTH_NR_FC]; +#endif fread( &f_tmp_latency_s, sizeof( float ), 1, f_hrtf ); HrFiltSet_p->latency_s_fx = float_to_fix( f_tmp_latency_s, Q31 ); @@ -534,11 +549,16 @@ static ivas_error LoadBSplineBinary( LoadBSplineBinaryITD( &HrFiltSet_p->ModelParamsITD, f_hrtf ); } +#ifndef USE_NEW_HRTF_BINARY_FILE_FORMAT /* left/right energy and interaural coherence for late reverb */ FOR( i = 0; i < 3; i++ ) { fread( f_tmp_lr_energy_and_iac_dyn, sizeof( const float ), LR_IAC_LENGTH_NR_FC, f_hrtf ); HrFiltSet_p->lr_energy_and_iac_dyn_fx[i] = (Word32 *) malloc( LR_IAC_LENGTH_NR_FC * sizeof( Word32 ) ); + 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" ); + } IF( i == 2 ) { floatToFixed_arr32( f_tmp_lr_energy_and_iac_dyn, HrFiltSet_p->lr_energy_and_iac_dyn_fx[i], Q27, LR_IAC_LENGTH_NR_FC ); /* tables from which lr_energy_and_iac is updated has Q27 for i=2 */ @@ -549,11 +569,147 @@ static ivas_error LoadBSplineBinary( } HrFiltSet_p->lr_energy_and_iac_fx[i] = (const Word32 *) HrFiltSet_p->lr_energy_and_iac_dyn_fx[i]; } +#endif return IVAS_ERR_OK; } +/*-------------------------------------------------------------------* + * load_reverb_from_binary() + * + * Loads reverb data from file. + --------------------------------------------------------------------*/ + +static ivas_error load_reverb_from_binary( + IVAS_DEC_HRTF_STATISTICS_HANDLE hHrtfStatistics, /* i/o: HRTF statistics handle */ + int32_t sampleRate, /* i : sample rate */ + FILE *f_hrtf /* i : HR filter data file handle */ +) +{ + bool is_reverb; + ivas_error header_check_result; + ivas_hrtfs_file_header_t hrtfs_file_header; + int16_t hrtf_id; + ivas_hrtfs_header_t hrtf_header; + int32_t hrtf_data_size_max; + char *hrtf_data; + int16_t lr_iac_len; + float f_tmp_lr_energy_and_iac_dyn[LR_IAC_LENGTH_NR_FC]; + + if ( hHrtfStatistics == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + lr_iac_len = LR_IAC_LENGTH_NR_FC; + if ( sampleRate == 16000 ) + { + lr_iac_len = LR_IAC_LENGTH_NR_FC_16KHZ; + } + + header_check_result = IVAS_ERR_OK; + + if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK ) + { + return header_check_result; + } + + is_reverb = FALSE; + hrtf_data_size_max = hrtfs_file_header.max_data_size; + + /* Allocate the memory */ + + if ( hrtf_data_size_max == 0 ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (hrtf_data_size_max)" ); + } + + hrtf_data = (char *) malloc( hrtf_data_size_max ); + if ( hrtf_data == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + + for ( hrtf_id = 0; ( hrtf_id < hrtfs_file_header.nb_hrtf ) && ( !is_reverb ); hrtf_id++ ) + { + if ( read_hrtf_binary_header( &hrtf_header, f_hrtf ) != IVAS_ERR_OK ) + { + free( hrtf_data ); + return IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "HRTF binary file not compliant (number of HRTF)" ); + } + + if ( ( header_check_result = check_hrtf_binary_header( &hrtf_header ) ) != IVAS_ERR_OK ) + { + free( hrtf_data ); + return header_check_result; + } + +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + is_reverb = ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_REVERB_ALL ); +#else + is_reverb = ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_REVERB_ALL ); +#endif + if ( !is_reverb ) + { + if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) + { + free( hrtf_data ); + return IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "Error in HRTF file reading" ); + } + } + } + + free( hrtf_data ); + + if ( is_reverb ) + { + hHrtfStatistics->average_energy_l_dyn = (Word32 *) malloc( lr_iac_len * sizeof( Word32 ) ); + hHrtfStatistics->average_energy_r_dyn = (Word32 *) malloc( lr_iac_len * sizeof( Word32 ) ); + hHrtfStatistics->inter_aural_coherence_dyn = (Word32 *) malloc( lr_iac_len * sizeof( Word32 ) ); + + if ( hHrtfStatistics->average_energy_l_dyn == NULL || hHrtfStatistics->average_energy_r_dyn == NULL || hHrtfStatistics->inter_aural_coherence_dyn == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for hrtf data" ); + } + hHrtfStatistics->average_energy_l = hHrtfStatistics->average_energy_l_dyn; + hHrtfStatistics->average_energy_r = hHrtfStatistics->average_energy_r_dyn; + hHrtfStatistics->inter_aural_coherence = hHrtfStatistics->inter_aural_coherence_dyn; + + fread( f_tmp_lr_energy_and_iac_dyn, sizeof( float ), lr_iac_len, f_hrtf ); + floatToFixed_arr32( f_tmp_lr_energy_and_iac_dyn, hHrtfStatistics->average_energy_l_dyn, Q28, lr_iac_len ); + + fread( f_tmp_lr_energy_and_iac_dyn, sizeof( float ), lr_iac_len, f_hrtf ); + floatToFixed_arr32( f_tmp_lr_energy_and_iac_dyn, hHrtfStatistics->average_energy_r_dyn, Q28, lr_iac_len ); + + fread( f_tmp_lr_energy_and_iac_dyn, sizeof( float ), lr_iac_len, f_hrtf ); + floatToFixed_arr32( f_tmp_lr_energy_and_iac_dyn, hHrtfStatistics->inter_aural_coherence_dyn, Q26, lr_iac_len ); + hHrtfStatistics->fromROM = FALSE; + } + else + { + return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA; + } + + return IVAS_ERR_OK; +} + +/*---------------------------------------------------------------------* + * load_reverb_binary() + * + * Load HRTF binary data into the HRTF handle + *---------------------------------------------------------------------*/ + +ivas_error load_reverb_binary( + IVAS_DEC_HRTF_STATISTICS_HANDLE hHrtfStatistics, /* i/o: HRTF statistics handle */ + int32_t sampleRate, /* i : sample rate */ + const hrtfFileReader *hrtfReader /* i/o: pointer to hrtfFileReader handle */ +) +{ + fseek( hrtfReader->file, 0, SEEK_SET ); + + return load_reverb_from_binary( hHrtfStatistics, sampleRate, hrtfReader->file ); +} /*-------------------------------------------------------------------* * TDREND_MIX_LoadHRTF() * @@ -566,7 +722,6 @@ static ivas_error TDREND_MIX_LoadHRTF( ) { int16_t tmp; - ivas_error error; bool is_tdrend; ivas_error header_check_result; ivas_hrtfs_file_header_t hrtfs_file_header; @@ -575,11 +730,29 @@ static ivas_error TDREND_MIX_LoadHRTF( int32_t hrtf_data_size_max; char *hrtf_data; - error = IVAS_ERR_OK; - + header_check_result = IVAS_ERR_OK; if ( ( header_check_result = read_and_check_hrtf_binary_file_header( &hrtfs_file_header, f_hrtf ) ) != IVAS_ERR_OK ) { + + /* try if it is old format for BE tests*/ + fseek( f_hrtf, 0, SEEK_SET ); + if ( fread( &tmp, 1, sizeof( int16_t ), f_hrtf ) == 0 ) + { + header_check_result = IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "Error in HRTF file reading" ); + } + + HrFiltSet_p->FilterMethod = (TDREND_HRFILT_Method_t) tmp; + + if ( HrFiltSet_p->FilterMethod != TDREND_HRFILT_Method_BSplineModel ) + { + header_check_result = IVAS_ERROR( IVAS_ERR_INVALID_HRTF, "The HR filter set file is not a supported type." ); + } + else + { + header_check_result = LoadBSplineBinary( HrFiltSet_p, f_hrtf ); + } + return header_check_result; } @@ -611,7 +784,11 @@ static ivas_error TDREND_MIX_LoadHRTF( return header_check_result; } +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + is_tdrend = ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_OBJECTS_TD ); +#else is_tdrend = ( hrtf_header.rend_type == RENDERER_BINAURAL_OBJECTS_TD ); +#endif if ( !is_tdrend ) { if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) @@ -634,19 +811,19 @@ static ivas_error TDREND_MIX_LoadHRTF( if ( HrFiltSet_p->FilterMethod != TDREND_HRFILT_Method_BSplineModel ) { - error = IVAS_ERROR( IVAS_ERR_INVALID_HRTF, "The HR filter set file is not a supported type." ); + header_check_result = IVAS_ERROR( IVAS_ERR_INVALID_HRTF, "The HR filter set file is not a supported type." ); } else { - error = LoadBSplineBinary( HrFiltSet_p, f_hrtf ); + header_check_result = LoadBSplineBinary( HrFiltSet_p, f_hrtf ); } } else { - return IVAS_ERROR( IVAS_ERR_INVALID_HRTF, "HR filter not found in binary file." ); + return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA; } - return error; + return header_check_result; } @@ -737,73 +914,68 @@ static void HRTF_energy_sections_precalc( return; } - /*---------------------------------------------------------------------* * dealloc_HRTF_binary() * * Deallocated memory allocated by load_HRTF_binary *---------------------------------------------------------------------*/ -ivas_error dealloc_HRTF_binary( - IVAS_DEC_HRTF_HANDLE hHrtf /* i/o: HRTF handle */ +void destroy_td_hrtf( + IVAS_DEC_HRTF_HANDLE *hHrtf /* i/o: HRTF handle */ ) { int16_t i; - ivas_error error; - error = IVAS_ERR_OK; - if ( hHrtf == NULL ) + if ( ( hHrtf == NULL ) || ( *hHrtf == NULL ) ) { - return error; + return; } - if ( !hHrtf->ModelParams.modelROM ) + if ( !( *hHrtf )->ModelParams.modelROM ) { - if ( hHrtf->ModelParams.UseItdModel ) + if ( ( *hHrtf )->ModelParams.UseItdModel ) { - free( hHrtf->ModelParamsITD.elevKSeq_dyn_fx ); - free( hHrtf->ModelParamsITD.azimKSeq_dyn_fx ); - free( hHrtf->ModelParamsITD.W_dyn_fx ); - free( hHrtf->ModelParamsITD.azimBsShape_dyn_fx ); - free( hHrtf->ModelParamsITD.elevBsShape_dyn_fx ); + free( ( *hHrtf )->ModelParamsITD.elevKSeq_dyn_fx ); + free( ( *hHrtf )->ModelParamsITD.azimKSeq_dyn_fx ); + free( ( *hHrtf )->ModelParamsITD.W_dyn_fx ); + free( ( *hHrtf )->ModelParamsITD.azimBsShape_dyn_fx ); + free( ( *hHrtf )->ModelParamsITD.elevBsShape_dyn_fx ); } - free( hHrtf->ModelParams.elevKSeq_dyn_fx ); - free( hHrtf->ModelParams.azim_start_idx_dyn ); - free( hHrtf->ModelParams.azimDim2_dyn ); - free( hHrtf->ModelParams.azimDim3_dyn ); - free( hHrtf->ModelParams.AlphaL_dyn_fx ); - free( hHrtf->ModelParams.AlphaR_dyn_fx ); - free( hHrtf->ModelParams.azimSegSamples_dyn ); + free( ( *hHrtf )->ModelParams.elevKSeq_dyn_fx ); + free( ( *hHrtf )->ModelParams.azim_start_idx_dyn ); + free( ( *hHrtf )->ModelParams.azimDim2_dyn ); + free( ( *hHrtf )->ModelParams.azimDim3_dyn ); + free( ( *hHrtf )->ModelParams.AlphaL_dyn_fx ); + free( ( *hHrtf )->ModelParams.AlphaR_dyn_fx ); + free( ( *hHrtf )->ModelParams.azimSegSamples_dyn ); - free( hHrtf->ModelParams.azimShapeIdx_dyn ); - free( hHrtf->ModelParams.azimShapeSampFactor_dyn ); - free( hHrtf->ModelParams.elevBsShape_dyn_fx ); + free( ( *hHrtf )->ModelParams.azimShapeIdx_dyn ); + free( ( *hHrtf )->ModelParams.azimShapeSampFactor_dyn ); + free( ( *hHrtf )->ModelParams.elevBsShape_dyn_fx ); - for ( i = 0; i < hHrtf->ModelParams.num_unique_azim_splines; i++ ) + for ( i = 0; i < ( *hHrtf )->ModelParams.num_unique_azim_splines; i++ ) { - free( hHrtf->ModelParams.azimBsShape_dyn_fx[i] ); - free( &hHrtf->ModelParams.azimBsShape_dyn_fx[i] ); + free( ( *hHrtf )->ModelParams.azimBsShape_dyn_fx[i] ); } + free( ( *hHrtf )->ModelParams.azimBsShape_dyn_fx ); - free( (void *) hHrtf->ModelParams.azimBsShape_fx ); /* void* cast needed to please both gcc and Visual studio compilers. Deallocating const float** should be fine and gcc agrees, but Visual studio complains. */ - FOR( i = 0; i < hHrtf->ModelParams.elevDim3; i++ ) + free( (void *) ( *hHrtf )->ModelParams.azimBsShape_fx ); /* void* cast needed to please both gcc and Visual studio compilers. Deallocating const float** should be fine and gcc agrees, but Visual studio complains. */ + for ( i = 0; i < ( *hHrtf )->ModelParams.elevDim3; i++ ) { - free( hHrtf->ModelParams.azimKSeq_fx[i] ); + free( ( *hHrtf )->ModelParams.azimKSeq_fx[i] ); } - free( hHrtf->ModelParams.azimKSeq_fx ); + free( ( *hHrtf )->ModelParams.azimKSeq_fx ); - free( hHrtf->ModelParams.EL_dyn_fx ); - free( hHrtf->ModelParams.ER_dyn_fx ); - free( hHrtf->ModelEval.hrfModL_fx ); - free( hHrtf->ModelEval.hrfModR_fx ); + free( ( *hHrtf )->ModelParams.EL_dyn_fx ); + free( ( *hHrtf )->ModelParams.ER_dyn_fx ); - for ( i = 0; i < 3; i++ ) - { - free( hHrtf->lr_energy_and_iac_dyn_fx[i] ); - } + free( ( *hHrtf )->ModelEval.hrfModL_fx ); + free( ( *hHrtf )->ModelEval.hrfModR_fx ); } - return error; + ivas_HRTF_binary_close_fx( hHrtf ); + + return; } /*---------------------------------------------------------------------* @@ -829,7 +1001,7 @@ static ivas_error create_HRTF_from_rawdata( { if ( ( ( *hHRTF ) = (HRTFS_HANDLE) malloc( sizeof( HRTFS_DATA ) ) ) == NULL ) { - return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Can not allocate memory for HRTF binary data\n" ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HRTF binary data\n" ); } if ( ( error = ivas_hrtf_init( *hHRTF ) ) != IVAS_ERR_OK ) @@ -842,6 +1014,7 @@ static ivas_error create_HRTF_from_rawdata( return IVAS_ERR_INTERNAL; } + ( *hHRTF )->init_from_rom = 0; hrtf_data_rptr = hrtf_data; /* latency_s */ @@ -922,12 +1095,26 @@ static ivas_error create_HRTF_from_rawdata( hrtf_data_rptr += sizeof( UWord16 ); /* inv_diffuse_weight */ +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + for ( i = 0; i < ( *hHRTF )->max_num_ir; i++ ) + { + ( *hHRTF )->inv_diffuse_weight_fx[0][i] = (Word16) ( *( (float *) ( hrtf_data_rptr ) ) * ONE_IN_Q15 ); + hrtf_data_rptr += sizeof( float ); + } + for ( i = 0; i < ( *hHRTF )->max_num_ir; i++ ) + { + ( *hHRTF )->inv_diffuse_weight_fx[1][i] = (Word16) ( *( (float *) ( hrtf_data_rptr ) ) * ONE_IN_Q15 ); + hrtf_data_rptr += sizeof( float ); + } +#else + /* inv_diffuse_weight */ for ( i = 0; i < ( *hHRTF )->max_num_ir; i++ ) { - //( *hHRTF )->inv_diffuse_weight[i] = *( (float *) ( hrtf_data_rptr ) ); - ( *hHRTF )->inv_diffuse_weight_fx[i] = (Word16) ( *( (float *) ( hrtf_data_rptr ) ) * ONE_IN_Q15 ); + ( *hHRTF )->inv_diffuse_weight_fx[0][i] = (Word16) ( *( (float *) ( hrtf_data_rptr ) ) * ONE_IN_Q15 ); + ( *hHRTF )->inv_diffuse_weight_fx[1][i] = ( *hHRTF )->inv_diffuse_weight[0][i]; hrtf_data_rptr += sizeof( float ); } +#endif /* max_total_num_fsamp_per_iteration */ max_total_num_fsamp_per_iteration = *( (UWord16 *) ( hrtf_data_rptr ) ); @@ -1070,10 +1257,14 @@ static ivas_error create_HRTF_from_rawdata( static ivas_error create_fastconv_HRTF_from_rawdata( - HRTFS_FASTCONV_HANDLE *hHRTF, /* i/o: HRTF FastConv handle */ - char *hrtf_data, /* i : pointer to binary file */ - RENDERER_TYPE rend_type, /* i : Renderer type */ - BINAURAL_INPUT_AUDIO_CONFIG input_cfg /* i : Input binaural config */ + HRTFS_FASTCONV_HANDLE *hHRTF, /* i/o: HRTF FastConv handle */ + char *hrtf_data, /* i : pointer to binary file */ +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + HRTF_READER_RENDERER_TYPE rend_type, /* i : Renderer type */ +#else + RENDERER_TYPE rend_type, /* i : Renderer type */ +#endif + BINAURAL_INPUT_AUDIO_CONFIG input_cfg /* i : Input binaural config */ ) { int16_t i, j; @@ -1082,24 +1273,63 @@ static ivas_error create_fastconv_HRTF_from_rawdata( float f_tmp_ntaps_max[BINAURAL_NTAPS_MAX]; float f_tmp_brir_reverb[CLDFB_NO_CHANNELS_MAX]; char *hrtf_data_rptr; +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + ivas_error error; +#endif + ( *hHRTF )->allocate_init_flag = 0; + +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV ) + { + if ( ( error = ivas_allocate_binaural_hrtf_fx( *hHRTF, 0, input_cfg, RENDERER_BINAURAL_FASTCONV, ( *hHRTF )->allocate_init_flag ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) + { + if ( ( error = ivas_allocate_binaural_hrtf_fx( *hHRTF, 0, input_cfg, RENDERER_BINAURAL_FASTCONV_ROOM, ( *hHRTF )->allocate_init_flag ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "renderer type not compliant" ); + } +#else ivas_allocate_binaural_hrtf_fx( *hHRTF, 0, input_cfg, rend_type, ( *hHRTF )->allocate_init_flag ); +#endif hrtf_data_rptr = hrtf_data; +#if !defined USE_NEW_HRTF_BINARY_FILE_FORMAT /* BINAURAL_CONVBANDS */ if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); } hrtf_data_rptr += sizeof( uint16_t ); +#endif - /* HRIR */ +/* HRIR */ +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) +#else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) +#endif { f_tmp = *( (float *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( float ); ( *hHRTF )->FASTCONV_HRIR_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); +#if defined USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); + } + hrtf_data_rptr += sizeof( uint16_t ); +#endif if ( HRTF_LS_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { @@ -1150,13 +1380,25 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } } } +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) +#else else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) +#endif { /* HRIR_HOA3 */ f_tmp = *( (float *) ( hrtf_data_rptr ) ); ( *hHRTF )->FASTCONV_HOA3_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); hrtf_data_rptr += sizeof( float ); +#if defined USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); + } + hrtf_data_rptr += sizeof( uint16_t ); +#endif + if ( HOA3_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HOA3_CHANNELS)" ); @@ -1205,12 +1447,25 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } } } +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) +#else else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) +#endif { /* HRIR_HOA2 */ f_tmp = *( (float *) ( hrtf_data_rptr ) ); ( *hHRTF )->FASTCONV_HOA2_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); hrtf_data_rptr += sizeof( float ); + +#if defined USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); + } + hrtf_data_rptr += sizeof( uint16_t ); +#endif + if ( HOA2_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HOA2_CHANNELS)" ); @@ -1260,12 +1515,25 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } } } +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) +#else else if ( rend_type == RENDERER_BINAURAL_FASTCONV && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) +#endif { /* HRIR_FOA */ f_tmp = *( (float *) ( hrtf_data_rptr ) ); ( *hHRTF )->FASTCONV_FOA_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); hrtf_data_rptr += sizeof( float ); + +#if defined USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); + } + hrtf_data_rptr += sizeof( uint16_t ); +#endif + if ( FOA_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (FOA_CHANNELS)" ); @@ -1315,13 +1583,25 @@ static ivas_error create_fastconv_HRTF_from_rawdata( } } } - /* BRIR */ +/* BRIR */ +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + else if ( rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) +#else else if ( rend_type == RENDERER_BINAURAL_FASTCONV_ROOM && input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) +#endif { f_tmp = *( (float *) ( hrtf_data_rptr ) ); ( *hHRTF )->FASTCONV_BRIR_latency_s_fx = (Word32) ( f_tmp * 1000000000 ); hrtf_data_rptr += sizeof( float ); +#if defined USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( BINAURAL_CONVBANDS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_CONVBANDS)" ); + } + hrtf_data_rptr += sizeof( uint16_t ); +#endif + if ( HRTF_LS_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HRTF_LS_CHANNELS)" ); @@ -1380,11 +1660,15 @@ static ivas_error create_fastconv_HRTF_from_rawdata( memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT + floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationTimes_fx, Q26, CLDFB_NO_CHANNELS_MAX ); +#else floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationTimes_fx, Q31, CLDFB_NO_CHANNELS_MAX ); +#endif memcpy( f_tmp_brir_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); - hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); floatToFixed_arrL( f_tmp_brir_reverb, ( *hHRTF )->fastconvReverberationEneCorrections_fx, Q31, CLDFB_NO_CHANNELS_MAX ); + hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); } return IVAS_ERR_OK; @@ -1408,6 +1692,7 @@ ivas_error load_fastconv_HRTF_from_binary( ivas_error header_check_result; ivas_hrtfs_file_header_t hrtfs_file_header; int16_t hrtf_id; + int16_t asFastconv = 0; f_hrtf = hrtfReader->file; @@ -1439,7 +1724,11 @@ ivas_error load_fastconv_HRTF_from_binary( free( hrtf_data ); return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "HRTF binary file not compliant (number of HRTF)" ); } +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV ) || ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM ) ) +#else if ( ( hrtf_header.rend_type == RENDERER_BINAURAL_FASTCONV ) || ( hrtf_header.rend_type == RENDERER_BINAURAL_FASTCONV_ROOM ) ) +#endif { if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) { @@ -1453,6 +1742,7 @@ ivas_error load_fastconv_HRTF_from_binary( free( hrtf_data ); return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" ); } + asFastconv = 1; } else { @@ -1461,7 +1751,14 @@ ivas_error load_fastconv_HRTF_from_binary( } free( hrtf_data ); - return IVAS_ERR_OK; + if ( asFastconv ) + { + return IVAS_ERR_OK; + } + else + { + return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA; + } } @@ -1506,7 +1803,7 @@ static ivas_error create_parambin_HRTF_from_rawdata( { memcpy( f_tmp_hrtfShCoeffs, hrtf_data_rptr, data_size_tmp ); /*adding conversion as file reading is done in float*/ - floatToFixed_arr16( f_tmp_hrtfShCoeffs, ( *hHRTF )->hrtfShCoeffsRe_fx[i][j], Q15, HRTF_NUM_BINS ); + floatToFixed_arr16( f_tmp_hrtfShCoeffs, ( *hHRTF )->hrtfShCoeffsRe_fx[i][j], Q14, HRTF_NUM_BINS ); hrtf_data_rptr += data_size_tmp; } } @@ -1531,7 +1828,11 @@ static ivas_error create_parambin_HRTF_from_rawdata( memcpy( f_tmp_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); /*adding conversion as file reading is done in float*/ +#ifdef FIX_1741_REVERB_TIMES_Q_FORMAT + floatToFixed_arrL( f_tmp_reverb, ( *hHRTF )->parametricReverberationTimes_fx, Q26, CLDFB_NO_CHANNELS_MAX ); +#else floatToFixed_arrL( f_tmp_reverb, ( *hHRTF )->parametricReverberationTimes_fx, Q31, CLDFB_NO_CHANNELS_MAX ); +#endif memcpy( f_tmp_reverb, hrtf_data_rptr, CLDFB_NO_CHANNELS_MAX * sizeof( float ) ); hrtf_data_rptr += CLDFB_NO_CHANNELS_MAX * sizeof( float ); @@ -1565,6 +1866,7 @@ ivas_error load_parambin_HRTF_from_binary( ivas_error header_check_result; ivas_hrtfs_file_header_t hrtfs_file_header; int16_t hrtf_id; + int16_t asParam = 0; f_hrtf = hrtfReader->file; @@ -1599,7 +1901,12 @@ ivas_error load_parambin_HRTF_from_binary( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "HRTF binary file not compliant (number of HRTF)" ); } + +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM ) /* Parametric binauralizer data is represented as single entity */ +#else if ( hrtf_header.rend_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) /* Parametric binauralizer data is represented as single entity */ +#endif { if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) { @@ -1613,6 +1920,7 @@ ivas_error load_parambin_HRTF_from_binary( free( hrtf_data ); return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" ); } + asParam = 1; } else { @@ -1620,8 +1928,14 @@ ivas_error load_parambin_HRTF_from_binary( } } free( hrtf_data ); - - return IVAS_ERR_OK; + if ( asParam ) + { + return IVAS_ERR_OK; + } + else + { + return IVAS_ERR_BINARY_FILE_WITHOUT_BINAURAL_RENDERER_DATA; + } } @@ -1675,13 +1989,18 @@ ivas_error create_SetOfHRTF_from_binary( { if ( read_hrtf_binary_header( &hrtf_header, f_hrtf ) != IVAS_ERR_OK ) { + free( hrtf_data ); return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "HRTF binary file not compliant (number of HRTF)" ); } hHRTF = NULL; if ( hrtf_header.frequency == output_Fs ) { +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + if ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_MIXER_CONV ) +#else if ( hrtf_header.rend_type == RENDERER_BINAURAL_MIXER_CONV ) +#endif { if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) { @@ -1700,7 +2019,11 @@ ivas_error create_SetOfHRTF_from_binary( hHRTF = &( ( *hSetOfHRTF ).hHRTF_hrir_foa ); } } +#ifdef USE_NEW_HRTF_BINARY_FILE_FORMAT + else if ( hrtf_header.rend_type == HRTF_READER_RENDERER_BINAURAL_MIXER_CONV_ROOM ) +#else else if ( hrtf_header.rend_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) +#endif { if ( hrtf_header.input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) { @@ -1719,19 +2042,13 @@ ivas_error create_SetOfHRTF_from_binary( /* Create the HRTF reading the raw data from the binary file */ if ( ( create_HRTF_from_rawdata( hHRTF, hrtf_data ) ) != IVAS_ERR_OK ) { + free( hrtf_data ); return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create HRTF from binary file" ); } } } free( hrtf_data ); - if ( ( ( *hSetOfHRTF ).hHRTF_hrir_combined == NULL ) || ( ( *hSetOfHRTF ).hHRTF_brir_combined == NULL ) || ( ( *hSetOfHRTF ).hHRTF_hrir_hoa3 == NULL ) ) - { - if ( destroy_SetOfHRTF( hSetOfHRTF ) != IVAS_ERR_OK ) - { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create all the HRTF from binary file" ); - } - } return IVAS_ERR_OK; } @@ -1741,43 +2058,45 @@ ivas_error create_SetOfHRTF_from_binary( * Destroy the HRTF CRend handle *---------------------------------------------------------------------*/ -static ivas_error destroy_HRTF( +static void destroy_HRTF( HRTFS_HANDLE *hHRTF /* i/o: HRTF CRend handle */ ) { uint16_t i, j; - if ( *hHRTF != NULL && hHRTF != NULL ) + test(); + test(); + IF( *hHRTF != NULL && hHRTF != NULL && ( *hHRTF )->init_from_rom == 0 ) { - for ( i = 0; i < MAX_INTERN_CHANNELS; i++ ) + FOR( i = 0; i < MAX_INTERN_CHANNELS; i++ ) { - for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { - if ( ( *hHRTF )->pIndex_frequency_max[i][j] != NULL ) + IF( ( *hHRTF )->pIndex_frequency_max[i][j] != NULL ) { free( ( *hHRTF )->pIndex_frequency_max[i][j] ); } - if ( ( *hHRTF )->pOut_to_bin_re_fx[i][j] != NULL ) + IF( ( *hHRTF )->pOut_to_bin_re_fx[i][j] != NULL ) { free( ( *hHRTF )->pOut_to_bin_re_fx[i][j] ); } - if ( ( *hHRTF )->pOut_to_bin_im_fx[i][j] != NULL ) + IF( ( *hHRTF )->pOut_to_bin_im_fx[i][j] != NULL ) { free( ( *hHRTF )->pOut_to_bin_im_fx[i][j] ); } } } - for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + FOR( j = 0; j < BINAURAL_CHANNELS; j++ ) { - if ( ( *hHRTF )->pIndex_frequency_max_diffuse[j] != NULL ) + IF( ( *hHRTF )->pIndex_frequency_max_diffuse[j] != NULL ) { free( ( *hHRTF )->pIndex_frequency_max_diffuse[j] ); } - if ( ( *hHRTF )->pOut_to_bin_diffuse_re_fx[j] != NULL ) + IF( ( *hHRTF )->pOut_to_bin_diffuse_re_fx[j] != NULL ) { free( ( *hHRTF )->pOut_to_bin_diffuse_re_fx[j] ); } - if ( ( *hHRTF )->pOut_to_bin_diffuse_im_fx[j] != NULL ) + IF( ( *hHRTF )->pOut_to_bin_diffuse_im_fx[j] != NULL ) { free( ( *hHRTF )->pOut_to_bin_diffuse_im_fx[j] ); } @@ -1787,26 +2106,94 @@ static ivas_error destroy_HRTF( *hHRTF = NULL; } - return IVAS_ERR_OK; + return; } + + /*---------------------------------------------------------------------* * destroy_SetOfHRTF() * * Destroy the HRTF data set. *---------------------------------------------------------------------*/ +void destroy_SetOfHRTF( + HRTFS_CREND_HANDLE *hSetOfHRTF /* i/o: Set of HRTF CRend handle */ +) +{ + test(); + IF( ( hSetOfHRTF != NULL ) && ( *hSetOfHRTF != NULL ) ) + { + destroy_HRTF( &( ( *hSetOfHRTF )->hHRTF_hrir_combined ) ); + destroy_HRTF( &( ( *hSetOfHRTF )->hHRTF_hrir_hoa3 ) ); + destroy_HRTF( &( ( *hSetOfHRTF )->hHRTF_hrir_hoa2 ) ); + destroy_HRTF( &( ( *hSetOfHRTF )->hHRTF_hrir_foa ) ); + destroy_HRTF( &( ( *hSetOfHRTF )->hHRTF_brir_combined ) ); + } + + ivas_HRTF_CRend_binary_close_fx( hSetOfHRTF ); + + return; +} + + +/*---------------------------------------------------------------------* + * destroy_hrtf_statistics() + * + * Destroy the HRTF statistics set. + *---------------------------------------------------------------------*/ -ivas_error destroy_SetOfHRTF( - HRTFS_CREND_HANDLE hSetOfHRTF /* i/o: Set of HRTF CRend handle */ +void destroy_hrtf_statistics( + IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics /* i/o: HRTF statistics handle */ ) { - if ( hSetOfHRTF != NULL ) + if ( ( hHrtfStatistics != NULL ) && ( *hHrtfStatistics != NULL ) ) { - destroy_HRTF( &( hSetOfHRTF->hHRTF_hrir_combined ) ); - destroy_HRTF( &( hSetOfHRTF->hHRTF_hrir_hoa3 ) ); - destroy_HRTF( &( hSetOfHRTF->hHRTF_hrir_hoa2 ) ); - destroy_HRTF( &( hSetOfHRTF->hHRTF_hrir_foa ) ); - destroy_HRTF( &( hSetOfHRTF->hHRTF_brir_combined ) ); + if ( ( *hHrtfStatistics )->average_energy_l_dyn != NULL ) + { + free( ( *hHrtfStatistics )->average_energy_l_dyn ); + } + if ( ( *hHrtfStatistics )->average_energy_r_dyn != NULL ) + { + free( ( *hHrtfStatistics )->average_energy_r_dyn ); + } + if ( ( *hHrtfStatistics )->inter_aural_coherence_dyn != NULL ) + { + free( ( *hHrtfStatistics )->inter_aural_coherence_dyn ); + } } + ivas_HRTF_statistics_close( hHrtfStatistics ); +} - return IVAS_ERR_OK; +/*---------------------------------------------------------------------* + * destroy_fastconv_hrtf() + * + * Destroy the HRTF data set. + *---------------------------------------------------------------------*/ + +void destroy_fastconv_hrtf( + IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* i/o: FastConv HRTF handle */ +) +{ + /* Fastconv HRTF memories */ + ivas_binaural_hrtf_close( hHrtfFastConv ); + + /* Fastconv HRTF filters */ + ivas_HRTF_fastconv_binary_close_fx( hHrtfFastConv ); + + return; +} + + +/*---------------------------------------------------------------------* + * destroy_parambin_hrtf() + * + * Destroy the HRTF data set. + *---------------------------------------------------------------------*/ + +void destroy_parambin_hrtf( + IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* i/o: Parambin HRTF handle */ +) +{ + ivas_HRTF_parambin_binary_close_fx( hHrtfParambin ); + + return; } diff --git a/lib_util/hrtf_file_reader.h b/lib_util/hrtf_file_reader.h index 104cc5c7a8a93f778a0e3e78438a4660576e77c4..c0b44e29bbf3315371e64de2d338965aa5107af7 100644 --- a/lib_util/hrtf_file_reader.h +++ b/lib_util/hrtf_file_reader.h @@ -47,6 +47,19 @@ typedef struct ivas_hrtfs_header_t } ivas_hrtfs_header_t; +typedef enum +{ + HRTF_READER_RENDERER_BINAURAL_INVALID, + HRTF_READER_RENDERER_BINAURAL_FASTCONV, + HRTF_READER_RENDERER_BINAURAL_FASTCONV_ROOM, + HRTF_READER_RENDERER_BINAURAL_PARAMETRIC, + HRTF_READER_RENDERER_BINAURAL_PARAMETRIC_ROOM, + HRTF_READER_RENDERER_BINAURAL_OBJECTS_TD, + HRTF_READER_RENDERER_BINAURAL_MIXER_CONV, + HRTF_READER_RENDERER_BINAURAL_MIXER_CONV_ROOM, + HRTF_READER_RENDERER_BINAURAL_REVERB_ALL +} HRTF_READER_RENDERER_TYPE; + /*---------------------------------------------------------------------* * hrtfFileReader_open() * @@ -79,6 +92,18 @@ ivas_error load_HRTF_binary( const hrtfFileReader *hrtfReader /* i/o: pointer to hrtfFileReader handle */ ); +/*---------------------------------------------------------------------* + * load_reverb_binary() + * + * Load reverb binary data into the HRTF handle + *---------------------------------------------------------------------*/ + +ivas_error load_reverb_binary( + IVAS_DEC_HRTF_STATISTICS_HANDLE hHrtfStatistics, /* i/o: HRTF statistics handle */ + int32_t sampleRate, /* i : sample rate */ + const hrtfFileReader *hrtfReader /* i/o: pointer to hrtfFileReader handle */ +); + /*---------------------------------------------------------------------* * create_SetOfHRTF_from_binary() * @@ -98,10 +123,10 @@ ivas_error create_SetOfHRTF_from_binary( * Destroy the HRTF data set. *---------------------------------------------------------------------*/ -ivas_error destroy_SetOfHRTF( - IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF /* i/o: Set of HRTF CRend handle */ -); +void destroy_SetOfHRTF( + IVAS_DEC_HRTF_CREND_HANDLE *hSetOfHRTF /* i/o: Set of HRTF CRend handle */ +); /*---------------------------------------------------------------------* * load_fastconv_HRTF_from_binary() @@ -114,6 +139,15 @@ ivas_error load_fastconv_HRTF_from_binary( const hrtfFileReader *hrtfReader /* i : pointer to hrtfFileReader handle */ ); +/*---------------------------------------------------------------------* + * destroy_fastconv_hrtf() + * + * free memory allocated for FastConv HRTF binary data into the handle + *---------------------------------------------------------------------*/ + +void destroy_fastconv_hrtf( + IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* i/o: FastConv HRTF handle */ +); /*---------------------------------------------------------------------* * load_parambin_HRTF_from_binary() @@ -126,15 +160,39 @@ ivas_error load_parambin_HRTF_from_binary( const hrtfFileReader *hrtfReader /* i : pointer to hrtfFileReader handle */ ); +/*---------------------------------------------------------------------* + * destroy_hrtf_statistics() + * + * free memory allocated for HRTF statistics binary data + *---------------------------------------------------------------------*/ + +void destroy_hrtf_statistics( + IVAS_DEC_HRTF_STATISTICS_HANDLE *hHrtfStatistics /* i/o: HRTF statistics handle */ +); /*---------------------------------------------------------------------* * dealloc_HRTF_binary() * * Deallocated memory allocated by load_HRTF_binary *---------------------------------------------------------------------*/ +/*---------------------------------------------------------------------* + * destroy_parambin_hrtf() + * + * free memory allocated for Parambin HRTF binary data into the handle + *---------------------------------------------------------------------*/ + +void destroy_parambin_hrtf( + IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* i/o: Parambin HRTF handle */ +); + +/*---------------------------------------------------------------------* + * destroy_td_hrtf() + * + * Destroy the HRTF TD handle + *---------------------------------------------------------------------*/ -ivas_error dealloc_HRTF_binary( - IVAS_DEC_HRTF_HANDLE hHrtf /* i/o: HRTF handle */ +void destroy_td_hrtf( + IVAS_DEC_HRTF_HANDLE *hHRTF /* i/o: HRTF handle */ ); #endif /* IVAS_HRTF_FILE_READER_H */ diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index e099842be2f9c47fb3bbab69ec160c15e590a2a9..bd9e7a48e6ece60ebc235044900e4e877ac30e26 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -440,7 +440,11 @@ static ivas_error read_bin_bits( *pTarget = 0; for ( n = 0; n < nBits; n++ ) { +#ifdef FIX_WARNING_RENDER_CONFIG + nByte = (uint32_t) ( ( this->readOffset + n ) >> 3 ); +#else nByte = ( this->readOffset + n ) >> 3; +#endif bit = this->pBitstream[nByte] >> ( 7 - ( ( this->readOffset + n ) % 8 ) ) & 1; *pTarget = ( *pTarget << 1 ) + bit; } @@ -1069,7 +1073,7 @@ static void strip_spaces( while ( pStr[read_idx] ) { - if ( !isspace( pStr[read_idx] ) && !iscntrl( pStr[read_idx] ) ) + if ( !isspace( (int32_t) pStr[read_idx] ) && !iscntrl( (int32_t) pStr[read_idx] ) ) { pStr[write_idx++] = pStr[read_idx]; } @@ -1833,6 +1837,8 @@ ivas_error RenderConfigReader_read( uint32_t fgHasMethod, fgHasNBands, fgHasFreqs, fgHasDefaultGrid, fgHasStartFreq, fgHasFreqHop; uint32_t aeHasFgIdx, aeHasPredelay, aeHasRt60, aeHasDsr; uint32_t aeHasERsize, aeHasERabs; + bool dofProvided = false; + bool poseCorrProvided = false; uint32_t nDP; uint32_t accDPIdx; @@ -2185,7 +2191,7 @@ ivas_error RenderConfigReader_read( return IVAS_ERR_INVALID_RENDER_CONFIG; } idx = strtol( strtok( NULL, ":" ), NULL, 0 ); - pRenderConfigReader->pAE->id = idx; + pRenderConfigReader->pAE[acIdx].id = idx; aeHasFgIdx = aeHasPredelay = aeHasRt60 = aeHasDsr = FALSE; aeHasERsize = aeHasERabs = FALSE; @@ -2243,7 +2249,7 @@ ivas_error RenderConfigReader_read( /* RT60 */ else if ( strcmp( item, "RT60" ) == 0 ) { - if ( read_txt_vector( pValue, pRenderConfigReader->pFG[idx].nrBands, pRenderConfigReader->pAE[acIdx].pRT60 ) ) + if ( read_txt_vector( pValue, pRenderConfigReader->pAE[acIdx].pFG->nrBands, pRenderConfigReader->pAE[acIdx].pRT60 ) ) { errorHandler( item, ERROR_VALUE_INVALID ); return IVAS_ERR_INVALID_RENDER_CONFIG; @@ -2253,7 +2259,7 @@ ivas_error RenderConfigReader_read( /* DSR */ else if ( strcmp( item, "DSR" ) == 0 ) { - if ( read_txt_vector( pValue, pRenderConfigReader->pFG[idx].nrBands, pRenderConfigReader->pAE[acIdx].pDSR ) ) + if ( read_txt_vector( pValue, pRenderConfigReader->pAE[acIdx].pFG->nrBands, pRenderConfigReader->pAE[acIdx].pDSR ) ) { errorHandler( item, ERROR_VALUE_INVALID ); return IVAS_ERR_INVALID_RENDER_CONFIG; @@ -2349,7 +2355,138 @@ ivas_error RenderConfigReader_read( free( pValue ); acIdx++; } - + else if ( strcmp( chapter, "SPLITREND" ) == 0 && strlen( pParams ) != 0 ) + { + params_idx = 0; + pValue = (char *) calloc( strlen( pParams ), sizeof( char ) ); + while ( sscanf( pParams + params_idx, "%64[^=]=%[^;];", item, pValue ) == 2 ) + { + params_idx += (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + fprintf( stderr, " PARAM: %s -> %s\n", item, pValue ); +#endif + if ( strcmp( item, "CODECDELAY" ) == 0 ) + { + if ( !sscanf( pValue, "%hd", &hRenderConfig->split_rend_config.codec_delay_ms ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + } + } + else if ( strcmp( item, "HQMODE" ) == 0 ) + { + if ( !sscanf( pValue, "%hd", &hRenderConfig->split_rend_config.hq_mode ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + } + } + else if ( strcmp( item, "BITRATE" ) == 0 ) + { + if ( !sscanf( pValue, "%d", &hRenderConfig->split_rend_config.splitRendBitRate ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + } + } + else if ( strcmp( item, "DOF" ) == 0 ) + { + dofProvided = true; + if ( !sscanf( pValue, "%hd", &hRenderConfig->split_rend_config.dof ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + } + /* 0 DOF implies no pose correction */ + if ( hRenderConfig->split_rend_config.dof == 0 && !poseCorrProvided ) + { + hRenderConfig->split_rend_config.poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE; + } + } + else if ( strcmp( item, "CODEC" ) == 0 ) + { + if ( strcmp( pValue, "LCLD" ) == 0 ) + { + hRenderConfig->split_rend_config.codec = ISAR_SPLIT_REND_CODEC_LCLD; + } + else if ( strcmp( pValue, "LC3PLUS" ) == 0 ) + { + hRenderConfig->split_rend_config.codec = ISAR_SPLIT_REND_CODEC_LC3PLUS; + } + else + { + errorHandler( pValue, ERROR_VALUE_INVALID ); + } + } + else if ( strcmp( item, "FRAMESIZE" ) == 0 ) + { + if ( !sscanf( pValue, "%hd", &hRenderConfig->split_rend_config.codec_frame_size_ms ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + } + if ( hRenderConfig->split_rend_config.codec_frame_size_ms != 5 && + hRenderConfig->split_rend_config.codec_frame_size_ms != 10 && + hRenderConfig->split_rend_config.codec_frame_size_ms != 20 ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + } + } + else if ( strcmp( item, "POSECORRECTION" ) == 0 ) + { + poseCorrProvided = true; + if ( strcmp( pValue, "CLDFB" ) == 0 ) + { + hRenderConfig->split_rend_config.poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; + } + else if ( strcmp( pValue, "NONE" ) == 0 ) + { + hRenderConfig->split_rend_config.poseCorrectionMode = ISAR_SPLIT_REND_POSE_CORRECTION_MODE_NONE; + /* no pose correction implies 0 DOF */ + if ( !dofProvided ) + { + hRenderConfig->split_rend_config.dof = 0; + } + } + else + { + errorHandler( pValue, ERROR_VALUE_INVALID ); + } + } + else if ( strcmp( item, "RENDERER" ) == 0 ) + { + if ( strcmp( pValue, "CREND" ) == 0 ) + { + hRenderConfig->split_rend_config.rendererSelection = ISAR_SPLIT_REND_RENDERER_SELECTION_CREND; + } + else if ( strcmp( pValue, "FASTCONV" ) == 0 ) + { + hRenderConfig->split_rend_config.rendererSelection = ISAR_SPLIT_REND_RENDERER_SELECTION_FASTCONV; + } + else if ( strcmp( pValue, "PARAMBIN" ) == 0 ) + { + hRenderConfig->split_rend_config.rendererSelection = ISAR_SPLIT_REND_RENDERER_SELECTION_PARAMBIN; + } + else if ( strcmp( pValue, "TDREND" ) == 0 ) + { + hRenderConfig->split_rend_config.rendererSelection = ISAR_SPLIT_REND_RENDERER_SELECTION_TDREND; + } + else + { + errorHandler( pValue, ERROR_VALUE_INVALID ); + } + } + else if ( strcmp( item, "LC3PLUS_HIGHRES" ) == 0 ) + { + if ( !sscanf( pValue, "%hd", &hRenderConfig->split_rend_config.lc3plus_highres ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + } + } +#ifdef DEBUGGING + else + { + fprintf( stderr, "Unsupported configuration property %s\n", item ); + } +#endif + } + free( pValue ); + } else if ( strcmp( chapter, "DIRECTIVITYSETTING" ) == 0 && strlen( pParams ) != 0 ) { params_idx = 0; diff --git a/lib_util/rotation_file_reader.c b/lib_util/rotation_file_reader.c index 2299f326531a24915800468935bb021c8f7888af..3cd2e798b4ee2f01df24aae37293703a7a327891 100644 --- a/lib_util/rotation_file_reader.c +++ b/lib_util/rotation_file_reader.c @@ -120,15 +120,24 @@ ivas_error HeadRotationFileReading( ( headRotReader->frameCounter )++; - pQuaternion->w = w; - pQuaternion->x = x; - pQuaternion->y = y; - pQuaternion->z = z; - pQuaternion->w_fx = floatToFixed_32( w, Q31 ); - pQuaternion->x_fx = floatToFixed_32( x, Q31 ); - pQuaternion->y_fx = floatToFixed_32( y, Q31 ); - pQuaternion->z_fx = floatToFixed_32( z, Q31 ); - pQuaternion->q_fact = Q31; + + if ( w == -3.0f ) + { + pQuaternion->w_fx = floatToFixed_32( w, Q22 ); + pQuaternion->x_fx = floatToFixed_32( x, Q22 ); + pQuaternion->y_fx = floatToFixed_32( y, Q22 ); + pQuaternion->z_fx = floatToFixed_32( z, Q22 ); + pQuaternion->q_fact = Q22; + } + else + { + pQuaternion->w_fx = floatToFixed_32( w, Q31 ); + pQuaternion->x_fx = floatToFixed_32( x, Q31 ); + pQuaternion->y_fx = floatToFixed_32( y, Q31 ); + pQuaternion->z_fx = floatToFixed_32( z, Q31 ); + pQuaternion->q_fact = Q31; + } + if ( pPos != NULL ) { pPos->x = posx; diff --git a/lib_util/split_rend_bfi_file_reader.c b/lib_util/split_rend_bfi_file_reader.c new file mode 100644 index 0000000000000000000000000000000000000000..6b7e1acd34b19cb9cd30b3b93b2ab4938041ffa8 --- /dev/null +++ b/lib_util/split_rend_bfi_file_reader.c @@ -0,0 +1,160 @@ +/****************************************************************************************************** + + (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 "split_rend_bfi_file_reader.h" +#include +#include "prot_fx.h" + +struct SplitRendBFIFileReader +{ + FILE *bfiFile; + int32_t frameCounter; + char *file_path; + bool fileRewind; + bool txtfile; +}; + + +/*-----------------------------------------------------------------------* + * SplitRendBFIFileReader_open() + * + * Allocate and initialize Split Renderer Frameloss file reader + *-----------------------------------------------------------------------*/ + +ivas_error SplitRendBFIFileReader_open( + char *bfiFilePath, /* i : frame loss file name */ + SplitRendBFIFileReader **SplitRendBFIReader /* o : SplitRendBFIFileReader handle */ +) +{ + SplitRendBFIFileReader *self; + FILE *bfiFile; + bool txtfile; + + /* Open bfi file */ + if ( strlen( bfiFilePath ) < 1 ) + { + return IVAS_ERR_FAILED_FILE_OPEN; + } + + bfiFile = fopen( bfiFilePath, "r" ); + + if ( !bfiFile ) + { + return IVAS_ERR_FAILED_FILE_OPEN; + } + + txtfile = ( strcmp( bfiFilePath + strlen( bfiFilePath ) - 4, ".txt" ) ? false : true ); + + self = calloc( sizeof( SplitRendBFIFileReader ), 1 ); + self->bfiFile = bfiFile; + self->frameCounter = 0; + self->file_path = calloc( sizeof( char ), strlen( bfiFilePath ) + 1 ); + strcpy( self->file_path, bfiFilePath ); + self->fileRewind = false; + self->txtfile = txtfile; + + *SplitRendBFIReader = self; + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------* + * SplitRendBFIFileReading() + * + * Read values from the bfi file + *-----------------------------------------------------------------------*/ + +ivas_error SplitRendBFIFileReading( + SplitRendBFIFileReader *SplitRendBFIReader, /* i/o: SplitRendBFIFileReader handle */ + int16_t *bfi ) +{ + if ( SplitRendBFIReader->txtfile ? 1 != fscanf( SplitRendBFIReader->bfiFile, "%hd", bfi ) : 1 != fread( bfi, sizeof( *bfi ), 1, SplitRendBFIReader->bfiFile ) ) + { + if ( feof( SplitRendBFIReader->bfiFile ) ) + { + rewind( SplitRendBFIReader->bfiFile ); + SplitRendBFIReader->fileRewind = true; + return SplitRendBFIFileReading( SplitRendBFIReader, bfi ); + } + return IVAS_ERR_FAILED_FILE_PARSE; + } + + ( SplitRendBFIReader->frameCounter )++; + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------* + * SplitRendBFIationFileReader_close() + * + * Deallocates memory for the Head-Tracking reader + *-----------------------------------------------------------------------*/ + +void SplitRendBFIFileReader_close( + SplitRendBFIFileReader **SplitRendBFIReader /* i/o: SplitRendBFIFileReader handle */ +) +{ + if ( SplitRendBFIReader == NULL || *SplitRendBFIReader == NULL ) + { + return; + } + + fclose( ( *SplitRendBFIReader )->bfiFile ); + free( ( *SplitRendBFIReader )->file_path ); + free( *SplitRendBFIReader ); + *SplitRendBFIReader = NULL; + + return; +} + + +/*-----------------------------------------------------------------------* + * SplitRendBFIFileReader_getFilePath() + * + * + *-----------------------------------------------------------------------*/ + +const char *SplitRendBFIFileReader_getFilePath( + SplitRendBFIFileReader *SplitRendBFIReader /* i/o: SplitRendBFIFileReader handle */ +) +{ + if ( SplitRendBFIReader == NULL ) + { + return NULL; + } + + return SplitRendBFIReader->file_path; +} diff --git a/lib_util/split_rend_bfi_file_reader.h b/lib_util/split_rend_bfi_file_reader.h new file mode 100644 index 0000000000000000000000000000000000000000..0956b6b3ddcecc0b8fd58f0f13a26b15b8e4c5a0 --- /dev/null +++ b/lib_util/split_rend_bfi_file_reader.h @@ -0,0 +1,58 @@ +/****************************************************************************************************** + + (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_SR_BFI_FILE_READER_H +#define IVAS_SR_BFI_FILE_READER_H + +#include "common_api_types.h" + +typedef struct SplitRendBFIFileReader SplitRendBFIFileReader; + +ivas_error SplitRendBFIFileReader_open( + char *trajFilePath, /* i : head rotation trajectory file name */ + SplitRendBFIFileReader **SplitRendBFIReader /* o : SplitRendBFIFileReader handle */ +); + +ivas_error SplitRendBFIFileReading( + SplitRendBFIFileReader *SplitRendBFIReader, /* i/o: SplitRendBFIFileReader handle */ + int16_t *bfi ); + +void SplitRendBFIFileReader_close( + SplitRendBFIFileReader **SplitRendBFIReader /* i/o: SplitRendBFIFileReader handle */ +); + +const char *SplitRendBFIFileReader_getFilePath( + SplitRendBFIFileReader *SplitRendBFIReader /* i/o: SplitRendBFIFileReader handle */ +); + + +#endif /* IVAS_SR_BFI_FILE_READER_H */ diff --git a/lib_util/split_render_file_read_write.c b/lib_util/split_render_file_read_write.c new file mode 100644 index 0000000000000000000000000000000000000000..43c68cba577df42a514c7245019576aacd924dec --- /dev/null +++ b/lib_util/split_render_file_read_write.c @@ -0,0 +1,417 @@ +/****************************************************************************************************** + + (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 "split_render_file_read_write.h" +#include +#include "prot_fx.h" + + +/*------------------------------------------------------------------------------------------* + * PreProc Macros + *------------------------------------------------------------------------------------------*/ + +#define SPLIT_RENDERER_FRAME_HEADER_LEN ( 12 ) + +/*------------------------------------------------------------------------------------------* + * Type definitions + *------------------------------------------------------------------------------------------*/ + +struct SplitFileReadWrite +{ + FILE *file; + uint32_t delay_ns; +}; + + +/*-----------------------------------------------------------------------------------------* + * Function split_rend_reader_open() + * + * open in read mode + *-----------------------------------------------------------------------------------------*/ + +ivas_error split_rend_reader_open( + SplitFileReadWrite **hhSplitRendFileReadWrite, + char *filename, + ISAR_SPLIT_REND_CODEC *codec, + ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, + int16_t *codec_frame_size_ms, + int16_t *isar_frame_size_ms, + int32_t *sampling_rate, + int16_t *lc3plus_highres ) +{ + SplitFileReadWrite *hSplitRendFileReadWrite; + size_t header_len, h; + char header[SPLIT_RENDERER_FRAME_HEADER_LEN] = "MAIN_SPLITH"; + char header_read[SPLIT_RENDERER_FRAME_HEADER_LEN]; + + if ( ( hSplitRendFileReadWrite = (SplitFileReadWrite *) malloc( sizeof( SplitFileReadWrite ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for split rendering writer\n" ) ); + } + + hSplitRendFileReadWrite->file = fopen( filename, "rb" ); + if ( hSplitRendFileReadWrite->file == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "\nCould not open split rend metadata file %s\n", filename ) ); + } + + header_len = strlen( header ); + + /*read frame header*/ + for ( h = 0; h < header_len; h++ ) + { + if ( fread( &header_read[h], sizeof( char ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + } + + if ( strncmp( header_read, header, header_len ) ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "\nError split rend bitstream main header mismatch\n" ) ); + } + + fread( &hSplitRendFileReadWrite->delay_ns, sizeof( uint32_t ), 1, hSplitRendFileReadWrite->file ); + + /* read codec signalling */ + if ( fread( codec, sizeof( *codec ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + + /* read pose correction signalling */ + if ( fread( poseCorrection, sizeof( *poseCorrection ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + /* read transport codec frame size signalling */ + if ( fread( codec_frame_size_ms, sizeof( *codec_frame_size_ms ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + /* read isar bitstream frame size signalling */ + if ( fread( isar_frame_size_ms, sizeof( *isar_frame_size_ms ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + /* read sampling rate signalling */ + if ( fread( sampling_rate, sizeof( *sampling_rate ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + /* read LC3plus highres signalling */ + if ( fread( lc3plus_highres, sizeof( *lc3plus_highres ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + + *hhSplitRendFileReadWrite = hSplitRendFileReadWrite; + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------------------------* + * Function split_rend_writer_open() + * + * open in write mode + *-----------------------------------------------------------------------------------------*/ + +ivas_error split_rend_writer_open( + SplitFileReadWrite **hhSplitRendFileReadWrite, + char *filename, + const int16_t delayNumSamples, + const int32_t delayTimeScale, + ISAR_SPLIT_REND_CODEC codec, + ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection, + int16_t codec_frame_size_ms, + const int16_t isar_frame_size_ms, + const int32_t sampling_rate, + const int16_t lc3plus_highres ) +{ + SplitFileReadWrite *hSplitRendFileReadWrite; + size_t header_len, h; + char header[SPLIT_RENDERER_FRAME_HEADER_LEN] = "MAIN_SPLITH"; + + if ( filename == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + if ( ( hSplitRendFileReadWrite = (SplitFileReadWrite *) malloc( sizeof( SplitFileReadWrite ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for split rendering writer\n" ) ); + } + + hSplitRendFileReadWrite->file = fopen( filename, "wb" ); + if ( hSplitRendFileReadWrite->file == NULL ) + { + return IVAS_ERR_FAILED_FILE_OPEN; + } + + header_len = strlen( header ); + + /* write frame header */ + for ( h = 0; h < header_len; h++ ) + { + if ( fwrite( &header[h], sizeof( char ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_END_OF_FILE; + } + } + hSplitRendFileReadWrite->delay_ns = (int32_t) ( (float) delayNumSamples * 1000000000.0f / (float) delayTimeScale ); + fwrite( &hSplitRendFileReadWrite->delay_ns, sizeof( int32_t ), 1, hSplitRendFileReadWrite->file ); + + /* Write codec signalling */ + if ( fwrite( &codec, sizeof( codec ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + + /* Write pose correction signalling */ + if ( fwrite( &poseCorrection, sizeof( poseCorrection ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + /* Write transport codec frame size signalling */ + if ( fwrite( &codec_frame_size_ms, sizeof( codec_frame_size_ms ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + /* Write isar bit stream frame size signalling */ + if ( fwrite( &isar_frame_size_ms, sizeof( isar_frame_size_ms ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + /* Write sampling rate signalling */ + if ( fwrite( &sampling_rate, sizeof( sampling_rate ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + /* Write LC3plus highres signalling */ + if ( fwrite( &lc3plus_highres, sizeof( lc3plus_highres ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + + *hhSplitRendFileReadWrite = hSplitRendFileReadWrite; + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------------------------* + * Function split_rend_reader_writer_close() + * + * + *-----------------------------------------------------------------------------------------*/ + +void split_rend_reader_writer_close( + SplitFileReadWrite **hhSplitRendFileReadWrite ) +{ + if ( ( *hhSplitRendFileReadWrite ) != NULL ) + { + if ( ( *hhSplitRendFileReadWrite )->file != NULL ) + { + fclose( ( *hhSplitRendFileReadWrite )->file ); + ( *hhSplitRendFileReadWrite )->file = NULL; + } + + free( *hhSplitRendFileReadWrite ); + *hhSplitRendFileReadWrite = NULL; + } + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function split_rend_write_bitstream_to_file() + * + * + *-----------------------------------------------------------------------------------------*/ + +ivas_error split_rend_write_bitstream_to_file( + SplitFileReadWrite *hSplitRendFileReadWrite, + uint8_t *bits, + int32_t *bits_read, + int32_t *bits_written ) +{ + char header[SPLIT_RENDERER_FRAME_HEADER_LEN] = "SPLIT_FRAME"; + size_t header_len, i, num_bytes; + uint8_t version = 0; + + if ( hSplitRendFileReadWrite == NULL ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + + if ( hSplitRendFileReadWrite->file == NULL ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + + header_len = strlen( header ); + + /* write frame header */ + for ( i = 0; i < header_len; i++ ) + { + if ( fwrite( &header[i], sizeof( char ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + } + + /* Write versioning signalling */ + if ( fwrite( &version, 1, 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + + /* write num bytes */ + if ( fwrite( bits_written, sizeof( int32_t ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + + num_bytes = ( *bits_written + 7 ) >> 3; + if ( fwrite( bits, sizeof( uint8_t ), num_bytes, hSplitRendFileReadWrite->file ) != num_bytes ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + + *bits_read = 0; + *bits_written = 0; + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------------------------* + * Function split_rend_read_bits_from_file() + * + * + *-----------------------------------------------------------------------------------------*/ + +ivas_error split_rend_read_bits_from_file( + SplitFileReadWrite *hSplitRendFileReadWrite, + uint8_t *bits, + int32_t *bits_read, + int32_t *bits_written ) +{ + char header[SPLIT_RENDERER_FRAME_HEADER_LEN] = "SPLIT_FRAME"; + char header_read[SPLIT_RENDERER_FRAME_HEADER_LEN]; + int32_t header_len, i, num_bytes, bit_len = 0; + uint8_t version; + + if ( hSplitRendFileReadWrite == NULL ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + + if ( hSplitRendFileReadWrite->file == NULL ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + + header_len = (int32_t) strlen( header ); + + /* read frame header */ + for ( i = 0; i < header_len; i++ ) + { + if ( fread( &header_read[i], sizeof( char ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_END_OF_FILE; + } + } + + if ( strncmp( header_read, header, header_len ) ) + { + fprintf( stderr, "Error bitstream frame header mismatch\n" ); + return IVAS_ERR_FAILED_FILE_READ; + } + + /* read versioning signalling */ + if ( fread( &version, 1, 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + if ( version != 0 ) + { + fprintf( stderr, "Error bitstream version mismatch\n" ); + return IVAS_ERR_FAILED_FILE_READ; + } + + /* write num bytes */ + if ( fread( &bit_len, sizeof( int32_t ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + num_bytes = ( bit_len + 7 ) >> 3; + + if ( fread( bits, sizeof( uint8_t ), num_bytes, hSplitRendFileReadWrite->file ) != (uint32_t) num_bytes ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + for ( i = 0; i < ISAR_SPLIT_REND_ADDITIONAL_BYTES_TO_READ; i++ ) + { + bits[num_bytes + i] = 0; + } + + *bits_read = 0; + *bits_written = bit_len; + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------------------------* + * Function split_rend_read_pre_rend_delay_ns() + * + * + *-----------------------------------------------------------------------------------------*/ + +ivas_error split_rend_read_pre_rend_delay_ns( + SplitFileReadWrite *hSplitRendFileReadWrite, + uint32_t *delay_ns ) +{ + if ( hSplitRendFileReadWrite == NULL ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + + *delay_ns = hSplitRendFileReadWrite->delay_ns; + + return IVAS_ERR_OK; +} diff --git a/lib_util/split_render_file_read_write.h b/lib_util/split_render_file_read_write.h new file mode 100644 index 0000000000000000000000000000000000000000..2895dd42687f37c421d3c97734bea2a0c32c8d7e --- /dev/null +++ b/lib_util/split_render_file_read_write.h @@ -0,0 +1,89 @@ +/****************************************************************************************************** + + (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 SPLIT_RENDER_FILE_READ_WRITE_H +#define SPLIT_RENDER_FILE_READ_WRITE_H + +#include "common_api_types.h" + +typedef struct SplitFileReadWrite SplitFileReadWrite; + +/* Allocates and initializes a a split renderer reader instance */ +ivas_error split_rend_reader_open( + SplitFileReadWrite **hhSplitRendFileReadWrite, + char *filename, + ISAR_SPLIT_REND_CODEC *codec, + ISAR_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection, + int16_t *codec_frame_size_ms, + int16_t *isar_frame_size_ms, + int32_t *sampling_rate, + int16_t *lc3plus_highres ); + + +/* Allocates and initializes a a split renderer writer instance */ +ivas_error split_rend_writer_open( + SplitFileReadWrite **hhSplitRendFileReadWrite, + char *filename, + const int16_t delayNumSamples, + const int32_t delayTimeScale, + ISAR_SPLIT_REND_CODEC codec, + ISAR_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection, + int16_t codec_frame_size_ms, + const int16_t isar_frame_size_ms, + const int32_t sampling_rate, + const int16_t lc3plus_highres ); + + +/* Closes the split renderer reader/writer and deallocates memory */ +void split_rend_reader_writer_close( + SplitFileReadWrite **hhSplitRendFileReadWrite ); + +/*write split rend coded bitstream to file */ +ivas_error split_rend_write_bitstream_to_file( + SplitFileReadWrite *hSplitRendFileReadWrite, + uint8_t *bits, + int32_t *bits_read, + int32_t *bits_written ); + +/* read split rend coded bits from file */ +ivas_error split_rend_read_bits_from_file( + SplitFileReadWrite *hSplitRendFileReadWrite, + uint8_t *bits, + int32_t *bits_read, + int32_t *bits_written ); + +/* read split pre rend delay */ +ivas_error split_rend_read_pre_rend_delay_ns( + SplitFileReadWrite *hSplitRendFileReadWrite, + uint32_t *delay_ns ); + +#endif /* SPLIT_RENDER_FILE_READ_WRITE_H */